        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 400
__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) 2007 by Wayne C. Gramlich
        ; # All rights reserved.

        ; # This module uses a PIC16F88:
        ; buffer = 'sonar6'
        ; line_number = 7
        ; library _pic16f88 entered

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

        ; buffer = '_pic16f88'
        ; line_number = 6
        ; processor pic16f88
        ; line_number = 7
        ; configure_address 0x2007
        ; line_number = 8
        ;  configure_fill 0x0000
        ; line_number = 9
        ;  configure_option cp: off = 0x2000
        ; line_number = 10
        ;  configure_option cp: on = 0x0000
        ; line_number = 11
        ;  configure_option ccpmx: ccp1_rb0 = 0x1000
        ; line_number = 12
        ;  configure_option ccpmx: ccp1_rb3 = 0x0000
        ; line_number = 13
        ;  configure_option debug: off = 0x800
        ; line_number = 14
        ;  configure_option debug: on = 0x000
        ; line_number = 15
        ;  configure_option wrt: off = 0x600
        ; line_number = 16
        ;  configure_option wrt: to_ff = 0x400
        ; line_number = 17
        ;  configure_option wrt: to_7ff = 0x200
        ; line_number = 18
        ;  configure_option wrt: on = 0x000
        ; line_number = 19
        ;  configure_option cpd: off = 0x100
        ; line_number = 20
        ;  configure_option cpd: on = 0x000
        ; line_number = 21
        ;  configure_option lvp: on = 0x80
        ; line_number = 22
        ;  configure_option lvp: off = 0x00
        ; line_number = 23
        ;  configure_option boden: on = 0x40
        ; line_number = 24
        ;  configure_option boden: off = 0x00
        ; line_number = 25
        ;  configure_option mclre: on = 0x20
        ; line_number = 26
        ;  configure_option mclre: off = 0x00
        ; line_number = 27
        ;  configure_option pwrte: on = 0
        ; line_number = 28
        ;  configure_option pwrte: off = 8
        ; line_number = 29
        ;  configure_option wdte: on = 4
        ; line_number = 30
        ;  configure_option wdte: off = 0
        ; line_number = 31
        ;  configure_option fosc: extrc_clk = 0x13
        ; line_number = 32
        ;  configure_option fosc: extrc_no_clk = 0x12
        ; line_number = 33
        ;  configure_option fosc: intrc_clk = 0x11
        ; line_number = 34
        ;  configure_option fosc: intrc_no_clk = 0x10
        ; line_number = 35
        ;  configure_option fosc: extclk = 3
        ; line_number = 36
        ;  configure_option fosc: hs = 2
        ; line_number = 37
        ;  configure_option fosc: xt = 1
        ; line_number = 38
        ;  configure_option fosc: lp = 0

        ; line_number = 40
        ;  configure_address 0x2008
        ; line_number = 41
        ;  configure_fill 0x3ffc
        ; line_number = 42
        ;  configure_option ieso: on = 2
        ; line_number = 43
        ;  configure_option ieso: off = 0
        ; line_number = 44
        ;  configure_option fcmen: on = 1
        ; line_number = 45
        ;  configure_option fcmen: off = 0

        ; line_number = 47
        ;  code_bank 0x0 : 0x7ff
        ; line_number = 48
        ;  code_bank 0x800 : 0xfff
        ; line_number = 49
        ;  data_bank 0x0 : 0x7f
        ; line_number = 50
        ;  data_bank 0x80 : 0xff
        ; line_number = 51
        ;  data_bank 0x100 : 0x17f
        ; line_number = 52
        ;  data_bank 0x180 : 0x1ff
        ; line_number = 53
        ;  global_region 0x20 : 0x6f
        ; line_number = 54
        ;  global_region 0xa0 : 0xef
        ; line_number = 55
        ;  global_region 0x110 : 0x16f
        ; line_number = 56
        ;  global_region 0x190 : 0x1ef
        ; line_number = 57
        ;  shared_region 0x70 : 0x7f
        ; line_number = 58
        ;  packages dip=18, soic=18, ssop=20
        ; line_number = 59
        ;  pin ra2_in, ra2_out, ra2_unused, an2, cvref, vref_minus
        ; line_number = 60
        ; pin_bindings dip=1, soic=1, ssop=1
        ; line_number = 61
        ;  bind_to _porta@2
        ; line_number = 62
        ;  or_if ra2_in _trisa 4
        ; line_number = 63
        ;  or_if ra2_in _cmcon 7
        ; line_number = 64
        ;  or_if ra2_in _ansel 0
        ; line_number = 65
        ;  or_if ra2_in _adcon0 0
        ; line_number = 66
        ;  or_if ra2_out _trisa 0
        ; line_number = 67
        ;  or_if ra2_out _cmcon 7
        ; line_number = 68
        ;  or_if ra2_out _ansel 0
        ; line_number = 69
        ;  or_if ra2_out _adcon0 0
        ; line_number = 70
        ;  or_if ra2_unused _trisa 4
        ; line_number = 71
        ;  or_if ra2_unused _ansel 0
        ; line_number = 72
        ;  or_if ra2_unused _adcon0 0
        ; line_number = 73
        ;  or_if an2 _trisa 4
        ; line_number = 74
        ;  or_if an2 _ansel 4
        ; line_number = 75
        ;  or_if an2 _cmcon 7
        ; line_number = 76
        ;  or_if an2 _ancon0 1
        ; line_number = 77
        ; pin ra3_in, ra3_out, ra3_unused, an3, vref_plus, c1out
        ; line_number = 78
        ; pin_bindings dip=2, soic=2, ssop=2
        ; line_number = 79
        ;  bind_to _porta@3
        ; line_number = 80
        ;  or_if ra3_in _trisa 8
        ; line_number = 81
        ;  or_if ra3_in _cmcon 7
        ; line_number = 82
        ;  or_if ra3_in _ansel 0
        ; line_number = 83
        ;  or_if ra3_in _adcon0 0
        ; line_number = 84
        ;  or_if ra3_out _trisa 0
        ; line_number = 85
        ;  or_if ra3_out _cmcon 7
        ; line_number = 86
        ;  or_if ra3_out _ansel 0
        ; line_number = 87
        ;  or_if ra3_out _adcon0 0
        ; line_number = 88
        ;  or_if ra3_unused _trisa 8
        ; line_number = 89
        ;  or_if ra3_unused _ansel 0
        ; line_number = 90
        ;  or_if ra3_unused _adcon0 0
        ; line_number = 91
        ;  or_if an3 _trisa 8
        ; line_number = 92
        ;  or_if an3 _ansel 8
        ; line_number = 93
        ;  or_if an3 _cmcon 7
        ; line_number = 94
        ;  or_if an3 _ancon0 1
        ; line_number = 95
        ; pin ra4_in, ra4_out, ra4_unused, an4, tocki, c2out
        ; line_number = 96
        ; pin_bindings dip=3, soic=3, ssop=3
        ; line_number = 97
        ;  bind_to _porta@4
        ; line_number = 98
        ;  or_if ra4_in _trisa 16
        ; line_number = 99
        ;  or_if ra4_in _ansel 0
        ; line_number = 100
        ;  or_if ra4_in _adcon0 0
        ; line_number = 101
        ;  or_if ra4_out _trisa 0
        ; line_number = 102
        ;  or_if ra4_out _ansel 0
        ; line_number = 103
        ;  or_if ra4_out _adcon0 0
        ; line_number = 104
        ;  or_if ra4_unused _trisa 16
        ; line_number = 105
        ;  or_if ra4_unused _ansel 0
        ; line_number = 106
        ;  or_if ra4_unused _adcon0 0
        ; line_number = 107
        ;  or_if an4 _trisa 16
        ; line_number = 108
        ;  or_if an4 _ansel 16
        ; line_number = 109
        ;  or_if an4 _cmcon 7
        ; line_number = 110
        ;  or_if an4 _ancon0 1
        ; line_number = 111
        ; pin ra5_in, ra5_unused, mclr, vpp
        ; line_number = 112
        ; pin_bindings dip=4, soic=4, ssop=4
        ; line_number = 113
        ;  bind_to _porta@5
        ; line_number = 114
        ;  or_if ra5_in _trisa 32
        ; line_number = 115
        ;  or_if ra5_unused _trisa 32
        ; line_number = 116
        ; pin vss, ground
        ; line_number = 117
        ; pin_bindings dip=5, soic=5, ssop=5
        ; line_number = 118
        ; pin avss, ground2
        ; line_number = 119
        ; pin_bindings ssop=6
        ; line_number = 120
        ; pin rb0_in, rb0_out, rb0_unused, int, ccp1
        ; line_number = 121
        ; pin_bindings dip=6, soic=6, ssop=7
        ; line_number = 122
        ;  bind_to _portb@0
        ; line_number = 123
        ;  or_if rb0_in _trisb 1
        ; line_number = 124
        ;  or_if rb0_out _trisb 0
        ; line_number = 125
        ;  or_if rb0_unused _trisb 1
        ; line_number = 126
        ;  or_if int _trisb 1
        ; line_number = 127
        ; pin rb1_in, rb1_out, rb1_unused, sdi, sda
        ; line_number = 128
        ; pin_bindings dip=7, soic=7, ssop=8
        ; line_number = 129
        ;  bind_to _portb@1
        ; line_number = 130
        ;  or_if rb1_in _trisb 2
        ; line_number = 131
        ;  or_if rb1_out _trisb 0
        ; line_number = 132
        ;  or_if rb1_unused _trisb 2
        ; line_number = 133
        ;  or_if sda _trisb 2
        ; line_number = 134
        ; pin rb2_in, rb2_out, rb2_unused, sdo, rx, dt
        ; line_number = 135
        ; pin_bindings dip=8, soic=8, ssop=9
        ; line_number = 136
        ;  bind_to _portb@2
        ; line_number = 137
        ;  or_if rb2_in _trisb 4
        ; line_number = 138
        ;  or_if rb2_out _trisb 0
        ; line_number = 139
        ;  or_if rb2_unused _trisb 4
        ; line_number = 140
        ;  or_if rx _trisb 4
        ; line_number = 141
        ; pin rb3_in, rb3_out, rb3_unused, pgm, ccp1_other
        ; line_number = 142
        ; pin_bindings dip=9, soic=9, ssop=10
        ; line_number = 143
        ;  bind_to _portb@3
        ; line_number = 144
        ;  or_if rb3_in _trisb 8
        ; line_number = 145
        ;  or_if rb3_out _trisb 0
        ; line_number = 146
        ;  or_if rb3_unused _trisb 8
        ; line_number = 147
        ;  or_if ccp1_other _trisb 8
        ; line_number = 148
        ; pin rb4_in, rb4_out, rb4_unused, sck, scl
        ; line_number = 149
        ; pin_bindings dip=10, soic=10, ssop=11
        ; line_number = 150
        ;  bind_to _portb@4
        ; line_number = 151
        ;  or_if rb4_in _trisb 16
        ; line_number = 152
        ;  or_if rb4_out _trisb 0
        ; line_number = 153
        ;  or_if rb4_unused _trisb 16
        ; line_number = 154
        ;  or_if scl _trisb 16
        ; line_number = 155
        ; pin rb5_in, rb5_out, rb5_unused, ss, tx, ck
        ; line_number = 156
        ; pin_bindings dip=11, soic=11, ssop=12
        ; line_number = 157
        ;  bind_to _portb@5
        ; line_number = 158
        ;  or_if rb5_in _trisb 32
        ; line_number = 159
        ;  or_if rb5_out _trisb 0
        ; line_number = 160
        ;  or_if rb5_unused _trisb 32
        ; line_number = 161
        ;  or_if tx _trisb 32
        ; line_number = 162
        ; pin rb6_in, rb6_out, rb6_unused, an5, pgc, t1oso, t1cki
        ; line_number = 163
        ; pin_bindings dip=12, soic=12, ssop=13
        ; line_number = 164
        ;  bind_to _portb@6
        ; line_number = 165
        ;  or_if rb6_in _trisb 64
        ; line_number = 166
        ;  or_if rb6_in _ansel 0
        ; line_number = 167
        ;  or_if rb6_in _adcon0 0
        ; line_number = 168
        ;  or_if rb6_out _trisb 0
        ; line_number = 169
        ;  or_if rb6_out _ansel 0
        ; line_number = 170
        ;  or_if rb6_out _adcon0 0
        ; line_number = 171
        ;  or_if rb6_unused _trisb 64
        ; line_number = 172
        ;  or_if rb6_unused _ansel 0
        ; line_number = 173
        ;  or_if rb6_unused _adcon0 0
        ; line_number = 174
        ;  or_if t1oso _trisb 0
        ; line_number = 175
        ;  or_if t1cki _trisb 64
        ; line_number = 176
        ;  or_if an5 _trisa 64
        ; line_number = 177
        ;  or_if an5 _ansel 32
        ; line_number = 178
        ;  or_if an5 _cmcon 7
        ; line_number = 179
        ;  or_if an5 _ancon0 1
        ; line_number = 180
        ; pin rb7_in, rb7_out, rb7_unused, an6, pgd, t1osi
        ; line_number = 181
        ; pin_bindings dip=13, soic=13, ssop=14
        ; line_number = 182
        ;  bind_to _portb@6
        ; line_number = 183
        ;  or_if rb7_in _trisb 128
        ; line_number = 184
        ;  or_if rb7_in _ansel 0
        ; line_number = 185
        ;  or_if rb7_in _adcon0 0
        ; line_number = 186
        ;  or_if rb7_out _trisb 0
        ; line_number = 187
        ;  or_if rb7_out _ansel 0
        ; line_number = 188
        ;  or_if rb7_out _adcon0 0
        ; line_number = 189
        ;  or_if rb7_unused _trisb 128
        ; line_number = 190
        ;  or_if rb7_unused _ansel 0
        ; line_number = 191
        ;  or_if rb7_unused _adcon0 0
        ; line_number = 192
        ;  or_if t1osi _trisb 128
        ; line_number = 193
        ;  or_if an6 _trisa 128
        ; line_number = 194
        ;  or_if an6 _ansel 64
        ; line_number = 195
        ;  or_if an6 _cmcon 7
        ; line_number = 196
        ;  or_if an6 _ancon0 1
        ; line_number = 197
        ; pin avdd, power_supply2
        ; line_number = 198
        ; pin_bindings ssop=15
        ; line_number = 199
        ; pin vdd, power_supply
        ; line_number = 200
        ; pin_bindings dip=14, soic=14, ssop=16
        ; line_number = 201
        ; pin ra6_in, ra6_out, ra6_unused, osc2, clko
        ; line_number = 202
        ; pin_bindings dip=15, soic=15, ssop=17
        ; line_number = 203
        ;  bind_to _porta@6
        ; line_number = 204
        ;  or_if ra6_in _trisa 64
        ; line_number = 205
        ;  or_if ra6_out _trisa 0
        ; line_number = 206
        ;  or_if ra6_unused _trisa 64
        ; line_number = 207
        ;  or_if clko _trisa 0
        ; line_number = 208
        ;  or_if osc2 _trisa 64
        ; line_number = 209
        ; pin ra7_in, ra7_out, ra7_unused, osc1, clki
        ; line_number = 210
        ; pin_bindings dip=16, soic=16, ssop=18
        ; line_number = 211
        ;  bind_to _porta@7
        ; line_number = 212
        ;  or_if ra7_in _trisa 128
        ; line_number = 213
        ;  or_if ra7_out _trisa 0
        ; line_number = 214
        ;  or_if ra7_unused _trisa 64
        ; line_number = 215
        ;  or_if osc1 _trisa 128
        ; line_number = 216
        ;  or_if clki _trisa 128
        ; line_number = 217
        ; pin ra0_in, ra0_out, ra0_unused, an0
        ; line_number = 218
        ; pin_bindings dip=17, soic=17, ssop=19
        ; line_number = 219
        ;  bind_to _porta@0
        ; line_number = 220
        ;  or_if ra0_in _trisa 1
        ; line_number = 221
        ;  or_if ra0_in _cmcon 7
        ; line_number = 222
        ;  or_if ra0_in _ansel 0
        ; line_number = 223
        ;  or_if ra0_in _adcon0 0
        ; line_number = 224
        ;  or_if ra0_out _trisa 0
        ; line_number = 225
        ;  or_if ra0_out _cmcon 7
        ; line_number = 226
        ;  or_if ra0_out _ansel 0
        ; line_number = 227
        ;  or_if ra0_out _adcon0 0
        ; line_number = 228
        ;  or_if ra0_unused _trisa 1
        ; line_number = 229
        ;  or_if ra0_unused _ansel 0
        ; line_number = 230
        ;  or_if ra0_unused _adcon0 0
        ; line_number = 231
        ;  or_if an0 _trisa 1
        ; line_number = 232
        ;  or_if an0 _ansel 1
        ; line_number = 233
        ;  or_if an0 _cmcon 7
        ; line_number = 234
        ;  or_if an0 _ancon0 1
        ; line_number = 235
        ; pin ra1_in, ra1_out, ra1_unused, an1
        ; line_number = 236
        ; pin_bindings dip=18, soic=18, ssop=20
        ; line_number = 237
        ;  bind_to _porta@1
        ; line_number = 238
        ;  or_if ra1_in _trisa 2
        ; line_number = 239
        ;  or_if ra1_in _cmcon 7
        ; line_number = 240
        ;  or_if ra1_in _ansel 0
        ; line_number = 241
        ;  or_if ra1_in _adcon0 0
        ; line_number = 242
        ;  or_if ra1_out _trisa 0
        ; line_number = 243
        ;  or_if ra1_out _cmcon 7
        ; line_number = 244
        ;  or_if ra1_out_ansel 0
        ; line_number = 245
        ;  or_if ra1_out _adcon0 0
        ; line_number = 246
        ;  or_if ra1_unused _trisa 2
        ; line_number = 247
        ;  or_if ra1_unused _ansel 0
        ; line_number = 248
        ;  or_if ra1_unused _adcon0 0
        ; line_number = 249
        ;  or_if an1 _trisa 2
        ; line_number = 250
        ;  or_if an1 _ansel 2
        ; line_number = 251
        ;  or_if an1 _cmcon 7
        ; line_number = 252
        ;  or_if an1 _ancon0 1


        ; line_number = 256
        ; library _standard entered

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

        ; # Standard definition for uCL:

        ; buffer = '_standard'
        ; line_number = 8
        ; constant _true = (1 = 1)
_true equ 1
        ; line_number = 9
        ; constant _false = (0 != 0)
_false equ 0


        ; buffer = '_pic16f88'
        ; line_number = 256
        ; library _standard exited

        ; # Data bank 0:

        ; line_number = 260
        ; register _indf = 
_indf equ 0

        ; line_number = 262
        ; register _tmr0 = 
_tmr0 equ 1

        ; line_number = 264
        ; register _pcl = 
_pcl equ 2

        ; line_number = 266
        ; register _status = 
_status equ 3
        ; line_number = 267
        ; bind _irp = _status@7
_irp___byte equ _status
_irp___bit equ 7
        ; line_number = 268
        ; bind _rp1 = _status@6
_rp1___byte equ _status
_rp1___bit equ 6
        ; line_number = 269
        ; bind _rp0 = _status@5
_rp0___byte equ _status
_rp0___bit equ 5
        ; line_number = 270
        ; bind _to = _status@4
_to___byte equ _status
_to___bit equ 4
        ; line_number = 271
        ; bind _pd = _status@3
_pd___byte equ _status
_pd___bit equ 3
        ; line_number = 272
        ; bind _z = _status@2
_z___byte equ _status
_z___bit equ 2
        ; line_number = 273
        ; bind _dc = _status@1
_dc___byte equ _status
_dc___bit equ 1
        ; line_number = 274
        ; bind _c = _status@0
_c___byte equ _status
_c___bit equ 0

        ; line_number = 276
        ; register _fsr = 
_fsr equ 4

        ; line_number = 278
        ; register _porta = 
_porta equ 5
        ; line_number = 279
        ; bind _ra7 = _porta@7
_ra7___byte equ _porta
_ra7___bit equ 7
        ; line_number = 280
        ; bind _ra6 = _porta@6
_ra6___byte equ _porta
_ra6___bit equ 6
        ; line_number = 281
        ; bind _ra5 = _porta@5
_ra5___byte equ _porta
_ra5___bit equ 5
        ; line_number = 282
        ; bind _ra4 = _porta@4
_ra4___byte equ _porta
_ra4___bit equ 4
        ; line_number = 283
        ; bind _ra3 = _porta@3
_ra3___byte equ _porta
_ra3___bit equ 3
        ; line_number = 284
        ; bind _ra2 = _porta@2
_ra2___byte equ _porta
_ra2___bit equ 2
        ; line_number = 285
        ; bind _ra1 = _porta@1
_ra1___byte equ _porta
_ra1___bit equ 1
        ; line_number = 286
        ; bind _ra0 = _porta@0
_ra0___byte equ _porta
_ra0___bit equ 0

        ; line_number = 288
        ; register _portb = 
_portb equ 6
        ; line_number = 289
        ; bind _rb7 = _portb@7
_rb7___byte equ _portb
_rb7___bit equ 7
        ; line_number = 290
        ; bind _rb6 = _portb@6
_rb6___byte equ _portb
_rb6___bit equ 6
        ; line_number = 291
        ; bind _rb5 = _portb@5
_rb5___byte equ _portb
_rb5___bit equ 5
        ; line_number = 292
        ; bind _rb4 = _portb@4
_rb4___byte equ _portb
_rb4___bit equ 4
        ; line_number = 293
        ; bind _rb3 = _portb@3
_rb3___byte equ _portb
_rb3___bit equ 3
        ; line_number = 294
        ; bind _rb2 = _portb@2
_rb2___byte equ _portb
_rb2___bit equ 2
        ; line_number = 295
        ; bind _rb1 = _portb@1
_rb1___byte equ _portb
_rb1___bit equ 1
        ; line_number = 296
        ; bind _rb0 = _portb@0
_rb0___byte equ _portb
_rb0___bit equ 0

        ; line_number = 298
        ; register _pclath = 
_pclath equ 10

        ; line_number = 300
        ; register _intcon = 
_intcon equ 11
        ; line_number = 301
        ; bind _gie = _intcon@7
_gie___byte equ _intcon
_gie___bit equ 7
        ; line_number = 302
        ; bind _peie = _intcon@6
_peie___byte equ _intcon
_peie___bit equ 6
        ; line_number = 303
        ; bind _tmr0ie = _intcon@5
_tmr0ie___byte equ _intcon
_tmr0ie___bit equ 5
        ; line_number = 304
        ; bind _int0ie = _intcon@4
_int0ie___byte equ _intcon
_int0ie___bit equ 4
        ; line_number = 305
        ; bind _rbie = _intcon@3
_rbie___byte equ _intcon
_rbie___bit equ 3
        ; line_number = 306
        ; bind _tmr0if = _intcon@2
_tmr0if___byte equ _intcon
_tmr0if___bit equ 2
        ; line_number = 307
        ; bind _int0if = _intcon@1
_int0if___byte equ _intcon
_int0if___bit equ 1
        ; line_number = 308
        ; bind _rbif = _intcon@0
_rbif___byte equ _intcon
_rbif___bit equ 0

        ; line_number = 310
        ; register _pir1 = 
_pir1 equ 12
        ; line_number = 311
        ; bind _adif = _pir1@6
_adif___byte equ _pir1
_adif___bit equ 6
        ; line_number = 312
        ; bind _rcif = _pir1@5
_rcif___byte equ _pir1
_rcif___bit equ 5
        ; line_number = 313
        ; bind _txif = _pir1@4
_txif___byte equ _pir1
_txif___bit equ 4
        ; line_number = 314
        ; bind _sspif = _pir1@3
_sspif___byte equ _pir1
_sspif___bit equ 3
        ; line_number = 315
        ; bind _ccp1if = _pir1@2
_ccp1if___byte equ _pir1
_ccp1if___bit equ 2
        ; line_number = 316
        ; bind _tmr2if = _pir1@1
_tmr2if___byte equ _pir1
_tmr2if___bit equ 1
        ; line_number = 317
        ; bind _tmr1if = _pir1@0
_tmr1if___byte equ _pir1
_tmr1if___bit equ 0

        ; line_number = 319
        ; register _pir2 = 
_pir2 equ 13
        ; line_number = 320
        ; bind _osfif = _pir1@7
_osfif___byte equ _pir1
_osfif___bit equ 7
        ; line_number = 321
        ; bind _cmif = _pir1@6
_cmif___byte equ _pir1
_cmif___bit equ 6
        ; line_number = 322
        ; bind _eeif = _pir1@4
_eeif___byte equ _pir1
_eeif___bit equ 4

        ; line_number = 324
        ; register _tmr1l = 
_tmr1l equ 14

        ; line_number = 326
        ; register _tmr1h = 
_tmr1h equ 15

        ; line_number = 328
        ; register _t1con = 
_t1con equ 16
        ; line_number = 329
        ; bind _t1run = _t1con@6
_t1run___byte equ _t1con
_t1run___bit equ 6
        ; line_number = 330
        ; bind _t1ckps1 = _t1con@5
_t1ckps1___byte equ _t1con
_t1ckps1___bit equ 5
        ; line_number = 331
        ; bind _t1ckps0 = _t1con@4
_t1ckps0___byte equ _t1con
_t1ckps0___bit equ 4
        ; line_number = 332
        ; bind _t1oscen = _t1con@3
_t1oscen___byte equ _t1con
_t1oscen___bit equ 3
        ; line_number = 333
        ; bind _t1sync = _t1con@2
_t1sync___byte equ _t1con
_t1sync___bit equ 2
        ; line_number = 334
        ; bind _tmr1cs = _t1con@1
_tmr1cs___byte equ _t1con
_tmr1cs___bit equ 1
        ; line_number = 335
        ; bind _tmr1on = _t1con@0
_tmr1on___byte equ _t1con
_tmr1on___bit equ 0

        ; line_number = 337
        ; register _tmr2 = 
_tmr2 equ 17

        ; line_number = 339
        ; register _t2con = 
_t2con equ 18
        ; line_number = 340
        ; bind _toutps3 = _t2con@6
_toutps3___byte equ _t2con
_toutps3___bit equ 6
        ; line_number = 341
        ; bind _toutps2 = _t2con@5
_toutps2___byte equ _t2con
_toutps2___bit equ 5
        ; line_number = 342
        ; bind _toutps1 = _t2con@4
_toutps1___byte equ _t2con
_toutps1___bit equ 4
        ; line_number = 343
        ; bind _toutps0 = _t2con@3
_toutps0___byte equ _t2con
_toutps0___bit equ 3
        ; line_number = 344
        ; bind _trm2on = _t2con@2
_trm2on___byte equ _t2con
_trm2on___bit equ 2
        ; line_number = 345
        ; bind _t2ckps1 = _t2con@1
_t2ckps1___byte equ _t2con
_t2ckps1___bit equ 1
        ; line_number = 346
        ; bind _t2ckps0 = _t2con@0
_t2ckps0___byte equ _t2con
_t2ckps0___bit equ 0

        ; line_number = 348
        ; register _sspbuf = 
_sspbuf equ 19

        ; line_number = 350
        ; register _sspcon = 
_sspcon equ 20
        ; line_number = 351
        ; bind _wcol = _sspcon@7
_wcol___byte equ _sspcon
_wcol___bit equ 7
        ; line_number = 352
        ; bind _sspov = _sspcon@6
_sspov___byte equ _sspcon
_sspov___bit equ 6
        ; line_number = 353
        ; bind _sspen = _sspcon@5
_sspen___byte equ _sspcon
_sspen___bit equ 5
        ; line_number = 354
        ; bind _ckp = _sspcon@4
_ckp___byte equ _sspcon
_ckp___bit equ 4
        ; line_number = 355
        ; bind _sspm3 = _sspcon@3
_sspm3___byte equ _sspcon
_sspm3___bit equ 3
        ; line_number = 356
        ; bind _sspm2 = _sspcon@2
_sspm2___byte equ _sspcon
_sspm2___bit equ 2
        ; line_number = 357
        ; bind _sspm1 = _sspcon@1
_sspm1___byte equ _sspcon
_sspm1___bit equ 1
        ; line_number = 358
        ; bind _sspm0 = _sspcon@0
_sspm0___byte equ _sspcon
_sspm0___bit equ 0

        ; line_number = 360
        ; register _ccpr1l = 
_ccpr1l equ 21

        ; line_number = 362
        ; register _ccpr1h = 
_ccpr1h equ 22

        ; line_number = 364
        ; register _ccp1con = 
_ccp1con equ 23
        ; line_number = 365
        ; bind _ccp1x = _ccp1con@5
_ccp1x___byte equ _ccp1con
_ccp1x___bit equ 5
        ; line_number = 366
        ; bind _ccp1y = _ccp1con@4
_ccp1y___byte equ _ccp1con
_ccp1y___bit equ 4
        ; line_number = 367
        ; bind _ccp1m3 = _ccp1con@3
_ccp1m3___byte equ _ccp1con
_ccp1m3___bit equ 3
        ; line_number = 368
        ; bind _ccp1m2 = _ccp1con@2
_ccp1m2___byte equ _ccp1con
_ccp1m2___bit equ 2
        ; line_number = 369
        ; bind _ccp1m1 = _ccp1con@1
_ccp1m1___byte equ _ccp1con
_ccp1m1___bit equ 1
        ; line_number = 370
        ; bind _ccp1m0 = _ccp1con@0
_ccp1m0___byte equ _ccp1con
_ccp1m0___bit equ 0

        ; line_number = 372
        ; register _rcsta = 
_rcsta equ 24
        ; line_number = 373
        ; bind _spen = _rcsta@7
_spen___byte equ _rcsta
_spen___bit equ 7
        ; line_number = 374
        ; bind _rx9 = _rcsta@6
_rx9___byte equ _rcsta
_rx9___bit equ 6
        ; line_number = 375
        ; bind _sren = _rcsta@5
_sren___byte equ _rcsta
_sren___bit equ 5
        ; line_number = 376
        ; bind _cren = _rcsta@4
_cren___byte equ _rcsta
_cren___bit equ 4
        ; line_number = 377
        ; bind _adden = _rcsta@3
_adden___byte equ _rcsta
_adden___bit equ 3
        ; # Some other modules use _aden instead of _adden:
        ; line_number = 379
        ; bind _aden = _rcsta@3
_aden___byte equ _rcsta
_aden___bit equ 3
        ; line_number = 380
        ; bind _ferr = _rcsta@2
_ferr___byte equ _rcsta
_ferr___bit equ 2
        ; line_number = 381
        ; bind _oerr = _rcsta@1
_oerr___byte equ _rcsta
_oerr___bit equ 1
        ; line_number = 382
        ; bind _rx9d = _rcsta@0
_rx9d___byte equ _rcsta
_rx9d___bit equ 0

        ; line_number = 384
        ; register _txreg = 
_txreg equ 25

        ; line_number = 386
        ; register _rcreg = 
_rcreg equ 26

        ; line_number = 388
        ; register _adresh = 
_adresh equ 30

        ; line_number = 390
        ; register _adcon0 = 
_adcon0 equ 31
        ; line_number = 391
        ; bind _adcs1 = _adcon0@7
_adcs1___byte equ _adcon0
_adcs1___bit equ 7
        ; line_number = 392
        ; bind _adcs0 = _adcon0@6
_adcs0___byte equ _adcon0
_adcs0___bit equ 6
        ; line_number = 393
        ; bind _chs2 = _adcon0@5
_chs2___byte equ _adcon0
_chs2___bit equ 5
        ; line_number = 394
        ; bind _chs1 = _adcon0@4
_chs1___byte equ _adcon0
_chs1___bit equ 4
        ; line_number = 395
        ; bind _chs0 = _adcon0@3
_chs0___byte equ _adcon0
_chs0___bit equ 3
        ; line_number = 396
        ; bind _go = _adcon0@2
_go___byte equ _adcon0
_go___bit equ 2
        ; line_number = 397
        ; bind _adon = _adcon0@0
_adon___byte equ _adcon0
_adon___bit equ 0

        ; # Data bank 1:

        ; line_number = 401
        ; register _option = 
_option equ 129
        ; line_number = 402
        ; bind _rbpu = _option@7
_rbpu___byte equ _option
_rbpu___bit equ 7
        ; line_number = 403
        ; bind _intedg = _option@6
_intedg___byte equ _option
_intedg___bit equ 6
        ; line_number = 404
        ; bind _t0cs = _option@5
_t0cs___byte equ _option
_t0cs___bit equ 5
        ; line_number = 405
        ; bind _t0se = _option@4
_t0se___byte equ _option
_t0se___bit equ 4
        ; line_number = 406
        ; bind _psa = _option@3
_psa___byte equ _option
_psa___bit equ 3
        ; line_number = 407
        ; bind _ps2 = _option@2
_ps2___byte equ _option
_ps2___bit equ 2
        ; line_number = 408
        ; bind _ps1 = _option@1
_ps1___byte equ _option
_ps1___bit equ 1
        ; line_number = 409
        ; bind _ps0 = _option@0
_ps0___byte equ _option
_ps0___bit equ 0

        ; line_number = 411
        ; register _trisa = 
_trisa equ 133
        ; line_number = 412
        ; bind _trisa7 = _trisa@7
_trisa7___byte equ _trisa
_trisa7___bit equ 7
        ; line_number = 413
        ; bind _trisa6 = _trisa@6
_trisa6___byte equ _trisa
_trisa6___bit equ 6
        ; # No _trisa5:
        ; line_number = 415
        ; bind _trisa4 = _trisa@4
_trisa4___byte equ _trisa
_trisa4___bit equ 4
        ; line_number = 416
        ; bind _trisa3 = _trisa@3
_trisa3___byte equ _trisa
_trisa3___bit equ 3
        ; line_number = 417
        ; bind _trisa2 = _trisa@2
_trisa2___byte equ _trisa
_trisa2___bit equ 2
        ; line_number = 418
        ; bind _trisa1 = _trisa@1
_trisa1___byte equ _trisa
_trisa1___bit equ 1
        ; line_number = 419
        ; bind _trisa0 = _trisa@0
_trisa0___byte equ _trisa
_trisa0___bit equ 0

        ; line_number = 421
        ; register _trisb = 
_trisb equ 134
        ; line_number = 422
        ; bind _trisb7 = _trisb@7
_trisb7___byte equ _trisb
_trisb7___bit equ 7
        ; line_number = 423
        ; bind _trisb6 = _trisb@6
_trisb6___byte equ _trisb
_trisb6___bit equ 6
        ; line_number = 424
        ; bind _trisb5 = _trisb@5
_trisb5___byte equ _trisb
_trisb5___bit equ 5
        ; line_number = 425
        ; bind _trisb4 = _trisb@4
_trisb4___byte equ _trisb
_trisb4___bit equ 4
        ; line_number = 426
        ; bind _trisb3 = _trisb@3
_trisb3___byte equ _trisb
_trisb3___bit equ 3
        ; line_number = 427
        ; bind _trisb2 = _trisb@2
_trisb2___byte equ _trisb
_trisb2___bit equ 2
        ; line_number = 428
        ; bind _trisb1 = _trisb@1
_trisb1___byte equ _trisb
_trisb1___bit equ 1
        ; line_number = 429
        ; bind _trisb0 = _trisb@0
_trisb0___byte equ _trisb
_trisb0___bit equ 0

        ; line_number = 431
        ; register _pie1 = 
_pie1 equ 140
        ; line_number = 432
        ; bind _adie = _pie1@6
_adie___byte equ _pie1
_adie___bit equ 6
        ; line_number = 433
        ; bind _rcie = _pie1@5
_rcie___byte equ _pie1
_rcie___bit equ 5
        ; line_number = 434
        ; bind _txie = _pie1@4
_txie___byte equ _pie1
_txie___bit equ 4
        ; line_number = 435
        ; bind _sspie = _pie1@3
_sspie___byte equ _pie1
_sspie___bit equ 3
        ; line_number = 436
        ; bind _ccp1ie = _pie1@2
_ccp1ie___byte equ _pie1
_ccp1ie___bit equ 2
        ; line_number = 437
        ; bind _tmr2ie = _pie1@1
_tmr2ie___byte equ _pie1
_tmr2ie___bit equ 1
        ; line_number = 438
        ; bind _tmr1ie = _pie1@0
_tmr1ie___byte equ _pie1
_tmr1ie___bit equ 0

        ; line_number = 440
        ; register _pie2 = 
_pie2 equ 141
        ; line_number = 441
        ; bind _osfie = _pie2@7
_osfie___byte equ _pie2
_osfie___bit equ 7
        ; line_number = 442
        ; bind _cmie = _pie2@6
_cmie___byte equ _pie2
_cmie___bit equ 6
        ; line_number = 443
        ; bind _eeie = _pie2@4
_eeie___byte equ _pie2
_eeie___bit equ 4

        ; line_number = 445
        ; register _pcon = 
_pcon equ 142
        ; line_number = 446
        ; bind _por = _pcon@1
_por___byte equ _pcon
_por___bit equ 1
        ; line_number = 447
        ; bind _bod = _pcon@0
_bod___byte equ _pcon
_bod___bit equ 0

        ; line_number = 449
        ; register _osccon = 
_osccon equ 143
        ; line_number = 450
        ; bind _ircf2 = _osccon@6
_ircf2___byte equ _osccon
_ircf2___bit equ 6
        ; line_number = 451
        ; bind _ircf1 = _osccon@5
_ircf1___byte equ _osccon
_ircf1___bit equ 5
        ; line_number = 452
        ; bind _ircf0 = _osccon@4
_ircf0___byte equ _osccon
_ircf0___bit equ 4
        ; line_number = 453
        ; bind _osts = _osccon@3
_osts___byte equ _osccon
_osts___bit equ 3
        ; line_number = 454
        ; bind _iofs = _osccon@2
_iofs___byte equ _osccon
_iofs___bit equ 2
        ; line_number = 455
        ; bind _scs1 = _osccon@1
_scs1___byte equ _osccon
_scs1___bit equ 1
        ; line_number = 456
        ; bind _scs0 = _osccon@0
_scs0___byte equ _osccon
_scs0___bit equ 0

        ; line_number = 458
        ; register _osctune = 
_osctune equ 144
        ; line_number = 459
        ; bind _tun5 = _osctune@5
_tun5___byte equ _osctune
_tun5___bit equ 5
        ; line_number = 460
        ; bind _tun4 = _osctune@4
_tun4___byte equ _osctune
_tun4___bit equ 4
        ; line_number = 461
        ; bind _tun3 = _osctune@3
_tun3___byte equ _osctune
_tun3___bit equ 3
        ; line_number = 462
        ; bind _tun2 = _osctune@2
_tun2___byte equ _osctune
_tun2___bit equ 2
        ; line_number = 463
        ; bind _tun1 = _osctune@1
_tun1___byte equ _osctune
_tun1___bit equ 1
        ; line_number = 464
        ; bind _tun0 = _osctune@0
_tun0___byte equ _osctune
_tun0___bit equ 0

        ; line_number = 466
        ; register _pr2 = 
_pr2 equ 146

        ; line_number = 468
        ; register _sspadd = 
_sspadd equ 147

        ; line_number = 470
        ; register _sspstat = 
_sspstat equ 148
        ; line_number = 471
        ; bind _smp = _sspstat@7
_smp___byte equ _sspstat
_smp___bit equ 7
        ; line_number = 472
        ; bind _cke = _sspstat@6
_cke___byte equ _sspstat
_cke___bit equ 6
        ; line_number = 473
        ; bind _da = _sspstat@5
_da___byte equ _sspstat
_da___bit equ 5
        ; line_number = 474
        ; bind _p = _sspstat@4
_p___byte equ _sspstat
_p___bit equ 4
        ; line_number = 475
        ; bind _s = _sspstat@3
_s___byte equ _sspstat
_s___bit equ 3
        ; line_number = 476
        ; bind _rw = _sspstat@2
_rw___byte equ _sspstat
_rw___bit equ 2
        ; line_number = 477
        ; bind _ua = _sspstat@1
_ua___byte equ _sspstat
_ua___bit equ 1
        ; line_number = 478
        ; bind _bf = _sspstat@0
_bf___byte equ _sspstat
_bf___bit equ 0

        ; line_number = 480
        ; register _txsta = 
_txsta equ 152
        ; line_number = 481
        ; bind _csrc = _txsta@7
_csrc___byte equ _txsta
_csrc___bit equ 7
        ; line_number = 482
        ; bind _tx9 = _txsta@6
_tx9___byte equ _txsta
_tx9___bit equ 6
        ; line_number = 483
        ; bind _txen = _txsta@5
_txen___byte equ _txsta
_txen___bit equ 5
        ; line_number = 484
        ; bind _sync = _txsta@4
_sync___byte equ _txsta
_sync___bit equ 4
        ; line_number = 485
        ; bind _brgh = _txsta@2
_brgh___byte equ _txsta
_brgh___bit equ 2
        ; line_number = 486
        ; bind _trmt = _txsta@1
_trmt___byte equ _txsta
_trmt___bit equ 1
        ; line_number = 487
        ; bind _tx9d = _txsta@0
_tx9d___byte equ _txsta
_tx9d___bit equ 0

        ; line_number = 489
        ; register _spbrg = 
_spbrg equ 153

        ; line_number = 491
        ; register _ansel = 
_ansel equ 155
        ; line_number = 492
        ; bind _ans6 = _ansel@6
_ans6___byte equ _ansel
_ans6___bit equ 6
        ; line_number = 493
        ; bind _ans5 = _ansel@5
_ans5___byte equ _ansel
_ans5___bit equ 5
        ; line_number = 494
        ; bind _ans4 = _ansel@4
_ans4___byte equ _ansel
_ans4___bit equ 4
        ; line_number = 495
        ; bind _ans3 = _ansel@3
_ans3___byte equ _ansel
_ans3___bit equ 3
        ; line_number = 496
        ; bind _ans2 = _ansel@2
_ans2___byte equ _ansel
_ans2___bit equ 2
        ; line_number = 497
        ; bind _ans1 = _ansel@1
_ans1___byte equ _ansel
_ans1___bit equ 1
        ; line_number = 498
        ; bind _ans0 = _ansel@0
_ans0___byte equ _ansel
_ans0___bit equ 0

        ; line_number = 500
        ; register _cmcon = 
_cmcon equ 156
        ; line_number = 501
        ; bind _c2out = _cmcon@7
_c2out___byte equ _cmcon
_c2out___bit equ 7
        ; line_number = 502
        ; bind _c1out = _cmcon@6
_c1out___byte equ _cmcon
_c1out___bit equ 6
        ; line_number = 503
        ; bind _c2inv = _cmcon@5
_c2inv___byte equ _cmcon
_c2inv___bit equ 5
        ; line_number = 504
        ; bind _c1inv = _cmcon@4
_c1inv___byte equ _cmcon
_c1inv___bit equ 4
        ; line_number = 505
        ; bind _cis = _cmcon@3
_cis___byte equ _cmcon
_cis___bit equ 3
        ; line_number = 506
        ; bind _cm2 = _cmcon@2
_cm2___byte equ _cmcon
_cm2___bit equ 2
        ; line_number = 507
        ; bind _cm1 = _cmcon@1
_cm1___byte equ _cmcon
_cm1___bit equ 1
        ; line_number = 508
        ; bind _cm0 = _cmcon@0
_cm0___byte equ _cmcon
_cm0___bit equ 0

        ; line_number = 510
        ; register _cvrcon = 
_cvrcon equ 157
        ; line_number = 511
        ; bind _cvren = _cvrcon@7
_cvren___byte equ _cvrcon
_cvren___bit equ 7
        ; line_number = 512
        ; bind _cvroe = _cvrcon@6
_cvroe___byte equ _cvrcon
_cvroe___bit equ 6
        ; line_number = 513
        ; bind _cvrr = _cvrcon@5
_cvrr___byte equ _cvrcon
_cvrr___bit equ 5
        ; line_number = 514
        ; bind _cvr3 = _cvrcon@3
_cvr3___byte equ _cvrcon
_cvr3___bit equ 3
        ; line_number = 515
        ; bind _cvr2 = _cvrcon@2
_cvr2___byte equ _cvrcon
_cvr2___bit equ 2
        ; line_number = 516
        ; bind _cvr1 = _cvrcon@1
_cvr1___byte equ _cvrcon
_cvr1___bit equ 1
        ; line_number = 517
        ; bind _cvr0 = _cvrcon@0
_cvr0___byte equ _cvrcon
_cvr0___bit equ 0

        ; line_number = 519
        ; register _adresl = 
_adresl equ 158

        ; line_number = 521
        ; register _adcon1 = 
_adcon1 equ 159
        ; line_number = 522
        ; bind _adfm = _adcon1@7
_adfm___byte equ _adcon1
_adfm___bit equ 7
        ; line_number = 523
        ; bind _adcs2 = _adcon1@6
_adcs2___byte equ _adcon1
_adcs2___bit equ 6
        ; line_number = 524
        ; bind _vcfg1 = _adcon1@5
_vcfg1___byte equ _adcon1
_vcfg1___bit equ 5
        ; line_number = 525
        ; bind _vcfg0 = _adcon1@4
_vcfg0___byte equ _adcon1
_vcfg0___bit equ 4

        ; line_number = 527
        ; register _wdtcon = 
_wdtcon equ 261
        ; line_number = 528
        ; bind _wdtps3 = _wdtcon@4
_wdtps3___byte equ _wdtcon
_wdtps3___bit equ 4
        ; line_number = 529
        ; bind _wdtps2 = _wdtcon@3
_wdtps2___byte equ _wdtcon
_wdtps2___bit equ 3
        ; line_number = 530
        ; bind _wdtps1 = _wdtcon@2
_wdtps1___byte equ _wdtcon
_wdtps1___bit equ 2
        ; line_number = 531
        ; bind _wdtps0 = _wdtcon@1
_wdtps0___byte equ _wdtcon
_wdtps0___bit equ 1
        ; line_number = 532
        ; bind _swdten = _wdtcon@0
_swdten___byte equ _wdtcon
_swdten___bit equ 0

        ; line_number = 534
        ; register _eedata = 
_eedata equ 268

        ; line_number = 536
        ; register _eeadr = 
_eeadr equ 269

        ; line_number = 538
        ; register _eedath = 
_eedath equ 270

        ; line_number = 540
        ; register _eedatl = 
_eedatl equ 271

        ; line_number = 542
        ; register _eecon1 = 
_eecon1 equ 396
        ; line_number = 543
        ; bind _eepgd = _eecon1@7
_eepgd___byte equ _eecon1
_eepgd___bit equ 7
        ; line_number = 544
        ; bind _free = _eecon1@4
_free___byte equ _eecon1
_free___bit equ 4
        ; line_number = 545
        ; bind _wrerr = _eecon1@3
_wrerr___byte equ _eecon1
_wrerr___bit equ 3
        ; line_number = 546
        ; bind _wren = _eecon1@2
_wren___byte equ _eecon1
_wren___bit equ 2
        ; line_number = 547
        ; bind _wr = _eecon1@1
_wr___byte equ _eecon1
_wr___bit equ 1
        ; line_number = 548
        ; bind _rd = _eecon1@0
_rd___byte equ _eecon1
_rd___bit equ 0

        ; line_number = 550
        ; register _eecon2 = 
_eecon2 equ 157

        ; buffer = 'sonar6'
        ; line_number = 7
        ; library _pic16f88 exited

        ; line_number = 9
        ; library_bank 1
        ; line_number = 10
        ; library _signed16 entered

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

        ; # This library implements the following procedures for general use
        ; # by users:
        ; #
        ; #    _signed16_from_byte(x)		return signed16(x) where x is a byte
        ; #    _signed16_from_byte2(x,y)		return signed16((x<<8)|y)
        ; #					where x,y are bytes
        ; #    _signed16_to_byte(x)		return x as an 8-bit byte
        ; #    _signed16_byte_high(x)		return bigh byte of x
        ; #    _signed16_byte_low(x))		return low byte of x
        ; #
        ; # The following additional procedures are implemented for use by the
        ; # compiler.
        ; #
        ; #    _signed16_pointer_load()		A := M[W]
        ; #    _signed16_pointer_add()		A := M[W]
        ; #    _signed16_pointer_divide()		A := A / M[W]
        ; #    _signed16_pointer_multiply()	A := A * M[W]
        ; #    _signed16_pointer_subtract()	A := A - M[W]
        ; #    _signed16_pointer_store()		M[W] := A
        ; #    _signed16_pointer_negate()		A := -A
        ; #    _signed16_pointer_swap()		A <=> M[W]
        ; #    _signed16_equals()			_z := A = 0.0
        ; #    _signed16_not_equal()		_z := A != 0.0
        ; #    _signed16_less_than()		_z := if A < 0.0
        ; #    _signed16_less_than_or_equal()	_z := A <= 0.0
        ; #    _signed16_greater_than()		_z := A > 0.0
        ; #    _signed16_greater_than_or_equal()	_z := A >= 0.0
        ; #
        ; # All of the procedures constants and labels in this library are
        ; # prefixed by "_signed16_".
        ; #
        ; # For the uCL compiler, signed16's are required to be aligned on even
        ; # memory addresses.  Since the PIC16F* processor can not access more
        ; # 512 bytes of RAM, this means that a pointer to signed16 can be represented
        ; # in 8-bits as (address>>1).  (Pretty, slick!)

        ; # FIXME: Make sure that none of the procedures allocate any argument storage!!!

        ; buffer = '_signed16'
        ; line_number = 44
        ; global _signed16_a0 byte	# A Register MSB
_signed16_a0 equ globals___0
        ; line_number = 45
        ; global _signed16_a1 byte	# A Register LSB
_signed16_a1 equ globals___0+1
        ; line_number = 46
        ; global _signed16_b0 byte	# B Register MSB
_signed16_b0 equ globals___0+2
        ; line_number = 47
        ; global _signed16_b1 byte	# B Register LSB
_signed16_b1 equ globals___0+3
        ; line_number = 48
        ; global _signed16_result3 byte	# Mulitply result MSB
_signed16_result3 equ globals___0+4
        ; line_number = 49
        ; global _signed16_result2 byte
_signed16_result2 equ globals___0+5
        ; line_number = 50
        ; global _signed16_result1 byte
_signed16_result1 equ globals___0+6
        ; line_number = 51
        ; global _signed16_result0 byte	# Mulitply resultLSB
_signed16_result0 equ globals___0+7
        ; line_number = 52
        ; global _signed16_neg_flag byte	# Negative flag
_signed16_neg_flag equ globals___0+8
        ; line_number = 53
        ; global _signed16_count byte	# Loop counter for divide
_signed16_count equ globals___0+9

        ; # Bindings for 
        ; line_number = 56
        ; bind _signed16_rem0 = _signed16_result2
_signed16_rem0 equ globals___0+5
        ; line_number = 57
        ; bind _signed16_rem1 = _signed16_result3
_signed16_rem1 equ globals___0+4
        ; line_number = 58
        ; bind _signed16_temp0 = _signed16_result0
_signed16_temp0 equ globals___0+7
        ; line_number = 59
        ; bind _signed16_temp1 = _signed16_result1
_signed16_temp1 equ globals___0+6
        ; line_number = 60
        ; bind _signed16_sign = _signed16_neg_flag
_signed16_sign equ globals___0+8

        ; Delaying code generation for procedure  _signed16_pointer_load
        ; Delaying code generation for procedure  _signed16_pointer_add
        ; Delaying code generation for procedure  _signed16_pointer_divide
        ; Delaying code generation for procedure  _signed16_pointer_multiply
        ; Delaying code generation for procedure  _signed16_pointer_subtract
        ; Delaying code generation for procedure  _signed16_pointer_store
        ; Delaying code generation for procedure  _signed16_negate
        ; Delaying code generation for procedure  _signed16_pointer_swap
        ; Delaying code generation for procedure  _signed16_from_byte
        ; Delaying code generation for procedure  _signed16_from_byte2
        ; Delaying code generation for procedure  _signed16_to_byte
        ; Delaying code generation for procedure  _signed16_byte_high
        ; Delaying code generation for procedure  _signed16_byte_low
        ; Delaying code generation for procedure  _signed16_equals
        ; Delaying code generation for procedure  _signed16_not_equal
        ; Delaying code generation for procedure  _signed16_less_than
        ; Delaying code generation for procedure  _signed16_less_than_or_equal
        ; Delaying code generation for procedure  _signed16_greater_than
        ; Delaying code generation for procedure  _signed16_greater_than_or_equal
        ; #*******************************************************************
        ; #                       Double Precision Division
        ; #
        ; #               ( Optimized for Code Size : Looped Code )
        ; #
        ; #*******************************************************************#
        ; #   Division:
        ; #	Input:
        ; #	    Numeratator=_signed16_a<0:1>
        ; #	    Denominator = _signed16_b<0:1>
        ; #	Outputs:
        ; #	    Quotiant = _signed16_a<0:1>
        ; #	    Remainder in _signed16_rem<0:1>
        ; #
        ; #   Sequence:
        ; #	(a) Load the Numerator in location _signed16_a<0:1> ( 16 bits )
        ; #	(b) Load the Denominator in location _signed16_b<0:1> ( 16 bits )
        ; #	(c) call _signed16_divide_raw
        ; #	(d) The 16 bit quotiant is in location _signed16_a<0:1>
        ; #	(e) The 16 bit remainder is in locations _signed16_rem<0:1>

        ; Delaying code generation for procedure  _signed16_divide_raw

        ; buffer = 'sonar6'
        ; line_number = 10
        ; library _signed16 exited

        ; # The system is running at 16MHz:
        ; line_number = 13
        ; library clock16mhz entered
        ; # Copyright (c) 2006 by Wayne C. Gramlich
        ; # All rights reserved.

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

        ; # Define processor constants:
        ; buffer = 'clock16mhz'
        ; line_number = 9
        ; constant clock_rate = 16000000
clock_rate equ 16000000
        ; 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 4000000


        ; buffer = 'sonar6'
        ; line_number = 13
        ; library clock16mhz exited
        ; # A microsecond takes 4 cycles at 16MHz:
        ; line_number = 15
        ; constant microsecond = 4
microsecond equ 4

        ; # This module uses 16MHz crystal oscillator; hence mode EC=External Clock:

        ; # All I/O pins start off as inputs.
        ; # We switch the trigger pins to outputs as needed.
        ; line_number = 22
        ; package dip
        ; line_number = 23
        ; pin 1 = ra2_in, name=signal0
signal0___byte equ _porta
signal0___bit equ 2
        ; line_number = 24
        ;  pin 2 = ra3_in, name=trigger1
trigger1___byte equ _porta
trigger1___bit equ 3
        ; line_number = 25
        ;  pin 3 = ra4_in, name=trigger0
trigger0___byte equ _porta
trigger0___bit equ 4
        ; line_number = 26
        ;  pin 4 = ra5_in, name=signal1
signal1___byte equ _porta
signal1___bit equ 5
        ; line_number = 27
        ;  pin 5 = ground
        ; line_number = 28
        ;  pin 6 = rb0_in, name=trigger4
trigger4___byte equ _portb
trigger4___bit equ 0
        ; line_number = 29
        ;  pin 7 = rb1_in, name=signal4
signal4___byte equ _portb
signal4___bit equ 1
        ; line_number = 30
        ;  pin 8 = rx
        ; line_number = 31
        ;  pin 9 = rb3_in, name=trigger5
trigger5___byte equ _portb
trigger5___bit equ 3

        ; line_number = 33
        ;  pin 10 = rb4_in, name=signal5
signal5___byte equ _portb
signal5___bit equ 4
        ; line_number = 34
        ;  pin 11 = tx
        ; line_number = 35
        ;  pin 12 = rb6_in, name=trigger3
trigger3___byte equ _portb
trigger3___bit equ 6
        ; line_number = 36
        ;  pin 13 = rb7_in, name=signal3
signal3___byte equ _portb
signal3___bit equ 6
        ; line_number = 37
        ;  pin 14 = power_supply
        ; line_number = 38
        ;  pin 15 = osc2
        ; line_number = 39
        ;  pin 16 = osc1
        ; line_number = 40
        ;  pin 17 = ra0_out, name=trigger2
trigger2___byte equ _porta
trigger2___bit equ 0
        ; line_number = 41
        ;  pin 18 = ra1_in, name=signal2
signal2___byte equ _porta
signal2___bit equ 1

        ; #FIXME: Add "tris" to pin declaration some time!!!
        ; line_number = 44
        ; bind tris0 = _trisa@4
tris0___byte equ _trisa
tris0___bit equ 4
        ; line_number = 45
        ; bind tris1 = _trisa@3
tris1___byte equ _trisa
tris1___bit equ 3
        ; line_number = 46
        ; bind tris2 = _trisa@0
tris2___byte equ _trisa
tris2___bit equ 0
        ; line_number = 47
        ; bind tris3 = _trisb@6
tris3___byte equ _trisb
tris3___bit equ 6
        ; line_number = 48
        ; bind tris4 = _trisb@0
tris4___byte equ _trisb
tris4___bit equ 0
        ; line_number = 49
        ; bind tris5 = _trisb@3
tris5___byte equ _trisb
tris5___bit equ 3

        ; line_number = 51
        ; origin 0
        org     0

        ; line_number = 53
        ; constant data_bytes = 21
data_bytes equ 21

        ; line_number = 55
        ;info   55, 0
        ; procedure start
start:
        ; arguments_none
        ; line_number = 57
        ;  returns_nothing
        ; line_number = 58
        ;  return_suppress

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
        ; line_number = 60
        ;  assemble
        ;info   60, 0
        ; line_number = 61
        ;info   61, 0
        ; codebank start, main
        ; line_number = 62
        ;info   62, 0
        goto    main

        ; delay after procedure statements=non-uniform
        ; Return instruction suppressed by 'return_suppress'




        ; line_number = 64
        ; origin 4
        org     4

        ; line_number = 66
        ; constant sonars = 6
sonars equ 6
        ; line_number = 67
        ; global raw_highs[sonars] array[byte]
raw_highs equ globals___0+30
        ; line_number = 68
        ; global raw_lows[sonars] array[byte]
raw_lows equ globals___0+36
        ; line_number = 69
        ; global unit_highs[sonars] array[byte]
unit_highs equ globals___0+42
        ; line_number = 70
        ; global unit_lows[sonars] array[byte]
unit_lows equ globals___0+48

        ; line_number = 72
        ; global speed_divisor signed16
speed_divisor equ globals___0+54
        ; line_number = 73
        ; global distance signed16
distance equ globals___0+56

        ; line_number = 75
        ; global address byte
address equ globals___0+58
        ; line_number = 76
        ; global echo_munch bit
echo_munch___byte equ globals___0+79
echo_munch___bit equ 0
        ; line_number = 77
        ; global state byte
state equ globals___0+59
        ; line_number = 78
        ; global id_index byte
id_index equ globals___0+60
        ; line_number = 79
        ; global iteration byte
iteration equ globals___0+61


        ; line_number = 82
        ; constant sound_speed_meters = 344
sound_speed_meters equ 344
        ; line_number = 83
        ; constant sound_speed_centimeters = sound_speed_meters * 100
sound_speed_centimeters equ 34400
        ; line_number = 84
        ; constant sound_speed_millimeters = sound_speed_meters * 1000
sound_speed_millimeters equ 344000
        ; line_number = 85
        ; constant sound_speed_feet = 1128
sound_speed_feet equ 1128
        ; line_number = 86
        ; constant sound_speed_inches = sound_speed_feet * 12
sound_speed_inches equ 13536

        ; # The extra factor of 2 comes from the round trip the sound pulse must make:
        ; line_number = 89
        ; constant ticks_per_second = 1000 * 1000 * microsecond
ticks_per_second equ 4000000
        ; line_number = 90
        ; constant divisor_meters = 2 * ticks_per_second / sound_speed_meters
divisor_meters equ 23255
        ; line_number = 91
        ; constant divisor_centimeters = 2 * ticks_per_second / sound_speed_centimeters
divisor_centimeters equ 232
        ; line_number = 92
        ; constant divisor_millimeters = 2 * ticks_per_second / sound_speed_millimeters
divisor_millimeters equ 23
        ; line_number = 93
        ; constant divisor_feet = 2 * ticks_per_second / sound_speed_feet
divisor_feet equ 7092
        ; line_number = 94
        ; constant divisor_inches = 2 * ticks_per_second / sound_speed_inches
divisor_inches equ 591

        ; line_number = 96
        ; constant divisor_millimeters_high = divisor_millimeters >> 8
divisor_millimeters_high equ 0
        ; line_number = 97
        ; constant divisor_millimeters_low = divisor_millimeters & 0xff
divisor_millimeters_low equ 23

        ; line_number = 99
        ;info   99, 4
        ; procedure interrupt
interrupt:
interrupt___w_save equ shared___globals+1
interrupt___status_save equ shared___globals
        ; Carefully save __w and __tatus into RAM
        ; Save W first (easy)
        movwf   interrupt___w_save
        ; Save Status without smashing it (tricky)
        ; Move swapped version of status into W
        swapf   __status,w
        ; Store swapped version of status into RAM
        movwf   interrupt___status_save
        ; arguments_none
        ; line_number = 101
        ;  returns_nothing

        ; # Process interrupt:

        ; line_number = 105
        ;  local sonar_index byte
interrupt__sonar_index equ globals___0+62
        ; line_number = 106
        ;  local fsr_save byte
interrupt__fsr_save equ globals___0+63
        ; line_number = 107
        ;  local rx9d bit
interrupt__rx9d___byte equ globals___0+79
interrupt__rx9d___bit equ 1
        ; line_number = 108
        ;  local command byte
interrupt__command equ globals___0+64

        ; # Save the {_fsr}:
        ; before procedure statements delay=non-uniform, bit states=(data:??=uu=>?? code:X0=cu=>X0)
        ; line_number = 111
        ;  fsr_save := _fsr
        ;info   111, 7
        movf    _fsr,w
        bcf     __rp0___byte, __rp0___bit
        bcf     __rp1___byte, __rp1___bit
        movwf   interrupt__fsr_save

        ; # Deal with any errors:
        ; line_number = 114
        ;  if _oerr start
        ;info   114, 11
        ; =>bit_code_emit@symbol(): sym=_oerr
        ; 1TEST: Single test with code in skip slot
        btfsc   _oerr___byte, _oerr___bit
        ; line_number = 115
        ; _cren := _false
        ;info   115, 12
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 114
        ;  if _oerr done
        ; line_number = 116
        ; if _ferr start
        ;info   116, 13
        ; =>bit_code_emit@symbol(): sym=_ferr
        ; 1TEST: Single test with code in skip slot
        btfsc   _ferr___byte, _ferr___bit
        ; line_number = 117
        ; _cren := _false
        ;info   117, 14
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 116
        ; if _ferr done
        ; line_number = 118
        ; _cren := _true
        ;info   118, 15
        bsf     _cren___byte, _cren___bit

        ; # Receive the next byte:
        ; line_number = 121
        ;  rx9d := _false
        ;info   121, 16
        bcf     interrupt__rx9d___byte, interrupt__rx9d___bit
        ; line_number = 122
        ;  if _rx9d start
        ;info   122, 17
        ; =>bit_code_emit@symbol(): sym=_rx9d
        ; 1TEST: Single test with code in skip slot
        btfsc   _rx9d___byte, _rx9d___bit
        ; line_number = 123
        ; rx9d := _true
        ;info   123, 18
        bsf     interrupt__rx9d___byte, interrupt__rx9d___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 122
        ;  if _rx9d done
        ; line_number = 124
        ; command := _rcreg
        ;info   124, 19
        movf    _rcreg,w
        movwf   interrupt__command
        ; line_number = 125
        ;  _rcif := _false
        ;info   125, 21
        bcf     _rcif___byte, _rcif___bit
        ; line_number = 126
        ;  _tx9d := _false
        ;info   126, 22
        bsf     __rp0___byte, __rp0___bit
        bcf     _tx9d___byte, _tx9d___bit

        ; # Deal with address select bit:
        ; line_number = 129
        ;  if echo_munch start
        ;info   129, 24
        ; =>bit_code_emit@symbol(): sym=echo_munch
        ; No 1TEST: true.size=1 false.size=195
        ; No 2TEST: true.size=1 false.size=195
        ; 2GOTO: Single test with two GOTO's
        bcf     __rp0___byte, __rp0___bit
        btfss   echo_munch___byte, echo_munch___bit
        goto    interrupt__38
        ; # We are munching an echo byte:
        ; line_number = 131
        ;  echo_munch := _false
        ;info   131, 27
        bcf     echo_munch___byte, echo_munch___bit
        ; Recombine code1_bit_states != code2_bit_states
        goto    interrupt__39
        ; 2GOTO: Starting code 2
interrupt__38:
        ; line_number = 132
        ;info   132, 29
        ; =>bit_code_emit@symbol(): sym=interrupt__rx9d
        ; No 1TEST: true.size=11 false.size=181
        ; No 2TEST: true.size=11 false.size=181
        ; 2GOTO: Single test with two GOTO's
        btfss   interrupt__rx9d___byte, interrupt__rx9d___bit
        goto    interrupt__36
        ; # We have an address byte:
        ; line_number = 134
        ;  if command = address start
        ;info   134, 31
        ; Left minus Right
        movf    address,w
        subwf   interrupt__command,w
        ; =>bit_code_emit@symbol(): sym=__z
        ; No 1TEST: true.size=5 false.size=1
        ; No 2TEST: true.size=5 false.size=1
        ; 2GOTO: Single test with two GOTO's
        btfss   __z___byte, __z___bit
        goto    interrupt__34
        ; # We are selected; receive all bytes:
        ; line_number = 136
        ;  state := 0
        ;info   136, 35
        clrf    state
        ; #_tx9d := _false
        ; line_number = 138
        ;  _txreg := 0xa5
        ;info   138, 36
        movlw   165
        movwf   _txreg
        ; line_number = 139
        ;  echo_munch := _true
        ;info   139, 38
        bsf     echo_munch___byte, echo_munch___bit
        ; line_number = 140
        ;  _adden := _false
        ;info   140, 39
        bcf     _adden___byte, _adden___bit
        goto    interrupt__35
        ; 2GOTO: Starting code 2
interrupt__34:
        ; # We are not selected; only listen for address bytes:
        ; line_number = 143
        ;  _adden := _true
        ;info   143, 41
        bsf     _adden___byte, _adden___bit
interrupt__35:
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
        ; line_number = 134
        ;  if command = address done
        goto    interrupt__37
        ; 2GOTO: Starting code 2
interrupt__36:
        ; # We have a command/data byte:
        ; #_txreg := 0x23
        ; #echo_munch := _true

        ; line_number = 149
        ;  switch state start
        ;info   149, 43
        ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
        movlw   interrupt__32>>8
        movwf   __pclath
        movf    state,w
        ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
        addlw   interrupt__32
        movwf   __pcl
        ; page_group 1
interrupt__32:
        goto    interrupt__31
        ; line_number = 150
        ; case 0
interrupt__31:
        ; # Command byte:
        ; line_number = 152
        ;  switch command >> 6 start
        ;info   152, 49
        ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
        movlw   interrupt__28>>8
        movwf   __pclath
interrupt__29 equ globals___0+72
        swapf   interrupt__command,w
        movwf   interrupt__29
        rrf     interrupt__29,f
        rrf     interrupt__29,w
        andlw   3
        ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
        addlw   interrupt__28
        movwf   __pcl
        ; page_group 4
interrupt__28:
        goto    interrupt__26
        goto    interrupt__30
        goto    interrupt__30
        goto    interrupt__27
        ; line_number = 153
        ; case 0
interrupt__26:
        ; # 00xx xxxx:
        ; line_number = 155
        ;  sonar_index := command & 7
        ;info   155, 62
        movlw   7
        andwf   interrupt__command,w
        movwf   interrupt__sonar_index
        ; line_number = 156
        ;  if sonar_index >= sonars start
        ;info   156, 65
        movlw   6
        subwf   interrupt__sonar_index,w
        ; =>bit_code_emit@symbol(): sym=__c
        ; 1TEST: Single test with code in skip slot
        btfsc   __c___byte, __c___bit
        ; line_number = 157
        ; sonar_index := 0
        ;info   157, 68
        clrf    interrupt__sonar_index
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 156
        ;  if sonar_index >= sonars done
        ; line_number = 158
        ; switch (command >> 3) & 7 start
        ;info   158, 69
        ; switch_before:(data:00=uu=>00 code:XX=cc=>XX) size=7
        ; line_number = 159
        ; case_maximum 7
        movlw   interrupt__13>>8
        movwf   __pclath
interrupt__14 equ globals___0+72
        rrf     interrupt__command,w
        movwf   interrupt__14
        rrf     interrupt__14,f
        rrf     interrupt__14,w
        andlw   7
        ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
        addlw   interrupt__13
        movwf   __pcl
        ; page_group 8
interrupt__13:
        goto    interrupt__8
        goto    interrupt__9
        goto    interrupt__10
        goto    interrupt__11
        goto    interrupt__12
        goto    interrupt__15
        goto    interrupt__15
        goto    interrupt__15
        ; line_number = 160
        ; case 0
interrupt__8:
        ; # 0000 0sss (Raw High Get):
        ; line_number = 162
        ;  _txreg := raw_highs[sonar_index]
        ;info   162, 86
        movf    interrupt__sonar_index,w
        addlw   raw_highs
        movwf   __fsr
        bcf     __irp___byte, __irp___bit
        movf    __indf,w
        movwf   _txreg
        ; line_number = 163
        ;  echo_munch := _true
        ;info   163, 92
        bsf     echo_munch___byte, echo_munch___bit
        goto    interrupt__15
        ; line_number = 164
        ; case 1
interrupt__9:
        ; # 0000 1sss (Raw Low Get):
        ; line_number = 166
        ;  _txreg := raw_lows[sonar_index]
        ;info   166, 94
        movf    interrupt__sonar_index,w
        addlw   raw_lows
        movwf   __fsr
        bcf     __irp___byte, __irp___bit
        movf    __indf,w
        movwf   _txreg
        ; line_number = 167
        ;  echo_munch := _true
        ;info   167, 100
        bsf     echo_munch___byte, echo_munch___bit
        goto    interrupt__15
        ; line_number = 168
        ; case 2
interrupt__10:
        ; # 0001 0sss (Distance High Get):
        ; line_number = 170
        ;  _txreg := unit_highs[sonar_index]
        ;info   170, 102
        movf    interrupt__sonar_index,w
        addlw   unit_highs
        movwf   __fsr
        bcf     __irp___byte, __irp___bit
        movf    __indf,w
        movwf   _txreg
        ; line_number = 171
        ;  echo_munch := _true
        ;info   171, 108
        bsf     echo_munch___byte, echo_munch___bit
        goto    interrupt__15
        ; line_number = 172
        ; case 3
interrupt__11:
        ; # 0001 1sss (Distance Low Get):
        ; line_number = 174
        ;  _txreg := unit_lows[sonar_index]
        ;info   174, 110
        movf    interrupt__sonar_index,w
        addlw   unit_lows
        movwf   __fsr
        bcf     __irp___byte, __irp___bit
        movf    __indf,w
        movwf   _txreg
        ; line_number = 175
        ;  echo_munch := _true
        ;info   175, 116
        bsf     echo_munch___byte, echo_munch___bit
        goto    interrupt__15
        ; line_number = 176
        ; case 4
interrupt__12:
        ; # 0010 0xxx:
        ; line_number = 178
        ;  switch command & 7 start
        ;info   178, 118
        ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
        ; line_number = 179
        ; case_maximum 7
        movlw   interrupt__6>>8
        movwf   __pclath
        movlw   7
        andwf   interrupt__command,w
        ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
        addlw   interrupt__6
        movwf   __pcl
        ; page_group 8
interrupt__6:
        goto    interrupt__1
        goto    interrupt__2
        goto    interrupt__3
        goto    interrupt__4
        goto    interrupt__5
        goto    interrupt__7
        goto    interrupt__7
        goto    interrupt__7
        ; line_number = 180
        ; case 0
interrupt__1:
        bsf     __cb0___byte, __cb0___bit
        ; line_number = 181
        ; _txreg := _signed16_byte_high(speed_divisor)
        ;info   181, 133
        movlw   speed_divisor>>1
        call    _signed16_pointer_load
        movlw   _signed16_byte_high__number>>1
        call    _signed16_pointer_store
        call    _signed16_byte_high
        movwf   _txreg
        ; line_number = 182
        ;  echo_munch := _true
        ;info   182, 139
        bsf     echo_munch___byte, echo_munch___bit
        bcf     __cb0___byte, __cb0___bit
        goto    interrupt__7
        ; line_number = 183
        ; case 1
interrupt__2:
        bsf     __cb0___byte, __cb0___bit
        ; line_number = 184
        ; _txreg := _signed16_byte_low(speed_divisor)
        ;info   184, 143
        movlw   speed_divisor>>1
        call    _signed16_pointer_load
        movlw   _signed16_byte_low__number>>1
        call    _signed16_pointer_store
        call    _signed16_byte_low
        movwf   _txreg
        ; line_number = 185
        ;  echo_munch := _true
        ;info   185, 149
        bsf     echo_munch___byte, echo_munch___bit
        bcf     __cb0___byte, __cb0___bit
        goto    interrupt__7
        ; line_number = 186
        ; case 2
interrupt__3:
        bsf     __cb0___byte, __cb0___bit
        ; line_number = 187
        ; _txreg := _signed16_byte_high(distance)
        ;info   187, 153
        movlw   distance>>1
        call    _signed16_pointer_load
        movlw   _signed16_byte_high__number>>1
        call    _signed16_pointer_store
        call    _signed16_byte_high
        movwf   _txreg
        ; line_number = 188
        ;  echo_munch := _true
        ;info   188, 159
        bsf     echo_munch___byte, echo_munch___bit
        bcf     __cb0___byte, __cb0___bit
        goto    interrupt__7
        ; line_number = 189
        ; case 3
interrupt__4:
        bsf     __cb0___byte, __cb0___bit
        ; line_number = 190
        ; _txreg := _signed16_byte_low(distance)
        ;info   190, 163
        movlw   distance>>1
        call    _signed16_pointer_load
        movlw   _signed16_byte_low__number>>1
        call    _signed16_pointer_store
        call    _signed16_byte_low
        movwf   _txreg
        ; line_number = 191
        ;  echo_munch := _true
        ;info   191, 169
        bsf     echo_munch___byte, echo_munch___bit
        bcf     __cb0___byte, __cb0___bit
        goto    interrupt__7
        ; line_number = 192
        ; case 4
interrupt__5:
        ; line_number = 193
        ; _txreg := 0x12
        ;info   193, 172
        movlw   18
        movwf   _txreg
        ; line_number = 194
        ;  echo_munch := _true
        ;info   194, 174
        bsf     echo_munch___byte, echo_munch___bit
interrupt__7:
        ; line_number = 178
        ;  switch command & 7 done
interrupt__15:
        ; line_number = 158
        ; switch (command >> 3) & 7 done
        goto    interrupt__30
        ; line_number = 195
        ; case 3
interrupt__27:
        ; # 11xx xxxx:
        ; line_number = 197
        ;  switch (command >> 3) & 7 start
        ;info   197, 176
        ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
        movlw   interrupt__23>>8
        movwf   __pclath
interrupt__24 equ globals___0+72
        rrf     interrupt__command,w
        movwf   interrupt__24
        rrf     interrupt__24,f
        rrf     interrupt__24,w
        andlw   7
        ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
        addlw   interrupt__23
        movwf   __pcl
        ; page_group 8
interrupt__23:
        goto    interrupt__25
        goto    interrupt__25
        goto    interrupt__25
        goto    interrupt__25
        goto    interrupt__25
        goto    interrupt__25
        goto    interrupt__25
        goto    interrupt__22
        ; line_number = 198
        ; case 7
interrupt__22:
        ; line_number = 199
        ; switch command & 7 start
        ;info   199, 193
        ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
        movlw   interrupt__20>>8
        movwf   __pclath
        movlw   7
        andwf   interrupt__command,w
        ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
        addlw   interrupt__20
        movwf   __pcl
        ; page_group 8
interrupt__20:
        goto    interrupt__21
        goto    interrupt__21
        goto    interrupt__21
        goto    interrupt__21
        goto    interrupt__16
        goto    interrupt__17
        goto    interrupt__18
        goto    interrupt__19
        ; line_number = 200
        ; case 4
interrupt__16:
        ; # 1111 1100 (Address Set)
        ; line_number = 202
        ;  do_nothing
        ;info   202, 207
        goto    interrupt__21
        ; line_number = 203
        ; case 5
interrupt__17:
        ; # 1111 1101 (Id_Next):
        ; line_number = 205
        ;  _txreg := id[id_index]
        ;info   205, 208
        movf    id_index,w
        call    id
        movwf   _txreg
        ; line_number = 206
        ;  echo_munch := _true
        ;info   206, 211
        bsf     echo_munch___byte, echo_munch___bit
        ; line_number = 207
        ;  id_index := id_index + 1
        ;info   207, 212
        incf    id_index,f
        ; line_number = 208
        ;  if id_index >= id.size start
        ;info   208, 213
        movlw   22
        subwf   id_index,w
        ; =>bit_code_emit@symbol(): sym=__c
        ; 1TEST: Single test with code in skip slot
        btfsc   __c___byte, __c___bit
        ; line_number = 209
        ; id_index := id_index - 1
        ;info   209, 216
        decf    id_index,f
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 208
        ;  if id_index >= id.size done
        goto    interrupt__21
        ; line_number = 210
        ; case 6
interrupt__18:
        ; # 1111 1110 (Id_Start):
        ; line_number = 212
        ;  id_index := 0
        ;info   212, 218
        clrf    id_index
        ; line_number = 213
        ;  _txreg := id.size
        ;info   213, 219
        movlw   22
        movwf   _txreg
        ; line_number = 214
        ;  echo_munch := _true
        ;info   214, 221
        bsf     echo_munch___byte, echo_munch___bit
        goto    interrupt__21
        ; line_number = 215
        ; case 7
interrupt__19:
        ; # 1111 1111 (Deselect):
        ; line_number = 217
        ;  _adden := _true
        ;info   217, 223
        bsf     _adden___byte, _adden___bit

interrupt__21:
        ; line_number = 199
        ; switch command & 7 done
interrupt__25:
        ; line_number = 197
        ;  switch (command >> 3) & 7 done
interrupt__30:
        ; line_number = 152
        ;  switch command >> 6 done
interrupt__33:
        ; line_number = 149
        ;  switch state done
interrupt__37:
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
        ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
interrupt__39:
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
        ; 2GOTO: code final bitstates:(data:??=uu=>00 code:X0=cu=>X0)
        ; line_number = 129
        ;  if echo_munch done
        ; # Restore {_fsr}:
        ; line_number = 220
        ;  _fsr := fsr_save
        ;info   220, 224
        movf    interrupt__fsr_save,w
        movwf   _fsr


        ; delay after procedure statements=non-uniform
        ; Interrupt return
        ; Carefully restore __w and __tatus from RAM
        ; Restore swapped status into W
        swapf   interrupt___status_save,w
        ; W now contains (unswapped) status
        ; Restore W to __status
        movwf   __status
        ; From here on out, do not modify __status
        ; Swap saved W register in RAM
        swapf   interrupt___w_save,f
        ; Unswap the saved W reg and restore to W
        swapf   interrupt___w_save,w
        ; __w and __status are now restored
        ; Return from interrupt
        retfie  




        ; line_number = 223
        ;info   223, 231
        ; procedure main
main:
        ; Initialize some registers
        clrf    _adcon0
        bsf     __rp0___byte, __rp0___bit
        clrf    _ansel
        movlw   7
        movwf   _cmcon
        movlw   254
        movwf   _trisa
        movlw   255
        movwf   _trisb
        ; arguments_none
        ; line_number = 225
        ;  returns_nothing

        ; # Main procedure and loop:

        ; line_number = 229
        ;  local sonar_index byte
main__sonar_index equ globals___0+65
        ; line_number = 230
        ;  local raw_high byte
main__raw_high equ globals___0+66
        ; line_number = 231
        ;  local raw_low byte
main__raw_low equ globals___0+67
        ; line_number = 232
        ;  local started bit
main__started___byte equ globals___0+79
main__started___bit equ 2
        ; line_number = 233
        ;  local count byte
main__count equ globals___0+68
        ; line_number = 234
        ;  local period signed16
main__period equ globals___0+70

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>01 code:X0=cu=>X0)
        ; line_number = 236
        ;  call reset()
        ;info   236, 240
        bcf     __rp0___byte, __rp0___bit
        call    reset

        ; line_number = 238
        ;  sonar_index := 0
        ;info   238, 242
        clrf    main__sonar_index
        ; # Churn over the sonars:
        ; line_number = 240
        ;  loop_forever start
main__1:
        ; line_number = 241
        ; sonar_index := sonar_index + 1
        ;info   241, 243
        incf    main__sonar_index,f
        ; line_number = 242
        ;  if sonar_index >= sonars start
        ;info   242, 244
        movlw   6
        subwf   main__sonar_index,w
        ; =>bit_code_emit@symbol(): sym=__c
        ; 1TEST: Single test with code in skip slot
        btfsc   __c___byte, __c___bit
        ; line_number = 243
        ; sonar_index := 0
        ;info   243, 247
        clrf    main__sonar_index

        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 242
        ;  if sonar_index >= sonars done
        ; line_number = 245
        ; raw_high := 0x7f
        ;info   245, 248
        movlw   127
        movwf   main__raw_high
        ; line_number = 246
        ;  raw_low := 0xff
        ;info   246, 250
        movlw   255
        movwf   main__raw_low

        ; line_number = 248
        ;  if _true start
        ;info   248, 252
        ; line_number = 249
        ; switch sonar_index start
        ;info   249, 252
        ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
        movlw   main__8>>8
        movwf   __pclath
        movf    main__sonar_index,w
        ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
        ; All case bodies prefer this bit set
        bsf     __rp0___byte, __rp0___bit
        addlw   main__8
        movwf   __pcl
        ; page_group 6
main__8:
        goto    main__2
        goto    main__3
        goto    main__4
        goto    main__5
        goto    main__6
        goto    main__7
        ; line_number = 250
        ; case 0
main__2:
        ; line_number = 251
        ; tris0 := _false
        ;info   251, 264
        bcf     tris0___byte, tris0___bit
        ; line_number = 252
        ;  trigger0 := _true
        ;info   252, 265
        bcf     __rp0___byte, __rp0___bit
        bsf     trigger0___byte, trigger0___bit
        goto    main__9
        ; line_number = 253
        ; case 1
main__3:
        ; line_number = 254
        ; tris1 := _false
        ;info   254, 268
        bcf     tris1___byte, tris1___bit
        ; line_number = 255
        ;  trigger1 := _true
        ;info   255, 269
        bcf     __rp0___byte, __rp0___bit
        bsf     trigger1___byte, trigger1___bit
        goto    main__9
        ; line_number = 256
        ; case 2
main__4:
        ; line_number = 257
        ; tris2 := _false
        ;info   257, 272
        bcf     tris2___byte, tris2___bit
        ; line_number = 258
        ;  trigger2 := _true
        ;info   258, 273
        bcf     __rp0___byte, __rp0___bit
        bsf     trigger2___byte, trigger2___bit
        goto    main__9
        ; line_number = 259
        ; case 3
main__5:
        ; line_number = 260
        ; tris3 := _false
        ;info   260, 276
        bcf     tris3___byte, tris3___bit
        ; line_number = 261
        ;  trigger3 := _true
        ;info   261, 277
        bcf     __rp0___byte, __rp0___bit
        bsf     trigger3___byte, trigger3___bit
        goto    main__9
        ; line_number = 262
        ; case 4
main__6:
        ; line_number = 263
        ; tris4 := _false
        ;info   263, 280
        bcf     tris4___byte, tris4___bit
        ; line_number = 264
        ;  trigger4 := _true
        ;info   264, 281
        bcf     __rp0___byte, __rp0___bit
        bsf     trigger4___byte, trigger4___bit
        goto    main__9
        ; line_number = 265
        ; case 5
main__7:
        ; line_number = 266
        ; tris5 := _false
        ;info   266, 284
        bcf     tris5___byte, tris5___bit
        ; line_number = 267
        ;  trigger5 := _true
        ;info   267, 285
        bcf     __rp0___byte, __rp0___bit
        bsf     trigger5___byte, trigger5___bit

main__9:
        ; line_number = 249
        ; switch sonar_index done
        ; # Trigger the sonar for at least 5 microseconds:
        ; line_number = 270
        ;  delay 5 * microsecond start
        ;info   270, 287
        ; Delay expression evaluates to 20
        ; line_number = 271
        ; do_nothing
        ;info   271, 287

        ; Delay 20 cycles
        ; Delay loop takes 5 * 4 = 20 cycles
        movlw   5
main__10:
        addlw   255
        btfss   __z___byte, __z___bit
        goto    main__10
        ; line_number = 270
        ;  delay 5 * microsecond done
        ; # Get the trigger pulse turned off:
        ; line_number = 274
        ;  trigger0 := _false
        ;info   274, 291
        bcf     trigger0___byte, trigger0___bit
        ; line_number = 275
        ;  trigger1 := _false
        ;info   275, 292
        bcf     trigger1___byte, trigger1___bit
        ; line_number = 276
        ;  trigger2 := _false
        ;info   276, 293
        bcf     trigger2___byte, trigger2___bit
        ; line_number = 277
        ;  trigger3 := _false
        ;info   277, 294
        bcf     trigger3___byte, trigger3___bit
        ; line_number = 278
        ;  trigger4 := _false
        ;info   278, 295
        bcf     trigger4___byte, trigger4___bit
        ; line_number = 279
        ;  trigger5 := _false
        ;info   279, 296
        bcf     trigger5___byte, trigger5___bit

        ; # Make for sure all triggers are turned off:
        ; line_number = 282
        ;  tris0 := _true
        ;info   282, 297
        bsf     __rp0___byte, __rp0___bit
        bsf     tris0___byte, tris0___bit
        ; line_number = 283
        ;  tris1 := _true
        ;info   283, 299
        bsf     tris1___byte, tris1___bit
        ; line_number = 284
        ;  tris2 := _true
        ;info   284, 300
        bsf     tris2___byte, tris2___bit
        ; line_number = 285
        ;  tris3 := _true
        ;info   285, 301
        bsf     tris3___byte, tris3___bit
        ; line_number = 286
        ;  tris4 := _true
        ;info   286, 302
        bsf     tris4___byte, tris4___bit
        ; line_number = 287
        ;  tris5 := _true
        ;info   287, 303
        bsf     tris5___byte, tris5___bit

        ; # Get the timer ready to run:
        ; line_number = 290
        ;  _t1con := 0
        ;info   290, 304
        bcf     __rp0___byte, __rp0___bit
        clrf    _t1con
        ; line_number = 291
        ;  _tmr1l := 0
        ;info   291, 306
        clrf    _tmr1l
        ; line_number = 292
        ;  _tmr1h := 0
        ;info   292, 307
        clrf    _tmr1h

        ; # Wait for pulse to start:
        ; line_number = 295
        ;  started := _false
        ;info   295, 308
        bcf     main__started___byte, main__started___bit
        ; line_number = 296
        ;  count := 0
        ;info   296, 309
        clrf    main__count
        ; line_number = 297
        ;  while count < 100 && !started start
main__11:
        ;info   297, 310
        movlw   100
        subwf   main__count,w
        ; =>bit_code_emit@symbol(): sym=__c
        ; No 1TEST: true.size=1 false.size=37
        ; No 2TEST: true.size=1 false.size=37
        ; 2GOTO: Single test with two GOTO's
        btfsc   __c___byte, __c___bit
        goto    main__21
        ; Recombine code1_bit_states != code2_bit_states
        ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
        ; =>bit_code_emit@symbol(): sym=main__started
        ; No 1TEST: true.size=0 false.size=35
        ; No 2TEST: true.size=0 false.size=35
        ; 1GOTO: Single test with GOTO
        btfsc   main__started___byte, main__started___bit
        goto    main__22
        ; line_number = 298
        ; started := _false
        ;info   298, 316
        bcf     main__started___byte, main__started___bit
        ; line_number = 299
        ;  switch sonar_index start
        ;info   299, 317
        ; switch_before:(data:00=uu=>00 code:XX=cc=>XX) size=1
        movlw   main__18>>8
        movwf   __pclath
        movf    main__sonar_index,w
        ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
        addlw   main__18
        movwf   __pcl
        ; page_group 6
main__18:
        goto    main__12
        goto    main__13
        goto    main__14
        goto    main__15
        goto    main__16
        goto    main__17
        ; line_number = 300
        ; case 0
main__12:
        ; line_number = 301
        ; if signal0 start
        ;info   301, 328
        ; =>bit_code_emit@symbol(): sym=signal0
        ; 1TEST: Single test with code in skip slot
        btfsc   signal0___byte, signal0___bit
        ; line_number = 302
        ; started := _true
        ;info   302, 329
        bsf     main__started___byte, main__started___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 301
        ; if signal0 done
        goto    main__19
        ; line_number = 303
        ; case 1
main__13:
        ; line_number = 304
        ; if signal1 start
        ;info   304, 331
        ; =>bit_code_emit@symbol(): sym=signal1
        ; 1TEST: Single test with code in skip slot
        btfsc   signal1___byte, signal1___bit
        ; line_number = 305
        ; started := _true
        ;info   305, 332
        bsf     main__started___byte, main__started___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 304
        ; if signal1 done
        goto    main__19
        ; line_number = 306
        ; case 2
main__14:
        ; line_number = 307
        ; if signal2 start
        ;info   307, 334
        ; =>bit_code_emit@symbol(): sym=signal2
        ; 1TEST: Single test with code in skip slot
        btfsc   signal2___byte, signal2___bit
        ; line_number = 308
        ; started := _true
        ;info   308, 335
        bsf     main__started___byte, main__started___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 307
        ; if signal2 done
        goto    main__19
        ; line_number = 309
        ; case 3
main__15:
        ; line_number = 310
        ; if signal3 start
        ;info   310, 337
        ; =>bit_code_emit@symbol(): sym=signal3
        ; 1TEST: Single test with code in skip slot
        btfsc   signal3___byte, signal3___bit
        ; line_number = 311
        ; started := _true
        ;info   311, 338
        bsf     main__started___byte, main__started___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 310
        ; if signal3 done
        goto    main__19
        ; line_number = 312
        ; case 4
main__16:
        ; line_number = 313
        ; if signal4 start
        ;info   313, 340
        ; =>bit_code_emit@symbol(): sym=signal4
        ; 1TEST: Single test with code in skip slot
        btfsc   signal4___byte, signal4___bit
        ; line_number = 314
        ; started := _true
        ;info   314, 341
        bsf     main__started___byte, main__started___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 313
        ; if signal4 done
        goto    main__19
        ; line_number = 315
        ; case 5
main__17:
        ; line_number = 316
        ; if signal5 start
        ;info   316, 343
        ; =>bit_code_emit@symbol(): sym=signal5
        ; 1TEST: Single test with code in skip slot
        btfsc   signal5___byte, signal5___bit
        ; line_number = 317
        ; started := _true
        ;info   317, 344
        bsf     main__started___byte, main__started___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 316
        ; if signal5 done
main__19:
        ; line_number = 299
        ;  switch sonar_index done
        ; line_number = 318
        ; count := count + 1
        ;info   318, 345
        incf    main__count,f

        ; line_number = 320
        ;  delay 9 * microsecond start
        ;info   320, 346
        ; Delay expression evaluates to 36
        ; line_number = 321
        ; do_nothing
        ;info   321, 346

        ; Delay 36 cycles
        ; Delay loop takes 9 * 4 = 36 cycles
        movlw   9
main__20:
        addlw   255
        btfss   __z___byte, __z___bit
        goto    main__20
        ; line_number = 320
        ;  delay 9 * microsecond done
        goto    main__11
main__22:
main__21:
        ; Recombine code1_bit_states != code2_bit_states
        ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
        ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295
        ; 2GOTO: No goto needed; true=main__21 false= true_size=1 false_size=37
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
        ; 2GOTO: code2 final bitstates:(data:XX=cc=>XX code:X0=cu=>X0)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
        ; line_number = 297
        ;  while count < 100 && !started done
        ; line_number = 323
        ; if started start
        ;info   323, 351
        ; =>bit_code_emit@symbol(): sym=main__started
        ; No 1TEST: true.size=49 false.size=0
        ; No 2TEST: true.size=49 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   main__started___byte, main__started___bit
        goto    main__37
        ; # Pulse has started; Get TRM1 started:
        ; line_number = 325
        ;  _tmr1on := _true
        ;info   325, 353
        bsf     _tmr1on___byte, _tmr1on___bit

        ; # Wait for pulse to end:
        ; line_number = 328
        ;  switch sonar_index start
        ;info   328, 354
        ; switch_before:(data:00=uu=>00 code:XX=cc=>XX) size=1
        movlw   main__35>>8
        movwf   __pclath
        movf    main__sonar_index,w
        ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
        addlw   main__35
        movwf   __pcl
        ; page_group 6
main__35:
        goto    main__29
        goto    main__30
        goto    main__31
        goto    main__32
        goto    main__33
        goto    main__34
        ; line_number = 329
        ; case 0
main__29:
        ; line_number = 330
        ; while signal0 start
main__23:
        ;info   330, 365
        ; =>bit_code_emit@symbol(): sym=signal0
        ; 1TEST: Single test with code in skip slot
        btfsc   signal0___byte, signal0___bit
        ; line_number = 331
        ; do_nothing
        ;info   331, 366
        goto    main__23
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 330
        ; while signal0 done
        goto    main__36
        ; line_number = 332
        ; case 1
main__30:
        ; line_number = 333
        ; while signal1 start
main__24:
        ;info   333, 368
        ; =>bit_code_emit@symbol(): sym=signal1
        ; 1TEST: Single test with code in skip slot
        btfsc   signal1___byte, signal1___bit
        ; line_number = 334
        ; do_nothing
        ;info   334, 369
        goto    main__24
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 333
        ; while signal1 done
        goto    main__36
        ; line_number = 335
        ; case 2
main__31:
        ; line_number = 336
        ; while signal2 start
main__25:
        ;info   336, 371
        ; =>bit_code_emit@symbol(): sym=signal2
        ; 1TEST: Single test with code in skip slot
        btfsc   signal2___byte, signal2___bit
        ; line_number = 337
        ; do_nothing
        ;info   337, 372
        goto    main__25
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 336
        ; while signal2 done
        goto    main__36
        ; line_number = 338
        ; case 3
main__32:
        ; line_number = 339
        ; while signal3 start
main__26:
        ;info   339, 374
        ; =>bit_code_emit@symbol(): sym=signal3
        ; 1TEST: Single test with code in skip slot
        btfsc   signal3___byte, signal3___bit
        ; line_number = 340
        ; do_nothing
        ;info   340, 375
        goto    main__26
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 339
        ; while signal3 done
        goto    main__36
        ; line_number = 341
        ; case 4
main__33:
        ; line_number = 342
        ; while signal4 start
main__27:
        ;info   342, 377
        ; =>bit_code_emit@symbol(): sym=signal4
        ; 1TEST: Single test with code in skip slot
        btfsc   signal4___byte, signal4___bit
        ; line_number = 343
        ; do_nothing
        ;info   343, 378
        goto    main__27
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 342
        ; while signal4 done
        goto    main__36
        ; line_number = 344
        ; case 5
main__34:
        ; line_number = 345
        ; while signal5 start
main__28:
        ;info   345, 380
        ; =>bit_code_emit@symbol(): sym=signal5
        ; 1TEST: Single test with code in skip slot
        btfsc   signal5___byte, signal5___bit
        ; line_number = 346
        ; do_nothing
        ;info   346, 381

        goto    main__28
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 345
        ; while signal5 done
main__36:
        ; line_number = 328
        ;  switch sonar_index done
        ; # Pulse has ended; Turn TMR1 off:
        ; line_number = 349
        ;  _tmr1on := _false
        ;info   349, 382
        bcf     _tmr1on___byte, _tmr1on___bit

        ; line_number = 351
        ;  raw_high := _tmr1h
        ;info   351, 383
        movf    _tmr1h,w
        movwf   main__raw_high
        ; line_number = 352
        ;  raw_low := _tmr1l
        ;info   352, 385
        movf    _tmr1l,w
        movwf   main__raw_low

        ; line_number = 354
        ;  period := _signed16_from_byte2(raw_high, raw_low)
        ;info   354, 387
        movf    main__raw_high,w
        movwf   _signed16_from_byte2__byte1
        movf    main__raw_low,w
        bsf     __cb0___byte, __cb0___bit
        call    _signed16_from_byte2
        movlw   _signed16_from_byte2__0return>>1
        call    _signed16_pointer_load
        movlw   main__period>>1
        call    _signed16_pointer_store
        ; line_number = 355
        ;  distance := period / speed_divisor
        ;info   355, 396
        movlw   main__period>>1
        call    _signed16_pointer_load
        movlw   speed_divisor>>1
        call    _signed16_pointer_divide
        movlw   distance>>1
        call    _signed16_pointer_store

        ; # Call to the procedure works around a compiler bug,
        ; # whereby the code bank bit does not get reset.
        ; #call compiler_bug_work_around()

        ; Recombine size1 = 0 || size2 = 0
main__37:
        ; line_number = 323
        ; if started done
        ; line_number = 248
        ;  if _true done
        ; # Return the result:
        ; line_number = 362
        ;  _gie := _false
        ;info   362, 402
        bcf     _gie___byte, _gie___bit
        ; line_number = 363
        ;  raw_highs[sonar_index] := raw_high
        ;info   363, 403
        ; index_fsr_first
        movf    main__sonar_index,w
        addlw   raw_highs
        movwf   __fsr
        bcf     __irp___byte, __irp___bit
        movf    main__raw_high,w
        movwf   __indf
        ; line_number = 364
        ;  raw_lows[sonar_index] := raw_low
        ;info   364, 409
        ; index_fsr_first
        movf    main__sonar_index,w
        addlw   raw_lows
        movwf   __fsr
        bcf     __irp___byte, __irp___bit
        movf    main__raw_low,w
        movwf   __indf
        ; line_number = 365
        ;  unit_highs[sonar_index] := _signed16_byte_high(distance)
        ;info   365, 415
        ; index_temporary_first
main__38 equ globals___0+73
main__39 equ globals___0+74
        movf    main__sonar_index,w
        movwf   main__38
        movlw   distance>>1
        bsf     __cb0___byte, __cb0___bit
        call    _signed16_pointer_load
        movlw   _signed16_byte_high__number>>1
        call    _signed16_pointer_store
        call    _signed16_byte_high
        movwf   main__39
        movf    main__38,w
        addlw   unit_highs
        movwf   __fsr
        bcf     __irp___byte, __irp___bit
        movf    main__39,w
        movwf   __indf
        ; line_number = 366
        ;  unit_lows[sonar_index] := _signed16_byte_low(distance)
        ;info   366, 430
        ; index_temporary_first
main__40 equ globals___0+73
main__41 equ globals___0+74
        movf    main__sonar_index,w
        movwf   main__40
        movlw   distance>>1
        call    _signed16_pointer_load
        movlw   _signed16_byte_low__number>>1
        call    _signed16_pointer_store
        call    _signed16_byte_low
        movwf   main__41
        movf    main__40,w
        addlw   unit_lows
        movwf   __fsr
        bcf     __irp___byte, __irp___bit
        movf    main__41,w
        movwf   __indf
        ; line_number = 367
        ;  _gie := _true
        ;info   367, 444
        bsf     _gie___byte, _gie___bit

        ; # Delay .1 sec:
        ; line_number = 370
        ;  loop_exactly 10 start
        ;info   370, 445
main__42 equ globals___0+73
        movlw   10
        movwf   main__42
        bcf     __cb0___byte, __cb0___bit
main__43:
        ; line_number = 371
        ; loop_exactly 100 start
        ;info   371, 448
main__44 equ globals___0+74
        movlw   100
        movwf   main__44
main__45:
        ; line_number = 372
        ; delay 100 *microsecond start
        ;info   372, 450
        ; Delay expression evaluates to 400
        ; line_number = 373
        ; do_nothing
        ;info   373, 450

        ; Delay 400 cycles
        ; Delay loop takes 100 * 4 = 400 cycles
        movlw   100
main__46:
        addlw   255
        btfss   __z___byte, __z___bit
        goto    main__46
        ; line_number = 372
        ; delay 100 *microsecond done
        ; line_number = 371
        ; loop_exactly 100 wrap-up
        decfsz  main__44,f
        goto    main__45
        ; line_number = 371
        ; loop_exactly 100 done
        ; line_number = 370
        ;  loop_exactly 10 wrap-up
        decfsz  main__42,f
        goto    main__43
        ; line_number = 370
        ;  loop_exactly 10 done
        ; line_number = 375
        ; iteration := iteration + 1
        ;info   375, 458
        incf    iteration,f


        ; line_number = 240
        ;  loop_forever wrap-up
        goto    main__1
        ; line_number = 240
        ;  loop_forever done
        ; delay after procedure statements=non-uniform




        ; # Baud_Rate = Fosc / (16(X+1))
        ; # 16 * (X+1) = Fosc/Baud_Rate
        ; # X+1 = Fosc/(16*Baud_Rate)
        ; # X = Fosc/(16*Baud_rate) - 1

        ; line_number = 383
        ; constant baud_rate_500k = 500000
baud_rate_500k equ 500000
        ; line_number = 384
        ; constant spbrg_500k = clock_rate / (16 * baud_rate_500k) - 1
spbrg_500k equ 1

        ; line_number = 386
        ;info   386, 460
        ; procedure reset
reset:
        ; arguments_none
        ; line_number = 388
        ;  returns_nothing

        ; # Reset everything:

        ; # Warm up the UART:
        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
        ; line_number = 393
        ;  _trisb@2 := _true
        ;info   393, 460
reset__select__1___byte equ _trisb
reset__select__1___bit equ 2
        bsf     __rp0___byte, __rp0___bit
        bsf     reset__select__1___byte, reset__select__1___bit
        ; line_number = 394
        ;  _trisb@5 := _true
        ;info   394, 462
reset__select__2___byte equ _trisb
reset__select__2___bit equ 5
        bsf     reset__select__2___byte, reset__select__2___bit

        ; # Initialize the {_txsta} register:
        ; line_number = 397
        ;  _txsta := 0
        ;info   397, 463
        clrf    _txsta
        ; line_number = 398
        ;  _tx9 := _true
        ;info   398, 464
        bsf     _tx9___byte, _tx9___bit
        ; line_number = 399
        ;  _txen := _true
        ;info   399, 465
        bsf     _txen___byte, _txen___bit
        ; line_number = 400
        ;  _brgh := _true
        ;info   400, 466
        bsf     _brgh___byte, _brgh___bit

        ; # Initialize the {_rcsta} register:
        ; line_number = 403
        ;  _rcsta := 0
        ;info   403, 467
        bcf     __rp0___byte, __rp0___bit
        clrf    _rcsta
        ; line_number = 404
        ;  _spen := _true
        ;info   404, 469
        bsf     _spen___byte, _spen___bit
        ; line_number = 405
        ;  _rx9 := _true
        ;info   405, 470
        bsf     _rx9___byte, _rx9___bit
        ; line_number = 406
        ;  _cren := _true
        ;info   406, 471
        bsf     _cren___byte, _cren___bit
        ; #_adden := _true
        ; line_number = 408
        ;  _adden := _false
        ;info   408, 472
        bcf     _adden___byte, _adden___bit

        ; # Set up the baud rate generator:
        ; line_number = 411
        ;  _spbrg := spbrg_500k
        ;info   411, 473
        movlw   1
        bsf     __rp0___byte, __rp0___bit
        movwf   _spbrg

        ; line_number = 413
        ;  address := 0x10
        ;info   413, 476
        movlw   16
        bcf     __rp0___byte, __rp0___bit
        movwf   address
        ; line_number = 414
        ;  state := 0
        ;info   414, 479
        clrf    state
        ; line_number = 415
        ;  echo_munch := _false
        ;info   415, 480
        bcf     echo_munch___byte, echo_munch___bit
        ; line_number = 416
        ;  id_index := 0
        ;info   416, 481
        clrf    id_index

        ; line_number = 418
        ;  iteration := 0
        ;info   418, 482
        clrf    iteration
        ; line_number = 419
        ;  _gie := _true
        ;info   419, 483
        bsf     _gie___byte, _gie___bit
        ; line_number = 420
        ;  _rcie := _true
        ;info   420, 484
        bsf     __rp0___byte, __rp0___bit
        bsf     _rcie___byte, _rcie___bit
        ; line_number = 421
        ;  _peie := _true
        ;info   421, 486
        bsf     _peie___byte, _peie___bit

        ; line_number = 423
        ;  speed_divisor := _signed16_from_byte2(divisor_millimeters_high, divisor_millimeters_low)  
        ;info   423, 487
        bcf     __rp0___byte, __rp0___bit
        clrf    _signed16_from_byte2__byte1
        movlw   23
        bsf     __cb0___byte, __cb0___bit
        call    _signed16_from_byte2
        movlw   _signed16_from_byte2__0return>>1
        call    _signed16_pointer_load
        movlw   speed_divisor>>1
        call    _signed16_pointer_store

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




        ; line_number = 427
        ;info   427, 498
        ; procedure compiler_bug_work_around
compiler_bug_work_around:
        ; arguments_none
        ; line_number = 429
        ;  returns_nothing

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
        ; line_number = 431
        ;  do_nothing
        ;info   431, 498


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




        ; line_number = 434
        ; string id = "\16,0,16,1,3,8\Sonar6-A\7\Gramson" start
        ; id = '\16,0,16,1,3,8\Sonar6-A\7\Gramson'
id:
        ; Temporarily save index into FSR
        movwf   __fsr
        ; Initialize PCLATH to point to this code page
        movlw   id___base>>8
        movwf   __pclath
        ; Restore index from FSR
        movf    __fsr,w
        addlw   id___base
        ; Index to the correct return value
        movwf   __pcl
        ; page_group 22
        ; Add 7 NOP's until start of new page 
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
id___base:
        retlw   16
        retlw   0
        retlw   16
        retlw   1
        retlw   3
        retlw   8
        retlw   83
        retlw   111
        retlw   110
        retlw   97
        retlw   114
        retlw   54
        retlw   45
        retlw   65
        retlw   7
        retlw   71
        retlw   114
        retlw   97
        retlw   109
        retlw   115
        retlw   111
        retlw   110
        ; line_number = 434
        ; string id = "\16,0,16,1,3,8\Sonar6-A\7\Gramson" start
        ; line_number = 435
        ; string priority = "\31,1,3,1,7,1,3,1,15,1,3,1,7,1,3,1\" start
        ; priority = '\31,1,3,1,7,1,3,1,15,1,3,1,7,1,3,1\'
priority:
        ; Temporarily save index into FSR
        movwf   __fsr
        ; Initialize PCLATH to point to this code page
        movlw   priority___base>>8
        movwf   __pclath
        ; Restore index from FSR
        movf    __fsr,w
        addlw   priority___base
        ; Index to the correct return value
        movwf   __pcl
        ; page_group 16
priority___base:
        retlw   31
        retlw   1
        retlw   3
        retlw   1
        retlw   7
        retlw   1
        retlw   3
        retlw   1
        retlw   15
        retlw   1
        retlw   3
        retlw   1
        retlw   7
        retlw   1
        retlw   3
        retlw   1
        ; line_number = 435
        ; string priority = "\31,1,3,1,7,1,3,1,15,1,3,1,7,1,3,1\" start


        ; Code bank 1; Start address: 2048; End address: 4095
        org     2048
        ; Appending 20 delayed procedures to code bank 1
        ; buffer = '_signed16'
        ; line_number = 62
        ;info   62, 2048
        ; procedure _signed16_pointer_load
_signed16_pointer_load:
        ; Last argument is sitting in W; save into argument variable
        movwf   _signed16_pointer_load__pointer
        ; delay=4294967295
        ; line_number = 63
        ; argument pointer byte
_signed16_pointer_load__pointer equ globals___0+10
        ; line_number = 64
        ;  returns_nothing
        ; line_number = 65
        ;  return_suppress

        ; # This procedure will load the signed16 "A" register with {pointer}.

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
        ; line_number = 69
        ;  assemble
        ;info   69, 2049
        ; # Pointer is in W; move it to {_fsr}:
        ; line_number = 71
        ;info   71, 2049
        movwf   _fsr
        ; # Set up {_irp} and _{fsr}:
        ; line_number = 73
        ;info   73, 2050
        bcf     _irp___byte, _irp___bit
        ; line_number = 74
        ;info   74, 2051
        rlf     _fsr,f
        ; line_number = 75
        ;info   75, 2052
        btfsc   _c___byte, _c___bit
        ; line_number = 76
        ;info   76, 2053
        bsf     _irp___byte, _irp___bit
        ; line_number = 77
        ;info   77, 2054
        bcf     _fsr, 0
        ; # Grab the value and store into {_signed16_a0}:{_signed16_a1}
        ; line_number = 79
        ;info   79, 2055
        movf    _indf,w
        ; line_number = 80
        ;info   80, 2056
        movwf   _signed16_a0
        ; line_number = 81
        ;info   81, 2057
        incf    _fsr,f
        ; line_number = 82
        ;info   82, 2058
        movf    _indf,w
        ; line_number = 83
        ;info   83, 2059
        movwf   _signed16_a1
        ; line_number = 84
        ;info   84, 2060
        return  


        ; delay after procedure statements=non-uniform
        ; Return instruction suppressed by 'return_suppress'




        ; line_number = 87
        ;info   87, 2061
        ; procedure _signed16_pointer_add
_signed16_pointer_add:
        ; Last argument is sitting in W; save into argument variable
        movwf   _signed16_pointer_add__pointer
        ; delay=4294967295
        ; line_number = 88
        ; argument pointer byte
_signed16_pointer_add__pointer equ globals___0+11
        ; line_number = 89
        ;  returns_nothing
        ; line_number = 90
        ;  return_suppress

        ; # This procedure will add the signed16 "A" register with {pointer}
        ; # and store the result back into the "A" register.

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
        ; line_number = 95
        ;  assemble
        ;info   95, 2062
        ; # Pointer is in W; move it to {_fsr}:
        ; line_number = 97
        ;info   97, 2062
        movwf   _fsr
        ; # Set up {_irp} and _{fsr}:
        ; line_number = 99
        ;info   99, 2063
        bcf     _irp___byte, _irp___bit
        ; line_number = 100
        ;info   100, 2064
        rlf     _fsr,f
        ; line_number = 101
        ;info   101, 2065
        btfsc   _c___byte, _c___bit
        ; line_number = 102
        ;info   102, 2066
        bsf     _irp___byte, _irp___bit
        ; line_number = 103
        ;info   103, 2067
        bcf     _fsr, 0
        ; # Grab MSB and add it into {_signed16_a0} (MSB):
        ; line_number = 105
        ;info   105, 2068
        movf    _indf,w
        ; line_number = 106
        ;info   106, 2069
        addwf   _signed16_a0,f
        ; line_number = 107
        ;info   107, 2070
        incf    _fsr,f

        ; # Grab LSB and add it into {_signed16_a1} (LSB):
        ; line_number = 110
        ;info   110, 2071
        movf    _indf,w
        ; line_number = 111
        ;info   111, 2072
        addwf   _signed16_a1,f

        ; # If C is 1, increment {_signed16_a0} (MSB):
        ; line_number = 114
        ;info   114, 2073
        btfsc   _c___byte, _c___bit
        ; line_number = 115
        ;info   115, 2074
        incf    _signed16_a0,f
        ; line_number = 116
        ;info   116, 2075
        return  


        ; delay after procedure statements=non-uniform
        ; Return instruction suppressed by 'return_suppress'




        ; line_number = 119
        ;info   119, 2076
        ; procedure _signed16_pointer_divide
_signed16_pointer_divide:
        ; Last argument is sitting in W; save into argument variable
        movwf   _signed16_pointer_divide__pointer
        ; delay=4294967295
        ; line_number = 120
        ; argument pointer byte
_signed16_pointer_divide__pointer equ globals___0+12
        ; line_number = 121
        ;  returns_nothing
        ; line_number = 122
        ;  return_suppress

        ; # This procedure will divide the signed16 A register by {pointer} and
        ; # store the result back into the A "register".

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
        ; line_number = 127
        ;  assemble
        ;info   127, 2077
        ; # Pointer is in W; move it to {_fsr}:
        ; line_number = 129
        ;info   129, 2077
        movwf   _fsr
        ; # Set up {_irp} and _{fsr}:
        ; line_number = 131
        ;info   131, 2078
        bcf     _irp___byte, _irp___bit
        ; line_number = 132
        ;info   132, 2079
        rlf     _fsr,f
        ; line_number = 133
        ;info   133, 2080
        btfsc   _c___byte, _c___bit
        ; line_number = 134
        ;info   134, 2081
        bsf     _irp___byte, _irp___bit
        ; line_number = 135
        ;info   135, 2082
        bcf     _fsr, 0
        ; # Grab the value and store into {_signed16_b0}:{_signed16_b1}:
        ; line_number = 137
        ;info   137, 2083
        movf    _indf,w
        ; line_number = 138
        ;info   138, 2084
        movwf   _signed16_b0
        ; line_number = 139
        ;info   139, 2085
        incf    _fsr,f
        ; line_number = 140
        ;info   140, 2086
        movf    _indf,w
        ; line_number = 141
        ;info   141, 2087
        movwf   _signed16_b1

        ; # Perform the divide:
        ; line_number = 144
        ;info   144, 2088
        call    _signed16_divide_raw

        ; line_number = 146
        ;info   146, 2089
        return  


        ; delay after procedure statements=non-uniform
        ; Return instruction suppressed by 'return_suppress'




        ; line_number = 149
        ;info   149, 2090
        ; procedure _signed16_pointer_multiply
_signed16_pointer_multiply:
        ; Last argument is sitting in W; save into argument variable
        movwf   _signed16_pointer_multiply__pointer
        ; delay=4294967295
        ; line_number = 150
        ; argument pointer byte
_signed16_pointer_multiply__pointer equ globals___0+13
        ; line_number = 151
        ;  returns_nothing
        ; line_number = 152
        ;  return_suppress

        ; # This procedure will multiply {pointer} with the signed16 A "register"
        ; # and store the result back into the A "register".

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
        ; line_number = 157
        ;  assemble
        ;info   157, 2091
        ; # Pointer is in W; move it to {_fsr}:
        ; line_number = 159
        ;info   159, 2091
        movwf   _fsr
        ; # Set up {_irp} and _{fsr}:
        ; line_number = 161
        ;info   161, 2092
        bcf     _irp___byte, _irp___bit
        ; line_number = 162
        ;info   162, 2093
        rlf     _fsr,f
        ; line_number = 163
        ;info   163, 2094
        btfsc   _c___byte, _c___bit
        ; line_number = 164
        ;info   164, 2095
        bsf     _irp___byte, _irp___bit
        ; line_number = 165
        ;info   165, 2096
        bcf     _fsr, 0
        ; # Grab the value and store into {_signed16_b0}:{_signed16_b1}:
        ; line_number = 167
        ;info   167, 2097
        movf    _indf,w
        ; line_number = 168
        ;info   168, 2098
        movwf   _signed16_b0
        ; line_number = 169
        ;info   169, 2099
        incf    _fsr,f
        ; line_number = 170
        ;info   170, 2100
        movf    _indf,w
        ; line_number = 171
        ;info   171, 2101
        movwf   _signed16_b1

        ; # The code below came from <http://www.piclist.com/>.
        ; # It is not totally clear who wrote the code.  The names
        ; # Bob Fehrenbac & Scott Dattalo are present, but there is
        ; # no explicit authorship.  The Multiple byte addition routine
        ; # is from Microchip AN617.  As is typical, nobody bothered
        ; # to comment the code.
        ; #
        ; # This multiplies <_signed16_a0:_signed16_a1> by
        ; # <_signed16_b0:_signed16_b1> and store the signed result into
        ; # <_signed16_result0:_signed16_result1:_signed16_result2:_signed16_result3>
        ; # Then we trim the result down and store it back into
        ; # <_signed16_a0:_signed16_a1>.
        ; #
        ; # This multiply routine takes between 134 to 248 cycles.
        ; #
        ; # This program looks at the lsb of _signed16_a1 to decide whether
        ; # to add _signed16_b1 to _signed16_result2.
        ; # and b2 to _signed16_result1, with appropriate carrys
        ; # It then looks at the lsb of _signed16_a0 to decide whether
        ; # to add _signed16_b1 to _signed16_result1 and 
        ; # signed16_b0 to _signed16_result0, again with appropriate carrys.
        ; # The rotates then only have to be done 8 times
        ; #
        ; # This is uses slightly more program but takes a little less time than 
        ; # a routine that performs one 16 bit addition per rotate and 16 rotates

        ; line_number = 199
        ;  assemble
        ;info   199, 2102
        ; line_number = 200
        ;info   200, 2102
        clrf    _signed16_result0
        ; line_number = 201
        ;info   201, 2103
        clrf    _signed16_result1
        ; line_number = 202
        ;info   202, 2104
        clrf    _signed16_result2
        ; line_number = 203
        ;info   203, 2105
        movlw   128
        ; line_number = 204
        ;info   204, 2106
        movwf   _signed16_result3

        ; line_number = 206
        ;info   206, 2107
        clrf    _signed16_neg_flag

        ; line_number = 208
        ;info   208, 2108
        btfss   _signed16_a0, 7
        ; line_number = 209
        ;info   209, 2109
        goto    _signed16_multiply_a_pos
        ; line_number = 210
        ;info   210, 2110
        comf    _signed16_a0,f
        ; line_number = 211
        ;info   211, 2111
        comf    _signed16_a1,f
        ; line_number = 212
        ;info   212, 2112
        incf    _signed16_a1,f
        ; line_number = 213
        ;info   213, 2113
        btfsc   _z___byte, _z___bit
        ; line_number = 214
        ;info   214, 2114
        incf    _signed16_a0,f
        ; line_number = 215
        ;info   215, 2115
        incf    _signed16_neg_flag,f

        ; line_number = 217
_signed16_multiply_a_pos:
        ; line_number = 218
        ;info   218, 2116
        btfss   _signed16_b0, 7
        ; line_number = 219
        ;info   219, 2117
        goto    _signed16_multiply_nextbit
        ; line_number = 220
        ;info   220, 2118
        comf    _signed16_b0,f
        ; line_number = 221
        ;info   221, 2119
        comf    _signed16_b1,f
        ; line_number = 222
        ;info   222, 2120
        incf    _signed16_b1,f
        ; line_number = 223
        ;info   223, 2121
        btfsc   _z___byte, _z___bit
        ; line_number = 224
        ;info   224, 2122
        incf    _signed16_b0,f
        ; line_number = 225
        ;info   225, 2123
        incf    _signed16_neg_flag,f

        ; line_number = 227
_signed16_multiply_nextbit:
        ; line_number = 228
        ;info   228, 2124
        rrf     _signed16_a0,f
        ; line_number = 229
        ;info   229, 2125
        rrf     _signed16_a1,f

        ; line_number = 231
        ;info   231, 2126
        btfss   _c___byte, _c___bit
        ; line_number = 232
        ;info   232, 2127
        goto    _signed16_multiply_nobit_l
        ; line_number = 233
        ;info   233, 2128
        movf    _signed16_b1,w
        ; line_number = 234
        ;info   234, 2129
        addwf   _signed16_result2,f

        ; line_number = 236
        ;info   236, 2130
        movf    _signed16_b0,w
        ; line_number = 237
        ;info   237, 2131
        btfsc   _c___byte, _c___bit
        ; line_number = 238
        ;info   238, 2132
        incfsz  _signed16_b0,w
        ; line_number = 239
        ;info   239, 2133
        addwf   _signed16_result1,f
        ; line_number = 240
        ;info   240, 2134
        btfsc   _c___byte, _c___bit
        ; line_number = 241
        ;info   241, 2135
        incf    _signed16_result0,f
        ; line_number = 242
        ;info   242, 2136
        bcf     _c___byte, _c___bit

        ; line_number = 244
_signed16_multiply_nobit_l:
        ; line_number = 245
        ;info   245, 2137
        btfss   _signed16_a1, 7
        ; line_number = 246
        ;info   246, 2138
        goto    _signed16_multiply_nobit_h
        ; line_number = 247
        ;info   247, 2139
        movf    _signed16_b1,w
        ; line_number = 248
        ;info   248, 2140
        addwf   _signed16_result1,f
        ; line_number = 249
        ;info   249, 2141
        btfsc   _c___byte, _c___bit
        ; line_number = 250
        ;info   250, 2142
        incf    _signed16_result0,f
        ; line_number = 251
        ;info   251, 2143
        movf    _signed16_b0,w
        ; line_number = 252
        ;info   252, 2144
        addwf   _signed16_result0,f

        ; line_number = 254
_signed16_multiply_nobit_h:
        ; line_number = 255
        ;info   255, 2145
        rrf     _signed16_result0,f
        ; line_number = 256
        ;info   256, 2146
        rrf     _signed16_result1,f
        ; line_number = 257
        ;info   257, 2147
        rrf     _signed16_result2,f
        ; line_number = 258
        ;info   258, 2148
        rrf     _signed16_result3,f

        ; line_number = 260
        ;info   260, 2149
        btfss   _c___byte, _c___bit
        ; line_number = 261
        ;info   261, 2150
        goto    _signed16_multiply_nextbit
        ; line_number = 262
        ;info   262, 2151
        btfss   _signed16_neg_flag, 0
        ; line_number = 263
        ;info   263, 2152
        goto    _signed16_mulitply_no_invert

        ; line_number = 265
        ;info   265, 2153
        comf    _signed16_result0,f
        ; line_number = 266
        ;info   266, 2154
        comf    _signed16_result1,f
        ; line_number = 267
        ;info   267, 2155
        comf    _signed16_result2,f
        ; line_number = 268
        ;info   268, 2156
        comf    _signed16_result3,f

        ; line_number = 270
        ;info   270, 2157
        incf    _signed16_result3,f
        ; line_number = 271
        ;info   271, 2158
        btfsc   _z___byte, _z___bit
        ; line_number = 272
        ;info   272, 2159
        incf    _signed16_result2,f
        ; line_number = 273
        ;info   273, 2160
        btfsc   _z___byte, _z___bit
        ; line_number = 274
        ;info   274, 2161
        incf    _signed16_result1,f
        ; line_number = 275
        ;info   275, 2162
        btfsc   _z___byte, _z___bit
        ; line_number = 276
        ;info   276, 2163
        incf    _signed16_result0,f
        ; line_number = 277
_signed16_mulitply_no_invert:

        ; # Store the final result into _signed16_a<0:1>:
        ; line_number = 280
        ;info   280, 2164
        movf    _signed16_result2,w
        ; line_number = 281
        ;info   281, 2165
        movwf   _signed16_a0
        ; line_number = 282
        ;info   282, 2166
        movf    _signed16_result3,w
        ; line_number = 283
        ;info   283, 2167
        movwf   _signed16_a1
        ; line_number = 284
        ;info   284, 2168
        return  


        ; delay after procedure statements=non-uniform
        ; Return instruction suppressed by 'return_suppress'




        ; line_number = 287
        ;info   287, 2169
        ; procedure _signed16_pointer_subtract
_signed16_pointer_subtract:
        ; Last argument is sitting in W; save into argument variable
        movwf   _signed16_pointer_subtract__pointer
        ; delay=4294967295
        ; line_number = 288
        ; argument pointer byte
_signed16_pointer_subtract__pointer equ globals___0+14
        ; line_number = 289
        ;  returns_nothing
        ; line_number = 290
        ;  return_suppress

        ; # This procedure will subtract {pointer} from the signed16 A "register"
        ; # and store the result back into the A "register".

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
        ; line_number = 295
        ;  assemble
        ;info   295, 2170
        ; # Pointer is in W; move it to {_fsr}:
        ; line_number = 297
        ;info   297, 2170
        movwf   _fsr
        ; # Set up {_irp} and _{fsr}:
        ; line_number = 299
        ;info   299, 2171
        bcf     _irp___byte, _irp___bit
        ; line_number = 300
        ;info   300, 2172
        rlf     _fsr,f
        ; line_number = 301
        ;info   301, 2173
        btfsc   _c___byte, _c___bit
        ; line_number = 302
        ;info   302, 2174
        bsf     _irp___byte, _irp___bit
        ; line_number = 303
        ;info   303, 2175
        bcf     _fsr, 0

        ; # Subtract MSB from {_signed16_a0} (MSB):
        ; line_number = 306
        ;info   306, 2176
        comf    _indf,w
        ; line_number = 307
        ;info   307, 2177
        addwf   _signed16_a0,f
        ; line_number = 308
        ;info   308, 2178
        incf    _fsr,f

        ; # Subtract LSB from {_signed16_a1} (LSB):
        ; line_number = 311
        ;info   311, 2179
        comf    _indf,w
        ; line_number = 312
        ;info   312, 2180
        addlw   1

        ; # If the C bit is set, increment {_signed16_a0} (MSB):
        ; line_number = 315
        ;info   315, 2181
        btfsc   _c___byte, _c___bit
        ; line_number = 316
        ;info   316, 2182
        incf    _signed16_a0,f

        ; # Finish the subtraction:
        ; line_number = 319
        ;info   319, 2183
        addwf   _signed16_a1,f

        ; # If the C bit is set, increment {_signed16_a0} (MSB):
        ; line_number = 322
        ;info   322, 2184
        btfsc   _c___byte, _c___bit
        ; line_number = 323
        ;info   323, 2185
        incf    _signed16_a0,f
        ; line_number = 324
        ;info   324, 2186
        return  


        ; delay after procedure statements=non-uniform
        ; Return instruction suppressed by 'return_suppress'




        ; line_number = 327
        ;info   327, 2187
        ; procedure _signed16_pointer_store
_signed16_pointer_store:
        ; Last argument is sitting in W; save into argument variable
        movwf   _signed16_pointer_store__pointer
        ; delay=4294967295
        ; line_number = 328
        ; argument pointer byte
_signed16_pointer_store__pointer equ globals___0+15
        ; line_number = 329
        ;  returns_nothing
        ; line_number = 330
        ;  return_suppress

        ; # This procedure will store the signed16 A "register" into {pointer}.

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
        ; line_number = 334
        ;  assemble
        ;info   334, 2188
        ; # Pointer is in W; move it to {_fsr}:
        ; line_number = 336
        ;info   336, 2188
        movwf   _fsr
        ; # Set up {_irp} and _{fsr}:
        ; line_number = 338
        ;info   338, 2189
        bcf     _irp___byte, _irp___bit
        ; line_number = 339
        ;info   339, 2190
        rlf     _fsr,f
        ; line_number = 340
        ;info   340, 2191
        btfsc   _c___byte, _c___bit
        ; line_number = 341
        ;info   341, 2192
        bsf     _irp___byte, _irp___bit
        ; line_number = 342
        ;info   342, 2193
        bcf     _fsr, 0
        ; # Grab the value and store into {_signed16_a0}:{_signed16_a1}:
        ; line_number = 344
        ;info   344, 2194
        movf    _signed16_a0,w
        ; line_number = 345
        ;info   345, 2195
        movwf   _indf
        ; line_number = 346
        ;info   346, 2196
        incf    _fsr,f
        ; line_number = 347
        ;info   347, 2197
        movf    _signed16_a1,w
        ; line_number = 348
        ;info   348, 2198
        movwf   _indf
        ; line_number = 349
        ;info   349, 2199
        return  


        ; delay after procedure statements=non-uniform
        ; Return instruction suppressed by 'return_suppress'




        ; line_number = 352
        ;info   352, 2200
        ; procedure _signed16_negate
_signed16_negate:
        ; arguments_none
        ; line_number = 354
        ;  returns_nothing

        ; # This procedure will negate the signed16 A registers.

        ; # Flip the sign bit:
        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
        ; line_number = 359
        ;  _signed16_a0 := 0xff ^ _signed16_a0
        ;info   359, 2200
        comf    _signed16_a0,f
        ; line_number = 360
        ;  _signed16_a1 := 0 - _signed16_a1
        ;info   360, 2201
        movf    _signed16_a1,w
        sublw   0
        movwf   _signed16_a1
        ; line_number = 361
        ;  if _c start
        ;info   361, 2204
        ; =>bit_code_emit@symbol(): sym=_c
        ; 1TEST: Single test with code in skip slot
        btfsc   _c___byte, _c___bit
        ; line_number = 362
        ; _signed16_a0 := _signed16_a0 + 1    
        ;info   362, 2205
        incf    _signed16_a0,f


        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 361
        ;  if _c done
        ; delay after procedure statements=non-uniform
        ; Implied return
        retlw   0




        ; line_number = 365
        ;info   365, 2207
        ; procedure _signed16_pointer_swap
_signed16_pointer_swap:
        ; Last argument is sitting in W; save into argument variable
        movwf   _signed16_pointer_swap__pointer
        ; delay=4294967295
        ; line_number = 366
        ; argument pointer byte
_signed16_pointer_swap__pointer equ globals___0+16
        ; line_number = 367
        ;  returns_nothing
        ; line_number = 368
        ;  return_suppress

        ; # This procedure will swap the signed16 A "register" with {pointer}:

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
        ; line_number = 372
        ;  assemble
        ;info   372, 2208
        ; # Pointer is in W; move it to {_fsr}:
        ; line_number = 374
        ;info   374, 2208
        movwf   _fsr
        ; # Set up {_irp} and _{fsr}:
        ; line_number = 376
        ;info   376, 2209
        bcf     _irp___byte, _irp___bit
        ; line_number = 377
        ;info   377, 2210
        rlf     _fsr,f
        ; line_number = 378
        ;info   378, 2211
        btfsc   _c___byte, _c___bit
        ; line_number = 379
        ;info   379, 2212
        bsf     _irp___byte, _irp___bit
        ; line_number = 380
        ;info   380, 2213
        bcf     _fsr, 0

        ; # Swap {pointer} with {_signed16_a0}:
        ; line_number = 383
        ;info   383, 2214
        movf    _indf,w
        ; line_number = 384
        ;info   384, 2215
        xorwf   _signed16_a0,f
        ; line_number = 385
        ;info   385, 2216
        xorwf   _signed16_a0,w
        ; line_number = 386
        ;info   386, 2217
        xorwf   _signed16_a0,f
        ; line_number = 387
        ;info   387, 2218
        movwf   _indf

        ; # Swap {pointer}+1 with {_signed16_a1}:
        ; line_number = 390
        ;info   390, 2219
        incf    _fsr,f
        ; line_number = 391
        ;info   391, 2220
        movf    _indf,w
        ; line_number = 392
        ;info   392, 2221
        xorwf   _signed16_a1,f
        ; line_number = 393
        ;info   393, 2222
        xorwf   _signed16_a1,w
        ; line_number = 394
        ;info   394, 2223
        xorwf   _signed16_a1,f
        ; line_number = 395
        ;info   395, 2224
        movwf   _indf
        ; line_number = 396
        ;info   396, 2225
        return  


        ; delay after procedure statements=non-uniform
        ; Return instruction suppressed by 'return_suppress'




_signed16_from_byte__0return equ globals___0+18
        ; line_number = 399
        ;info   399, 2226
        ; procedure _signed16_from_byte
_signed16_from_byte:
        ; Last argument is sitting in W; save into argument variable
        movwf   _signed16_from_byte__number
        ; delay=4294967295
        ; line_number = 400
        ; argument number byte
_signed16_from_byte__number equ globals___0+17
        ; line_number = 401
        ;  returns signed16

        ; # This procedure will convert {number} into a signed16 and return it.

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
        ; line_number = 405
        ;  _signed16_a0 := 0
        ;info   405, 2227
        clrf    _signed16_a0
        ; line_number = 406
        ;  _signed16_a1 := number
        ;info   406, 2228
        movf    _signed16_from_byte__number,w
        movwf   _signed16_a1
        ; line_number = 407
        ;  assemble
        ;info   407, 2230
        ; line_number = 408
        ;info   408, 2230
        movlw   _signed16_from_byte__0return>>1
        ; line_number = 409
        ;info   409, 2231
        call    _signed16_pointer_store
        ; line_number = 410
        ;info   410, 2232
        retlw   _signed16_from_byte__0return>>1


        ; delay after procedure statements=non-uniform
        ; Exiting procedure with no return(s); infinite loop fail
_signed16_from_byte__1:
        goto    _signed16_from_byte__1




_signed16_from_byte2__0return equ globals___0+22
        ; line_number = 413
        ;info   413, 2234
        ; procedure _signed16_from_byte2
_signed16_from_byte2:
        ; Last argument is sitting in W; save into argument variable
        movwf   _signed16_from_byte2__byte2
        ; delay=4294967295
        ; line_number = 414
        ; argument byte1 byte
_signed16_from_byte2__byte1 equ globals___0+20
        ; line_number = 415
        ; argument byte2 byte
_signed16_from_byte2__byte2 equ globals___0+21
        ; line_number = 416
        ;  returns signed16

        ; # This procedure will convert {byte1} and {byte2} into a signed16
        ; # and return it.

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
        ; line_number = 421
        ;  _signed16_a0 := byte1
        ;info   421, 2235
        movf    _signed16_from_byte2__byte1,w
        movwf   _signed16_a0
        ; line_number = 422
        ;  _signed16_a1 := byte2
        ;info   422, 2237
        movf    _signed16_from_byte2__byte2,w
        movwf   _signed16_a1
        ; line_number = 423
        ;  assemble
        ;info   423, 2239
        ; line_number = 424
        ;info   424, 2239
        movlw   _signed16_from_byte2__0return>>1
        ; line_number = 425
        ;info   425, 2240
        call    _signed16_pointer_store
        ; line_number = 426
        ;info   426, 2241
        retlw   _signed16_from_byte2__0return>>1


        ; delay after procedure statements=non-uniform
        ; Exiting procedure with no return(s); infinite loop fail
_signed16_from_byte2__1:
        goto    _signed16_from_byte2__1




        ; line_number = 429
        ;info   429, 2243
        ; procedure _signed16_to_byte
_signed16_to_byte:
        ; line_number = 430
        ; argument number signed16
_signed16_to_byte__number equ globals___0+24
        ; line_number = 431
        ;  returns byte

        ; # This procedure will convert {number} into a 8-bit integer and return it.

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
        ; line_number = 435
        ;  assemble
        ;info   435, 2243
        ; # Get the argument stored into the signed16 "A" register:
        ; line_number = 437
        ;info   437, 2243
        movlw   _signed16_to_byte__number>>1
        ; line_number = 438
        ;info   438, 2244
        call    _signed16_pointer_load
        ; line_number = 439
        ; return _signed16_a1 start
        ; line_number = 439
        ;info   439, 2245
        movf    _signed16_a1,w
        return  
        ; line_number = 439
        ; return _signed16_a1 done


        ; delay after procedure statements=non-uniform




        ; line_number = 442
        ;info   442, 2247
        ; procedure _signed16_byte_high
_signed16_byte_high:
        ; line_number = 443
        ; argument number signed16
_signed16_byte_high__number equ globals___0+26
        ; line_number = 444
        ;  returns byte

        ; # This procedure will return the high 8 bits of {number}.

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
        ; line_number = 448
        ;  assemble
        ;info   448, 2247
        ; # Get the argument stored into the signed16 "A" register:
        ; line_number = 450
        ;info   450, 2247
        movlw   _signed16_byte_high__number>>1
        ; line_number = 451
        ;info   451, 2248
        call    _signed16_pointer_load
        ; line_number = 452
        ; return _signed16_a0 start
        ; line_number = 452
        ;info   452, 2249
        movf    _signed16_a0,w
        return  
        ; line_number = 452
        ; return _signed16_a0 done


        ; delay after procedure statements=non-uniform




        ; line_number = 455
        ;info   455, 2251
        ; procedure _signed16_byte_low
_signed16_byte_low:
        ; line_number = 456
        ; argument number signed16
_signed16_byte_low__number equ globals___0+28
        ; line_number = 457
        ;  returns byte

        ; # This procedure will return the low 8 bits of {number}.

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
        ; line_number = 461
        ;  assemble
        ;info   461, 2251
        ; # Get the argument stored into the signed16 "A" register:
        ; line_number = 463
        ;info   463, 2251
        movlw   _signed16_byte_low__number>>1
        ; line_number = 464
        ;info   464, 2252
        call    _signed16_pointer_load
        ; line_number = 465
        ; return _signed16_a1 start
        ; line_number = 465
        ;info   465, 2253
        movf    _signed16_a1,w
        return  
        ; line_number = 465
        ; return _signed16_a1 done


        ; delay after procedure statements=non-uniform




        ; line_number = 468
        ;info   468, 2255
        ; procedure _signed16_equals
_signed16_equals:
        ; arguments_none
        ; line_number = 470
        ;  returns_nothing

        ; # This procedure will set the Z bit if register "A" is zero.

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
        ; line_number = 474
        ;  assemble
        ;info   474, 2255
        ; line_number = 475
        ;info   475, 2255
        movf    _signed16_a0,w
        ; line_number = 476
        ;info   476, 2256
        iorwf   _signed16_a1,w
        ; # Return is implicit


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




        ; line_number = 480
        ;info   480, 2258
        ; procedure _signed16_not_equal
_signed16_not_equal:
        ; arguments_none
        ; line_number = 482
        ;  returns_nothing

        ; # This procedure will set the Z bit if register "A" is non-zero.

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
        ; line_number = 486
        ;  assemble
        ;info   486, 2258
        ; line_number = 487
        ;info   487, 2258
        movf    _signed16_a0,w
        ; line_number = 488
        ;info   488, 2259
        iorwf   _signed16_a1,w
        ; line_number = 489
        ; if _z start
        ;info   489, 2260
        ; =>bit_code_emit@symbol(): sym=_z
        ; No 1TEST: true.size=2 false.size=0
        ; No 2TEST: true.size=2 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   _z___byte, _z___bit
        goto    _signed16_not_equal__1
        ; line_number = 490
        ; _z := _false
        ;info   490, 2262
        bcf     _z___byte, _z___bit
        ; line_number = 491
        ;  return start
        ; line_number = 491
        ;info   491, 2263
        retlw   0
        ; line_number = 491
        ;  return done
        ; Recombine size1 = 0 || size2 = 0
_signed16_not_equal__1:
        ; line_number = 489
        ; if _z done
        ; line_number = 492
        ; _z := _true
        ;info   492, 2264
        bsf     _z___byte, _z___bit
        ; # Return is implicit


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




        ; line_number = 496
        ;info   496, 2266
        ; procedure _signed16_less_than
_signed16_less_than:
        ; arguments_none
        ; line_number = 498
        ;  returns_nothing

        ; # This procedure will set the Z bit if register "A" is non-zero and
        ; # positive.

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
        ; line_number = 503
        ;  _z := _false
        ;info   503, 2266
        bcf     _z___byte, _z___bit
        ; line_number = 504
        ;  if _signed16_a0@7 start
        ;info   504, 2267
_signed16_less_than__select__1___byte equ _signed16_a0
_signed16_less_than__select__1___bit equ 7
        ; =>bit_code_emit@symbol(): sym=_signed16_less_than__select__1
        ; 1TEST: Single test with code in skip slot
        btfsc   _signed16_less_than__select__1___byte, _signed16_less_than__select__1___bit
        ; line_number = 505
        ; _z := _true
        ;info   505, 2268
        bsf     _z___byte, _z___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 504
        ;  if _signed16_a0@7 done
        ; # Return is implicit


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




        ; line_number = 509
        ;info   509, 2270
        ; procedure _signed16_less_than_or_equal
_signed16_less_than_or_equal:
        ; arguments_none
        ; line_number = 511
        ;  returns_nothing

        ; # This procedure will set the Z bit if register "A" is zero or positive.

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
        ; line_number = 515
        ;  assemble
        ;info   515, 2270
        ; line_number = 516
        ;info   516, 2270
        movf    _signed16_a1,w
        ; line_number = 517
        ;info   517, 2271
        iorwf   _signed16_a0,w
        ; line_number = 518
        ; if _z start
        ;info   518, 2272
        ; =>bit_code_emit@symbol(): sym=_z
        ; 1TEST: Single test with code in skip slot
        btfsc   _z___byte, _z___bit
        ; line_number = 519
        ; return start
        ; line_number = 519
        ;info   519, 2273
        retlw   0
        ; line_number = 519
        ; return done
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 518
        ; if _z done
        ; # _z == _false
        ; line_number = 521
        ;  if _signed16_a0@7 start
        ;info   521, 2274
_signed16_less_than_or_equal__select__1___byte equ _signed16_a0
_signed16_less_than_or_equal__select__1___bit equ 7
        ; =>bit_code_emit@symbol(): sym=_signed16_less_than_or_equal__select__1
        ; 1TEST: Single test with code in skip slot
        btfsc   _signed16_less_than_or_equal__select__1___byte, _signed16_less_than_or_equal__select__1___bit
        ; line_number = 522
        ; _z := _true
        ;info   522, 2275
        bsf     _z___byte, _z___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 521
        ;  if _signed16_a0@7 done
        ; # Return is implicit


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




        ; line_number = 526
        ;info   526, 2277
        ; procedure _signed16_greater_than
_signed16_greater_than:
        ; arguments_none
        ; line_number = 528
        ;  returns_nothing

        ; # This procedure will set the Z bit if register "A" is non-zero and
        ; # positive.

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
        ; line_number = 533
        ;  assemble
        ;info   533, 2277
        ; line_number = 534
        ;info   534, 2277
        movf    _signed16_a0,w
        ; line_number = 535
        ;info   535, 2278
        iorwf   _signed16_a1,w
        ; line_number = 536
        ; if _z start
        ;info   536, 2279
        ; =>bit_code_emit@symbol(): sym=_z
        ; No 1TEST: true.size=2 false.size=0
        ; No 2TEST: true.size=2 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   _z___byte, _z___bit
        goto    _signed16_greater_than__1
        ; line_number = 537
        ; _z := _false
        ;info   537, 2281
        bcf     _z___byte, _z___bit
        ; line_number = 538
        ;  return     start
        ; line_number = 538
        ;info   538, 2282
        retlw   0
        ; line_number = 538
        ;  return     done
        ; Recombine size1 = 0 || size2 = 0
_signed16_greater_than__1:
        ; line_number = 536
        ; if _z done
        ; # _z == _false
        ; line_number = 540
        ;  if !(_signed16_a0@7) start
        ;info   540, 2283
_signed16_greater_than__select__2___byte equ _signed16_a0
_signed16_greater_than__select__2___bit equ 7
        ; =>bit_code_emit@symbol(): sym=_signed16_greater_than__select__2
        ; 1TEST: Single test with code in skip slot
        btfss   _signed16_greater_than__select__2___byte, _signed16_greater_than__select__2___bit
        ; line_number = 541
        ; _z := _true
        ;info   541, 2284
        bsf     _z___byte, _z___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 540
        ;  if !(_signed16_a0@7) done
        ; # Return is implicit:


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




        ; line_number = 545
        ;info   545, 2286
        ; procedure _signed16_greater_than_or_equal
_signed16_greater_than_or_equal:
        ; arguments_none
        ; line_number = 547
        ;  returns_nothing

        ; # This procedure will set the Z bit if register "A" is zero or positive.

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
        ; line_number = 551
        ;  _z := _true
        ;info   551, 2286
        bsf     _z___byte, _z___bit
        ; line_number = 552
        ;  if _signed16_a0@7 start
        ;info   552, 2287
_signed16_greater_than_or_equal__select__1___byte equ _signed16_a0
_signed16_greater_than_or_equal__select__1___bit equ 7
        ; =>bit_code_emit@symbol(): sym=_signed16_greater_than_or_equal__select__1
        ; 1TEST: Single test with code in skip slot
        btfsc   _signed16_greater_than_or_equal__select__1___byte, _signed16_greater_than_or_equal__select__1___bit
        ; line_number = 553
        ; _z := _false
        ;info   553, 2288
        bcf     _z___byte, _z___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 552
        ;  if _signed16_a0@7 done
        ; # Return is implicit:


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




        ; line_number = 578
        ;info   578, 2290
        ; procedure _signed16_divide_raw
_signed16_divide_raw:
        ; arguments_none
        ; line_number = 580
        ;  returns_nothing
        ; line_number = 581
        ;  return_suppress

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X1=cu=>X1)
        ; line_number = 583
        ;  assemble
        ;info   583, 2290
        ; line_number = 584
        ;info   584, 2290
        call    _signed16_divide_s_sign

        ; #Initialize:
        ; line_number = 587
        ;info   587, 2291
        movlw   16
        ; line_number = 588
        ;info   588, 2292
        movwf   _signed16_count
        ; line_number = 589
        ;info   589, 2293
        movf    _signed16_a0,w
        ; line_number = 590
        ;info   590, 2294
        movwf   _signed16_temp0
        ; line_number = 591
        ;info   591, 2295
        movf    _signed16_a1,w
        ; line_number = 592
        ;info   592, 2296
        movwf   _signed16_temp1
        ; line_number = 593
        ;info   593, 2297
        clrf    _signed16_a0
        ; line_number = 594
        ;info   594, 2298
        clrf    _signed16_a1
        ; line_number = 595
        ;info   595, 2299
        clrf    _signed16_rem0
        ; line_number = 596
        ;info   596, 2300
        clrf    _signed16_rem1
        ; # Loop 16 times usinge {_signed16_count}:
        ; line_number = 598
_signed16_divide_dloop:
        ; line_number = 599
        ;info   599, 2301
        bcf     _c___byte, _c___bit
        ; line_number = 600
        ;info   600, 2302
        rlf     _signed16_temp1,f
        ; line_number = 601
        ;info   601, 2303
        rlf     _signed16_temp0,f
        ; line_number = 602
        ;info   602, 2304
        rlf     _signed16_rem1,f
        ; line_number = 603
        ;info   603, 2305
        rlf     _signed16_rem0,f
        ; line_number = 604
        ;info   604, 2306
        movf    _signed16_b0,w
        ; line_number = 605
        ;info   605, 2307
        subwf   _signed16_rem0,w
        ; line_number = 606
        ;info   606, 2308
        btfss   _z___byte, _z___bit
        ; line_number = 607
        ;info   607, 2309
        goto    _signed16_divide_no_check
        ; line_number = 608
        ;info   608, 2310
        movf    _signed16_b1,w
        ; line_number = 609
        ;info   609, 2311
        subwf   _signed16_rem1,w
        ; line_number = 610
_signed16_divide_no_check:
        ; line_number = 611
        ;info   611, 2312
        btfss   _c___byte, _c___bit
        ; line_number = 612
        ;info   612, 2313
        goto    _signed16_divide_no_go
        ; line_number = 613
        ;info   613, 2314
        movf    _signed16_b1,w
        ; line_number = 614
        ;info   614, 2315
        subwf   _signed16_rem1,f
        ; line_number = 615
        ;info   615, 2316
        btfss   _c___byte, _c___bit
        ; line_number = 616
        ;info   616, 2317
        decf    _signed16_rem0,f
        ; line_number = 617
        ;info   617, 2318
        movf    _signed16_b0,w
        ; line_number = 618
        ;info   618, 2319
        subwf   _signed16_rem0,f
        ; line_number = 619
        ;info   619, 2320
        bsf     _c___byte, _c___bit
        ; line_number = 620
_signed16_divide_no_go:
        ; line_number = 621
        ;info   621, 2321
        rlf     _signed16_a1,f
        ; line_number = 622
        ;info   622, 2322
        rlf     _signed16_a0,f
        ; line_number = 623
        ;info   623, 2323
        decfsz  _signed16_count,f
        ; line_number = 624
        ;info   624, 2324
        goto    _signed16_divide_dloop

        ; line_number = 626
        ;info   626, 2325
        btfss   _signed16_sign, 7
        ; line_number = 627
        ;info   627, 2326
        retlw   0
        ; line_number = 628
        ;info   628, 2327
        goto    _signed16_divide_neg_b

        ; line_number = 630
_signed16_divide_neg_b:
        ; line_number = 631
        ;info   631, 2328
        comf    _signed16_b1,f
        ; line_number = 632
        ;info   632, 2329
        incf    _signed16_b1,f
        ; line_number = 633
        ;info   633, 2330
        btfsc   _z___byte, _z___bit
        ; line_number = 634
        ;info   634, 2331
        decf    _signed16_b0,f
        ; line_number = 635
        ;info   635, 2332
        comf    _signed16_b0,f
        ; line_number = 636
        ;info   636, 2333
        retlw   0

        ; line_number = 638
_signed16_divide_s_sign:
        ; line_number = 639
        ;info   639, 2334
        movf    _signed16_b0,w
        ; line_number = 640
        ;info   640, 2335
        xorwf   _signed16_a0,w
        ; line_number = 641
        ;info   641, 2336
        movwf   _signed16_sign
        ; line_number = 642
        ;info   642, 2337
        btfss   _signed16_a0, 7
        ; line_number = 643
        ;info   643, 2338
        goto    _signed16_divide_check_a

        ; line_number = 645
        ;info   645, 2339
        comf    _signed16_a1,f
        ; line_number = 646
        ;info   646, 2340
        incf    _signed16_a1,f
        ; line_number = 647
        ;info   647, 2341
        btfsc   _z___byte, _z___bit
        ; line_number = 648
        ;info   648, 2342
        decf    _signed16_a0,f
        ; line_number = 649
        ;info   649, 2343
        comf    _signed16_a0,f

        ; line_number = 651
_signed16_divide_check_a:
        ; line_number = 652
        ;info   652, 2344
        btfss   _signed16_b0, 7
        ; line_number = 653
        ;info   653, 2345
        retlw   0
        ; line_number = 654
        ;info   654, 2346
        goto    _signed16_divide_neg_b

        ; delay after procedure statements=non-uniform
        ; Return instruction suppressed by 'return_suppress'




        ; Configuration bits
        ; address = 0x2007, fill = 0x0
        ; cp = off (0x2000)
        ; ccpmx = ccp1_rb0 (0x1000)
        ; debug = off (0x800)
        ; wrt = off (0x600)
        ; cpd = off (0x100)
        ; lvp = off (0x0)
        ; boden = off (0x0)
        ; mclre = off (0x0)
        ; pwrte = off (0x8)
        ; wdte = off (0x0)
        ; fosc = hs (0x2)
        ; 16138 = 0x3f0a
        ; 8199 = 0x2007
        __config 8199, 16138
        ; Configuration bits
        ; address = 0x2008, fill = 0x3ffc
        ; ieso = off (0x0)
        ; fcmen = off (0x0)
        ; 16380 = 0x3ffc
        ; 8200 = 0x2008
        __config 8200, 16380
        ; Define start addresses for data regions
        ; Region="shared___globals" Address=112" Size=16 Bytes=2 Bits=0 Available=14
        ; Region="globals___0" Address=32" Size=80 Bytes=75 Bits=3 Available=4
        ; Region="globals___1" Address=160" Size=80 Bytes=0 Bits=0 Available=80
        ; Region="globals___2" Address=272" Size=96 Bytes=0 Bits=0 Available=96
        ; Region="globals___3" Address=400" Size=96 Bytes=0 Bits=0 Available=96
        end
