

Microchip Technology PIC18 LITE Macro Assembler V1.38 build -256452561 
                                                                                               Tue Feb 25 10:10:24 2020

Microchip Technology Omniscient Code Generator v1.38 (Free mode) build 201607010351
     1                           	processor	18F4550
     2                           	fnconf	rparam,??,?,0
     3                           	opt	pw 120
     4                           	opt	lm
     5                           	psect	idataBANK0,global,class=CODE,delta=1
     6                           	psect	idataBANK1,global,class=CODE,delta=1
     7                           	psect	smallconst,global,reloc=2,class=SMALLCONST,delta=1
     8                           	psect	cinit,global,reloc=2,class=CODE,delta=1
     9                           	psect	bssCOMRAM,global,class=COMRAM,space=1,delta=1
    10                           	psect	bssBANK0,global,class=BANK0,space=1,delta=1
    11                           	psect	dataBANK0,global,class=BANK0,space=1,delta=1
    12                           	psect	dataBANK1,global,class=BANK1,space=1,delta=1
    13                           	psect	cstackCOMRAM,global,class=COMRAM,space=1,delta=1
    14                           	psect	text0,global,reloc=2,class=CODE,delta=1
    15                           	psect	text1,global,reloc=2,class=CODE,delta=1
    16                           	psect	text2,global,reloc=2,class=CODE,delta=1
    17                           	psect	text3,global,reloc=2,class=CODE,delta=1
    18                           	psect	text4,global,reloc=2,class=CODE,delta=1
    19                           	psect	text5,global,reloc=2,class=CODE,delta=1
    20                           	psect	text6,global,reloc=2,class=CODE,delta=1
    21                           	psect	text7,global,reloc=2,class=CODE,delta=1
    22                           	psect	text8,global,reloc=2,class=CODE,delta=1
    23                           	psect	text9,global,reloc=2,class=CODE,delta=1
    24                           	psect	text10,global,reloc=2,class=CODE,delta=1
    25                           	psect	text11,global,reloc=2,class=CODE,delta=1
    26                           	psect	text12,global,reloc=2,class=CODE,delta=1
    27                           	psect	text13,global,reloc=2,class=CODE,delta=1
    28                           	psect	text14,global,reloc=2,class=CODE,delta=1
    29                           	psect	text15,global,reloc=2,class=CODE,delta=1
    30                           	psect	text16,global,reloc=2,class=CODE,delta=1
    31                           	psect	text17,global,reloc=2,class=CODE,delta=1
    32                           	psect	text18,global,reloc=2,class=CODE,delta=1
    33                           	psect	text19,global,reloc=2,class=CODE,delta=1
    34                           	psect	text20,global,reloc=2,class=CODE,delta=1
    35                           	psect	text21,global,reloc=2,class=CODE,delta=1
    36                           	psect	text22,global,reloc=2,class=CODE,delta=1
    37                           	psect	text23,global,reloc=2,class=CODE,delta=1
    38                           	psect	text24,global,reloc=2,class=CODE,delta=1
    39                           	psect	text25,global,reloc=2,class=CODE,delta=1
    40                           	psect	text26,global,reloc=2,class=CODE,delta=1
    41                           	psect	text27,global,reloc=2,class=CODE,delta=1
    42                           	psect	text28,global,reloc=2,class=CODE,delta=1
    43                           	psect	text29,global,reloc=2,class=CODE,delta=1
    44                           	psect	text30,global,reloc=2,class=CODE,delta=1
    45                           	psect	text31,global,reloc=2,class=CODE,delta=1
    46                           	psect	text32,global,reloc=2,class=CODE,delta=1
    47                           	psect	text33,global,reloc=2,class=CODE,delta=1
    48                           	psect	text34,global,reloc=2,class=CODE,delta=1
    49                           	psect	text35,global,reloc=2,class=CODE,delta=1
    50                           	psect	text36,global,reloc=2,class=CODE,delta=1
    51                           	psect	text37,global,reloc=2,class=CODE,delta=1
    52                           	psect	text38,global,reloc=2,class=CODE,delta=1
    53                           	psect	text39,global,reloc=2,class=CODE,delta=1
    54                           	psect	text40,global,reloc=2,class=CODE,delta=1
    55                           	psect	text41,global,reloc=2,class=CODE,delta=1
    56                           	psect	text42,global,reloc=2,class=CODE,delta=1
    57                           	psect	text43,global,reloc=2,class=CODE,delta=1
    58                           	psect	text44,global,reloc=2,class=CODE,delta=1
    59                           	psect	text45,global,reloc=2,class=CODE,delta=1
    60                           	psect	intsave_regs,global,class=BIGRAM,space=1,delta=1
    61                           	psect	rparam,global,class=COMRAM,space=1,delta=1
    62                           	dabs	1,0x500,64,_ReceivedDataBuffer
    63                           	dabs	1,0x400,32,_BDT
    64                           	dabs	1,0x428,8,_CtrlTrfData
    65                           	dabs	1,0x420,8,_SetupPkt
    66                           	dabs	1,0x580,4,_midiData
    67  0000                     
    68                           	psect	idataBANK0
    69  002160                     __pidataBANK0:
    70                           	opt stack 0
    71                           
    72                           ;initializer for _m_buttons
    73  002160  01                 	db	1
    74  002161  00                 	db	0
    75  002162  00                 	db	0
    76  002163  00                 	db	0
    77  002164  00                 	db	0
    78  002165  00                 	db	0
    79  002166  00                 	db	0
    80  002167  00                 	db	0
    81  002168  00                 	db	0
    82  002169  00                 	db	0
    83  00216A  00                 	db	0
    84  00216B  00                 	db	0
    85  00216C  00                 	db	0
    86  00216D  00                 	db	0
    87  00216E  00                 	db	0
    88  00216F  00                 	db	0
    89                           
    90                           ;initializer for _mb_values
    91  002170  01                 	db	1
    92  002171  00                 	db	0
    93  002172  00                 	db	0
    94  002173  00                 	db	0
    95  002174  00                 	db	0
    96  002175  00                 	db	0
    97  002176  00                 	db	0
    98  002177  00                 	db	0
    99  002178  00                 	db	0
   100  002179  00                 	db	0
   101  00217A  00                 	db	0
   102  00217B  00                 	db	0
   103  00217C  00                 	db	0
   104  00217D  00                 	db	0
   105  00217E  00                 	db	0
   106  00217F  00                 	db	0
   107                           
   108                           ;initializer for _sb_values
   109  002180  01                 	db	1
   110  002181  00                 	db	0
   111  002182  00                 	db	0
   112  002183  00                 	db	0
   113                           
   114                           ;initializer for _global_leds
   115  002184  E1                 	db	225
   116  002185  00                 	db	0
   117  002186  00                 	db	0
   118  002187  00                 	db	0
   119  002188  E1                 	db	225
   120  002189  00                 	db	0
   121  00218A  00                 	db	0
   122  00218B  00                 	db	0
   123  00218C  E1                 	db	225
   124  00218D  00                 	db	0
   125  00218E  00                 	db	0
   126  00218F  00                 	db	0
   127  002190  E1                 	db	225
   128  002191  00                 	db	0
   129  002192  00                 	db	0
   130  002193  00                 	db	0
   131  002194  E1                 	db	225
   132  002195  00                 	db	0
   133  002196  00                 	db	0
   134  002197  00                 	db	0
   135  002198  E1                 	db	225
   136  002199  00                 	db	0
   137  00219A  00                 	db	0
   138  00219B  00                 	db	0
   139  00219C  E1                 	db	225
   140  00219D  00                 	db	0
   141  00219E  00                 	db	0
   142  00219F  00                 	db	0
   143  0021A0  E1                 	db	225
   144  0021A1  00                 	db	0
   145  0021A2  00                 	db	0
   146  0021A3  00                 	db	0
   147  0021A4  E1                 	db	225
   148  0021A5  00                 	db	0
   149  0021A6  00                 	db	0
   150  0021A7  00                 	db	0
   151  0021A8  E1                 	db	225
   152  0021A9  00                 	db	0
   153  0021AA  00                 	db	0
   154  0021AB  00                 	db	0
   155  0021AC  E1                 	db	225
   156  0021AD  00                 	db	0
   157  0021AE  00                 	db	0
   158  0021AF  00                 	db	0
   159  0021B0  E1                 	db	225
   160  0021B1  00                 	db	0
   161  0021B2  00                 	db	0
   162  0021B3  00                 	db	0
   163  0021B4  E1                 	db	225
   164  0021B5  00                 	db	0
   165  0021B6  00                 	db	0
   166  0021B7  00                 	db	0
   167  0021B8  E1                 	db	225
   168  0021B9  00                 	db	0
   169  0021BA  00                 	db	0
   170  0021BB  00                 	db	0
   171  0021BC  E1                 	db	225
   172  0021BD  00                 	db	0
   173  0021BE  00                 	db	0
   174  0021BF  00                 	db	0
   175  0021C0  E1                 	db	225
   176  0021C1  00                 	db	0
   177  0021C2  00                 	db	0
   178  0021C3  00                 	db	0
   179                           
   180                           	psect	idataBANK1
   181  002582                     __pidataBANK1:
   182                           	opt stack 0
   183                           
   184                           ;initializer for _btn_ctrl
   185  002582  01                 	db	1
   186  002583  02                 	db	2
   187  002584  03                 	db	3
   188  002585  04                 	db	4
   189  002586  05                 	db	5
   190  002587  06                 	db	6
   191  002588  07                 	db	7
   192  002589  08                 	db	8
   193  00258A  09                 	db	9
   194  00258B  0A                 	db	10
   195  00258C  0B                 	db	11
   196  00258D  0C                 	db	12
   197  00258E  0D                 	db	13
   198  00258F  0E                 	db	14
   199  002590  0F                 	db	15
   200  002591  10                 	db	16
   201                           
   202                           ;initializer for _btn_note
   203  002592  48                 	db	72
   204  002593  49                 	db	73
   205  002594  4A                 	db	74
   206  002595  4B                 	db	75
   207  002596  4C                 	db	76
   208  002597  4D                 	db	77
   209  002598  4E                 	db	78
   210  002599  4F                 	db	79
   211  00259A  50                 	db	80
   212  00259B  51                 	db	81
   213  00259C  52                 	db	82
   214  00259D  53                 	db	83
   215  00259E  54                 	db	84
   216  00259F  55                 	db	85
   217  0025A0  56                 	db	86
   218  0025A1  57                 	db	87
   219                           
   220                           ;initializer for _buttonMap
   221  0025A2  01                 	db	1
   222  0025A3  02                 	db	2
   223  0025A4  03                 	db	3
   224  0025A5  07                 	db	7
   225  0025A6  00                 	db	0
   226  0025A7  04                 	db	4
   227  0025A8  05                 	db	5
   228  0025A9  06                 	db	6
   229  0025AA  09                 	db	9
   230  0025AB  0A                 	db	10
   231  0025AC  0B                 	db	11
   232  0025AD  0F                 	db	15
   233  0025AE  08                 	db	8
   234  0025AF  0C                 	db	12
   235  0025B0  0D                 	db	13
   236  0025B1  0E                 	db	14
   237                           
   238                           	psect	smallconst
   239  000800                     __psmallconst:
   240                           	opt stack 0
   241  000800  00                 	db	0
   242  000801                     _USB_SD_Ptr:
   243                           	opt stack 0
   244  000801  CE                 	db	low _sd000
   245  000802  08                 	db	high _sd000
   246  000803  6E                 	db	low _sd001
   247  000804  08                 	db	high _sd001
   248  000805  A2                 	db	low _sd002
   249  000806  08                 	db	high _sd002
   250  000807                     __end_of_USB_SD_Ptr:
   251                           	opt stack 0
   252  000807                     _USB_CD_Ptr:
   253                           	opt stack 0
   254  000807  09                 	db	low _configDescriptor1
   255  000808  08                 	db	high _configDescriptor1
   256  000809                     __end_of_USB_CD_Ptr:
   257                           	opt stack 0
   258  000809                     _configDescriptor1:
   259                           	opt stack 0
   260  000809  09                 	db	9
   261  00080A  02                 	db	2
   262  00080B  65                 	db	101
   263  00080C  00                 	db	0
   264  00080D  02                 	db	2
   265  00080E  01                 	db	1
   266  00080F  00                 	db	0
   267  000810  C0                 	db	192
   268  000811  32                 	db	50
   269  000812  09                 	db	9
   270  000813  04                 	db	4
   271  000814  00                 	db	0
   272  000815  00                 	db	0
   273  000816  00                 	db	0
   274  000817  01                 	db	1
   275  000818  01                 	db	1
   276  000819  00                 	db	0
   277  00081A  00                 	db	0
   278  00081B  09                 	db	9
   279  00081C  24                 	db	36
   280  00081D  01                 	db	1
   281  00081E  00                 	db	0
   282  00081F  01                 	db	1
   283  000820  09                 	db	9
   284  000821  00                 	db	0
   285  000822  01                 	db	1
   286  000823  01                 	db	1
   287  000824  09                 	db	9
   288  000825  04                 	db	4
   289  000826  01                 	db	1
   290  000827  00                 	db	0
   291  000828  02                 	db	2
   292  000829  01                 	db	1
   293  00082A  03                 	db	3
   294  00082B  00                 	db	0
   295  00082C  00                 	db	0
   296  00082D  07                 	db	7
   297  00082E  24                 	db	36
   298  00082F  01                 	db	1
   299  000830  00                 	db	0
   300  000831  01                 	db	1
   301  000832  41                 	db	65
   302  000833  00                 	db	0
   303  000834  06                 	db	6
   304  000835  24                 	db	36
   305  000836  02                 	db	2
   306  000837  01                 	db	1
   307  000838  01                 	db	1
   308  000839  00                 	db	0
   309  00083A  06                 	db	6
   310  00083B  24                 	db	36
   311  00083C  02                 	db	2
   312  00083D  02                 	db	2
   313  00083E  02                 	db	2
   314  00083F  00                 	db	0
   315  000840  09                 	db	9
   316  000841  24                 	db	36
   317  000842  03                 	db	3
   318  000843  01                 	db	1
   319  000844  03                 	db	3
   320  000845  01                 	db	1
   321  000846  02                 	db	2
   322  000847  01                 	db	1
   323  000848  00                 	db	0
   324  000849  09                 	db	9
   325  00084A  24                 	db	36
   326  00084B  03                 	db	3
   327  00084C  02                 	db	2
   328  00084D  04                 	db	4
   329  00084E  01                 	db	1
   330  00084F  01                 	db	1
   331  000850  01                 	db	1
   332  000851  00                 	db	0
   333  000852  09                 	db	9
   334  000853  05                 	db	5
   335  000854  01                 	db	1
   336  000855  02                 	db	2
   337  000856  40                 	db	64
   338  000857  00                 	db	0
   339  000858  00                 	db	0
   340  000859  00                 	db	0
   341  00085A  00                 	db	0
   342  00085B  05                 	db	5
   343  00085C  25                 	db	37
   344  00085D  01                 	db	1
   345  00085E  01                 	db	1
   346  00085F  01                 	db	1
   347  000860  09                 	db	9
   348  000861  05                 	db	5
   349  000862  81                 	db	129
   350  000863  02                 	db	2
   351  000864  40                 	db	64
   352  000865  00                 	db	0
   353  000866  00                 	db	0
   354  000867  00                 	db	0
   355  000868  00                 	db	0
   356  000869  05                 	db	5
   357  00086A  25                 	db	37
   358  00086B  01                 	db	1
   359  00086C  01                 	db	1
   360  00086D  03                 	db	3
   361  00086E                     __end_of_configDescriptor1:
   362                           	opt stack 0
   363  00086E                     _sd001:
   364                           	opt stack 0
   365  00086E  34                 	db	52
   366  00086F  03                 	db	3
   367  000870  0057               	dw	87
   368  000872  0065               	dw	101
   369  000874  0062               	dw	98
   370  000876  0042               	dw	66
   371  000878  004C               	dw	76
   372  00087A  0061               	dw	97
   373  00087C  0042               	dw	66
   374  00087E  00                 	db	0
   375  00087F  00                 	db	0
   376  000880  00                 	db	0
   377  000881  00                 	db	0
   378  000882  00                 	db	0
   379  000883  00                 	db	0
   380  000884  00                 	db	0
   381  000885  00                 	db	0
   382  000886  00                 	db	0
   383  000887  00                 	db	0
   384  000888  00                 	db	0
   385  000889  00                 	db	0
   386  00088A  00                 	db	0
   387  00088B  00                 	db	0
   388  00088C  00                 	db	0
   389  00088D  00                 	db	0
   390  00088E  00                 	db	0
   391  00088F  00                 	db	0
   392  000890  00                 	db	0
   393  000891  00                 	db	0
   394  000892  00                 	db	0
   395  000893  00                 	db	0
   396  000894  00                 	db	0
   397  000895  00                 	db	0
   398  000896  00                 	db	0
   399  000897  00                 	db	0
   400  000898  00                 	db	0
   401  000899  00                 	db	0
   402  00089A  00                 	db	0
   403  00089B  00                 	db	0
   404  00089C  00                 	db	0
   405  00089D  00                 	db	0
   406  00089E  00                 	db	0
   407  00089F  00                 	db	0
   408  0008A0  00                 	db	0
   409  0008A1  00                 	db	0
   410  0008A2                     __end_of_sd001:
   411                           	opt stack 0
   412  0008A2                     _sd002:
   413                           	opt stack 0
   414  0008A2  1A                 	db	26
   415  0008A3  03                 	db	3
   416  0008A4  004D               	dw	77
   417  0008A6  0049               	dw	73
   418  0008A8  0044               	dw	68
   419  0008AA  0049               	dw	73
   420  0008AC  0020               	dw	32
   421  0008AE  0046               	dw	70
   422  0008B0  0069               	dw	105
   423  0008B2  006E               	dw	110
   424  0008B4  0067               	dw	103
   425  0008B6  0065               	dw	101
   426  0008B8  0072               	dw	114
   427  0008BA  00                 	db	0
   428  0008BB  00                 	db	0
   429  0008BC                     __end_of_sd002:
   430                           	opt stack 0
   431  0008BC                     _device_dsc:
   432                           	opt stack 0
   433  0008BC  12                 	db	18
   434  0008BD  01                 	db	1
   435  0008BE  0200               	dw	512
   436  0008C0  00                 	db	0
   437  0008C1  00                 	db	0
   438  0008C2  00                 	db	0
   439  0008C3  08                 	db	8
   440  0008C4  04D8               	dw	1240
   441  0008C6  0059               	dw	89
   442  0008C8  0002               	dw	2
   443  0008CA  01                 	db	1
   444  0008CB  02                 	db	2
   445  0008CC  00                 	db	0
   446  0008CD  01                 	db	1
   447  0008CE                     __end_of_device_dsc:
   448                           	opt stack 0
   449  0008CE                     _sd000:
   450                           	opt stack 0
   451  0008CE  04                 	db	4
   452  0008CF  03                 	db	3
   453  0008D0  0409               	dw	1033
   454  0008D2                     __end_of_sd000:
   455                           	opt stack 0
   456  0000                     _LATBbits	set	3978
   457  0000                     _LATDbits	set	3980
   458  0000                     _PORTA	set	3968
   459  0000                     _PORTAbits	set	3968
   460  0000                     _PORTBbits	set	3969
   461  0000                     _PORTE	set	3972
   462  0000                     _PORTEbits	set	3972
   463  0000                     _TRISA	set	3986
   464  0000                     _TRISB	set	3987
   465  0000                     _TRISC	set	3988
   466  0000                     _TRISD	set	3989
   467  0000                     _TRISE	set	3990
   468  0000                     _UADDR	set	3950
   469  0000                     _UCFG	set	3951
   470  0000                     _UCON	set	3949
   471  0000                     _UCONbits	set	3949
   472  0000                     _UEIE	set	3947
   473  0000                     _UEIR	set	3946
   474  0000                     _UEP0bits	set	3952
   475  0000                     _UIE	set	3945
   476  0000                     _UIEbits	set	3945
   477  0000                     _UIR	set	3944
   478  0000                     _UIRbits	set	3944
   479  0000                     _USTAT	set	3948
   480  0000                     _UEP0	set	3952
   481  0000                     _UEP1	set	3953
   482  0000                     _ADCON1	set	4033
   483  0000                     _CMCON	set	4020
   484  0000                     _PIE2bits	set	4000
   485  0000                     _PIR2bits	set	4001
   486  0000                     _INTCONbits	set	4082
   487  0000                     
   488                           ; #config settings
   489  0008D2  00                 	db	0	; dummy byte at the end
   490  0000                     
   491                           	psect	cinit
   492  0021C4                     __pcinit:
   493                           	opt stack 0
   494  0021C4                     start_initialization:
   495                           	opt stack 0
   496  0021C4                     __initialization:
   497                           	opt stack 0
   498                           
   499                           ; Initialize objects allocated to BANK1 (48 bytes)
   500                           ; load TBLPTR registers with __pidataBANK1
   501  0021C4  0E82               	movlw	low __pidataBANK1
   502  0021C6  6EF6               	movwf	tblptrl,c
   503  0021C8  0E25               	movlw	high __pidataBANK1
   504  0021CA  6EF7               	movwf	tblptrh,c
   505  0021CC  0E00               	movlw	low (__pidataBANK1 shr (0+16))
   506  0021CE  6EF8               	movwf	tblptru,c
   507  0021D0  EE01  F000         	lfsr	0,__pdataBANK1
   508  0021D4  EE10 F030          	lfsr	1,48
   509  0021D8                     copy_data0:
   510  0021D8  0009               	tblrd		*+
   511  0021DA  CFF5 FFEE          	movff	tablat,postinc0
   512  0021DE  50E5               	movf	postdec1,w,c
   513  0021E0  50E1               	movf	fsr1l,w,c
   514  0021E2  E1FA               	bnz	copy_data0
   515                           
   516                           ; Initialize objects allocated to BANK0 (100 bytes)
   517                           ; load TBLPTR registers with __pidataBANK0
   518  0021E4  0E60               	movlw	low __pidataBANK0
   519  0021E6  6EF6               	movwf	tblptrl,c
   520  0021E8  0E21               	movlw	high __pidataBANK0
   521  0021EA  6EF7               	movwf	tblptrh,c
   522  0021EC  0E00               	movlw	low (__pidataBANK0 shr (0+16))
   523  0021EE  6EF8               	movwf	tblptru,c
   524  0021F0  EE00  F060         	lfsr	0,__pdataBANK0
   525  0021F4  EE10 F064          	lfsr	1,100
   526  0021F8                     copy_data1:
   527  0021F8  0009               	tblrd		*+
   528  0021FA  CFF5 FFEE          	movff	tablat,postinc0
   529  0021FE  50E5               	movf	postdec1,w,c
   530  002200  50E1               	movf	fsr1l,w,c
   531  002202  E1FA               	bnz	copy_data1
   532                           
   533                           ; Clear objects allocated to BANK0 (45 bytes)
   534  002204  EE00  F0C4         	lfsr	0,__pbssBANK0
   535  002208  0E2D               	movlw	45
   536  00220A                     clear_0:
   537  00220A  6AEE               	clrf	postinc0,c
   538  00220C  06E8               	decf	wreg,f,c
   539  00220E  E1FD               	bnz	clear_0
   540                           
   541                           ; Clear objects allocated to COMRAM (21 bytes)
   542  002210  EE00  F04B         	lfsr	0,__pbssCOMRAM
   543  002214  0E15               	movlw	21
   544  002216                     clear_1:
   545  002216  6AEE               	clrf	postinc0,c
   546  002218  06E8               	decf	wreg,f,c
   547  00221A  E1FD               	bnz	clear_1
   548  00221C                     end_of_initialization:
   549                           	opt stack 0
   550  00221C                     __end_of__initialization:
   551                           	opt stack 0
   552  00221C  0E00               	movlw	low (__Lmediumconst shr (0+16))
   553  00221E  6EF8               	movwf	tblptru,c
   554  002220  0100               	movlb	0
   555  002222  EF38  F013         	goto	_main	;jump to C main() function
   556                           tblptru	equ	0xFF8
   557                           tblptrh	equ	0xFF7
   558                           tblptrl	equ	0xFF6
   559                           tablat	equ	0xFF5
   560                           postinc0	equ	0xFEE
   561                           wreg	equ	0xFE8
   562                           postdec1	equ	0xFE5
   563                           fsr1l	equ	0xFE1
   564                           
   565                           	psect	bssCOMRAM
   566  00004B                     __pbssCOMRAM:
   567                           	opt stack 0
   568  00004B                     _inPipes:
   569                           	opt stack 0
   570  00004B                     	ds	6
   571  000051                     _pBDTEntryIn:
   572                           	opt stack 0
   573  000051                     	ds	4
   574  000055                     _pBDTEntryEP0OutCurrent:
   575                           	opt stack 0
   576  000055                     	ds	2
   577  000057                     _pBDTEntryEP0OutNext:
   578                           	opt stack 0
   579  000057                     	ds	2
   580  000059                     _USBDeferStatusStagePacket:
   581                           	opt stack 0
   582  000059                     	ds	1
   583  00005A                     _USBDeviceState:
   584                           	opt stack 0
   585  00005A                     	ds	1
   586  00005B                     _controlTransferState:
   587                           	opt stack 0
   588  00005B                     	ds	1
   589  00005C                     _shortPacketStatus:
   590                           	opt stack 0
   591  00005C                     	ds	1
   592  00005D                     _USBActiveConfiguration:
   593                           	opt stack 0
   594  00005D                     	ds	1
   595  00005E                     _USBAlternateInterface:
   596                           	opt stack 0
   597  00005E                     	ds	1
   598  00005F                     _USTATcopy:
   599                           	opt stack 0
   600  00005F                     	ds	1
   601                           tblptru	equ	0xFF8
   602                           tblptrh	equ	0xFF7
   603                           tblptrl	equ	0xFF6
   604                           tablat	equ	0xFF5
   605                           postinc0	equ	0xFEE
   606                           wreg	equ	0xFE8
   607                           postdec1	equ	0xFE5
   608                           fsr1l	equ	0xFE1
   609                           
   610                           	psect	bssBANK0
   611  0000C4                     __pbssBANK0:
   612                           	opt stack 0
   613  0000C4                     _outPipes:
   614                           	opt stack 0
   615  0000C4                     	ds	8
   616  0000CC                     _USB1msTickCount:
   617                           	opt stack 0
   618  0000CC                     	ds	4
   619  0000D0                     _pBDTEntryOut:
   620                           	opt stack 0
   621  0000D0                     	ds	4
   622  0000D4                     _USBRxHandle:
   623                           	opt stack 0
   624  0000D4                     	ds	2
   625  0000D6                     _USBTxHandle:
   626                           	opt stack 0
   627  0000D6                     	ds	2
   628  0000D8                     _ep_data_in:
   629                           	opt stack 0
   630  0000D8                     	ds	2
   631  0000DA                     _ep_data_out:
   632                           	opt stack 0
   633  0000DA                     	ds	2
   634  0000DC                     _pDst:
   635                           	opt stack 0
   636  0000DC                     	ds	2
   637  0000DE                     _BothEP0OutUOWNsSet:
   638                           	opt stack 0
   639  0000DE                     	ds	1
   640  0000DF                     _RemoteWakeup:
   641                           	opt stack 0
   642  0000DF                     	ds	1
   643  0000E0                     _USBBusIsSuspended:
   644                           	opt stack 0
   645  0000E0                     	ds	1
   646  0000E1                     _USBDeferINDataStagePackets:
   647                           	opt stack 0
   648  0000E1                     	ds	1
   649  0000E2                     _USBDeferOUTDataStagePackets:
   650                           	opt stack 0
   651  0000E2                     	ds	1
   652  0000E3                     _USBStatusStageEnabledFlag1:
   653                           	opt stack 0
   654  0000E3                     	ds	1
   655  0000E4                     _USBStatusStageEnabledFlag2:
   656                           	opt stack 0
   657  0000E4                     	ds	1
   658  0000E5                     _USBStatusStageTimeoutCounter:
   659                           	opt stack 0
   660  0000E5                     	ds	1
   661  0000E6                     _USBTicksSinceSuspendEnd:
   662                           	opt stack 0
   663  0000E6                     	ds	1
   664  0000E7                     _bank:
   665                           	opt stack 0
   666  0000E7                     	ds	1
   667  0000E8                     _channel:
   668                           	opt stack 0
   669  0000E8                     	ds	1
   670  0000E9                     _endpoint_number:
   671                           	opt stack 0
   672  0000E9                     	ds	1
   673  0000EA                     _in_mode:
   674                           	opt stack 0
   675  0000EA                     	ds	1
   676  0000EB                     _in_setting_mode:
   677                           	opt stack 0
   678  0000EB                     	ds	1
   679  0000EC                     _in_user_mode:
   680                           	opt stack 0
   681  0000EC                     	ds	1
   682  0000ED                     _msCounter:
   683                           	opt stack 0
   684  0000ED                     	ds	1
   685  0000EE                     _pitch:
   686                           	opt stack 0
   687  0000EE                     	ds	1
   688  0000EF                     _sentNoteOff:
   689                           	opt stack 0
   690  0000EF                     	ds	1
   691  0000F0                     _velocity:
   692                           	opt stack 0
   693  0000F0                     	ds	1
   694                           tblptru	equ	0xFF8
   695                           tblptrh	equ	0xFF7
   696                           tblptrl	equ	0xFF6
   697                           tablat	equ	0xFF5
   698                           postinc0	equ	0xFEE
   699                           wreg	equ	0xFE8
   700                           postdec1	equ	0xFE5
   701                           fsr1l	equ	0xFE1
   702                           
   703                           	psect	dataBANK0
   704  000060                     __pdataBANK0:
   705                           	opt stack 0
   706  000060                     _m_buttons:
   707                           	opt stack 0
   708  000060                     	ds	16
   709  000070                     _mb_values:
   710                           	opt stack 0
   711  000070                     	ds	16
   712  000080                     _sb_values:
   713                           	opt stack 0
   714  000080                     	ds	4
   715  000084                     _global_leds:
   716                           	opt stack 0
   717  000084                     	ds	64
   718                           tblptru	equ	0xFF8
   719                           tblptrh	equ	0xFF7
   720                           tblptrl	equ	0xFF6
   721                           tablat	equ	0xFF5
   722                           postinc0	equ	0xFEE
   723                           wreg	equ	0xFE8
   724                           postdec1	equ	0xFE5
   725                           fsr1l	equ	0xFE1
   726                           
   727                           	psect	dataBANK1
   728  000100                     __pdataBANK1:
   729                           	opt stack 0
   730  000100                     _btn_ctrl:
   731                           	opt stack 0
   732  000100                     	ds	16
   733  000110                     _btn_note:
   734                           	opt stack 0
   735  000110                     	ds	16
   736  000120                     _buttonMap:
   737                           	opt stack 0
   738  000120                     	ds	16
   739                           tblptru	equ	0xFF8
   740                           tblptrh	equ	0xFF7
   741                           tblptrl	equ	0xFF6
   742                           tablat	equ	0xFF5
   743                           postinc0	equ	0xFEE
   744                           wreg	equ	0xFE8
   745                           postdec1	equ	0xFE5
   746                           fsr1l	equ	0xFE1
   747                           
   748                           	psect	cstackCOMRAM
   749  000001                     __pcstackCOMRAM:
   750                           	opt stack 0
   751  000001                     ??_delayMs:
   752  000001                     ??_SPI_8bit:
   753  000001                     ??_USBStdGetDscHandler:
   754  000001                     ??_USBStdGetStatusHandler:
   755  000001                     ??_readMatrixButtons:
   756  000001                     ?_USBTransferOnePacket:
   757                           	opt stack 0
   758  000001                     USBTransferOnePacket@dir:
   759                           	opt stack 0
   760  000001                     USBConfigureEndpoint@direction:
   761                           	opt stack 0
   762  000001                     USBCtrlTrfTxService@byteToSend:
   763                           	opt stack 0
   764  000001                     USBCtrlTrfRxService@i:
   765                           	opt stack 0
   766  000001                     systemButtonPressed@pressed:
   767                           	opt stack 0
   768  000001                     changeColor@color:
   769                           	opt stack 0
   770  000001                     memcpy@d1:
   771                           	opt stack 0
   772  000001                     memset@p1:
   773                           	opt stack 0
   774                           
   775                           ; 2 bytes @ 0x0
   776  000001                     	ds	1
   777  000002                     ??_USBConfigureEndpoint:
   778  000002                     USBCtrlTrfRxService@byteToRead:
   779                           	opt stack 0
   780  000002                     USBCtrlTrfInHandler@lastDTS:
   781                           	opt stack 0
   782  000002                     readMatrixButtons@i:
   783                           	opt stack 0
   784  000002                     SPI_8bit@data:
   785                           	opt stack 0
   786  000002                     changeColor@intensity:
   787                           	opt stack 0
   788  000002                     USBTransferOnePacket@data:
   789                           	opt stack 0
   790  000002                     USBStdGetStatusHandler@p:
   791                           	opt stack 0
   792                           
   793                           ; 2 bytes @ 0x1
   794  000002                     	ds	1
   795  000003                     buttonPressed@pressed:
   796                           	opt stack 0
   797  000003                     SPI_8bit@i:
   798                           	opt stack 0
   799  000003                     changeColor@pos:
   800                           	opt stack 0
   801  000003                     memcpy@s1:
   802                           	opt stack 0
   803  000003                     memset@c:
   804                           	opt stack 0
   805                           
   806                           ; 2 bytes @ 0x2
   807  000003                     	ds	1
   808  000004                     USBTransferOnePacket@len:
   809                           	opt stack 0
   810  000004                     turnOnAllLeds@intensity:
   811                           	opt stack 0
   812  000004                     delayMs@x:
   813                           	opt stack 0
   814  000004                     buttonPressed@i:
   815                           	opt stack 0
   816  000004                     sendLEDs@leds:
   817                           	opt stack 0
   818  000004                     turnOffAllLeds@i:
   819                           	opt stack 0
   820                           
   821                           ; 2 bytes @ 0x3
   822  000004                     	ds	1
   823  000005                     ??_USBTransferOnePacket:
   824  000005                     turnOnAllLeds@color:
   825                           	opt stack 0
   826  000005                     delayMs@i:
   827                           	opt stack 0
   828  000005                     memcpy@n:
   829                           	opt stack 0
   830  000005                     memset@n:
   831                           	opt stack 0
   832                           
   833                           ; 2 bytes @ 0x4
   834  000005                     	ds	1
   835  000006                     ??_sendLEDs:
   836  000006                     USBConfigureEndpoint@EPNum:
   837                           	opt stack 0
   838  000006                     turnOnAllLeds@i:
   839                           	opt stack 0
   840                           
   841                           ; 2 bytes @ 0x5
   842  000006                     	ds	1
   843  000007                     USBConfigureEndpoint@handle:
   844                           	opt stack 0
   845  000007                     memcpy@d:
   846                           	opt stack 0
   847  000007                     memset@p:
   848                           	opt stack 0
   849                           
   850                           ; 2 bytes @ 0x6
   851  000007                     	ds	1
   852  000008                     sendLEDs@i:
   853                           	opt stack 0
   854                           
   855                           ; 1 bytes @ 0x7
   856  000008                     	ds	1
   857  000009                     USBDeviceInit@i:
   858                           	opt stack 0
   859  000009                     USBEnableEndpoint@options:
   860                           	opt stack 0
   861  000009                     USBTransferOnePacket@ep:
   862                           	opt stack 0
   863  000009                     sendLEDs@j:
   864                           	opt stack 0
   865  000009                     memcpy@s:
   866                           	opt stack 0
   867                           
   868                           ; 2 bytes @ 0x8
   869  000009                     	ds	1
   870  00000A                     ??_SYSTEM_Initialize:
   871  00000A                     blinkLedAsync@xtimes:
   872                           	opt stack 0
   873  00000A                     USBEnableEndpoint@p:
   874                           	opt stack 0
   875  00000A                     USBTransferOnePacket@handle:
   876                           	opt stack 0
   877  00000A                     ledsIntro@j:
   878                           	opt stack 0
   879  00000A                     pressedButtonEff@leds:
   880                           	opt stack 0
   881                           
   882                           ; 64 bytes @ 0x9
   883  00000A                     	ds	1
   884  00000B                     blinkLedAsync@color:
   885                           	opt stack 0
   886  00000B                     SYSTEM_Initialize@state:
   887                           	opt stack 0
   888                           
   889                           ; 1 bytes @ 0xA
   890  00000B                     	ds	1
   891  00000C                     USBEnableEndpoint@ep:
   892                           	opt stack 0
   893  00000C                     sendMIDINote@velocity:
   894                           	opt stack 0
   895  00000C                     blinkLedAsync@intensity:
   896                           	opt stack 0
   897  00000C                     ledsIntro@i:
   898                           	opt stack 0
   899                           
   900                           ; 2 bytes @ 0xB
   901  00000C                     	ds	1
   902  00000D                     ??_blinkLedAsync:
   903  00000D                     sendMIDINote@channel:
   904                           	opt stack 0
   905  00000D                     USER_USB_CALLBACK_EVENT_HANDLER@event:
   906                           	opt stack 0
   907                           
   908                           ; 2 bytes @ 0xC
   909  00000D                     	ds	1
   910  00000E                     sendMIDINote@note:
   911                           	opt stack 0
   912                           
   913                           ; 1 bytes @ 0xD
   914  00000E                     	ds	1
   915  00000F                     sendMIDINote@sent:
   916                           	opt stack 0
   917  00000F                     USER_USB_CALLBACK_EVENT_HANDLER@pdata:
   918                           	opt stack 0
   919                           
   920                           ; 2 bytes @ 0xE
   921  00000F                     	ds	1
   922  000010                     blinkLedAsync@i:
   923                           	opt stack 0
   924                           
   925                           ; 2 bytes @ 0xF
   926  000010                     	ds	1
   927  000011                     USER_USB_CALLBACK_EVENT_HANDLER@size:
   928                           	opt stack 0
   929                           
   930                           ; 2 bytes @ 0x10
   931  000011                     	ds	1
   932  000012                     sendMatrixButtonsToMidi@i:
   933                           	opt stack 0
   934  000012                     blinkLedAsync@led:
   935                           	opt stack 0
   936                           
   937                           ; 1 bytes @ 0x11
   938  000012                     	ds	1
   939  000013                     ??_USER_USB_CALLBACK_EVENT_HANDLER:
   940  000013                     bankChange@pressedButton:
   941                           	opt stack 0
   942  000013                     channelChange@pressedButton:
   943                           	opt stack 0
   944                           
   945                           ; 1 bytes @ 0x12
   946  000013                     	ds	1
   947  000014                     bankChange@pressedSysBtn:
   948                           	opt stack 0
   949  000014                     channelChange@pressedSysBtn:
   950                           	opt stack 0
   951                           
   952                           ; 1 bytes @ 0x13
   953  000014                     	ds	1
   954  000015                     ??_USBStdFeatureReqHandler:
   955  000015                     USBStdSetCfgHandler@i:
   956                           	opt stack 0
   957                           
   958                           ; 1 bytes @ 0x14
   959  000015                     	ds	1
   960  000016                     USBStdFeatureReqHandler@pUEP:
   961                           	opt stack 0
   962                           
   963                           ; 2 bytes @ 0x15
   964  000016                     	ds	2
   965  000018                     USBStdFeatureReqHandler@current_ep_data:
   966                           	opt stack 0
   967                           
   968                           ; 1 bytes @ 0x17
   969  000018                     	ds	1
   970  000019                     USBStdFeatureReqHandler@p:
   971                           	opt stack 0
   972                           
   973                           ; 2 bytes @ 0x18
   974  000019                     	ds	2
   975  00001B                     ??_USBCtrlEPService:
   976  00001B                     
   977                           ; 1 bytes @ 0x1A
   978  00001B                     	ds	1
   979  00001C                     USBDeviceTasks@i:
   980                           	opt stack 0
   981                           
   982                           ; 1 bytes @ 0x1B
   983  00001C                     	ds	46
   984  00004A                     pressedButtonEff@i:
   985                           	opt stack 0
   986                           
   987                           ; 1 bytes @ 0x49
   988  00004A                     	ds	1
   989  00004B                     tblptru	equ	0xFF8
   990                           tblptrh	equ	0xFF7
   991                           tblptrl	equ	0xFF6
   992                           tablat	equ	0xFF5
   993                           postinc0	equ	0xFEE
   994                           wreg	equ	0xFE8
   995                           postdec1	equ	0xFE5
   996                           fsr1l	equ	0xFE1
   997                           
   998                           ; 1 bytes @ 0x4A
   999 ;;
  1000 ;;Main: autosize = 0, tempsize = 0, incstack = 0, save=0
  1001 ;;
  1002 ;; *************** function _main *****************
  1003 ;; Defined at:
  1004 ;;		line 27 in file "main.c"
  1005 ;; Parameters:    Size  Location     Type
  1006 ;;		None
  1007 ;; Auto vars:     Size  Location     Type
  1008 ;;		None
  1009 ;; Return value:  Size  Location     Type
  1010 ;;                  1    wreg      void 
  1011 ;; Registers used:
  1012 ;;		wreg, fsr1l, fsr1h, fsr2l, fsr2h, status,2, status,0, tblptrl, tblptrh, tblptru, prodl, prodh, cstack
  1013 ;; Tracked objects:
  1014 ;;		On entry : 0/0
  1015 ;;		On exit  : 0/0
  1016 ;;		Unchanged: 0/0
  1017 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  1018 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  1019 ;;      Locals:         0       0       0       0       0       0       0       0       0       0
  1020 ;;      Temps:          0       0       0       0       0       0       0       0       0       0
  1021 ;;      Totals:         0       0       0       0       0       0       0       0       0       0
  1022 ;;Total ram usage:        0 bytes
  1023 ;; Hardware stack levels required when called:    9
  1024 ;; This function calls:
  1025 ;;		_SYSTEM_Initialize
  1026 ;;		_USBDeviceInit
  1027 ;;		_USBDeviceTasks
  1028 ;;		_ledsIntro
  1029 ;;		_pressedButtonEff
  1030 ;;		_processSystemButtons
  1031 ;;		_readMatrixButtons
  1032 ;;		_sendMatrixButtonsToMidi
  1033 ;; This function is called by:
  1034 ;;		Startup code after reset
  1035 ;; This function uses a non-reentrant model
  1036 ;;
  1037                           
  1038                           	psect	text0
  1039  002670                     __ptext0:
  1040                           	opt stack 0
  1041  002670                     _main:
  1042                           	opt stack 22
  1043                           
  1044                           ;main.c: 29: SYSTEM_Initialize(SYSTEM_STATE_USB_START);
  1045                           
  1046                           ;incstack = 0
  1047  002670  0E00               	movlw	0
  1048  002672  EC99  F011         	call	_SYSTEM_Initialize
  1049                           
  1050                           ;main.c: 31: USBDeviceInit();
  1051  002676  ECA4  F008         	call	_USBDeviceInit	;wreg free
  1052                           
  1053                           ;main.c: 32: ;
  1054                           ;main.c: 34: ledsIntro();
  1055  00267A  EC7A  F010         	call	_ledsIntro	;wreg free
  1056  00267E                     l3922:
  1057                           
  1058                           ;main.c: 37: {
  1059                           ;main.c: 38: ;
  1060                           ;main.c: 42: USBDeviceTasks();
  1061  00267E  EC41  F007         	call	_USBDeviceTasks	;wreg free
  1062                           
  1063                           ;main.c: 46: readMatrixButtons();
  1064  002682  EC43  F011         	call	_readMatrixButtons	;wreg free
  1065                           
  1066                           ;main.c: 47: pressedButtonEff();
  1067  002686  ECF5  F007         	call	_pressedButtonEff	;wreg free
  1068                           
  1069                           ;main.c: 49: processSystemButtons();
  1070  00268A  EC8B  F012         	call	_processSystemButtons	;wreg free
  1071                           
  1072                           ;main.c: 51: if (in_mode == USER) {
  1073  00268E  0100               	movlb	0	; () banked
  1074  002690  51EA               	movf	_in_mode& (0+255),w,b
  1075  002692  A4D8               	btfss	status,2,c
  1076  002694  D7F4               	goto	l3922
  1077                           
  1078                           ; BSR set to: 0
  1079                           ;main.c: 52: sendMatrixButtonsToMidi();
  1080  002696  ECCA  F00D         	call	_sendMatrixButtonsToMidi	;wreg free
  1081  00269A  D7F1               	goto	l3922
  1082  00269C                     __end_of_main:
  1083                           	opt stack 0
  1084                           tblptru	equ	0xFF8
  1085                           tblptrh	equ	0xFF7
  1086                           tblptrl	equ	0xFF6
  1087                           tablat	equ	0xFF5
  1088                           postinc0	equ	0xFEE
  1089                           wreg	equ	0xFE8
  1090                           postdec1	equ	0xFE5
  1091                           fsr1l	equ	0xFE1
  1092                           status	equ	0xFD8
  1093                           
  1094 ;; *************** function _sendMatrixButtonsToMidi *****************
  1095 ;; Defined at:
  1096 ;;		line 141 in file "main.c"
  1097 ;; Parameters:    Size  Location     Type
  1098 ;;		None
  1099 ;; Auto vars:     Size  Location     Type
  1100 ;;  i               1   17[COMRAM] unsigned char 
  1101 ;; Return value:  Size  Location     Type
  1102 ;;                  1    wreg      void 
  1103 ;; Registers used:
  1104 ;;		wreg, fsr1l, fsr1h, fsr2l, fsr2h, status,2, status,0, prodl, prodh, cstack
  1105 ;; Tracked objects:
  1106 ;;		On entry : 0/0
  1107 ;;		On exit  : 0/0
  1108 ;;		Unchanged: 0/0
  1109 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  1110 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  1111 ;;      Locals:         1       0       0       0       0       0       0       0       0       0
  1112 ;;      Temps:          2       0       0       0       0       0       0       0       0       0
  1113 ;;      Totals:         3       0       0       0       0       0       0       0       0       0
  1114 ;;Total ram usage:        3 bytes
  1115 ;; Hardware stack levels used:    1
  1116 ;; Hardware stack levels required when called:    2
  1117 ;; This function calls:
  1118 ;;		_sendMIDINote
  1119 ;; This function is called by:
  1120 ;;		_main
  1121 ;; This function uses a non-reentrant model
  1122 ;;
  1123                           
  1124                           	psect	text1
  1125  001B94                     __ptext1:
  1126                           	opt stack 0
  1127  001B94                     _sendMatrixButtonsToMidi:
  1128                           	opt stack 28
  1129                           
  1130                           ;main.c: 143: for(char i = 0; i < 16; i++){
  1131                           
  1132                           ;incstack = 0
  1133  001B94  0E00               	movlw	0
  1134  001B96  6E12               	movwf	sendMatrixButtonsToMidi@i,c
  1135  001B98                     l3902:
  1136  001B98  0E0F               	movlw	15
  1137  001B9A  6412               	cpfsgt	sendMatrixButtonsToMidi@i,c
  1138  001B9C  D001               	goto	l3906
  1139  001B9E  0012               	return	
  1140  001BA0                     l3906:
  1141                           
  1142                           ;main.c: 145: if(mb_values[i] != m_buttons[i]){
  1143  001BA0  5012               	movf	sendMatrixButtonsToMidi@i,w,c
  1144  001BA2  0D01               	mullw	1
  1145  001BA4  0E60               	movlw	low _m_buttons
  1146  001BA6  24F3               	addwf	prodl,w,c
  1147  001BA8  6ED9               	movwf	fsr2l,c
  1148  001BAA  0E00               	movlw	high _m_buttons
  1149  001BAC  20F4               	addwfc	prodh,w,c
  1150  001BAE  6EDA               	movwf	fsr2h,c
  1151  001BB0  5012               	movf	sendMatrixButtonsToMidi@i,w,c
  1152  001BB2  0D01               	mullw	1
  1153  001BB4  0E70               	movlw	low _mb_values
  1154  001BB6  24F3               	addwf	prodl,w,c
  1155  001BB8  6EE1               	movwf	fsr1l,c
  1156  001BBA  0E00               	movlw	high _mb_values
  1157  001BBC  20F4               	addwfc	prodh,w,c
  1158  001BBE  6EE2               	movwf	fsr1h,c
  1159  001BC0  50DE               	movf	postinc2,w,c
  1160  001BC2  18E6               	xorwf	postinc1,w,c
  1161  001BC4  B4D8               	btfsc	status,2,c
  1162  001BC6  D032               	goto	l3916
  1163                           
  1164                           ;main.c: 148: if(m_buttons[i] == 0) {
  1165  001BC8  5012               	movf	sendMatrixButtonsToMidi@i,w,c
  1166  001BCA  0D01               	mullw	1
  1167  001BCC  0E60               	movlw	low _m_buttons
  1168  001BCE  24F3               	addwf	prodl,w,c
  1169  001BD0  6ED9               	movwf	fsr2l,c
  1170  001BD2  0E00               	movlw	high _m_buttons
  1171  001BD4  20F4               	addwfc	prodh,w,c
  1172  001BD6  6EDA               	movwf	fsr2h,c
  1173  001BD8  50DF               	movf	indf2,w,c
  1174  001BDA  A4D8               	btfss	status,2,c
  1175  001BDC  D003               	goto	l542
  1176                           
  1177                           ;main.c: 149: velocity = 127;
  1178  001BDE  0E7F               	movlw	127
  1179  001BE0  0100               	movlb	0	; () banked
  1180  001BE2  6FF0               	movwf	_velocity& (0+255),b
  1181  001BE4                     l542:
  1182                           
  1183                           ;main.c: 150: }
  1184                           ;main.c: 152: if(in_mode == USER){
  1185  001BE4  0100               	movlb	0	; () banked
  1186  001BE6  51EA               	movf	_in_mode& (0+255),w,b
  1187  001BE8  A4D8               	btfss	status,2,c
  1188  001BEA  D020               	goto	l3916
  1189                           
  1190                           ; BSR set to: 0
  1191                           ;main.c: 154: if(sendMIDINote((bank * 16) + i, velocity, channel)){
  1192  001BEC  C0F0  F00C         	movff	_velocity,sendMIDINote@velocity
  1193  001BF0  C0E8  F00D         	movff	_channel,sendMIDINote@channel
  1194  001BF4  0100               	movlb	0	; () banked
  1195  001BF6  51E7               	movf	_bank& (0+255),w,b
  1196  001BF8  0D10               	mullw	16
  1197  001BFA  50F3               	movf	prodl,w,c
  1198  001BFC  2412               	addwf	sendMatrixButtonsToMidi@i,w,c
  1199  001BFE  EC95  F00F         	call	_sendMIDINote
  1200  001C02  0900               	iorlw	0
  1201  001C04  B4D8               	btfsc	status,2,c
  1202  001C06  D012               	goto	l3916
  1203                           
  1204                           ;main.c: 155: mb_values[i] = m_buttons[i];
  1205  001C08  5012               	movf	sendMatrixButtonsToMidi@i,w,c
  1206  001C0A  0D01               	mullw	1
  1207  001C0C  0E60               	movlw	low _m_buttons
  1208  001C0E  24F3               	addwf	prodl,w,c
  1209  001C10  6ED9               	movwf	fsr2l,c
  1210  001C12  0E00               	movlw	high _m_buttons
  1211  001C14  20F4               	addwfc	prodh,w,c
  1212  001C16  6EDA               	movwf	fsr2h,c
  1213  001C18  5012               	movf	sendMatrixButtonsToMidi@i,w,c
  1214  001C1A  0D01               	mullw	1
  1215  001C1C  0E70               	movlw	low _mb_values
  1216  001C1E  24F3               	addwf	prodl,w,c
  1217  001C20  6EE1               	movwf	fsr1l,c
  1218  001C22  0E00               	movlw	high _mb_values
  1219  001C24  20F4               	addwfc	prodh,w,c
  1220  001C26  6EE2               	movwf	fsr1h,c
  1221  001C28  CFDF FFE7          	movff	indf2,indf1
  1222  001C2C                     l3916:
  1223  001C2C  2A12               	incf	sendMatrixButtonsToMidi@i,f,c
  1224  001C2E  D7B4               	goto	l3902
  1225  001C30                     __end_of_sendMatrixButtonsToMidi:
  1226                           	opt stack 0
  1227                           tblptru	equ	0xFF8
  1228                           tblptrh	equ	0xFF7
  1229                           tblptrl	equ	0xFF6
  1230                           tablat	equ	0xFF5
  1231                           prodh	equ	0xFF4
  1232                           prodl	equ	0xFF3
  1233                           postinc0	equ	0xFEE
  1234                           wreg	equ	0xFE8
  1235                           indf1	equ	0xFE7
  1236                           postinc1	equ	0xFE6
  1237                           postdec1	equ	0xFE5
  1238                           fsr1h	equ	0xFE2
  1239                           fsr1l	equ	0xFE1
  1240                           indf2	equ	0xFDF
  1241                           postinc2	equ	0xFDE
  1242                           fsr2h	equ	0xFDA
  1243                           fsr2l	equ	0xFD9
  1244                           status	equ	0xFD8
  1245                           
  1246 ;; *************** function _sendMIDINote *****************
  1247 ;; Defined at:
  1248 ;;		line 120 in file "midi.c"
  1249 ;; Parameters:    Size  Location     Type
  1250 ;;  note            1    wreg     unsigned char 
  1251 ;;  velocity        1   11[COMRAM] unsigned char 
  1252 ;;  channel         1   12[COMRAM] unsigned char 
  1253 ;; Auto vars:     Size  Location     Type
  1254 ;;  note            1   13[COMRAM] unsigned char 
  1255 ;;  sent            1   14[COMRAM] unsigned char 
  1256 ;; Return value:  Size  Location     Type
  1257 ;;                  1    wreg      unsigned char 
  1258 ;; Registers used:
  1259 ;;		wreg, fsr2l, fsr2h, status,2, status,0, prodl, prodh, cstack
  1260 ;; Tracked objects:
  1261 ;;		On entry : 0/0
  1262 ;;		On exit  : 0/0
  1263 ;;		Unchanged: 0/0
  1264 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  1265 ;;      Params:         2       0       0       0       0       0       0       0       0       0
  1266 ;;      Locals:         2       0       0       0       0       0       0       0       0       0
  1267 ;;      Temps:          0       0       0       0       0       0       0       0       0       0
  1268 ;;      Totals:         4       0       0       0       0       0       0       0       0       0
  1269 ;;Total ram usage:        4 bytes
  1270 ;; Hardware stack levels used:    1
  1271 ;; Hardware stack levels required when called:    1
  1272 ;; This function calls:
  1273 ;;		_USBTransferOnePacket
  1274 ;; This function is called by:
  1275 ;;		_sendMatrixButtonsToMidi
  1276 ;; This function uses a non-reentrant model
  1277 ;;
  1278                           
  1279                           	psect	text2
  1280  001F2A                     __ptext2:
  1281                           	opt stack 0
  1282  001F2A                     _sendMIDINote:
  1283                           	opt stack 28
  1284                           
  1285                           ;incstack = 0
  1286                           ;sendMIDINote@note stored from wreg
  1287  001F2A  6E0E               	movwf	sendMIDINote@note,c
  1288                           
  1289                           ;midi.c: 122: bool sent = 0;
  1290  001F2C  0E00               	movlw	0
  1291  001F2E  6E0F               	movwf	sendMIDINote@sent,c
  1292                           
  1293                           ;midi.c: 125: if(!((USBTxHandle != 0x0000) && ((*(volatile uint8_t*)USBTxHandle & 0x80) 
      +                          != 0x00))){
  1294  001F30  0100               	movlb	0	; () banked
  1295  001F32  51D6               	movf	_USBTxHandle& (0+255),w,b
  1296  001F34  0100               	movlb	0	; () banked
  1297  001F36  11D7               	iorwf	(_USBTxHandle+1)& (0+255),w,b
  1298  001F38  B4D8               	btfsc	status,2,c
  1299  001F3A  D007               	goto	l3688
  1300                           
  1301                           ; BSR set to: 0
  1302  001F3C  C0D6  FFD9         	movff	_USBTxHandle,fsr2l
  1303  001F40  C0D7  FFDA         	movff	_USBTxHandle+1,fsr2h
  1304  001F44  0100               	movlb	0	; () banked
  1305  001F46  BEDF               	btfsc	indf2,7,c
  1306  001F48  D02C               	goto	l3702
  1307  001F4A                     l3688:
  1308                           
  1309                           ; BSR set to: 0
  1310                           ;midi.c: 127: midiData.Val = 0;
  1311  001F4A  0E00               	movlw	0
  1312  001F4C  0105               	movlb	5	; () banked
  1313  001F4E  6F80               	movwf	128,b
  1314  001F50  0E00               	movlw	0
  1315  001F52  6F81               	movwf	129,b
  1316  001F54  0E00               	movlw	0
  1317  001F56  6F82               	movwf	130,b
  1318  001F58  0E00               	movlw	0
  1319  001F5A  6F83               	movwf	131,b
  1320                           
  1321                           ; BSR set to: 5
  1322                           ;midi.c: 128: midiData.CableNumber = 0;
  1323  001F5C  0105               	movlb	5	; () banked
  1324  001F5E  9980               	bcf	128,4,b
  1325  001F60  9B80               	bcf	128,5,b
  1326  001F62  9D80               	bcf	128,6,b
  1327  001F64  9F80               	bcf	128,7,b
  1328                           
  1329                           ;midi.c: 129: midiData.CodeIndexNumber = 0x9;
  1330  001F66  0105               	movlb	5	; () banked
  1331  001F68  5180               	movf	128,w,b
  1332  001F6A  0BF0               	andlw	-16
  1333  001F6C  0909               	iorlw	9
  1334  001F6E  6F80               	movwf	128,b
  1335                           
  1336                           ; BSR set to: 5
  1337                           ;midi.c: 130: midiData.DATA_0 = 0x90 + channel;
  1338  001F70  500D               	movf	sendMIDINote@channel,w,c
  1339  001F72  0F90               	addlw	144
  1340  001F74  0105               	movlb	5	; () banked
  1341  001F76  6F81               	movwf	129,b
  1342                           
  1343                           ; BSR set to: 5
  1344                           ;midi.c: 131: midiData.DATA_1 = note;
  1345  001F78  C00E  F582         	movff	sendMIDINote@note,1410
  1346                           
  1347                           ; BSR set to: 5
  1348                           ;midi.c: 132: midiData.DATA_2 = velocity;
  1349  001F7C  C00C  F583         	movff	sendMIDINote@velocity,1411
  1350                           
  1351                           ; BSR set to: 5
  1352                           ;midi.c: 134: USBTxHandle = USBTransferOnePacket(1,1,(uint8_t*)&midiData,4);
  1353  001F80  0E01               	movlw	1
  1354  001F82  6E01               	movwf	USBTransferOnePacket@dir,c
  1355  001F84  0E80               	movlw	128
  1356  001F86  6E02               	movwf	USBTransferOnePacket@data,c
  1357  001F88  0E05               	movlw	5
  1358  001F8A  6E03               	movwf	USBTransferOnePacket@data+1,c
  1359  001F8C  0E04               	movlw	4
  1360  001F8E  6E04               	movwf	USBTransferOnePacket@len,c
  1361  001F90  0E01               	movlw	1
  1362  001F92  ECE9  F00A         	call	_USBTransferOnePacket
  1363  001F96  C001  F0D6         	movff	?_USBTransferOnePacket,_USBTxHandle
  1364  001F9A  C002  F0D7         	movff	?_USBTransferOnePacket+1,_USBTxHandle+1
  1365                           
  1366                           ;midi.c: 136: sent = 1;
  1367  001F9E  0E01               	movlw	1
  1368  001FA0  6E0F               	movwf	sendMIDINote@sent,c
  1369  001FA2                     l3702:
  1370                           
  1371                           ;midi.c: 137: }
  1372                           ;midi.c: 139: return sent;
  1373  001FA2  500F               	movf	sendMIDINote@sent,w,c
  1374  001FA4  0012               	return	
  1375  001FA6                     __end_of_sendMIDINote:
  1376                           	opt stack 0
  1377                           tblptru	equ	0xFF8
  1378                           tblptrh	equ	0xFF7
  1379                           tblptrl	equ	0xFF6
  1380                           tablat	equ	0xFF5
  1381                           prodh	equ	0xFF4
  1382                           prodl	equ	0xFF3
  1383                           postinc0	equ	0xFEE
  1384                           wreg	equ	0xFE8
  1385                           indf1	equ	0xFE7
  1386                           postinc1	equ	0xFE6
  1387                           postdec1	equ	0xFE5
  1388                           fsr1h	equ	0xFE2
  1389                           fsr1l	equ	0xFE1
  1390                           indf2	equ	0xFDF
  1391                           postinc2	equ	0xFDE
  1392                           fsr2h	equ	0xFDA
  1393                           fsr2l	equ	0xFD9
  1394                           status	equ	0xFD8
  1395                           
  1396 ;; *************** function _processSystemButtons *****************
  1397 ;; Defined at:
  1398 ;;		line 58 in file "main.c"
  1399 ;; Parameters:    Size  Location     Type
  1400 ;;		None
  1401 ;; Auto vars:     Size  Location     Type
  1402 ;;		None
  1403 ;; Return value:  Size  Location     Type
  1404 ;;                  1    wreg      void 
  1405 ;; Registers used:
  1406 ;;		wreg, fsr2l, fsr2h, status,2, status,0, prodl, prodh, cstack
  1407 ;; Tracked objects:
  1408 ;;		On entry : 0/0
  1409 ;;		On exit  : 0/0
  1410 ;;		Unchanged: 0/0
  1411 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  1412 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  1413 ;;      Locals:         0       0       0       0       0       0       0       0       0       0
  1414 ;;      Temps:          0       0       0       0       0       0       0       0       0       0
  1415 ;;      Totals:         0       0       0       0       0       0       0       0       0       0
  1416 ;;Total ram usage:        0 bytes
  1417 ;; Hardware stack levels used:    1
  1418 ;; Hardware stack levels required when called:    4
  1419 ;; This function calls:
  1420 ;;		_bankChange
  1421 ;;		_channelChange
  1422 ;; This function is called by:
  1423 ;;		_main
  1424 ;; This function uses a non-reentrant model
  1425 ;;
  1426                           
  1427                           	psect	text3
  1428  002516                     __ptext3:
  1429                           	opt stack 0
  1430  002516                     _processSystemButtons:
  1431                           	opt stack 26
  1432                           
  1433                           ;main.c: 60: if (PORTAbits.RA4 == 0) {
  1434                           
  1435                           ;incstack = 0
  1436  002516  B880               	btfsc	3968,4,c	;volatile
  1437  002518  D00B               	goto	l3892
  1438                           
  1439                           ;main.c: 61: in_mode = SETTINGS;
  1440  00251A  0E01               	movlw	1
  1441  00251C  0100               	movlb	0	; () banked
  1442  00251E  6FEA               	movwf	_in_mode& (0+255),b
  1443                           
  1444                           ;main.c: 62: in_setting_mode = BANK_CHANGE;
  1445  002520  0E00               	movlw	0
  1446  002522  0100               	movlb	0	; () banked
  1447  002524  6FEB               	movwf	_in_setting_mode& (0+255),b
  1448                           
  1449                           ; BSR set to: 0
  1450                           ;main.c: 63: bankChange();
  1451  002526  ECD3  F00F         	call	_bankChange	;wreg free
  1452                           
  1453                           ;main.c: 64: in_mode = USER;
  1454  00252A  0E00               	movlw	0
  1455  00252C  0100               	movlb	0	; () banked
  1456  00252E  6FEA               	movwf	_in_mode& (0+255),b
  1457  002530                     l3892:
  1458                           
  1459                           ;main.c: 65: }
  1460                           ;main.c: 67: if (PORTAbits.RA5 == 0) {
  1461  002530  BA80               	btfsc	3968,5,c	;volatile
  1462  002532  0012               	return	
  1463                           
  1464                           ;main.c: 68: in_mode = SETTINGS;
  1465  002534  0E01               	movlw	1
  1466  002536  0100               	movlb	0	; () banked
  1467  002538  6FEA               	movwf	_in_mode& (0+255),b
  1468                           
  1469                           ;main.c: 69: in_setting_mode = CHAN_CHANGE;
  1470  00253A  0E01               	movlw	1
  1471  00253C  0100               	movlb	0	; () banked
  1472  00253E  6FEB               	movwf	_in_setting_mode& (0+255),b
  1473                           
  1474                           ; BSR set to: 0
  1475                           ;main.c: 70: channelChange();
  1476  002540  EC0C  F010         	call	_channelChange	;wreg free
  1477                           
  1478                           ;main.c: 71: in_mode = USER;
  1479  002544  0E00               	movlw	0
  1480  002546  0100               	movlb	0	; () banked
  1481  002548  6FEA               	movwf	_in_mode& (0+255),b
  1482  00254A  0012               	return	
  1483  00254C                     __end_of_processSystemButtons:
  1484                           	opt stack 0
  1485                           tblptru	equ	0xFF8
  1486                           tblptrh	equ	0xFF7
  1487                           tblptrl	equ	0xFF6
  1488                           tablat	equ	0xFF5
  1489                           prodh	equ	0xFF4
  1490                           prodl	equ	0xFF3
  1491                           postinc0	equ	0xFEE
  1492                           wreg	equ	0xFE8
  1493                           indf1	equ	0xFE7
  1494                           postinc1	equ	0xFE6
  1495                           postdec1	equ	0xFE5
  1496                           fsr1h	equ	0xFE2
  1497                           fsr1l	equ	0xFE1
  1498                           indf2	equ	0xFDF
  1499                           postinc2	equ	0xFDE
  1500                           fsr2h	equ	0xFDA
  1501                           fsr2l	equ	0xFD9
  1502                           status	equ	0xFD8
  1503                           
  1504 ;; *************** function _channelChange *****************
  1505 ;; Defined at:
  1506 ;;		line 109 in file "main.c"
  1507 ;; Parameters:    Size  Location     Type
  1508 ;;		None
  1509 ;; Auto vars:     Size  Location     Type
  1510 ;;  pressedSysBt    1   19[COMRAM] unsigned char 
  1511 ;;  pressedButto    1   18[COMRAM] unsigned char 
  1512 ;; Return value:  Size  Location     Type
  1513 ;;                  1    wreg      void 
  1514 ;; Registers used:
  1515 ;;		wreg, fsr2l, fsr2h, status,2, status,0, prodl, prodh, cstack
  1516 ;; Tracked objects:
  1517 ;;		On entry : 0/0
  1518 ;;		On exit  : 0/0
  1519 ;;		Unchanged: 0/0
  1520 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  1521 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  1522 ;;      Locals:         2       0       0       0       0       0       0       0       0       0
  1523 ;;      Temps:          0       0       0       0       0       0       0       0       0       0
  1524 ;;      Totals:         2       0       0       0       0       0       0       0       0       0
  1525 ;;Total ram usage:        2 bytes
  1526 ;; Hardware stack levels used:    1
  1527 ;; Hardware stack levels required when called:    3
  1528 ;; This function calls:
  1529 ;;		_blinkLedAsync
  1530 ;;		_buttonPressed
  1531 ;;		_changeColor
  1532 ;;		_sendLEDs
  1533 ;;		_systemButtonPressed
  1534 ;;		_turnOffAllLeds
  1535 ;;		_turnOnAllLeds
  1536 ;; This function is called by:
  1537 ;;		_processSystemButtons
  1538 ;; This function uses a non-reentrant model
  1539 ;;
  1540                           
  1541                           	psect	text4
  1542  002018                     __ptext4:
  1543                           	opt stack 0
  1544  002018                     _channelChange:
  1545                           	opt stack 26
  1546                           
  1547                           ;main.c: 111: char pressedButton = 0;
  1548                           
  1549                           ;incstack = 0
  1550  002018  0E00               	movlw	0
  1551  00201A  6E13               	movwf	channelChange@pressedButton,c
  1552                           
  1553                           ;main.c: 112: char pressedSysBtn = 0;
  1554  00201C  0E00               	movlw	0
  1555  00201E  6E14               	movwf	channelChange@pressedSysBtn,c
  1556                           
  1557                           ;main.c: 114: turnOnAllLeds(YELLOW, 255);
  1558  002020  0EFF               	movlw	255
  1559  002022  6E04               	movwf	turnOnAllLeds@intensity,c
  1560  002024  0E05               	movlw	5
  1561  002026  ECD9  F012         	call	_turnOnAllLeds
  1562                           
  1563                           ;main.c: 116: changeColor(channel, RED, 255);
  1564  00202A  0E03               	movlw	3
  1565  00202C  6E01               	movwf	changeColor@color,c
  1566  00202E  0EFF               	movlw	255
  1567  002030  6E02               	movwf	changeColor@intensity,c
  1568  002032  0100               	movlb	0	; () banked
  1569  002034  51E8               	movf	_channel& (0+255),w,b
  1570  002036  EC6A  F004         	call	_changeColor
  1571                           
  1572                           ;main.c: 117: sendLEDs(global_leds);
  1573  00203A  0E84               	movlw	low _global_leds
  1574  00203C  6E04               	movwf	sendLEDs@leds,c
  1575  00203E  0E00               	movlw	high _global_leds
  1576  002040  6E05               	movwf	sendLEDs@leds+1,c
  1577  002042  EC66  F00E         	call	_sendLEDs	;wreg free
  1578  002046                     l3664:
  1579                           
  1580                           ;main.c: 120: {
  1581                           ;main.c: 121: pressedButton = buttonPressed();
  1582  002046  EC0F  F012         	call	_buttonPressed	;wreg free
  1583  00204A  6E13               	movwf	channelChange@pressedButton,c
  1584                           
  1585                           ;main.c: 122: pressedSysBtn = systemButtonPressed();
  1586  00204C  EC64  F013         	call	_systemButtonPressed	;wreg free
  1587  002050  6E14               	movwf	channelChange@pressedSysBtn,c
  1588                           
  1589                           ;main.c: 124: if(pressedButton != 0){
  1590  002052  5013               	movf	channelChange@pressedButton,w,c
  1591  002054  B4D8               	btfsc	status,2,c
  1592  002056  D010               	goto	l3676
  1593                           
  1594                           ;main.c: 125: channel = pressedButton - 1;
  1595  002058  0413               	decf	channelChange@pressedButton,w,c
  1596  00205A  0100               	movlb	0	; () banked
  1597  00205C  6FE8               	movwf	_channel& (0+255),b
  1598                           
  1599                           ; BSR set to: 0
  1600                           ;main.c: 126: blinkLedAsync(channel, 2, RED, 255);
  1601  00205E  0E02               	movlw	2
  1602  002060  6E0A               	movwf	blinkLedAsync@xtimes,c
  1603  002062  0E03               	movlw	3
  1604  002064  6E0B               	movwf	blinkLedAsync@color,c
  1605  002066  0EFF               	movlw	255
  1606  002068  6E0C               	movwf	blinkLedAsync@intensity,c
  1607  00206A  0100               	movlb	0	; () banked
  1608  00206C  51E8               	movf	_channel& (0+255),w,b
  1609  00206E  EC44  F010         	call	_blinkLedAsync
  1610                           
  1611                           ;main.c: 127: turnOffAllLeds();
  1612  002072  EC21  F013         	call	_turnOffAllLeds	;wreg free
  1613                           
  1614                           ;main.c: 128: break;
  1615  002076  0012               	return	
  1616  002078                     l3676:
  1617                           
  1618                           ;main.c: 129: }
  1619                           ;main.c: 131: if (pressedSysBtn != 0) {
  1620  002078  5014               	movf	channelChange@pressedSysBtn,w,c
  1621  00207A  B4D8               	btfsc	status,2,c
  1622  00207C  D7E4               	goto	l3664
  1623                           
  1624                           ;main.c: 133: if (pressedSysBtn != 2) {
  1625  00207E  0E02               	movlw	2
  1626  002080  1814               	xorwf	channelChange@pressedSysBtn,w,c
  1627  002082  A4D8               	btfss	status,2,c
  1628  002084  0012               	return	
  1629  002086  D7DF               	goto	l3664
  1630  002088                     __end_of_channelChange:
  1631                           	opt stack 0
  1632                           tblptru	equ	0xFF8
  1633                           tblptrh	equ	0xFF7
  1634                           tblptrl	equ	0xFF6
  1635                           tablat	equ	0xFF5
  1636                           prodh	equ	0xFF4
  1637                           prodl	equ	0xFF3
  1638                           postinc0	equ	0xFEE
  1639                           wreg	equ	0xFE8
  1640                           indf1	equ	0xFE7
  1641                           postinc1	equ	0xFE6
  1642                           postdec1	equ	0xFE5
  1643                           fsr1h	equ	0xFE2
  1644                           fsr1l	equ	0xFE1
  1645                           indf2	equ	0xFDF
  1646                           postinc2	equ	0xFDE
  1647                           fsr2h	equ	0xFDA
  1648                           fsr2l	equ	0xFD9
  1649                           status	equ	0xFD8
  1650                           
  1651 ;; *************** function _bankChange *****************
  1652 ;; Defined at:
  1653 ;;		line 76 in file "main.c"
  1654 ;; Parameters:    Size  Location     Type
  1655 ;;		None
  1656 ;; Auto vars:     Size  Location     Type
  1657 ;;  pressedSysBt    1   19[COMRAM] unsigned char 
  1658 ;;  pressedButto    1   18[COMRAM] unsigned char 
  1659 ;; Return value:  Size  Location     Type
  1660 ;;                  1    wreg      void 
  1661 ;; Registers used:
  1662 ;;		wreg, fsr2l, fsr2h, status,2, status,0, prodl, prodh, cstack
  1663 ;; Tracked objects:
  1664 ;;		On entry : 0/0
  1665 ;;		On exit  : 0/0
  1666 ;;		Unchanged: 0/0
  1667 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  1668 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  1669 ;;      Locals:         2       0       0       0       0       0       0       0       0       0
  1670 ;;      Temps:          0       0       0       0       0       0       0       0       0       0
  1671 ;;      Totals:         2       0       0       0       0       0       0       0       0       0
  1672 ;;Total ram usage:        2 bytes
  1673 ;; Hardware stack levels used:    1
  1674 ;; Hardware stack levels required when called:    3
  1675 ;; This function calls:
  1676 ;;		_blinkLedAsync
  1677 ;;		_buttonPressed
  1678 ;;		_changeColor
  1679 ;;		_sendLEDs
  1680 ;;		_systemButtonPressed
  1681 ;;		_turnOffAllLeds
  1682 ;;		_turnOnAllLeds
  1683 ;; This function is called by:
  1684 ;;		_processSystemButtons
  1685 ;; This function uses a non-reentrant model
  1686 ;;
  1687                           
  1688                           	psect	text5
  1689  001FA6                     __ptext5:
  1690                           	opt stack 0
  1691  001FA6                     _bankChange:
  1692                           	opt stack 26
  1693                           
  1694                           ;main.c: 78: char pressedButton = 0;
  1695                           
  1696                           ;incstack = 0
  1697  001FA6  0E00               	movlw	0
  1698  001FA8  6E13               	movwf	bankChange@pressedButton,c
  1699                           
  1700                           ;main.c: 79: char pressedSysBtn = 0;
  1701  001FAA  0E00               	movlw	0
  1702  001FAC  6E14               	movwf	bankChange@pressedSysBtn,c
  1703                           
  1704                           ;main.c: 81: turnOnAllLeds(GREEN, 255);
  1705  001FAE  0EFF               	movlw	255
  1706  001FB0  6E04               	movwf	turnOnAllLeds@intensity,c
  1707  001FB2  0E02               	movlw	2
  1708  001FB4  ECD9  F012         	call	_turnOnAllLeds
  1709                           
  1710                           ;main.c: 83: changeColor(bank, RED, 255);
  1711  001FB8  0E03               	movlw	3
  1712  001FBA  6E01               	movwf	changeColor@color,c
  1713  001FBC  0EFF               	movlw	255
  1714  001FBE  6E02               	movwf	changeColor@intensity,c
  1715  001FC0  0100               	movlb	0	; () banked
  1716  001FC2  51E7               	movf	_bank& (0+255),w,b
  1717  001FC4  EC6A  F004         	call	_changeColor
  1718                           
  1719                           ;main.c: 84: sendLEDs(global_leds);
  1720  001FC8  0E84               	movlw	low _global_leds
  1721  001FCA  6E04               	movwf	sendLEDs@leds,c
  1722  001FCC  0E00               	movlw	high _global_leds
  1723  001FCE  6E05               	movwf	sendLEDs@leds+1,c
  1724  001FD0  EC66  F00E         	call	_sendLEDs	;wreg free
  1725  001FD4                     l3638:
  1726                           
  1727                           ;main.c: 87: {
  1728                           ;main.c: 88: pressedButton = buttonPressed();
  1729  001FD4  EC0F  F012         	call	_buttonPressed	;wreg free
  1730  001FD8  6E13               	movwf	bankChange@pressedButton,c
  1731                           
  1732                           ;main.c: 89: pressedSysBtn = systemButtonPressed();
  1733  001FDA  EC64  F013         	call	_systemButtonPressed	;wreg free
  1734  001FDE  6E14               	movwf	bankChange@pressedSysBtn,c
  1735                           
  1736                           ;main.c: 91: if(pressedButton != 0){
  1737  001FE0  5013               	movf	bankChange@pressedButton,w,c
  1738  001FE2  B4D8               	btfsc	status,2,c
  1739  001FE4  D010               	goto	l3650
  1740                           
  1741                           ;main.c: 92: bank = pressedButton - 1;
  1742  001FE6  0413               	decf	bankChange@pressedButton,w,c
  1743  001FE8  0100               	movlb	0	; () banked
  1744  001FEA  6FE7               	movwf	_bank& (0+255),b
  1745                           
  1746                           ; BSR set to: 0
  1747                           ;main.c: 93: blinkLedAsync(bank, 2, RED, 255);
  1748  001FEC  0E02               	movlw	2
  1749  001FEE  6E0A               	movwf	blinkLedAsync@xtimes,c
  1750  001FF0  0E03               	movlw	3
  1751  001FF2  6E0B               	movwf	blinkLedAsync@color,c
  1752  001FF4  0EFF               	movlw	255
  1753  001FF6  6E0C               	movwf	blinkLedAsync@intensity,c
  1754  001FF8  0100               	movlb	0	; () banked
  1755  001FFA  51E7               	movf	_bank& (0+255),w,b
  1756  001FFC  EC44  F010         	call	_blinkLedAsync
  1757                           
  1758                           ;main.c: 94: turnOffAllLeds();
  1759  002000  EC21  F013         	call	_turnOffAllLeds	;wreg free
  1760                           
  1761                           ;main.c: 95: break;
  1762  002004  0012               	return	
  1763  002006                     l3650:
  1764                           
  1765                           ;main.c: 96: }
  1766                           ;main.c: 98: if (pressedSysBtn != 0){
  1767  002006  5014               	movf	bankChange@pressedSysBtn,w,c
  1768  002008  B4D8               	btfsc	status,2,c
  1769  00200A  D7E4               	goto	l3638
  1770                           
  1771                           ;main.c: 100: if (pressedSysBtn != 1) {
  1772  00200C  0414               	decf	bankChange@pressedSysBtn,w,c
  1773  00200E  B4D8               	btfsc	status,2,c
  1774  002010  D7E1               	goto	l3638
  1775                           
  1776                           ;main.c: 101: turnOffAllLeds();
  1777  002012  EC21  F013         	call	_turnOffAllLeds	;wreg free
  1778                           
  1779                           ;main.c: 102: break;
  1780  002016  0012               	return	
  1781  002018                     __end_of_bankChange:
  1782                           	opt stack 0
  1783                           tblptru	equ	0xFF8
  1784                           tblptrh	equ	0xFF7
  1785                           tblptrl	equ	0xFF6
  1786                           tablat	equ	0xFF5
  1787                           prodh	equ	0xFF4
  1788                           prodl	equ	0xFF3
  1789                           postinc0	equ	0xFEE
  1790                           wreg	equ	0xFE8
  1791                           indf1	equ	0xFE7
  1792                           postinc1	equ	0xFE6
  1793                           postdec1	equ	0xFE5
  1794                           fsr1h	equ	0xFE2
  1795                           fsr1l	equ	0xFE1
  1796                           indf2	equ	0xFDF
  1797                           postinc2	equ	0xFDE
  1798                           fsr2h	equ	0xFDA
  1799                           fsr2l	equ	0xFD9
  1800                           status	equ	0xFD8
  1801                           
  1802 ;; *************** function _turnOnAllLeds *****************
  1803 ;; Defined at:
  1804 ;;		line 53 in file "outputs.c"
  1805 ;; Parameters:    Size  Location     Type
  1806 ;;  color           1    wreg     unsigned char 
  1807 ;;  intensity       1    3[COMRAM] unsigned char 
  1808 ;; Auto vars:     Size  Location     Type
  1809 ;;  color           1    4[COMRAM] unsigned char 
  1810 ;;  i               2    5[COMRAM] int 
  1811 ;; Return value:  Size  Location     Type
  1812 ;;                  1    wreg      void 
  1813 ;; Registers used:
  1814 ;;		wreg, fsr2l, fsr2h, status,2, status,0, prodl, prodh, cstack
  1815 ;; Tracked objects:
  1816 ;;		On entry : 0/0
  1817 ;;		On exit  : 0/0
  1818 ;;		Unchanged: 0/0
  1819 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  1820 ;;      Params:         1       0       0       0       0       0       0       0       0       0
  1821 ;;      Locals:         3       0       0       0       0       0       0       0       0       0
  1822 ;;      Temps:          0       0       0       0       0       0       0       0       0       0
  1823 ;;      Totals:         4       0       0       0       0       0       0       0       0       0
  1824 ;;Total ram usage:        4 bytes
  1825 ;; Hardware stack levels used:    1
  1826 ;; Hardware stack levels required when called:    1
  1827 ;; This function calls:
  1828 ;;		_changeColor
  1829 ;; This function is called by:
  1830 ;;		_bankChange
  1831 ;;		_channelChange
  1832 ;; This function uses a non-reentrant model
  1833 ;;
  1834                           
  1835                           	psect	text6
  1836  0025B2                     __ptext6:
  1837                           	opt stack 0
  1838  0025B2                     _turnOnAllLeds:
  1839                           	opt stack 27
  1840                           
  1841                           ;incstack = 0
  1842                           ;turnOnAllLeds@color stored from wreg
  1843  0025B2  6E05               	movwf	turnOnAllLeds@color,c
  1844                           
  1845                           ;outputs.c: 55: for (int i = 0; i < 16; i++) {
  1846  0025B4  0E00               	movlw	0
  1847  0025B6  6E07               	movwf	turnOnAllLeds@i+1,c
  1848  0025B8  0E00               	movlw	0
  1849  0025BA  6E06               	movwf	turnOnAllLeds@i,c
  1850  0025BC                     l3450:
  1851  0025BC  BE07               	btfsc	turnOnAllLeds@i+1,7,c
  1852  0025BE  D006               	goto	l3454
  1853  0025C0  5007               	movf	turnOnAllLeds@i+1,w,c
  1854  0025C2  E10E               	bnz	l641
  1855  0025C4  0E10               	movlw	16
  1856  0025C6  5C06               	subwf	turnOnAllLeds@i,w,c
  1857  0025C8  B0D8               	btfsc	status,0,c
  1858  0025CA  0012               	return	
  1859  0025CC                     l3454:
  1860                           
  1861                           ;outputs.c: 56: changeColor(i, color, intensity);
  1862  0025CC  C005  F001         	movff	turnOnAllLeds@color,changeColor@color
  1863  0025D0  C004  F002         	movff	turnOnAllLeds@intensity,changeColor@intensity
  1864  0025D4  5006               	movf	turnOnAllLeds@i,w,c
  1865  0025D6  EC6A  F004         	call	_changeColor
  1866  0025DA  4A06               	infsnz	turnOnAllLeds@i,f,c
  1867  0025DC  2A07               	incf	turnOnAllLeds@i+1,f,c
  1868  0025DE  D7EE               	goto	l3450
  1869  0025E0                     l641:
  1870  0025E0  0012               	return		;funcret
  1871  0025E2                     __end_of_turnOnAllLeds:
  1872                           	opt stack 0
  1873                           tblptru	equ	0xFF8
  1874                           tblptrh	equ	0xFF7
  1875                           tblptrl	equ	0xFF6
  1876                           tablat	equ	0xFF5
  1877                           prodh	equ	0xFF4
  1878                           prodl	equ	0xFF3
  1879                           postinc0	equ	0xFEE
  1880                           wreg	equ	0xFE8
  1881                           indf1	equ	0xFE7
  1882                           postinc1	equ	0xFE6
  1883                           postdec1	equ	0xFE5
  1884                           fsr1h	equ	0xFE2
  1885                           fsr1l	equ	0xFE1
  1886                           indf2	equ	0xFDF
  1887                           postinc2	equ	0xFDE
  1888                           fsr2h	equ	0xFDA
  1889                           fsr2l	equ	0xFD9
  1890                           status	equ	0xFD8
  1891                           
  1892 ;; *************** function _systemButtonPressed *****************
  1893 ;; Defined at:
  1894 ;;		line 48 in file "inputs.c"
  1895 ;; Parameters:    Size  Location     Type
  1896 ;;		None
  1897 ;; Auto vars:     Size  Location     Type
  1898 ;;  pressed         1    0[COMRAM] unsigned char 
  1899 ;; Return value:  Size  Location     Type
  1900 ;;                  1    wreg      unsigned char 
  1901 ;; Registers used:
  1902 ;;		wreg, status,2
  1903 ;; Tracked objects:
  1904 ;;		On entry : 0/0
  1905 ;;		On exit  : 0/0
  1906 ;;		Unchanged: 0/0
  1907 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  1908 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  1909 ;;      Locals:         1       0       0       0       0       0       0       0       0       0
  1910 ;;      Temps:          0       0       0       0       0       0       0       0       0       0
  1911 ;;      Totals:         1       0       0       0       0       0       0       0       0       0
  1912 ;;Total ram usage:        1 bytes
  1913 ;; Hardware stack levels used:    1
  1914 ;; This function calls:
  1915 ;;		Nothing
  1916 ;; This function is called by:
  1917 ;;		_bankChange
  1918 ;;		_channelChange
  1919 ;; This function uses a non-reentrant model
  1920 ;;
  1921                           
  1922                           	psect	text7
  1923  0026C8                     __ptext7:
  1924                           	opt stack 0
  1925  0026C8                     _systemButtonPressed:
  1926                           	opt stack 28
  1927                           
  1928                           ;inputs.c: 50: char pressed = 0;
  1929                           
  1930                           ;incstack = 0
  1931  0026C8  0E00               	movlw	0
  1932  0026CA  6E01               	movwf	systemButtonPressed@pressed,c
  1933                           
  1934                           ;inputs.c: 52: if (PORTAbits.RA4 == 0) {
  1935  0026CC  B880               	btfsc	3968,4,c	;volatile
  1936  0026CE  D002               	goto	l3434
  1937                           
  1938                           ;inputs.c: 53: pressed = 1;
  1939  0026D0  0E01               	movlw	1
  1940  0026D2  6E01               	movwf	systemButtonPressed@pressed,c
  1941  0026D4                     l3434:
  1942                           
  1943                           ;inputs.c: 54: }
  1944                           ;inputs.c: 56: if (PORTAbits.RA5 == 0) {
  1945  0026D4  BA80               	btfsc	3968,5,c	;volatile
  1946  0026D6  D002               	goto	l3438
  1947                           
  1948                           ;inputs.c: 57: pressed = 2;
  1949  0026D8  0E02               	movlw	2
  1950  0026DA  6E01               	movwf	systemButtonPressed@pressed,c
  1951  0026DC                     l3438:
  1952                           
  1953                           ;inputs.c: 58: }
  1954                           ;inputs.c: 60: if (PORTEbits.RE0 == 0) {
  1955  0026DC  B084               	btfsc	3972,0,c	;volatile
  1956  0026DE  D002               	goto	l3442
  1957                           
  1958                           ;inputs.c: 61: pressed = 3;
  1959  0026E0  0E03               	movlw	3
  1960  0026E2  6E01               	movwf	systemButtonPressed@pressed,c
  1961  0026E4                     l3442:
  1962                           
  1963                           ;inputs.c: 62: }
  1964                           ;inputs.c: 64: if (PORTEbits.RE1 == 0) {
  1965  0026E4  B284               	btfsc	3972,1,c	;volatile
  1966  0026E6  D002               	goto	l439
  1967                           
  1968                           ;inputs.c: 65: pressed = 4;
  1969  0026E8  0E04               	movlw	4
  1970  0026EA  6E01               	movwf	systemButtonPressed@pressed,c
  1971  0026EC                     l439:
  1972                           
  1973                           ;inputs.c: 66: }
  1974                           ;inputs.c: 68: return pressed;
  1975  0026EC  5001               	movf	systemButtonPressed@pressed,w,c
  1976  0026EE  0012               	return	
  1977  0026F0                     __end_of_systemButtonPressed:
  1978                           	opt stack 0
  1979                           tblptru	equ	0xFF8
  1980                           tblptrh	equ	0xFF7
  1981                           tblptrl	equ	0xFF6
  1982                           tablat	equ	0xFF5
  1983                           prodh	equ	0xFF4
  1984                           prodl	equ	0xFF3
  1985                           postinc0	equ	0xFEE
  1986                           wreg	equ	0xFE8
  1987                           indf1	equ	0xFE7
  1988                           postinc1	equ	0xFE6
  1989                           postdec1	equ	0xFE5
  1990                           fsr1h	equ	0xFE2
  1991                           fsr1l	equ	0xFE1
  1992                           indf2	equ	0xFDF
  1993                           postinc2	equ	0xFDE
  1994                           fsr2h	equ	0xFDA
  1995                           fsr2l	equ	0xFD9
  1996                           status	equ	0xFD8
  1997                           
  1998 ;; *************** function _buttonPressed *****************
  1999 ;; Defined at:
  2000 ;;		line 31 in file "inputs.c"
  2001 ;; Parameters:    Size  Location     Type
  2002 ;;		None
  2003 ;; Auto vars:     Size  Location     Type
  2004 ;;  i               2    3[COMRAM] int 
  2005 ;;  pressed         1    2[COMRAM] unsigned char 
  2006 ;; Return value:  Size  Location     Type
  2007 ;;                  1    wreg      unsigned char 
  2008 ;; Registers used:
  2009 ;;		wreg, fsr2l, fsr2h, status,2, status,0, prodl, prodh, cstack
  2010 ;; Tracked objects:
  2011 ;;		On entry : 0/0
  2012 ;;		On exit  : 0/0
  2013 ;;		Unchanged: 0/0
  2014 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  2015 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  2016 ;;      Locals:         3       0       0       0       0       0       0       0       0       0
  2017 ;;      Temps:          0       0       0       0       0       0       0       0       0       0
  2018 ;;      Totals:         3       0       0       0       0       0       0       0       0       0
  2019 ;;Total ram usage:        3 bytes
  2020 ;; Hardware stack levels used:    1
  2021 ;; Hardware stack levels required when called:    1
  2022 ;; This function calls:
  2023 ;;		_readMatrixButtons
  2024 ;; This function is called by:
  2025 ;;		_bankChange
  2026 ;;		_channelChange
  2027 ;; This function uses a non-reentrant model
  2028 ;;
  2029                           
  2030                           	psect	text8
  2031  00241E                     __ptext8:
  2032                           	opt stack 0
  2033  00241E                     _buttonPressed:
  2034                           	opt stack 27
  2035                           
  2036                           ;inputs.c: 33: char pressed = 0;
  2037                           
  2038                           ;incstack = 0
  2039  00241E  0E00               	movlw	0
  2040  002420  6E03               	movwf	buttonPressed@pressed,c
  2041                           
  2042                           ;inputs.c: 35: readMatrixButtons();
  2043  002422  EC43  F011         	call	_readMatrixButtons	;wreg free
  2044                           
  2045                           ;inputs.c: 37: for (int i = 0; i < 16; i++) {
  2046  002426  0E00               	movlw	0
  2047  002428  6E05               	movwf	buttonPressed@i+1,c
  2048  00242A  0E00               	movlw	0
  2049  00242C  6E04               	movwf	buttonPressed@i,c
  2050  00242E                     l3412:
  2051  00242E  BE05               	btfsc	buttonPressed@i+1,7,c
  2052  002430  D006               	goto	l3416
  2053  002432  5005               	movf	buttonPressed@i+1,w,c
  2054  002434  E112               	bnz	l3424
  2055  002436  0E10               	movlw	16
  2056  002438  5C04               	subwf	buttonPressed@i,w,c
  2057  00243A  B0D8               	btfsc	status,0,c
  2058  00243C  D00E               	goto	l3424
  2059  00243E                     l3416:
  2060                           
  2061                           ;inputs.c: 39: if (m_buttons[i] == 0) {
  2062  00243E  0E60               	movlw	low _m_buttons
  2063  002440  2404               	addwf	buttonPressed@i,w,c
  2064  002442  6ED9               	movwf	fsr2l,c
  2065  002444  0E00               	movlw	high _m_buttons
  2066  002446  2005               	addwfc	buttonPressed@i+1,w,c
  2067  002448  6EDA               	movwf	fsr2h,c
  2068  00244A  50DF               	movf	indf2,w,c
  2069  00244C  A4D8               	btfss	status,2,c
  2070  00244E  D002               	goto	l3420
  2071                           
  2072                           ;inputs.c: 40: pressed = i + 1;
  2073  002450  2804               	incf	buttonPressed@i,w,c
  2074  002452  6E03               	movwf	buttonPressed@pressed,c
  2075  002454                     l3420:
  2076  002454  4A04               	infsnz	buttonPressed@i,f,c
  2077  002456  2A05               	incf	buttonPressed@i+1,f,c
  2078  002458  D7EA               	goto	l3412
  2079  00245A                     l3424:
  2080                           
  2081                           ;inputs.c: 41: }
  2082                           ;inputs.c: 42: }
  2083                           ;inputs.c: 44: return pressed;
  2084  00245A  5003               	movf	buttonPressed@pressed,w,c
  2085  00245C  0012               	return	
  2086  00245E                     __end_of_buttonPressed:
  2087                           	opt stack 0
  2088                           tblptru	equ	0xFF8
  2089                           tblptrh	equ	0xFF7
  2090                           tblptrl	equ	0xFF6
  2091                           tablat	equ	0xFF5
  2092                           prodh	equ	0xFF4
  2093                           prodl	equ	0xFF3
  2094                           postinc0	equ	0xFEE
  2095                           wreg	equ	0xFE8
  2096                           indf1	equ	0xFE7
  2097                           postinc1	equ	0xFE6
  2098                           postdec1	equ	0xFE5
  2099                           fsr1h	equ	0xFE2
  2100                           fsr1l	equ	0xFE1
  2101                           indf2	equ	0xFDF
  2102                           postinc2	equ	0xFDE
  2103                           fsr2h	equ	0xFDA
  2104                           fsr2l	equ	0xFD9
  2105                           status	equ	0xFD8
  2106                           
  2107 ;; *************** function _readMatrixButtons *****************
  2108 ;; Defined at:
  2109 ;;		line 9 in file "inputs.c"
  2110 ;; Parameters:    Size  Location     Type
  2111 ;;		None
  2112 ;; Auto vars:     Size  Location     Type
  2113 ;;  i               1    1[COMRAM] unsigned char 
  2114 ;; Return value:  Size  Location     Type
  2115 ;;                  1    wreg      void 
  2116 ;; Registers used:
  2117 ;;		wreg, fsr2l, fsr2h, status,2, status,0, prodl, prodh
  2118 ;; Tracked objects:
  2119 ;;		On entry : 0/0
  2120 ;;		On exit  : 0/0
  2121 ;;		Unchanged: 0/0
  2122 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  2123 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  2124 ;;      Locals:         1       0       0       0       0       0       0       0       0       0
  2125 ;;      Temps:          1       0       0       0       0       0       0       0       0       0
  2126 ;;      Totals:         2       0       0       0       0       0       0       0       0       0
  2127 ;;Total ram usage:        2 bytes
  2128 ;; Hardware stack levels used:    1
  2129 ;; This function calls:
  2130 ;;		Nothing
  2131 ;; This function is called by:
  2132 ;;		_buttonPressed
  2133 ;;		_main
  2134 ;; This function uses a non-reentrant model
  2135 ;;
  2136                           
  2137                           	psect	text9
  2138  002286                     __ptext9:
  2139                           	opt stack 0
  2140  002286                     _readMatrixButtons:
  2141                           	opt stack 30
  2142                           
  2143                           ;inputs.c: 12: LATDbits.LATD3 = 1;
  2144                           
  2145                           ;incstack = 0
  2146  002286  868C               	bsf	3980,3,c	;volatile
  2147                           
  2148                           ;inputs.c: 13: _delay((unsigned long)((5)*(48000000/4000000.0)));
  2149  002288  0E14               	movlw	20
  2150  00228A                     u3417:
  2151  00228A  2EE8               	decfsz	wreg,f,c
  2152  00228C  D7FE               	goto	u3417
  2153                           
  2154                           ;inputs.c: 14: LATDbits.LATD3 = 0;
  2155  00228E  968C               	bcf	3980,3,c	;volatile
  2156                           
  2157                           ;inputs.c: 16: LATDbits.LATD2 = 0;
  2158  002290  948C               	bcf	3980,2,c	;volatile
  2159                           
  2160                           ;inputs.c: 18: for(char i = 0; i < 16; i++){
  2161  002292  0E00               	movlw	0
  2162  002294  6E02               	movwf	readMatrixButtons@i,c
  2163  002296                     l3234:
  2164  002296  0E0F               	movlw	15
  2165  002298  6402               	cpfsgt	readMatrixButtons@i,c
  2166  00229A  D001               	goto	l3238
  2167  00229C  0012               	return	
  2168  00229E                     l3238:
  2169                           
  2170                           ;inputs.c: 20: m_buttons[buttonMap[i]] = PORTBbits.RB4;
  2171  00229E  5002               	movf	readMatrixButtons@i,w,c
  2172  0022A0  0D01               	mullw	1
  2173  0022A2  0E20               	movlw	low _buttonMap
  2174  0022A4  24F3               	addwf	prodl,w,c
  2175  0022A6  6ED9               	movwf	fsr2l,c
  2176  0022A8  0E01               	movlw	high _buttonMap
  2177  0022AA  20F4               	addwfc	prodh,w,c
  2178  0022AC  6EDA               	movwf	fsr2h,c
  2179  0022AE  50DF               	movf	indf2,w,c
  2180  0022B0  6E01               	movwf	??_readMatrixButtons& (0+255),c
  2181  0022B2  5001               	movf	??_readMatrixButtons,w,c
  2182  0022B4  0D01               	mullw	1
  2183  0022B6  0E60               	movlw	low _m_buttons
  2184  0022B8  24F3               	addwf	prodl,w,c
  2185  0022BA  6ED9               	movwf	fsr2l,c
  2186  0022BC  0E00               	movlw	high _m_buttons
  2187  0022BE  20F4               	addwfc	prodh,w,c
  2188  0022C0  6EDA               	movwf	fsr2h,c
  2189  0022C2  A881               	btfss	3969,4,c	;volatile
  2190  0022C4  D002               	goto	u2410
  2191  0022C6  0E01               	movlw	1
  2192  0022C8  D001               	goto	u2416
  2193  0022CA                     u2410:
  2194  0022CA  0E00               	movlw	0
  2195  0022CC                     u2416:
  2196  0022CC  6EDF               	movwf	indf2,c
  2197                           
  2198                           ;inputs.c: 23: LATDbits.LATD2 = 1;
  2199  0022CE  848C               	bsf	3980,2,c	;volatile
  2200                           
  2201                           ;inputs.c: 24: _delay((unsigned long)((10)*(48000000/4000000.0)));
  2202  0022D0  0E28               	movlw	40
  2203  0022D2                     u3427:
  2204  0022D2  2EE8               	decfsz	wreg,f,c
  2205  0022D4  D7FE               	goto	u3427
  2206                           
  2207                           ;inputs.c: 25: LATDbits.LATD2 = 0;
  2208  0022D6  948C               	bcf	3980,2,c	;volatile
  2209  0022D8  2A02               	incf	readMatrixButtons@i,f,c
  2210  0022DA  D7DD               	goto	l3234
  2211  0022DC                     __end_of_readMatrixButtons:
  2212                           	opt stack 0
  2213                           tblptru	equ	0xFF8
  2214                           tblptrh	equ	0xFF7
  2215                           tblptrl	equ	0xFF6
  2216                           tablat	equ	0xFF5
  2217                           prodh	equ	0xFF4
  2218                           prodl	equ	0xFF3
  2219                           postinc0	equ	0xFEE
  2220                           wreg	equ	0xFE8
  2221                           indf1	equ	0xFE7
  2222                           postinc1	equ	0xFE6
  2223                           postdec1	equ	0xFE5
  2224                           fsr1h	equ	0xFE2
  2225                           fsr1l	equ	0xFE1
  2226                           indf2	equ	0xFDF
  2227                           postinc2	equ	0xFDE
  2228                           fsr2h	equ	0xFDA
  2229                           fsr2l	equ	0xFD9
  2230                           status	equ	0xFD8
  2231                           
  2232 ;; *************** function _blinkLedAsync *****************
  2233 ;; Defined at:
  2234 ;;		line 128 in file "outputs.c"
  2235 ;; Parameters:    Size  Location     Type
  2236 ;;  led             1    wreg     unsigned char 
  2237 ;;  xtimes          1    9[COMRAM] unsigned char 
  2238 ;;  color           1   10[COMRAM] unsigned char 
  2239 ;;  intensity       1   11[COMRAM] unsigned char 
  2240 ;; Auto vars:     Size  Location     Type
  2241 ;;  led             1   17[COMRAM] unsigned char 
  2242 ;;  i               2   15[COMRAM] int 
  2243 ;; Return value:  Size  Location     Type
  2244 ;;                  1    wreg      void 
  2245 ;; Registers used:
  2246 ;;		wreg, fsr2l, fsr2h, status,2, status,0, prodl, prodh, cstack
  2247 ;; Tracked objects:
  2248 ;;		On entry : 0/0
  2249 ;;		On exit  : 0/0
  2250 ;;		Unchanged: 0/0
  2251 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  2252 ;;      Params:         3       0       0       0       0       0       0       0       0       0
  2253 ;;      Locals:         3       0       0       0       0       0       0       0       0       0
  2254 ;;      Temps:          3       0       0       0       0       0       0       0       0       0
  2255 ;;      Totals:         9       0       0       0       0       0       0       0       0       0
  2256 ;;Total ram usage:        9 bytes
  2257 ;; Hardware stack levels used:    1
  2258 ;; Hardware stack levels required when called:    2
  2259 ;; This function calls:
  2260 ;;		_changeColor
  2261 ;;		_delayMs
  2262 ;;		_sendLEDs
  2263 ;; This function is called by:
  2264 ;;		_bankChange
  2265 ;;		_channelChange
  2266 ;; This function uses a non-reentrant model
  2267 ;;
  2268                           
  2269                           	psect	text10
  2270  002088                     __ptext10:
  2271                           	opt stack 0
  2272  002088                     _blinkLedAsync:
  2273                           	opt stack 26
  2274                           
  2275                           ;incstack = 0
  2276                           ;blinkLedAsync@led stored from wreg
  2277  002088  6E12               	movwf	blinkLedAsync@led,c
  2278                           
  2279                           ;outputs.c: 130: for (int i = 0; i < xtimes; i++) {
  2280  00208A  0E00               	movlw	0
  2281  00208C  6E11               	movwf	blinkLedAsync@i+1,c
  2282  00208E  0E00               	movlw	0
  2283  002090  6E10               	movwf	blinkLedAsync@i,c
  2284  002092  D022               	goto	l3474
  2285  002094                     l3462:
  2286                           
  2287                           ;outputs.c: 131: changeColor(led, color, intensity);
  2288  002094  C00B  F001         	movff	blinkLedAsync@color,changeColor@color
  2289  002098  C00C  F002         	movff	blinkLedAsync@intensity,changeColor@intensity
  2290  00209C  5012               	movf	blinkLedAsync@led,w,c
  2291  00209E  EC6A  F004         	call	_changeColor
  2292                           
  2293                           ;outputs.c: 132: sendLEDs(global_leds);
  2294  0020A2  0E84               	movlw	low _global_leds
  2295  0020A4  6E04               	movwf	sendLEDs@leds,c
  2296  0020A6  0E00               	movlw	high _global_leds
  2297  0020A8  6E05               	movwf	sendLEDs@leds+1,c
  2298  0020AA  EC66  F00E         	call	_sendLEDs	;wreg free
  2299                           
  2300                           ;outputs.c: 133: delayMs(255);
  2301  0020AE  0EFF               	movlw	255
  2302  0020B0  EC4F  F012         	call	_delayMs
  2303                           
  2304                           ;outputs.c: 134: changeColor(led, BLACK, 0);
  2305  0020B4  0E00               	movlw	0
  2306  0020B6  6E01               	movwf	changeColor@color,c
  2307  0020B8  0E00               	movlw	0
  2308  0020BA  6E02               	movwf	changeColor@intensity,c
  2309  0020BC  5012               	movf	blinkLedAsync@led,w,c
  2310  0020BE  EC6A  F004         	call	_changeColor
  2311                           
  2312                           ;outputs.c: 135: sendLEDs(global_leds);
  2313  0020C2  0E84               	movlw	low _global_leds
  2314  0020C4  6E04               	movwf	sendLEDs@leds,c
  2315  0020C6  0E00               	movlw	high _global_leds
  2316  0020C8  6E05               	movwf	sendLEDs@leds+1,c
  2317  0020CA  EC66  F00E         	call	_sendLEDs	;wreg free
  2318                           
  2319                           ;outputs.c: 136: delayMs(255);
  2320  0020CE  0EFF               	movlw	255
  2321  0020D0  EC4F  F012         	call	_delayMs
  2322  0020D4  4A10               	infsnz	blinkLedAsync@i,f,c
  2323  0020D6  2A11               	incf	blinkLedAsync@i+1,f,c
  2324  0020D8                     l3474:
  2325  0020D8  500A               	movf	blinkLedAsync@xtimes,w,c
  2326  0020DA  6E0D               	movwf	??_blinkLedAsync& (0+255),c
  2327  0020DC  6A0E               	clrf	(??_blinkLedAsync+1)& (0+255),c
  2328  0020DE  500D               	movf	??_blinkLedAsync,w,c
  2329  0020E0  5C10               	subwf	blinkLedAsync@i,w,c
  2330  0020E2  5011               	movf	blinkLedAsync@i+1,w,c
  2331  0020E4  0A80               	xorlw	128
  2332  0020E6  6E0F               	movwf	(??_blinkLedAsync+2)& (0+255),c
  2333  0020E8  500E               	movf	??_blinkLedAsync+1,w,c
  2334  0020EA  0A80               	xorlw	128
  2335  0020EC  580F               	subwfb	(??_blinkLedAsync+2)& (0+255),w,c
  2336  0020EE  B0D8               	btfsc	status,0,c
  2337  0020F0  0012               	return	
  2338  0020F2  D7D0               	goto	l3462
  2339  0020F4                     __end_of_blinkLedAsync:
  2340                           	opt stack 0
  2341                           tblptru	equ	0xFF8
  2342                           tblptrh	equ	0xFF7
  2343                           tblptrl	equ	0xFF6
  2344                           tablat	equ	0xFF5
  2345                           prodh	equ	0xFF4
  2346                           prodl	equ	0xFF3
  2347                           postinc0	equ	0xFEE
  2348                           wreg	equ	0xFE8
  2349                           indf1	equ	0xFE7
  2350                           postinc1	equ	0xFE6
  2351                           postdec1	equ	0xFE5
  2352                           fsr1h	equ	0xFE2
  2353                           fsr1l	equ	0xFE1
  2354                           indf2	equ	0xFDF
  2355                           postinc2	equ	0xFDE
  2356                           fsr2h	equ	0xFDA
  2357                           fsr2l	equ	0xFD9
  2358                           status	equ	0xFD8
  2359                           
  2360 ;; *************** function _pressedButtonEff *****************
  2361 ;; Defined at:
  2362 ;;		line 163 in file "main.c"
  2363 ;; Parameters:    Size  Location     Type
  2364 ;;		None
  2365 ;; Auto vars:     Size  Location     Type
  2366 ;;  i               1   73[COMRAM] unsigned char 
  2367 ;;  leds           64    9[COMRAM] unsigned char [4][16]
  2368 ;; Return value:  Size  Location     Type
  2369 ;;                  1    wreg      void 
  2370 ;; Registers used:
  2371 ;;		wreg, fsr1l, fsr1h, fsr2l, fsr2h, status,2, status,0, prodl, prodh, cstack
  2372 ;; Tracked objects:
  2373 ;;		On entry : 0/0
  2374 ;;		On exit  : 0/0
  2375 ;;		Unchanged: 0/0
  2376 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  2377 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  2378 ;;      Locals:        65       0       0       0       0       0       0       0       0       0
  2379 ;;      Temps:          0       0       0       0       0       0       0       0       0       0
  2380 ;;      Totals:        65       0       0       0       0       0       0       0       0       0
  2381 ;;Total ram usage:       65 bytes
  2382 ;; Hardware stack levels used:    1
  2383 ;; Hardware stack levels required when called:    2
  2384 ;; This function calls:
  2385 ;;		_sendLEDs
  2386 ;; This function is called by:
  2387 ;;		_main
  2388 ;; This function uses a non-reentrant model
  2389 ;;
  2390                           
  2391                           	psect	text11
  2392  000FEA                     __ptext11:
  2393                           	opt stack 0
  2394  000FEA                     _pressedButtonEff:
  2395                           	opt stack 28
  2396                           
  2397                           ;main.c: 165: char leds[16][4];
  2398                           ;main.c: 167: for (char i = 0; i < 16; i++) {
  2399                           
  2400                           ;incstack = 0
  2401  000FEA  0E00               	movlw	0
  2402  000FEC  6E4A               	movwf	pressedButtonEff@i,c
  2403  000FEE                     l3868:
  2404  000FEE  0E0F               	movlw	15
  2405  000FF0  644A               	cpfsgt	pressedButtonEff@i,c
  2406  000FF2  D001               	goto	l3872
  2407  000FF4  D0A2               	goto	l3882
  2408  000FF6                     l3872:
  2409                           
  2410                           ;main.c: 169: if(m_buttons[i] == 0){
  2411  000FF6  504A               	movf	pressedButtonEff@i,w,c
  2412  000FF8  0D01               	mullw	1
  2413  000FFA  0E60               	movlw	low _m_buttons
  2414  000FFC  24F3               	addwf	prodl,w,c
  2415  000FFE  6ED9               	movwf	fsr2l,c
  2416  001000  0E00               	movlw	high _m_buttons
  2417  001002  20F4               	addwfc	prodh,w,c
  2418  001004  6EDA               	movwf	fsr2h,c
  2419  001006  50DF               	movf	indf2,w,c
  2420  001008  A4D8               	btfss	status,2,c
  2421  00100A  D035               	goto	l3876
  2422                           
  2423                           ;main.c: 170: leds[i][0] = 225;
  2424  00100C  504A               	movf	pressedButtonEff@i,w,c
  2425  00100E  0D04               	mullw	4
  2426  001010  0E0A               	movlw	low pressedButtonEff@leds
  2427  001012  24F3               	addwf	prodl,w,c
  2428  001014  6ED9               	movwf	fsr2l,c
  2429  001016  0E00               	movlw	high pressedButtonEff@leds
  2430  001018  20F4               	addwfc	prodh,w,c
  2431  00101A  6EDA               	movwf	fsr2h,c
  2432  00101C  0EE1               	movlw	225
  2433  00101E  6EDF               	movwf	indf2,c
  2434                           
  2435                           ;main.c: 171: leds[i][1] = 1;
  2436  001020  504A               	movf	pressedButtonEff@i,w,c
  2437  001022  0D04               	mullw	4
  2438  001024  0E01               	movlw	1
  2439  001026  26F3               	addwf	prodl,f,c
  2440  001028  0E00               	movlw	0
  2441  00102A  22F4               	addwfc	prodh,f,c
  2442  00102C  0E0A               	movlw	low pressedButtonEff@leds
  2443  00102E  24F3               	addwf	prodl,w,c
  2444  001030  6ED9               	movwf	fsr2l,c
  2445  001032  0E00               	movlw	high pressedButtonEff@leds
  2446  001034  20F4               	addwfc	prodh,w,c
  2447  001036  6EDA               	movwf	fsr2h,c
  2448  001038  0E01               	movlw	1
  2449  00103A  6EDF               	movwf	indf2,c
  2450                           
  2451                           ;main.c: 172: leds[i][2] = 1;
  2452  00103C  504A               	movf	pressedButtonEff@i,w,c
  2453  00103E  0D04               	mullw	4
  2454  001040  0E02               	movlw	2
  2455  001042  26F3               	addwf	prodl,f,c
  2456  001044  0E00               	movlw	0
  2457  001046  22F4               	addwfc	prodh,f,c
  2458  001048  0E0A               	movlw	low pressedButtonEff@leds
  2459  00104A  24F3               	addwf	prodl,w,c
  2460  00104C  6ED9               	movwf	fsr2l,c
  2461  00104E  0E00               	movlw	high pressedButtonEff@leds
  2462  001050  20F4               	addwfc	prodh,w,c
  2463  001052  6EDA               	movwf	fsr2h,c
  2464  001054  0E01               	movlw	1
  2465  001056  6EDF               	movwf	indf2,c
  2466                           
  2467                           ;main.c: 173: leds[i][3] = 1;
  2468  001058  504A               	movf	pressedButtonEff@i,w,c
  2469  00105A  0D04               	mullw	4
  2470  00105C  0E03               	movlw	3
  2471  00105E  26F3               	addwf	prodl,f,c
  2472  001060  0E00               	movlw	0
  2473  001062  22F4               	addwfc	prodh,f,c
  2474  001064  0E0A               	movlw	low pressedButtonEff@leds
  2475  001066  24F3               	addwf	prodl,w,c
  2476  001068  6ED9               	movwf	fsr2l,c
  2477  00106A  0E00               	movlw	high pressedButtonEff@leds
  2478  00106C  20F4               	addwfc	prodh,w,c
  2479  00106E  6EDA               	movwf	fsr2h,c
  2480  001070  0E01               	movlw	1
  2481  001072  6EDF               	movwf	indf2,c
  2482                           
  2483                           ;main.c: 175: } else {
  2484  001074  D060               	goto	l3878
  2485  001076                     l3876:
  2486                           
  2487                           ;main.c: 176: leds[i][0] = global_leds[i][0];
  2488  001076  504A               	movf	pressedButtonEff@i,w,c
  2489  001078  0D04               	mullw	4
  2490  00107A  0E84               	movlw	low _global_leds
  2491  00107C  24F3               	addwf	prodl,w,c
  2492  00107E  6ED9               	movwf	fsr2l,c
  2493  001080  0E00               	movlw	high _global_leds
  2494  001082  20F4               	addwfc	prodh,w,c
  2495  001084  6EDA               	movwf	fsr2h,c
  2496  001086  504A               	movf	pressedButtonEff@i,w,c
  2497  001088  0D04               	mullw	4
  2498  00108A  0E0A               	movlw	low pressedButtonEff@leds
  2499  00108C  24F3               	addwf	prodl,w,c
  2500  00108E  6EE1               	movwf	fsr1l,c
  2501  001090  0E00               	movlw	high pressedButtonEff@leds
  2502  001092  20F4               	addwfc	prodh,w,c
  2503  001094  6EE2               	movwf	fsr1h,c
  2504  001096  CFDF FFE7          	movff	indf2,indf1
  2505                           
  2506                           ;main.c: 177: leds[i][1] = global_leds[i][1];
  2507  00109A  504A               	movf	pressedButtonEff@i,w,c
  2508  00109C  0D04               	mullw	4
  2509  00109E  0E01               	movlw	1
  2510  0010A0  26F3               	addwf	prodl,f,c
  2511  0010A2  0E00               	movlw	0
  2512  0010A4  22F4               	addwfc	prodh,f,c
  2513  0010A6  0E84               	movlw	low _global_leds
  2514  0010A8  24F3               	addwf	prodl,w,c
  2515  0010AA  6ED9               	movwf	fsr2l,c
  2516  0010AC  0E00               	movlw	high _global_leds
  2517  0010AE  20F4               	addwfc	prodh,w,c
  2518  0010B0  6EDA               	movwf	fsr2h,c
  2519  0010B2  504A               	movf	pressedButtonEff@i,w,c
  2520  0010B4  0D04               	mullw	4
  2521  0010B6  0E01               	movlw	1
  2522  0010B8  26F3               	addwf	prodl,f,c
  2523  0010BA  0E00               	movlw	0
  2524  0010BC  22F4               	addwfc	prodh,f,c
  2525  0010BE  0E0A               	movlw	low pressedButtonEff@leds
  2526  0010C0  24F3               	addwf	prodl,w,c
  2527  0010C2  6EE1               	movwf	fsr1l,c
  2528  0010C4  0E00               	movlw	high pressedButtonEff@leds
  2529  0010C6  20F4               	addwfc	prodh,w,c
  2530  0010C8  6EE2               	movwf	fsr1h,c
  2531  0010CA  CFDF FFE7          	movff	indf2,indf1
  2532                           
  2533                           ;main.c: 178: leds[i][2] = global_leds[i][2];
  2534  0010CE  504A               	movf	pressedButtonEff@i,w,c
  2535  0010D0  0D04               	mullw	4
  2536  0010D2  0E02               	movlw	2
  2537  0010D4  26F3               	addwf	prodl,f,c
  2538  0010D6  0E00               	movlw	0
  2539  0010D8  22F4               	addwfc	prodh,f,c
  2540  0010DA  0E84               	movlw	low _global_leds
  2541  0010DC  24F3               	addwf	prodl,w,c
  2542  0010DE  6ED9               	movwf	fsr2l,c
  2543  0010E0  0E00               	movlw	high _global_leds
  2544  0010E2  20F4               	addwfc	prodh,w,c
  2545  0010E4  6EDA               	movwf	fsr2h,c
  2546  0010E6  504A               	movf	pressedButtonEff@i,w,c
  2547  0010E8  0D04               	mullw	4
  2548  0010EA  0E02               	movlw	2
  2549  0010EC  26F3               	addwf	prodl,f,c
  2550  0010EE  0E00               	movlw	0
  2551  0010F0  22F4               	addwfc	prodh,f,c
  2552  0010F2  0E0A               	movlw	low pressedButtonEff@leds
  2553  0010F4  24F3               	addwf	prodl,w,c
  2554  0010F6  6EE1               	movwf	fsr1l,c
  2555  0010F8  0E00               	movlw	high pressedButtonEff@leds
  2556  0010FA  20F4               	addwfc	prodh,w,c
  2557  0010FC  6EE2               	movwf	fsr1h,c
  2558  0010FE  CFDF FFE7          	movff	indf2,indf1
  2559                           
  2560                           ;main.c: 179: leds[i][3] = global_leds[i][3];
  2561  001102  504A               	movf	pressedButtonEff@i,w,c
  2562  001104  0D04               	mullw	4
  2563  001106  0E03               	movlw	3
  2564  001108  26F3               	addwf	prodl,f,c
  2565  00110A  0E00               	movlw	0
  2566  00110C  22F4               	addwfc	prodh,f,c
  2567  00110E  0E84               	movlw	low _global_leds
  2568  001110  24F3               	addwf	prodl,w,c
  2569  001112  6ED9               	movwf	fsr2l,c
  2570  001114  0E00               	movlw	high _global_leds
  2571  001116  20F4               	addwfc	prodh,w,c
  2572  001118  6EDA               	movwf	fsr2h,c
  2573  00111A  504A               	movf	pressedButtonEff@i,w,c
  2574  00111C  0D04               	mullw	4
  2575  00111E  0E03               	movlw	3
  2576  001120  26F3               	addwf	prodl,f,c
  2577  001122  0E00               	movlw	0
  2578  001124  22F4               	addwfc	prodh,f,c
  2579  001126  0E0A               	movlw	low pressedButtonEff@leds
  2580  001128  24F3               	addwf	prodl,w,c
  2581  00112A  6EE1               	movwf	fsr1l,c
  2582  00112C  0E00               	movlw	high pressedButtonEff@leds
  2583  00112E  20F4               	addwfc	prodh,w,c
  2584  001130  6EE2               	movwf	fsr1h,c
  2585  001132  CFDF FFE7          	movff	indf2,indf1
  2586  001136                     l3878:
  2587  001136  2A4A               	incf	pressedButtonEff@i,f,c
  2588  001138  D75A               	goto	l3868
  2589  00113A                     l3882:
  2590                           
  2591                           ;main.c: 180: }
  2592                           ;main.c: 181: }
  2593                           ;main.c: 183: sendLEDs(leds);
  2594  00113A  0E0A               	movlw	low pressedButtonEff@leds
  2595  00113C  6E04               	movwf	sendLEDs@leds,c
  2596  00113E  0E00               	movlw	high pressedButtonEff@leds
  2597  001140  6E05               	movwf	sendLEDs@leds+1,c
  2598  001142  EC66  F00E         	call	_sendLEDs	;wreg free
  2599  001146  0012               	return		;funcret
  2600  001148                     __end_of_pressedButtonEff:
  2601                           	opt stack 0
  2602                           tblptru	equ	0xFF8
  2603                           tblptrh	equ	0xFF7
  2604                           tblptrl	equ	0xFF6
  2605                           tablat	equ	0xFF5
  2606                           prodh	equ	0xFF4
  2607                           prodl	equ	0xFF3
  2608                           postinc0	equ	0xFEE
  2609                           wreg	equ	0xFE8
  2610                           indf1	equ	0xFE7
  2611                           postinc1	equ	0xFE6
  2612                           postdec1	equ	0xFE5
  2613                           fsr1h	equ	0xFE2
  2614                           fsr1l	equ	0xFE1
  2615                           indf2	equ	0xFDF
  2616                           postinc2	equ	0xFDE
  2617                           fsr2h	equ	0xFDA
  2618                           fsr2l	equ	0xFD9
  2619                           status	equ	0xFD8
  2620                           
  2621 ;; *************** function _ledsIntro *****************
  2622 ;; Defined at:
  2623 ;;		line 187 in file "main.c"
  2624 ;; Parameters:    Size  Location     Type
  2625 ;;		None
  2626 ;; Auto vars:     Size  Location     Type
  2627 ;;  i               2   11[COMRAM] int 
  2628 ;;  j               2    9[COMRAM] int 
  2629 ;; Return value:  Size  Location     Type
  2630 ;;                  1    wreg      void 
  2631 ;; Registers used:
  2632 ;;		wreg, fsr2l, fsr2h, status,2, status,0, prodl, prodh, cstack
  2633 ;; Tracked objects:
  2634 ;;		On entry : 0/0
  2635 ;;		On exit  : 0/0
  2636 ;;		Unchanged: 0/0
  2637 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  2638 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  2639 ;;      Locals:         4       0       0       0       0       0       0       0       0       0
  2640 ;;      Temps:          0       0       0       0       0       0       0       0       0       0
  2641 ;;      Totals:         4       0       0       0       0       0       0       0       0       0
  2642 ;;Total ram usage:        4 bytes
  2643 ;; Hardware stack levels used:    1
  2644 ;; Hardware stack levels required when called:    2
  2645 ;; This function calls:
  2646 ;;		_changeColor
  2647 ;;		_delayMs
  2648 ;;		_sendLEDs
  2649 ;;		_turnOffAllLeds
  2650 ;; This function is called by:
  2651 ;;		_main
  2652 ;; This function uses a non-reentrant model
  2653 ;;
  2654                           
  2655                           	psect	text12
  2656  0020F4                     __ptext12:
  2657                           	opt stack 0
  2658  0020F4                     _ledsIntro:
  2659                           	opt stack 28
  2660                           
  2661                           ;main.c: 189: turnOffAllLeds();
  2662                           
  2663                           ;incstack = 0
  2664  0020F4  EC21  F013         	call	_turnOffAllLeds	;wreg free
  2665                           
  2666                           ;main.c: 191: for (int j = 1; j < 7; j++) {
  2667  0020F8  0E00               	movlw	0
  2668  0020FA  6E0B               	movwf	ledsIntro@j+1,c
  2669  0020FC  0E01               	movlw	1
  2670  0020FE  6E0A               	movwf	ledsIntro@j,c
  2671  002100                     l3838:
  2672  002100  BE0B               	btfsc	ledsIntro@j+1,7,c
  2673  002102  D006               	goto	l3842
  2674  002104  500B               	movf	ledsIntro@j+1,w,c
  2675  002106  E126               	bnz	l3862
  2676  002108  0E07               	movlw	7
  2677  00210A  5C0A               	subwf	ledsIntro@j,w,c
  2678  00210C  B0D8               	btfsc	status,0,c
  2679  00210E  D022               	goto	l3862
  2680  002110                     l3842:
  2681                           
  2682                           ;main.c: 193: for (int i = 0; i < 16; i++) {
  2683  002110  0E00               	movlw	0
  2684  002112  6E0D               	movwf	ledsIntro@i+1,c
  2685  002114  0E00               	movlw	0
  2686  002116  6E0C               	movwf	ledsIntro@i,c
  2687  002118                     l3844:
  2688  002118  BE0D               	btfsc	ledsIntro@i+1,7,c
  2689  00211A  D006               	goto	l3848
  2690  00211C  500D               	movf	ledsIntro@i+1,w,c
  2691  00211E  E117               	bnz	l3858
  2692  002120  0E10               	movlw	16
  2693  002122  5C0C               	subwf	ledsIntro@i,w,c
  2694  002124  B0D8               	btfsc	status,0,c
  2695  002126  D013               	goto	l3858
  2696  002128                     l3848:
  2697                           
  2698                           ;main.c: 195: changeColor(i, j, 255);
  2699  002128  C00A  F001         	movff	ledsIntro@j,changeColor@color
  2700  00212C  0EFF               	movlw	255
  2701  00212E  6E02               	movwf	changeColor@intensity,c
  2702  002130  500C               	movf	ledsIntro@i,w,c
  2703  002132  EC6A  F004         	call	_changeColor
  2704                           
  2705                           ;main.c: 196: delayMs(20);
  2706  002136  0E14               	movlw	20
  2707  002138  EC4F  F012         	call	_delayMs
  2708                           
  2709                           ;main.c: 197: sendLEDs(global_leds);
  2710  00213C  0E84               	movlw	low _global_leds
  2711  00213E  6E04               	movwf	sendLEDs@leds,c
  2712  002140  0E00               	movlw	high _global_leds
  2713  002142  6E05               	movwf	sendLEDs@leds+1,c
  2714  002144  EC66  F00E         	call	_sendLEDs	;wreg free
  2715  002148  4A0C               	infsnz	ledsIntro@i,f,c
  2716  00214A  2A0D               	incf	ledsIntro@i+1,f,c
  2717  00214C  D7E5               	goto	l3844
  2718  00214E                     l3858:
  2719  00214E  4A0A               	infsnz	ledsIntro@j,f,c
  2720  002150  2A0B               	incf	ledsIntro@j+1,f,c
  2721  002152  D7D6               	goto	l3838
  2722  002154                     l3862:
  2723                           
  2724                           ;main.c: 198: }
  2725                           ;main.c: 199: }
  2726                           ;main.c: 201: delayMs(200);
  2727  002154  0EC8               	movlw	200
  2728  002156  EC4F  F012         	call	_delayMs
  2729                           
  2730                           ;main.c: 202: turnOffAllLeds();
  2731  00215A  EC21  F013         	call	_turnOffAllLeds	;wreg free
  2732  00215E  0012               	return		;funcret
  2733  002160                     __end_of_ledsIntro:
  2734                           	opt stack 0
  2735                           tblptru	equ	0xFF8
  2736                           tblptrh	equ	0xFF7
  2737                           tblptrl	equ	0xFF6
  2738                           tablat	equ	0xFF5
  2739                           prodh	equ	0xFF4
  2740                           prodl	equ	0xFF3
  2741                           postinc0	equ	0xFEE
  2742                           wreg	equ	0xFE8
  2743                           indf1	equ	0xFE7
  2744                           postinc1	equ	0xFE6
  2745                           postdec1	equ	0xFE5
  2746                           fsr1h	equ	0xFE2
  2747                           fsr1l	equ	0xFE1
  2748                           indf2	equ	0xFDF
  2749                           postinc2	equ	0xFDE
  2750                           fsr2h	equ	0xFDA
  2751                           fsr2l	equ	0xFD9
  2752                           status	equ	0xFD8
  2753                           
  2754 ;; *************** function _turnOffAllLeds *****************
  2755 ;; Defined at:
  2756 ;;		line 61 in file "outputs.c"
  2757 ;; Parameters:    Size  Location     Type
  2758 ;;		None
  2759 ;; Auto vars:     Size  Location     Type
  2760 ;;  i               2    3[COMRAM] int 
  2761 ;; Return value:  Size  Location     Type
  2762 ;;                  1    wreg      void 
  2763 ;; Registers used:
  2764 ;;		wreg, fsr2l, fsr2h, status,2, status,0, prodl, prodh, cstack
  2765 ;; Tracked objects:
  2766 ;;		On entry : 0/0
  2767 ;;		On exit  : 0/0
  2768 ;;		Unchanged: 0/0
  2769 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  2770 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  2771 ;;      Locals:         2       0       0       0       0       0       0       0       0       0
  2772 ;;      Temps:          0       0       0       0       0       0       0       0       0       0
  2773 ;;      Totals:         2       0       0       0       0       0       0       0       0       0
  2774 ;;Total ram usage:        2 bytes
  2775 ;; Hardware stack levels used:    1
  2776 ;; Hardware stack levels required when called:    1
  2777 ;; This function calls:
  2778 ;;		_changeColor
  2779 ;; This function is called by:
  2780 ;;		_bankChange
  2781 ;;		_channelChange
  2782 ;;		_ledsIntro
  2783 ;; This function uses a non-reentrant model
  2784 ;;
  2785                           
  2786                           	psect	text13
  2787  002642                     __ptext13:
  2788                           	opt stack 0
  2789  002642                     _turnOffAllLeds:
  2790                           	opt stack 27
  2791                           
  2792                           ;outputs.c: 63: for (int i = 0; i < 16; i++) {
  2793                           
  2794                           ;incstack = 0
  2795  002642  0E00               	movlw	0
  2796  002644  6E05               	movwf	turnOffAllLeds@i+1,c
  2797  002646  0E00               	movlw	0
  2798  002648  6E04               	movwf	turnOffAllLeds@i,c
  2799  00264A                     l3478:
  2800  00264A  BE05               	btfsc	turnOffAllLeds@i+1,7,c
  2801  00264C  D006               	goto	l3482
  2802  00264E  5005               	movf	turnOffAllLeds@i+1,w,c
  2803  002650  E10E               	bnz	l646
  2804  002652  0E10               	movlw	16
  2805  002654  5C04               	subwf	turnOffAllLeds@i,w,c
  2806  002656  B0D8               	btfsc	status,0,c
  2807  002658  0012               	return	
  2808  00265A                     l3482:
  2809                           
  2810                           ;outputs.c: 64: changeColor(i, BLACK, 0);
  2811  00265A  0E00               	movlw	0
  2812  00265C  6E01               	movwf	changeColor@color,c
  2813  00265E  0E00               	movlw	0
  2814  002660  6E02               	movwf	changeColor@intensity,c
  2815  002662  5004               	movf	turnOffAllLeds@i,w,c
  2816  002664  EC6A  F004         	call	_changeColor
  2817  002668  4A04               	infsnz	turnOffAllLeds@i,f,c
  2818  00266A  2A05               	incf	turnOffAllLeds@i+1,f,c
  2819  00266C  D7EE               	goto	l3478
  2820  00266E                     l646:
  2821  00266E  0012               	return		;funcret
  2822  002670                     __end_of_turnOffAllLeds:
  2823                           	opt stack 0
  2824                           tblptru	equ	0xFF8
  2825                           tblptrh	equ	0xFF7
  2826                           tblptrl	equ	0xFF6
  2827                           tablat	equ	0xFF5
  2828                           prodh	equ	0xFF4
  2829                           prodl	equ	0xFF3
  2830                           postinc0	equ	0xFEE
  2831                           wreg	equ	0xFE8
  2832                           indf1	equ	0xFE7
  2833                           postinc1	equ	0xFE6
  2834                           postdec1	equ	0xFE5
  2835                           fsr1h	equ	0xFE2
  2836                           fsr1l	equ	0xFE1
  2837                           indf2	equ	0xFDF
  2838                           postinc2	equ	0xFDE
  2839                           fsr2h	equ	0xFDA
  2840                           fsr2l	equ	0xFD9
  2841                           status	equ	0xFD8
  2842                           
  2843 ;; *************** function _changeColor *****************
  2844 ;; Defined at:
  2845 ;;		line 70 in file "outputs.c"
  2846 ;; Parameters:    Size  Location     Type
  2847 ;;  pos             1    wreg     unsigned char 
  2848 ;;  color           1    0[COMRAM] unsigned char 
  2849 ;;  intensity       1    1[COMRAM] unsigned char 
  2850 ;; Auto vars:     Size  Location     Type
  2851 ;;  pos             1    2[COMRAM] unsigned char 
  2852 ;; Return value:  Size  Location     Type
  2853 ;;                  1    wreg      void 
  2854 ;; Registers used:
  2855 ;;		wreg, fsr2l, fsr2h, status,2, status,0, prodl, prodh
  2856 ;; Tracked objects:
  2857 ;;		On entry : 0/0
  2858 ;;		On exit  : 0/0
  2859 ;;		Unchanged: 0/0
  2860 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  2861 ;;      Params:         2       0       0       0       0       0       0       0       0       0
  2862 ;;      Locals:         1       0       0       0       0       0       0       0       0       0
  2863 ;;      Temps:          0       0       0       0       0       0       0       0       0       0
  2864 ;;      Totals:         3       0       0       0       0       0       0       0       0       0
  2865 ;;Total ram usage:        3 bytes
  2866 ;; Hardware stack levels used:    1
  2867 ;; This function calls:
  2868 ;;		Nothing
  2869 ;; This function is called by:
  2870 ;;		_bankChange
  2871 ;;		_channelChange
  2872 ;;		_ledsIntro
  2873 ;;		_turnOnAllLeds
  2874 ;;		_turnOffAllLeds
  2875 ;;		_blinkLedAsync
  2876 ;; This function uses a non-reentrant model
  2877 ;;
  2878                           
  2879                           	psect	text14
  2880  0008D4                     __ptext14:
  2881                           	opt stack 0
  2882  0008D4                     _changeColor:
  2883                           	opt stack 27
  2884                           
  2885                           ;incstack = 0
  2886                           ;changeColor@pos stored from wreg
  2887  0008D4  6E03               	movwf	changeColor@pos,c
  2888                           
  2889                           ;outputs.c: 72: global_leds[pos][0] = intensity;
  2890  0008D6  5003               	movf	changeColor@pos,w,c
  2891  0008D8  0D04               	mullw	4
  2892  0008DA  0E84               	movlw	low _global_leds
  2893  0008DC  24F3               	addwf	prodl,w,c
  2894  0008DE  6ED9               	movwf	fsr2l,c
  2895  0008E0  0E00               	movlw	high _global_leds
  2896  0008E2  20F4               	addwfc	prodh,w,c
  2897  0008E4  6EDA               	movwf	fsr2h,c
  2898  0008E6  C002  FFDF         	movff	changeColor@intensity,indf2
  2899                           
  2900                           ;outputs.c: 74: switch(color){
  2901  0008EA  D162               	goto	l3270
  2902  0008EC                     l3252:
  2903                           
  2904                           ;outputs.c: 77: global_leds[pos][0] = 255;
  2905  0008EC  5003               	movf	changeColor@pos,w,c
  2906  0008EE  0D04               	mullw	4
  2907  0008F0  0E84               	movlw	low _global_leds
  2908  0008F2  24F3               	addwf	prodl,w,c
  2909  0008F4  6ED9               	movwf	fsr2l,c
  2910  0008F6  0E00               	movlw	high _global_leds
  2911  0008F8  20F4               	addwfc	prodh,w,c
  2912  0008FA  6EDA               	movwf	fsr2h,c
  2913  0008FC  0EFF               	movlw	255
  2914  0008FE  6EDF               	movwf	indf2,c
  2915                           
  2916                           ;outputs.c: 78: global_leds[pos][1] = 0;
  2917  000900  5003               	movf	changeColor@pos,w,c
  2918  000902  0D04               	mullw	4
  2919  000904  0E01               	movlw	1
  2920  000906  26F3               	addwf	prodl,f,c
  2921  000908  0E00               	movlw	0
  2922  00090A  22F4               	addwfc	prodh,f,c
  2923  00090C  0E84               	movlw	low _global_leds
  2924  00090E  24F3               	addwf	prodl,w,c
  2925  000910  6ED9               	movwf	fsr2l,c
  2926  000912  0E00               	movlw	high _global_leds
  2927  000914  20F4               	addwfc	prodh,w,c
  2928  000916  6EDA               	movwf	fsr2h,c
  2929  000918  0E00               	movlw	0
  2930  00091A  6EDF               	movwf	indf2,c
  2931                           
  2932                           ;outputs.c: 79: global_leds[pos][2] = 0;
  2933  00091C  5003               	movf	changeColor@pos,w,c
  2934  00091E  0D04               	mullw	4
  2935  000920  0E02               	movlw	2
  2936  000922  26F3               	addwf	prodl,f,c
  2937  000924  0E00               	movlw	0
  2938  000926  22F4               	addwfc	prodh,f,c
  2939  000928  0E84               	movlw	low _global_leds
  2940  00092A  24F3               	addwf	prodl,w,c
  2941  00092C  6ED9               	movwf	fsr2l,c
  2942  00092E  0E00               	movlw	high _global_leds
  2943  000930  20F4               	addwfc	prodh,w,c
  2944  000932  6EDA               	movwf	fsr2h,c
  2945  000934  0E00               	movlw	0
  2946  000936  6EDF               	movwf	indf2,c
  2947                           
  2948                           ;outputs.c: 80: global_leds[pos][3] = 0;
  2949  000938  5003               	movf	changeColor@pos,w,c
  2950  00093A  0D04               	mullw	4
  2951  00093C  0E03               	movlw	3
  2952  00093E  26F3               	addwf	prodl,f,c
  2953  000940  0E00               	movlw	0
  2954  000942  22F4               	addwfc	prodh,f,c
  2955  000944  0E84               	movlw	low _global_leds
  2956  000946  24F3               	addwf	prodl,w,c
  2957  000948  6ED9               	movwf	fsr2l,c
  2958  00094A  0E00               	movlw	high _global_leds
  2959  00094C  20F4               	addwfc	prodh,w,c
  2960  00094E  6EDA               	movwf	fsr2h,c
  2961  000950  0E00               	movlw	0
  2962  000952  6EDF               	movwf	indf2,c
  2963                           
  2964                           ;outputs.c: 81: break;
  2965  000954  0012               	return	
  2966  000956                     l3254:
  2967                           
  2968                           ;outputs.c: 84: global_leds[pos][1] = 1;
  2969  000956  5003               	movf	changeColor@pos,w,c
  2970  000958  0D04               	mullw	4
  2971  00095A  0E01               	movlw	1
  2972  00095C  26F3               	addwf	prodl,f,c
  2973  00095E  0E00               	movlw	0
  2974  000960  22F4               	addwfc	prodh,f,c
  2975  000962  0E84               	movlw	low _global_leds
  2976  000964  24F3               	addwf	prodl,w,c
  2977  000966  6ED9               	movwf	fsr2l,c
  2978  000968  0E00               	movlw	high _global_leds
  2979  00096A  20F4               	addwfc	prodh,w,c
  2980  00096C  6EDA               	movwf	fsr2h,c
  2981  00096E  0E01               	movlw	1
  2982  000970  6EDF               	movwf	indf2,c
  2983                           
  2984                           ;outputs.c: 85: global_leds[pos][2] = 0;
  2985  000972  5003               	movf	changeColor@pos,w,c
  2986  000974  0D04               	mullw	4
  2987  000976  0E02               	movlw	2
  2988  000978  26F3               	addwf	prodl,f,c
  2989  00097A  0E00               	movlw	0
  2990  00097C  22F4               	addwfc	prodh,f,c
  2991  00097E  0E84               	movlw	low _global_leds
  2992  000980  24F3               	addwf	prodl,w,c
  2993  000982  6ED9               	movwf	fsr2l,c
  2994  000984  0E00               	movlw	high _global_leds
  2995  000986  20F4               	addwfc	prodh,w,c
  2996  000988  6EDA               	movwf	fsr2h,c
  2997  00098A  0E00               	movlw	0
  2998  00098C  6EDF               	movwf	indf2,c
  2999                           
  3000                           ;outputs.c: 86: global_leds[pos][3] = 0;
  3001  00098E  5003               	movf	changeColor@pos,w,c
  3002  000990  0D04               	mullw	4
  3003  000992  0E03               	movlw	3
  3004  000994  26F3               	addwf	prodl,f,c
  3005  000996  0E00               	movlw	0
  3006  000998  22F4               	addwfc	prodh,f,c
  3007  00099A  0E84               	movlw	low _global_leds
  3008  00099C  24F3               	addwf	prodl,w,c
  3009  00099E  6ED9               	movwf	fsr2l,c
  3010  0009A0  0E00               	movlw	high _global_leds
  3011  0009A2  20F4               	addwfc	prodh,w,c
  3012  0009A4  6EDA               	movwf	fsr2h,c
  3013  0009A6  0E00               	movlw	0
  3014  0009A8  6EDF               	movwf	indf2,c
  3015                           
  3016                           ;outputs.c: 87: break;
  3017  0009AA  0012               	return	
  3018  0009AC                     l3256:
  3019                           
  3020                           ;outputs.c: 90: global_leds[pos][1] = 0;
  3021  0009AC  5003               	movf	changeColor@pos,w,c
  3022  0009AE  0D04               	mullw	4
  3023  0009B0  0E01               	movlw	1
  3024  0009B2  26F3               	addwf	prodl,f,c
  3025  0009B4  0E00               	movlw	0
  3026  0009B6  22F4               	addwfc	prodh,f,c
  3027  0009B8  0E84               	movlw	low _global_leds
  3028  0009BA  24F3               	addwf	prodl,w,c
  3029  0009BC  6ED9               	movwf	fsr2l,c
  3030  0009BE  0E00               	movlw	high _global_leds
  3031  0009C0  20F4               	addwfc	prodh,w,c
  3032  0009C2  6EDA               	movwf	fsr2h,c
  3033  0009C4  0E00               	movlw	0
  3034  0009C6  6EDF               	movwf	indf2,c
  3035                           
  3036                           ;outputs.c: 91: global_leds[pos][2] = 1;
  3037  0009C8  5003               	movf	changeColor@pos,w,c
  3038  0009CA  0D04               	mullw	4
  3039  0009CC  0E02               	movlw	2
  3040  0009CE  26F3               	addwf	prodl,f,c
  3041  0009D0  0E00               	movlw	0
  3042  0009D2  22F4               	addwfc	prodh,f,c
  3043  0009D4  0E84               	movlw	low _global_leds
  3044  0009D6  24F3               	addwf	prodl,w,c
  3045  0009D8  6ED9               	movwf	fsr2l,c
  3046  0009DA  0E00               	movlw	high _global_leds
  3047  0009DC  20F4               	addwfc	prodh,w,c
  3048  0009DE  6EDA               	movwf	fsr2h,c
  3049  0009E0  0E01               	movlw	1
  3050  0009E2  6EDF               	movwf	indf2,c
  3051                           
  3052                           ;outputs.c: 92: global_leds[pos][3] = 0;
  3053  0009E4  5003               	movf	changeColor@pos,w,c
  3054  0009E6  0D04               	mullw	4
  3055  0009E8  0E03               	movlw	3
  3056  0009EA  26F3               	addwf	prodl,f,c
  3057  0009EC  0E00               	movlw	0
  3058  0009EE  22F4               	addwfc	prodh,f,c
  3059  0009F0  0E84               	movlw	low _global_leds
  3060  0009F2  24F3               	addwf	prodl,w,c
  3061  0009F4  6ED9               	movwf	fsr2l,c
  3062  0009F6  0E00               	movlw	high _global_leds
  3063  0009F8  20F4               	addwfc	prodh,w,c
  3064  0009FA  6EDA               	movwf	fsr2h,c
  3065  0009FC  0E00               	movlw	0
  3066  0009FE  6EDF               	movwf	indf2,c
  3067                           
  3068                           ;outputs.c: 93: break;
  3069  000A00  0012               	return	
  3070  000A02                     l3258:
  3071                           
  3072                           ;outputs.c: 96: global_leds[pos][1] = 0;
  3073  000A02  5003               	movf	changeColor@pos,w,c
  3074  000A04  0D04               	mullw	4
  3075  000A06  0E01               	movlw	1
  3076  000A08  26F3               	addwf	prodl,f,c
  3077  000A0A  0E00               	movlw	0
  3078  000A0C  22F4               	addwfc	prodh,f,c
  3079  000A0E  0E84               	movlw	low _global_leds
  3080  000A10  24F3               	addwf	prodl,w,c
  3081  000A12  6ED9               	movwf	fsr2l,c
  3082  000A14  0E00               	movlw	high _global_leds
  3083  000A16  20F4               	addwfc	prodh,w,c
  3084  000A18  6EDA               	movwf	fsr2h,c
  3085  000A1A  0E00               	movlw	0
  3086  000A1C  6EDF               	movwf	indf2,c
  3087                           
  3088                           ;outputs.c: 97: global_leds[pos][2] = 0;
  3089  000A1E  5003               	movf	changeColor@pos,w,c
  3090  000A20  0D04               	mullw	4
  3091  000A22  0E02               	movlw	2
  3092  000A24  26F3               	addwf	prodl,f,c
  3093  000A26  0E00               	movlw	0
  3094  000A28  22F4               	addwfc	prodh,f,c
  3095  000A2A  0E84               	movlw	low _global_leds
  3096  000A2C  24F3               	addwf	prodl,w,c
  3097  000A2E  6ED9               	movwf	fsr2l,c
  3098  000A30  0E00               	movlw	high _global_leds
  3099  000A32  20F4               	addwfc	prodh,w,c
  3100  000A34  6EDA               	movwf	fsr2h,c
  3101  000A36  0E00               	movlw	0
  3102  000A38  6EDF               	movwf	indf2,c
  3103                           
  3104                           ;outputs.c: 98: global_leds[pos][3] = 1;
  3105  000A3A  5003               	movf	changeColor@pos,w,c
  3106  000A3C  0D04               	mullw	4
  3107  000A3E  0E03               	movlw	3
  3108  000A40  26F3               	addwf	prodl,f,c
  3109  000A42  0E00               	movlw	0
  3110  000A44  22F4               	addwfc	prodh,f,c
  3111  000A46  0E84               	movlw	low _global_leds
  3112  000A48  24F3               	addwf	prodl,w,c
  3113  000A4A  6ED9               	movwf	fsr2l,c
  3114  000A4C  0E00               	movlw	high _global_leds
  3115  000A4E  20F4               	addwfc	prodh,w,c
  3116  000A50  6EDA               	movwf	fsr2h,c
  3117  000A52  0E01               	movlw	1
  3118  000A54  6EDF               	movwf	indf2,c
  3119                           
  3120                           ;outputs.c: 99: break;
  3121  000A56  0012               	return	
  3122  000A58                     l3260:
  3123                           
  3124                           ;outputs.c: 102: global_leds[pos][1] = 1;
  3125  000A58  5003               	movf	changeColor@pos,w,c
  3126  000A5A  0D04               	mullw	4
  3127  000A5C  0E01               	movlw	1
  3128  000A5E  26F3               	addwf	prodl,f,c
  3129  000A60  0E00               	movlw	0
  3130  000A62  22F4               	addwfc	prodh,f,c
  3131  000A64  0E84               	movlw	low _global_leds
  3132  000A66  24F3               	addwf	prodl,w,c
  3133  000A68  6ED9               	movwf	fsr2l,c
  3134  000A6A  0E00               	movlw	high _global_leds
  3135  000A6C  20F4               	addwfc	prodh,w,c
  3136  000A6E  6EDA               	movwf	fsr2h,c
  3137  000A70  0E01               	movlw	1
  3138  000A72  6EDF               	movwf	indf2,c
  3139                           
  3140                           ;outputs.c: 103: global_leds[pos][2] = 0;
  3141  000A74  5003               	movf	changeColor@pos,w,c
  3142  000A76  0D04               	mullw	4
  3143  000A78  0E02               	movlw	2
  3144  000A7A  26F3               	addwf	prodl,f,c
  3145  000A7C  0E00               	movlw	0
  3146  000A7E  22F4               	addwfc	prodh,f,c
  3147  000A80  0E84               	movlw	low _global_leds
  3148  000A82  24F3               	addwf	prodl,w,c
  3149  000A84  6ED9               	movwf	fsr2l,c
  3150  000A86  0E00               	movlw	high _global_leds
  3151  000A88  20F4               	addwfc	prodh,w,c
  3152  000A8A  6EDA               	movwf	fsr2h,c
  3153  000A8C  0E00               	movlw	0
  3154  000A8E  6EDF               	movwf	indf2,c
  3155                           
  3156                           ;outputs.c: 104: global_leds[pos][3] = 1;
  3157  000A90  5003               	movf	changeColor@pos,w,c
  3158  000A92  0D04               	mullw	4
  3159  000A94  0E03               	movlw	3
  3160  000A96  26F3               	addwf	prodl,f,c
  3161  000A98  0E00               	movlw	0
  3162  000A9A  22F4               	addwfc	prodh,f,c
  3163  000A9C  0E84               	movlw	low _global_leds
  3164  000A9E  24F3               	addwf	prodl,w,c
  3165  000AA0  6ED9               	movwf	fsr2l,c
  3166  000AA2  0E00               	movlw	high _global_leds
  3167  000AA4  20F4               	addwfc	prodh,w,c
  3168  000AA6  6EDA               	movwf	fsr2h,c
  3169  000AA8  0E01               	movlw	1
  3170  000AAA  6EDF               	movwf	indf2,c
  3171                           
  3172                           ;outputs.c: 105: break;
  3173  000AAC  0012               	return	
  3174  000AAE                     l3262:
  3175                           
  3176                           ;outputs.c: 108: global_leds[pos][1] = 0;
  3177  000AAE  5003               	movf	changeColor@pos,w,c
  3178  000AB0  0D04               	mullw	4
  3179  000AB2  0E01               	movlw	1
  3180  000AB4  26F3               	addwf	prodl,f,c
  3181  000AB6  0E00               	movlw	0
  3182  000AB8  22F4               	addwfc	prodh,f,c
  3183  000ABA  0E84               	movlw	low _global_leds
  3184  000ABC  24F3               	addwf	prodl,w,c
  3185  000ABE  6ED9               	movwf	fsr2l,c
  3186  000AC0  0E00               	movlw	high _global_leds
  3187  000AC2  20F4               	addwfc	prodh,w,c
  3188  000AC4  6EDA               	movwf	fsr2h,c
  3189  000AC6  0E00               	movlw	0
  3190  000AC8  6EDF               	movwf	indf2,c
  3191                           
  3192                           ;outputs.c: 109: global_leds[pos][2] = 1;
  3193  000ACA  5003               	movf	changeColor@pos,w,c
  3194  000ACC  0D04               	mullw	4
  3195  000ACE  0E02               	movlw	2
  3196  000AD0  26F3               	addwf	prodl,f,c
  3197  000AD2  0E00               	movlw	0
  3198  000AD4  22F4               	addwfc	prodh,f,c
  3199  000AD6  0E84               	movlw	low _global_leds
  3200  000AD8  24F3               	addwf	prodl,w,c
  3201  000ADA  6ED9               	movwf	fsr2l,c
  3202  000ADC  0E00               	movlw	high _global_leds
  3203  000ADE  20F4               	addwfc	prodh,w,c
  3204  000AE0  6EDA               	movwf	fsr2h,c
  3205  000AE2  0E01               	movlw	1
  3206  000AE4  6EDF               	movwf	indf2,c
  3207                           
  3208                           ;outputs.c: 110: global_leds[pos][3] = 1;
  3209  000AE6  5003               	movf	changeColor@pos,w,c
  3210  000AE8  0D04               	mullw	4
  3211  000AEA  0E03               	movlw	3
  3212  000AEC  26F3               	addwf	prodl,f,c
  3213  000AEE  0E00               	movlw	0
  3214  000AF0  22F4               	addwfc	prodh,f,c
  3215  000AF2  0E84               	movlw	low _global_leds
  3216  000AF4  24F3               	addwf	prodl,w,c
  3217  000AF6  6ED9               	movwf	fsr2l,c
  3218  000AF8  0E00               	movlw	high _global_leds
  3219  000AFA  20F4               	addwfc	prodh,w,c
  3220  000AFC  6EDA               	movwf	fsr2h,c
  3221  000AFE  0E01               	movlw	1
  3222  000B00  6EDF               	movwf	indf2,c
  3223                           
  3224                           ;outputs.c: 111: break;
  3225  000B02  0012               	return	
  3226  000B04                     l3264:
  3227                           
  3228                           ;outputs.c: 114: global_leds[pos][1] = 1;
  3229  000B04  5003               	movf	changeColor@pos,w,c
  3230  000B06  0D04               	mullw	4
  3231  000B08  0E01               	movlw	1
  3232  000B0A  26F3               	addwf	prodl,f,c
  3233  000B0C  0E00               	movlw	0
  3234  000B0E  22F4               	addwfc	prodh,f,c
  3235  000B10  0E84               	movlw	low _global_leds
  3236  000B12  24F3               	addwf	prodl,w,c
  3237  000B14  6ED9               	movwf	fsr2l,c
  3238  000B16  0E00               	movlw	high _global_leds
  3239  000B18  20F4               	addwfc	prodh,w,c
  3240  000B1A  6EDA               	movwf	fsr2h,c
  3241  000B1C  0E01               	movlw	1
  3242  000B1E  6EDF               	movwf	indf2,c
  3243                           
  3244                           ;outputs.c: 115: global_leds[pos][2] = 1;
  3245  000B20  5003               	movf	changeColor@pos,w,c
  3246  000B22  0D04               	mullw	4
  3247  000B24  0E02               	movlw	2
  3248  000B26  26F3               	addwf	prodl,f,c
  3249  000B28  0E00               	movlw	0
  3250  000B2A  22F4               	addwfc	prodh,f,c
  3251  000B2C  0E84               	movlw	low _global_leds
  3252  000B2E  24F3               	addwf	prodl,w,c
  3253  000B30  6ED9               	movwf	fsr2l,c
  3254  000B32  0E00               	movlw	high _global_leds
  3255  000B34  20F4               	addwfc	prodh,w,c
  3256  000B36  6EDA               	movwf	fsr2h,c
  3257  000B38  0E01               	movlw	1
  3258  000B3A  6EDF               	movwf	indf2,c
  3259                           
  3260                           ;outputs.c: 116: global_leds[pos][3] = 0;
  3261  000B3C  5003               	movf	changeColor@pos,w,c
  3262  000B3E  0D04               	mullw	4
  3263  000B40  0E03               	movlw	3
  3264  000B42  26F3               	addwf	prodl,f,c
  3265  000B44  0E00               	movlw	0
  3266  000B46  22F4               	addwfc	prodh,f,c
  3267  000B48  0E84               	movlw	low _global_leds
  3268  000B4A  24F3               	addwf	prodl,w,c
  3269  000B4C  6ED9               	movwf	fsr2l,c
  3270  000B4E  0E00               	movlw	high _global_leds
  3271  000B50  20F4               	addwfc	prodh,w,c
  3272  000B52  6EDA               	movwf	fsr2h,c
  3273  000B54  0E00               	movlw	0
  3274  000B56  6EDF               	movwf	indf2,c
  3275                           
  3276                           ;outputs.c: 117: break;
  3277  000B58  0012               	return	
  3278  000B5A                     l3266:
  3279                           
  3280                           ;outputs.c: 120: global_leds[pos][1] = 1;
  3281  000B5A  5003               	movf	changeColor@pos,w,c
  3282  000B5C  0D04               	mullw	4
  3283  000B5E  0E01               	movlw	1
  3284  000B60  26F3               	addwf	prodl,f,c
  3285  000B62  0E00               	movlw	0
  3286  000B64  22F4               	addwfc	prodh,f,c
  3287  000B66  0E84               	movlw	low _global_leds
  3288  000B68  24F3               	addwf	prodl,w,c
  3289  000B6A  6ED9               	movwf	fsr2l,c
  3290  000B6C  0E00               	movlw	high _global_leds
  3291  000B6E  20F4               	addwfc	prodh,w,c
  3292  000B70  6EDA               	movwf	fsr2h,c
  3293  000B72  0E01               	movlw	1
  3294  000B74  6EDF               	movwf	indf2,c
  3295                           
  3296                           ;outputs.c: 121: global_leds[pos][2] = 1;
  3297  000B76  5003               	movf	changeColor@pos,w,c
  3298  000B78  0D04               	mullw	4
  3299  000B7A  0E02               	movlw	2
  3300  000B7C  26F3               	addwf	prodl,f,c
  3301  000B7E  0E00               	movlw	0
  3302  000B80  22F4               	addwfc	prodh,f,c
  3303  000B82  0E84               	movlw	low _global_leds
  3304  000B84  24F3               	addwf	prodl,w,c
  3305  000B86  6ED9               	movwf	fsr2l,c
  3306  000B88  0E00               	movlw	high _global_leds
  3307  000B8A  20F4               	addwfc	prodh,w,c
  3308  000B8C  6EDA               	movwf	fsr2h,c
  3309  000B8E  0E01               	movlw	1
  3310  000B90  6EDF               	movwf	indf2,c
  3311                           
  3312                           ;outputs.c: 122: global_leds[pos][3] = 1;
  3313  000B92  5003               	movf	changeColor@pos,w,c
  3314  000B94  0D04               	mullw	4
  3315  000B96  0E03               	movlw	3
  3316  000B98  26F3               	addwf	prodl,f,c
  3317  000B9A  0E00               	movlw	0
  3318  000B9C  22F4               	addwfc	prodh,f,c
  3319  000B9E  0E84               	movlw	low _global_leds
  3320  000BA0  24F3               	addwf	prodl,w,c
  3321  000BA2  6ED9               	movwf	fsr2l,c
  3322  000BA4  0E00               	movlw	high _global_leds
  3323  000BA6  20F4               	addwfc	prodh,w,c
  3324  000BA8  6EDA               	movwf	fsr2h,c
  3325  000BAA  0E01               	movlw	1
  3326  000BAC  6EDF               	movwf	indf2,c
  3327                           
  3328                           ;outputs.c: 124: }
  3329                           
  3330                           ;outputs.c: 123: break;
  3331  000BAE  0012               	return	
  3332  000BB0                     l3270:
  3333  000BB0  5001               	movf	changeColor@color,w,c
  3334                           
  3335                           ; Switch size 1, requested type "space"
  3336                           ; Number of cases is 8, Range of values is 0 to 7
  3337                           ; switch strategies available:
  3338                           ; Name         Instructions Cycles
  3339                           ; simple_byte           25    13 (average)
  3340                           ;	Chosen strategy is simple_byte
  3341  000BB2  0A00               	xorlw	0	; case 0
  3342  000BB4  B4D8               	btfsc	status,2,c
  3343  000BB6  D69A               	goto	l3252
  3344  000BB8  0A01               	xorlw	1	; case 1
  3345  000BBA  B4D8               	btfsc	status,2,c
  3346  000BBC  D6CC               	goto	l3254
  3347  000BBE  0A03               	xorlw	3	; case 2
  3348  000BC0  B4D8               	btfsc	status,2,c
  3349  000BC2  D6F4               	goto	l3256
  3350  000BC4  0A01               	xorlw	1	; case 3
  3351  000BC6  B4D8               	btfsc	status,2,c
  3352  000BC8  D71C               	goto	l3258
  3353  000BCA  0A07               	xorlw	7	; case 4
  3354  000BCC  B4D8               	btfsc	status,2,c
  3355  000BCE  D744               	goto	l3260
  3356  000BD0  0A01               	xorlw	1	; case 5
  3357  000BD2  B4D8               	btfsc	status,2,c
  3358  000BD4  D76C               	goto	l3262
  3359  000BD6  0A03               	xorlw	3	; case 6
  3360  000BD8  B4D8               	btfsc	status,2,c
  3361  000BDA  D794               	goto	l3264
  3362  000BDC  0A01               	xorlw	1	; case 7
  3363  000BDE  A4D8               	btfss	status,2,c
  3364  000BE0  0012               	return	
  3365  000BE2  D7BB               	goto	l3266
  3366  000BE4                     __end_of_changeColor:
  3367                           	opt stack 0
  3368                           tblptru	equ	0xFF8
  3369                           tblptrh	equ	0xFF7
  3370                           tblptrl	equ	0xFF6
  3371                           tablat	equ	0xFF5
  3372                           prodh	equ	0xFF4
  3373                           prodl	equ	0xFF3
  3374                           postinc0	equ	0xFEE
  3375                           wreg	equ	0xFE8
  3376                           indf1	equ	0xFE7
  3377                           postinc1	equ	0xFE6
  3378                           postdec1	equ	0xFE5
  3379                           fsr1h	equ	0xFE2
  3380                           fsr1l	equ	0xFE1
  3381                           indf2	equ	0xFDF
  3382                           postinc2	equ	0xFDE
  3383                           fsr2h	equ	0xFDA
  3384                           fsr2l	equ	0xFD9
  3385                           status	equ	0xFD8
  3386                           
  3387 ;; *************** function _delayMs *****************
  3388 ;; Defined at:
  3389 ;;		line 110 in file "system.c"
  3390 ;; Parameters:    Size  Location     Type
  3391 ;;  x               1    wreg     unsigned char 
  3392 ;; Auto vars:     Size  Location     Type
  3393 ;;  x               1    3[COMRAM] unsigned char 
  3394 ;;  i               2    4[COMRAM] int 
  3395 ;; Return value:  Size  Location     Type
  3396 ;;                  1    wreg      void 
  3397 ;; Registers used:
  3398 ;;		wreg, status,2, status,0, cstack
  3399 ;; Tracked objects:
  3400 ;;		On entry : 0/0
  3401 ;;		On exit  : 0/0
  3402 ;;		Unchanged: 0/0
  3403 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  3404 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  3405 ;;      Locals:         3       0       0       0       0       0       0       0       0       0
  3406 ;;      Temps:          3       0       0       0       0       0       0       0       0       0
  3407 ;;      Totals:         6       0       0       0       0       0       0       0       0       0
  3408 ;;Total ram usage:        6 bytes
  3409 ;; Hardware stack levels used:    1
  3410 ;; This function calls:
  3411 ;;		Nothing
  3412 ;; This function is called by:
  3413 ;;		_ledsIntro
  3414 ;;		_blinkLedAsync
  3415 ;; This function uses a non-reentrant model
  3416 ;;
  3417                           
  3418                           	psect	text15
  3419  00249E                     __ptext15:
  3420                           	opt stack 0
  3421  00249E                     _delayMs:
  3422                           	opt stack 27
  3423                           
  3424                           ;incstack = 0
  3425                           ;delayMs@x stored from wreg
  3426  00249E  6E04               	movwf	delayMs@x,c
  3427                           
  3428                           ;system.c: 112: for (int i = 0; i < x; i++) {
  3429  0024A0  0E00               	movlw	0
  3430  0024A2  6E06               	movwf	delayMs@i+1,c
  3431  0024A4  0E00               	movlw	0
  3432  0024A6  6E05               	movwf	delayMs@i,c
  3433  0024A8  D00A               	goto	l3314
  3434  0024AA                     l3310:
  3435                           
  3436                           ;system.c: 113: _delay((unsigned long)((1)*(48000000/4000.0)));
  3437  0024AA  0E10               	movlw	16
  3438  0024AC  6E01               	movwf	??_delayMs& (0+255),c
  3439  0024AE  0E94               	movlw	148
  3440  0024B0                     u3437:
  3441  0024B0  2EE8               	decfsz	wreg,f,c
  3442  0024B2  D7FE               	goto	u3437
  3443  0024B4  2E01               	decfsz	??_delayMs& (0+255),f,c
  3444  0024B6  D7FC               	goto	u3437
  3445  0024B8  D000               	nop2	
  3446  0024BA  4A05               	infsnz	delayMs@i,f,c
  3447  0024BC  2A06               	incf	delayMs@i+1,f,c
  3448  0024BE                     l3314:
  3449  0024BE  5004               	movf	delayMs@x,w,c
  3450  0024C0  6E01               	movwf	??_delayMs& (0+255),c
  3451  0024C2  6A02               	clrf	(??_delayMs+1)& (0+255),c
  3452  0024C4  5001               	movf	??_delayMs,w,c
  3453  0024C6  5C05               	subwf	delayMs@i,w,c
  3454  0024C8  5006               	movf	delayMs@i+1,w,c
  3455  0024CA  0A80               	xorlw	128
  3456  0024CC  6E03               	movwf	(??_delayMs+2)& (0+255),c
  3457  0024CE  5002               	movf	??_delayMs+1,w,c
  3458  0024D0  0A80               	xorlw	128
  3459  0024D2  5803               	subwfb	(??_delayMs+2)& (0+255),w,c
  3460  0024D4  B0D8               	btfsc	status,0,c
  3461  0024D6  0012               	return	
  3462  0024D8  D7E8               	goto	l3310
  3463  0024DA                     __end_of_delayMs:
  3464                           	opt stack 0
  3465                           tblptru	equ	0xFF8
  3466                           tblptrh	equ	0xFF7
  3467                           tblptrl	equ	0xFF6
  3468                           tablat	equ	0xFF5
  3469                           prodh	equ	0xFF4
  3470                           prodl	equ	0xFF3
  3471                           postinc0	equ	0xFEE
  3472                           wreg	equ	0xFE8
  3473                           indf1	equ	0xFE7
  3474                           postinc1	equ	0xFE6
  3475                           postdec1	equ	0xFE5
  3476                           fsr1h	equ	0xFE2
  3477                           fsr1l	equ	0xFE1
  3478                           indf2	equ	0xFDF
  3479                           postinc2	equ	0xFDE
  3480                           fsr2h	equ	0xFDA
  3481                           fsr2l	equ	0xFD9
  3482                           status	equ	0xFD8
  3483                           
  3484 ;; *************** function _USBDeviceTasks *****************
  3485 ;; Defined at:
  3486 ;;		line 477 in file "usb/usb_device.c"
  3487 ;; Parameters:    Size  Location     Type
  3488 ;;		None
  3489 ;; Auto vars:     Size  Location     Type
  3490 ;;  i               1   27[COMRAM] unsigned char 
  3491 ;; Return value:  Size  Location     Type
  3492 ;;                  1    wreg      void 
  3493 ;; Registers used:
  3494 ;;		wreg, fsr1l, fsr1h, fsr2l, fsr2h, status,2, status,0, tblptrl, tblptrh, tblptru, prodl, prodh, cstack
  3495 ;; Tracked objects:
  3496 ;;		On entry : 0/0
  3497 ;;		On exit  : 0/0
  3498 ;;		Unchanged: 0/0
  3499 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  3500 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  3501 ;;      Locals:         1       0       0       0       0       0       0       0       0       0
  3502 ;;      Temps:          0       0       0       0       0       0       0       0       0       0
  3503 ;;      Totals:         1       0       0       0       0       0       0       0       0       0
  3504 ;;Total ram usage:        1 bytes
  3505 ;; Hardware stack levels used:    1
  3506 ;; Hardware stack levels required when called:    8
  3507 ;; This function calls:
  3508 ;;		_USBCtrlEPAllowStatusStage
  3509 ;;		_USBCtrlEPService
  3510 ;;		_USBDeviceInit
  3511 ;;		_USBIncrement1msInternalTimers
  3512 ;;		_USBStallHandler
  3513 ;;		_USBSuspend
  3514 ;;		_USBWakeFromSuspend
  3515 ;;		_USER_USB_CALLBACK_EVENT_HANDLER
  3516 ;; This function is called by:
  3517 ;;		_main
  3518 ;; This function uses a non-reentrant model
  3519 ;;
  3520                           
  3521                           	psect	text16
  3522  000E82                     __ptext16:
  3523                           	opt stack 0
  3524  000E82                     _USBDeviceTasks:
  3525                           	opt stack 22
  3526                           
  3527                           ;usb_device.c: 544: }
  3528                           ;usb_device.c: 566: if(USBDeviceState == DETACHED_STATE)
  3529                           
  3530                           ;usb_device.c: 543: return;
  3531                           
  3532                           ;usb_device.c: 542: {PIR2bits.USBIF = 0;};
  3533                           
  3534                           ;usb_device.c: 514: USBDeviceState = DETACHED_STATE;
  3535                           
  3536                           ;usb_device.c: 511: UIE = 0;
  3537                           
  3538                           ;usb_device.c: 506: {
  3539                           ;usb_device.c: 508: UCON = 0;
  3540                           
  3541                           ;usb_device.c: 479: uint8_t i;
  3542                           ;usb_device.c: 505: if (1 != 1)
  3543                           
  3544                           ;incstack = 0
  3545  000E82  505A               	movf	_USBDeviceState,w,c
  3546  000E84  A4D8               	btfss	status,2,c
  3547  000E86  D010               	goto	l3720
  3548                           
  3549                           ;usb_device.c: 567: {
  3550                           ;usb_device.c: 569: UCON = 0;
  3551  000E88  0E00               	movlw	0
  3552  000E8A  6E6D               	movwf	3949,c	;volatile
  3553                           
  3554                           ;usb_device.c: 572: UIE = 0;
  3555  000E8C  0E00               	movlw	0
  3556  000E8E  6E69               	movwf	3945,c	;volatile
  3557                           
  3558                           ;usb_device.c: 576: { UCFG = 0x10 | 0x00 | 0x04 | 0x02; UEIE = 0x9F; UIE = 0x39 | 0x40 |
      +                           0x02; };
  3559  000E90  0E16               	movlw	22
  3560  000E92  6E6F               	movwf	3951,c	;volatile
  3561  000E94  0E9F               	movlw	159
  3562  000E96  6E6B               	movwf	3947,c	;volatile
  3563  000E98  0E7B               	movlw	123
  3564  000E9A  6E69               	movwf	3945,c	;volatile
  3565                           
  3566                           ;usb_device.c: 579: while(!UCONbits.USBEN){UCONbits.USBEN = 1;}
  3567  000E9C  D001               	goto	l159
  3568  000E9E                     l160:
  3569  000E9E  866D               	bsf	3949,3,c	;volatile
  3570  000EA0                     l159:
  3571  000EA0  A66D               	btfss	3949,3,c	;volatile
  3572  000EA2  D7FD               	goto	l160
  3573                           
  3574                           ;usb_device.c: 582: USBDeviceState = ATTACHED_STATE;
  3575  000EA4  0E01               	movlw	1
  3576  000EA6  6E5A               	movwf	_USBDeviceState,c
  3577  000EA8                     l3720:
  3578                           
  3579                           ;usb_device.c: 587: }
  3580                           ;usb_device.c: 590: if(USBDeviceState == ATTACHED_STATE)
  3581  000EA8  045A               	decf	_USBDeviceState,w,c
  3582  000EAA  B4D8               	btfsc	status,2,c
  3583                           
  3584                           ;usb_device.c: 591: {
  3585                           ;usb_device.c: 601: if(!UCONbits.SE0)
  3586  000EAC  BA6D               	btfsc	3949,5,c	;volatile
  3587  000EAE  D008               	goto	l3730
  3588                           
  3589                           ;usb_device.c: 602: {
  3590                           ;usb_device.c: 608: {UIR = 0;};
  3591  000EB0  0E00               	movlw	0
  3592  000EB2  6E68               	movwf	3944,c	;volatile
  3593                           
  3594                           ;usb_device.c: 612: UIE=0;
  3595  000EB4  0E00               	movlw	0
  3596  000EB6  6E69               	movwf	3945,c	;volatile
  3597                           
  3598                           ;usb_device.c: 614: UIEbits.URSTIE = 1;
  3599  000EB8  8069               	bsf	3945,0,c	;volatile
  3600                           
  3601                           ;usb_device.c: 615: UIEbits.IDLEIE = 1;
  3602  000EBA  8869               	bsf	3945,4,c	;volatile
  3603                           
  3604                           ;usb_device.c: 616: USBDeviceState = POWERED_STATE;
  3605  000EBC  0E02               	movlw	2
  3606  000EBE  6E5A               	movwf	_USBDeviceState,c
  3607  000EC0                     l3730:
  3608                           
  3609                           ;usb_device.c: 617: }
  3610                           ;usb_device.c: 618: }
  3611                           ;usb_device.c: 634: if(UIRbits.ACTVIF && UIEbits.ACTVIE)
  3612  000EC0  B468               	btfsc	3944,2,c	;volatile
  3613  000EC2  A469               	btfss	3945,2,c	;volatile
  3614  000EC4  D003               	goto	l3738
  3615                           
  3616                           ;usb_device.c: 635: {
  3617                           ;usb_device.c: 636: (UIR &= 0xFB);
  3618  000EC6  9468               	bcf	3944,2,c	;volatile
  3619                           
  3620                           ;usb_device.c: 640: USBWakeFromSuspend();
  3621  000EC8  ECA6  F012         	call	_USBWakeFromSuspend	;wreg free
  3622  000ECC                     l3738:
  3623                           
  3624                           ;usb_device.c: 642: }
  3625                           ;usb_device.c: 647: if(UCONbits.SUSPND==1)
  3626  000ECC  A26D               	btfss	3949,1,c	;volatile
  3627  000ECE  D002               	goto	l165
  3628                           
  3629                           ;usb_device.c: 648: {
  3630                           ;usb_device.c: 649: {PIR2bits.USBIF = 0;};
  3631  000ED0  9AA1               	bcf	4001,5,c	;volatile
  3632                           
  3633                           ;usb_device.c: 650: return;
  3634  000ED2  0012               	return	
  3635  000ED4                     l165:
  3636                           
  3637                           ;usb_device.c: 651: }
  3638                           ;usb_device.c: 663: if(UIRbits.URSTIF && UIEbits.URSTIE)
  3639  000ED4  B068               	btfsc	3944,0,c	;volatile
  3640  000ED6  A069               	btfss	3945,0,c	;volatile
  3641  000ED8  D005               	goto	l3750
  3642                           
  3643                           ;usb_device.c: 664: {
  3644                           ;usb_device.c: 665: USBDeviceInit();
  3645  000EDA  ECA4  F008         	call	_USBDeviceInit	;wreg free
  3646                           
  3647                           ;usb_device.c: 669: ;
  3648                           ;usb_device.c: 671: USBDeviceState = DEFAULT_STATE;
  3649  000EDE  0E04               	movlw	4
  3650  000EE0  6E5A               	movwf	_USBDeviceState,c
  3651                           
  3652                           ;usb_device.c: 681: (UIR &= 0xFE);
  3653  000EE2  9068               	bcf	3944,0,c	;volatile
  3654  000EE4                     l3750:
  3655                           
  3656                           ;usb_device.c: 682: }
  3657                           ;usb_device.c: 687: if(UIRbits.IDLEIF && UIEbits.IDLEIE)
  3658  000EE4  B868               	btfsc	3944,4,c	;volatile
  3659  000EE6  A869               	btfss	3945,4,c	;volatile
  3660  000EE8  D002               	goto	l3756
  3661                           
  3662                           ;usb_device.c: 688: {
  3663                           ;usb_device.c: 694: USBSuspend();
  3664  000EEA  ECF1  F012         	call	_USBSuspend	;wreg free
  3665  000EEE                     l3756:
  3666                           
  3667                           ;usb_device.c: 696: }
  3668                           ;usb_device.c: 708: if(UIRbits.SOFIF)
  3669  000EEE  AC68               	btfss	3944,6,c	;volatile
  3670  000EF0  D01E               	goto	l3774
  3671                           
  3672                           ;usb_device.c: 709: {
  3673                           ;usb_device.c: 711: if(UIEbits.SOFIE)
  3674  000EF2  AC69               	btfss	3945,6,c	;volatile
  3675  000EF4  D00E               	goto	l3762
  3676                           
  3677                           ;usb_device.c: 712: {
  3678                           ;usb_device.c: 713: USER_USB_CALLBACK_EVENT_HANDLER(EVENT_SOF,0,1);
  3679  000EF6  0E00               	movlw	0
  3680  000EF8  6E0E               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@event+1,c
  3681  000EFA  0E73               	movlw	115
  3682  000EFC  6E0D               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@event,c
  3683  000EFE  0E00               	movlw	0
  3684  000F00  6E0F               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@pdata,c
  3685  000F02  0E00               	movlw	0
  3686  000F04  6E10               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@pdata+1,c
  3687  000F06  0E00               	movlw	0
  3688  000F08  6E12               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@size+1,c
  3689  000F0A  0E01               	movlw	1
  3690  000F0C  6E11               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@size,c
  3691  000F0E  EC6E  F011         	call	_USER_USB_CALLBACK_EVENT_HANDLER	;wreg free
  3692  000F12                     l3762:
  3693                           
  3694                           ;usb_device.c: 714: }
  3695                           ;usb_device.c: 715: (UIR &= 0xBF);
  3696  000F12  9C68               	bcf	3944,6,c	;volatile
  3697                           
  3698                           ;usb_device.c: 718: USBIncrement1msInternalTimers();
  3699  000F14  EC78  F013         	call	_USBIncrement1msInternalTimers	;wreg free
  3700                           
  3701                           ;usb_device.c: 735: if(USBStatusStageTimeoutCounter != 0u)
  3702  000F18  0100               	movlb	0	; () banked
  3703  000F1A  51E5               	movf	_USBStatusStageTimeoutCounter& (0+255),w,b
  3704  000F1C  B4D8               	btfsc	status,2,c
  3705  000F1E  D002               	goto	l3770
  3706                           
  3707                           ; BSR set to: 0
  3708                           ;usb_device.c: 736: {
  3709                           ;usb_device.c: 737: USBStatusStageTimeoutCounter--;
  3710  000F20  0100               	movlb	0	; () banked
  3711  000F22  07E5               	decf	_USBStatusStageTimeoutCounter& (0+255),f,b
  3712  000F24                     l3770:
  3713                           
  3714                           ; BSR set to: 0
  3715                           ;usb_device.c: 738: }
  3716                           ;usb_device.c: 744: if(USBStatusStageTimeoutCounter == 0)
  3717  000F24  0100               	movlb	0	; () banked
  3718  000F26  51E5               	movf	_USBStatusStageTimeoutCounter& (0+255),w,b
  3719  000F28  B4D8               	btfsc	status,2,c
  3720                           
  3721                           ; BSR set to: 0
  3722                           ;usb_device.c: 745: {
  3723                           ;usb_device.c: 746: USBCtrlEPAllowStatusStage();
  3724  000F2A  EC45  F00C         	call	_USBCtrlEPAllowStatusStage	;wreg free
  3725  000F2E                     l3774:
  3726                           
  3727                           ;usb_device.c: 747: }
  3728                           ;usb_device.c: 749: }
  3729                           ;usb_device.c: 751: if(UIRbits.STALLIF && UIEbits.STALLIE)
  3730  000F2E  BA68               	btfsc	3944,5,c	;volatile
  3731  000F30  AA69               	btfss	3945,5,c	;volatile
  3732  000F32  D002               	goto	l3780
  3733                           
  3734                           ;usb_device.c: 752: {
  3735                           ;usb_device.c: 753: USBStallHandler();
  3736  000F34  ECEE  F011         	call	_USBStallHandler	;wreg free
  3737  000F38                     l3780:
  3738                           
  3739                           ;usb_device.c: 754: }
  3740                           ;usb_device.c: 756: if(UIRbits.UERRIF && UIEbits.UERRIE)
  3741  000F38  B268               	btfsc	3944,1,c	;volatile
  3742  000F3A  A269               	btfss	3945,1,c	;volatile
  3743  000F3C  D00F               	goto	l3788
  3744                           
  3745                           ;usb_device.c: 757: {
  3746                           ;usb_device.c: 758: USER_USB_CALLBACK_EVENT_HANDLER(EVENT_BUS_ERROR,0,1);
  3747  000F3E  0E7F               	movlw	127
  3748  000F40  6E0E               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@event+1,c
  3749  000F42  680D               	setf	USER_USB_CALLBACK_EVENT_HANDLER@event,c
  3750  000F44  0E00               	movlw	0
  3751  000F46  6E0F               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@pdata,c
  3752  000F48  0E00               	movlw	0
  3753  000F4A  6E10               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@pdata+1,c
  3754  000F4C  0E00               	movlw	0
  3755  000F4E  6E12               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@size+1,c
  3756  000F50  0E01               	movlw	1
  3757  000F52  6E11               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@size,c
  3758  000F54  EC6E  F011         	call	_USER_USB_CALLBACK_EVENT_HANDLER	;wreg free
  3759                           
  3760                           ;usb_device.c: 759: {UEIR = 0;};
  3761  000F58  0E00               	movlw	0
  3762  000F5A  6E6A               	movwf	3946,c	;volatile
  3763  000F5C                     l3788:
  3764                           
  3765                           ;usb_device.c: 767: }
  3766                           ;usb_device.c: 774: if(USBDeviceState < DEFAULT_STATE)
  3767  000F5C  0E04               	movlw	4
  3768  000F5E  605A               	cpfslt	_USBDeviceState,c
  3769  000F60  D002               	goto	l174
  3770                           
  3771                           ;usb_device.c: 775: {
  3772                           ;usb_device.c: 776: {PIR2bits.USBIF = 0;};
  3773  000F62  9AA1               	bcf	4001,5,c	;volatile
  3774                           
  3775                           ;usb_device.c: 777: return;
  3776  000F64  0012               	return	
  3777  000F66                     l174:
  3778                           
  3779                           ;usb_device.c: 778: }
  3780                           ;usb_device.c: 783: if(UIEbits.TRNIE)
  3781  000F66  A669               	btfss	3945,3,c	;volatile
  3782  000F68  D03E               	goto	l175
  3783                           
  3784                           ;usb_device.c: 784: {
  3785                           ;usb_device.c: 785: for(i = 0; i < 4u; i++)
  3786  000F6A  0E00               	movlw	0
  3787  000F6C  6E1C               	movwf	USBDeviceTasks@i,c
  3788  000F6E                     l3794:
  3789  000F6E  0E03               	movlw	3
  3790  000F70  641C               	cpfsgt	USBDeviceTasks@i,c
  3791  000F72  D001               	goto	l176
  3792  000F74  D038               	goto	l175
  3793  000F76                     l176:
  3794                           
  3795                           ;usb_device.c: 786: {
  3796                           ;usb_device.c: 787: if(UIRbits.TRNIF)
  3797  000F76  A668               	btfss	3944,3,c	;volatile
  3798  000F78  D036               	goto	l175
  3799                           
  3800                           ;usb_device.c: 788: {
  3801                           ;usb_device.c: 790: USTATcopy.Val = USTAT;
  3802  000F7A  CF6C F05F          	movff	3948,_USTATcopy	;volatile
  3803                           
  3804                           ;usb_device.c: 791: endpoint_number = USTATcopy.endpoint_number;
  3805  000F7E  305F               	rrcf	_USTATcopy,w,c
  3806  000F80  32E8               	rrcf	wreg,f,c
  3807  000F82  32E8               	rrcf	wreg,f,c
  3808  000F84  0B0F               	andlw	15
  3809  000F86  0100               	movlb	0	; () banked
  3810  000F88  6FE9               	movwf	_endpoint_number& (0+255),b
  3811                           
  3812                           ; BSR set to: 0
  3813                           ;usb_device.c: 793: (UIR &= 0xF7);
  3814  000F8A  9668               	bcf	3944,3,c	;volatile
  3815                           
  3816                           ; BSR set to: 0
  3817                           ;usb_device.c: 798: if(USTATcopy.direction == 0)
  3818  000F8C  B45F               	btfsc	_USTATcopy,2,c
  3819  000F8E  D008               	goto	l3808
  3820                           
  3821                           ; BSR set to: 0
  3822                           ;usb_device.c: 799: {
  3823                           ;usb_device.c: 800: ep_data_out[endpoint_number].bits.ping_pong_state ^= 1;
  3824  000F90  0100               	movlb	0	; () banked
  3825  000F92  51E9               	movf	_endpoint_number& (0+255),w,b
  3826  000F94  0D01               	mullw	1
  3827  000F96  0EDA               	movlw	low _ep_data_out
  3828  000F98  24F3               	addwf	prodl,w,c
  3829  000F9A  6ED9               	movwf	fsr2l,c
  3830  000F9C  0E00               	movlw	high _ep_data_out
  3831  000F9E  D007               	goto	L1
  3832  000FA0                     l3808:
  3833                           
  3834                           ; BSR set to: 0
  3835                           ;usb_device.c: 802: else
  3836                           ;usb_device.c: 803: {
  3837                           ;usb_device.c: 804: ep_data_in[endpoint_number].bits.ping_pong_state ^= 1;
  3838  000FA0  0100               	movlb	0	; () banked
  3839  000FA2  51E9               	movf	_endpoint_number& (0+255),w,b
  3840  000FA4  0D01               	mullw	1
  3841  000FA6  0ED8               	movlw	low _ep_data_in
  3842  000FA8  24F3               	addwf	prodl,w,c
  3843  000FAA  6ED9               	movwf	fsr2l,c
  3844  000FAC  0E00               	movlw	high _ep_data_in
  3845  000FAE                     L1:
  3846  000FAE  20F4               	addwfc	prodh,w,c
  3847  000FB0  6EDA               	movwf	fsr2h,c
  3848  000FB2  0100               	movlb	0	; () banked
  3849  000FB4  70DF               	btg	indf2,0,c
  3850                           
  3851                           ; BSR set to: 0
  3852                           ;usb_device.c: 805: }
  3853                           ;usb_device.c: 810: if(endpoint_number == 0)
  3854                           
  3855                           ; BSR set to: 0
  3856  000FB6  0100               	movlb	0	; () banked
  3857  000FB8  51E9               	movf	_endpoint_number& (0+255),w,b
  3858  000FBA  0100               	movlb	0	; () banked
  3859  000FBC  A4D8               	btfss	status,2,c
  3860  000FBE  D003               	goto	l3814
  3861                           
  3862                           ; BSR set to: 0
  3863                           ;usb_device.c: 811: {
  3864                           ;usb_device.c: 812: USBCtrlEPService();
  3865  000FC0  ECB3  F00E         	call	_USBCtrlEPService	;wreg free
  3866                           
  3867                           ;usb_device.c: 813: }
  3868  000FC4  D00E               	goto	l3816
  3869  000FC6                     l3814:
  3870                           
  3871                           ;usb_device.c: 814: else
  3872                           ;usb_device.c: 815: {
  3873                           ;usb_device.c: 816: USER_USB_CALLBACK_EVENT_HANDLER(EVENT_TRANSFER,(uint8_t*)&USTATcopy.
      +                          Val,0);
  3874  000FC6  0E00               	movlw	0
  3875  000FC8  6E0E               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@event+1,c
  3876  000FCA  0E72               	movlw	114
  3877  000FCC  6E0D               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@event,c
  3878  000FCE  0E5F               	movlw	low _USTATcopy
  3879  000FD0  6E0F               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@pdata,c
  3880  000FD2  0E00               	movlw	high _USTATcopy
  3881  000FD4  6E10               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@pdata+1,c
  3882  000FD6  0E00               	movlw	0
  3883  000FD8  6E12               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@size+1,c
  3884  000FDA  0E00               	movlw	0
  3885  000FDC  6E11               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@size,c
  3886  000FDE  EC6E  F011         	call	_USER_USB_CALLBACK_EVENT_HANDLER	;wreg free
  3887  000FE2                     l3816:
  3888  000FE2  2A1C               	incf	USBDeviceTasks@i,f,c
  3889  000FE4  D7C4               	goto	l3794
  3890  000FE6                     l175:
  3891                           
  3892                           ;usb_device.c: 822: }
  3893                           ;usb_device.c: 823: }
  3894                           ;usb_device.c: 824: }
  3895                           ;usb_device.c: 826: {PIR2bits.USBIF = 0;};
  3896  000FE6  9AA1               	bcf	4001,5,c	;volatile
  3897  000FE8  0012               	return		;funcret
  3898  000FEA                     __end_of_USBDeviceTasks:
  3899                           	opt stack 0
  3900                           tblptru	equ	0xFF8
  3901                           tblptrh	equ	0xFF7
  3902                           tblptrl	equ	0xFF6
  3903                           tablat	equ	0xFF5
  3904                           prodh	equ	0xFF4
  3905                           prodl	equ	0xFF3
  3906                           postinc0	equ	0xFEE
  3907                           wreg	equ	0xFE8
  3908                           indf1	equ	0xFE7
  3909                           postinc1	equ	0xFE6
  3910                           postdec1	equ	0xFE5
  3911                           fsr1h	equ	0xFE2
  3912                           fsr1l	equ	0xFE1
  3913                           indf2	equ	0xFDF
  3914                           postinc2	equ	0xFDE
  3915                           fsr2h	equ	0xFDA
  3916                           fsr2l	equ	0xFD9
  3917                           status	equ	0xFD8
  3918                           
  3919 ;; *************** function _USBWakeFromSuspend *****************
  3920 ;; Defined at:
  3921 ;;		line 2303 in file "usb/usb_device.c"
  3922 ;; Parameters:    Size  Location     Type
  3923 ;;		None
  3924 ;; Auto vars:     Size  Location     Type
  3925 ;;		None
  3926 ;; Return value:  Size  Location     Type
  3927 ;;                  1    wreg      void 
  3928 ;; Registers used:
  3929 ;;		wreg, fsr2l, fsr2h, status,2, status,0, prodl, prodh, cstack
  3930 ;; Tracked objects:
  3931 ;;		On entry : 0/0
  3932 ;;		On exit  : 0/0
  3933 ;;		Unchanged: 0/0
  3934 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  3935 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  3936 ;;      Locals:         0       0       0       0       0       0       0       0       0       0
  3937 ;;      Temps:          0       0       0       0       0       0       0       0       0       0
  3938 ;;      Totals:         0       0       0       0       0       0       0       0       0       0
  3939 ;;Total ram usage:        0 bytes
  3940 ;; Hardware stack levels used:    1
  3941 ;; Hardware stack levels required when called:    4
  3942 ;; This function calls:
  3943 ;;		_USER_USB_CALLBACK_EVENT_HANDLER
  3944 ;; This function is called by:
  3945 ;;		_USBDeviceTasks
  3946 ;; This function uses a non-reentrant model
  3947 ;;
  3948                           
  3949                           	psect	text17
  3950  00254C                     __ptext17:
  3951                           	opt stack 0
  3952  00254C                     _USBWakeFromSuspend:
  3953                           	opt stack 25
  3954                           
  3955                           ;usb_device.c: 2305: USBBusIsSuspended = 0;
  3956                           
  3957                           ;incstack = 0
  3958  00254C  0E00               	movlw	0
  3959  00254E  0100               	movlb	0	; () banked
  3960  002550  6FE0               	movwf	_USBBusIsSuspended& (0+255),b
  3961                           
  3962                           ; BSR set to: 0
  3963                           ;usb_device.c: 2311: USER_USB_CALLBACK_EVENT_HANDLER(EVENT_RESUME,0,0);
  3964  002552  0E00               	movlw	0
  3965  002554  6E0E               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@event+1,c
  3966  002556  0E74               	movlw	116
  3967  002558  6E0D               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@event,c
  3968  00255A  0E00               	movlw	0
  3969  00255C  6E0F               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@pdata,c
  3970  00255E  0E00               	movlw	0
  3971  002560  6E10               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@pdata+1,c
  3972  002562  0E00               	movlw	0
  3973  002564  6E12               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@size+1,c
  3974  002566  0E00               	movlw	0
  3975  002568  6E11               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@size,c
  3976  00256A  EC6E  F011         	call	_USER_USB_CALLBACK_EVENT_HANDLER	;wreg free
  3977                           
  3978                           ;usb_device.c: 2318: UCONbits.SUSPND = 0;
  3979  00256E  926D               	bcf	3949,1,c	;volatile
  3980                           
  3981                           ;usb_device.c: 2323: UIEbits.ACTVIE = 0;
  3982  002570  9469               	bcf	3945,2,c	;volatile
  3983                           
  3984                           ;usb_device.c: 2341: while(UIRbits.ACTVIF)
  3985  002572  D001               	goto	l3570
  3986  002574                     l3568:
  3987                           
  3988                           ;usb_device.c: 2343: {
  3989                           ;usb_device.c: 2344: (UIR &= 0xFB);
  3990  002574  9468               	bcf	3944,2,c	;volatile
  3991  002576                     l3570:
  3992  002576  B468               	btfsc	3944,2,c	;volatile
  3993  002578  D7FD               	goto	l3568
  3994                           
  3995                           ;usb_device.c: 2345: }
  3996                           ;usb_device.c: 2347: USBTicksSinceSuspendEnd = 0;
  3997  00257A  0E00               	movlw	0
  3998  00257C  0100               	movlb	0	; () banked
  3999  00257E  6FE6               	movwf	_USBTicksSinceSuspendEnd& (0+255),b
  4000                           
  4001                           ; BSR set to: 0
  4002  002580  0012               	return		;funcret
  4003  002582                     __end_of_USBWakeFromSuspend:
  4004                           	opt stack 0
  4005                           tblptru	equ	0xFF8
  4006                           tblptrh	equ	0xFF7
  4007                           tblptrl	equ	0xFF6
  4008                           tablat	equ	0xFF5
  4009                           prodh	equ	0xFF4
  4010                           prodl	equ	0xFF3
  4011                           postinc0	equ	0xFEE
  4012                           wreg	equ	0xFE8
  4013                           indf1	equ	0xFE7
  4014                           postinc1	equ	0xFE6
  4015                           postdec1	equ	0xFE5
  4016                           fsr1h	equ	0xFE2
  4017                           fsr1l	equ	0xFE1
  4018                           indf2	equ	0xFDF
  4019                           postinc2	equ	0xFDE
  4020                           fsr2h	equ	0xFDA
  4021                           fsr2l	equ	0xFD9
  4022                           status	equ	0xFD8
  4023                           
  4024 ;; *************** function _USBSuspend *****************
  4025 ;; Defined at:
  4026 ;;		line 2245 in file "usb/usb_device.c"
  4027 ;; Parameters:    Size  Location     Type
  4028 ;;		None
  4029 ;; Auto vars:     Size  Location     Type
  4030 ;;		None
  4031 ;; Return value:  Size  Location     Type
  4032 ;;                  1    wreg      void 
  4033 ;; Registers used:
  4034 ;;		wreg, fsr2l, fsr2h, status,2, status,0, prodl, prodh, cstack
  4035 ;; Tracked objects:
  4036 ;;		On entry : 0/0
  4037 ;;		On exit  : 0/0
  4038 ;;		Unchanged: 0/0
  4039 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  4040 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  4041 ;;      Locals:         0       0       0       0       0       0       0       0       0       0
  4042 ;;      Temps:          0       0       0       0       0       0       0       0       0       0
  4043 ;;      Totals:         0       0       0       0       0       0       0       0       0       0
  4044 ;;Total ram usage:        0 bytes
  4045 ;; Hardware stack levels used:    1
  4046 ;; Hardware stack levels required when called:    4
  4047 ;; This function calls:
  4048 ;;		_USER_USB_CALLBACK_EVENT_HANDLER
  4049 ;; This function is called by:
  4050 ;;		_USBDeviceTasks
  4051 ;; This function uses a non-reentrant model
  4052 ;;
  4053                           
  4054                           	psect	text18
  4055  0025E2                     __ptext18:
  4056                           	opt stack 0
  4057  0025E2                     _USBSuspend:
  4058                           	opt stack 25
  4059                           
  4060                           ;usb_device.c: 2270: UIEbits.ACTVIE = 1;
  4061                           
  4062                           ; BSR set to: 0
  4063                           ;incstack = 0
  4064  0025E2  8469               	bsf	3945,2,c	;volatile
  4065                           
  4066                           ;usb_device.c: 2271: (UIR &= 0xEF);
  4067  0025E4  9868               	bcf	3944,4,c	;volatile
  4068                           
  4069                           ;usb_device.c: 2274: UCONbits.SUSPND = 1;
  4070  0025E6  826D               	bsf	3949,1,c	;volatile
  4071                           
  4072                           ;usb_device.c: 2277: USBBusIsSuspended = 1;
  4073  0025E8  0E01               	movlw	1
  4074  0025EA  0100               	movlb	0	; () banked
  4075  0025EC  6FE0               	movwf	_USBBusIsSuspended& (0+255),b
  4076                           
  4077                           ; BSR set to: 0
  4078                           ;usb_device.c: 2278: USBTicksSinceSuspendEnd = 0;
  4079  0025EE  0E00               	movlw	0
  4080  0025F0  0100               	movlb	0	; () banked
  4081  0025F2  6FE6               	movwf	_USBTicksSinceSuspendEnd& (0+255),b
  4082                           
  4083                           ; BSR set to: 0
  4084                           ;usb_device.c: 2285: USER_USB_CALLBACK_EVENT_HANDLER(EVENT_SUSPEND,0,0);
  4085  0025F4  0E00               	movlw	0
  4086  0025F6  6E0E               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@event+1,c
  4087  0025F8  0E75               	movlw	117
  4088  0025FA  6E0D               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@event,c
  4089  0025FC  0E00               	movlw	0
  4090  0025FE  6E0F               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@pdata,c
  4091  002600  0E00               	movlw	0
  4092  002602  6E10               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@pdata+1,c
  4093  002604  0E00               	movlw	0
  4094  002606  6E12               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@size+1,c
  4095  002608  0E00               	movlw	0
  4096  00260A  6E11               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@size,c
  4097  00260C  EC6E  F011         	call	_USER_USB_CALLBACK_EVENT_HANDLER	;wreg free
  4098  002610  0012               	return		;funcret
  4099  002612                     __end_of_USBSuspend:
  4100                           	opt stack 0
  4101                           tblptru	equ	0xFF8
  4102                           tblptrh	equ	0xFF7
  4103                           tblptrl	equ	0xFF6
  4104                           tablat	equ	0xFF5
  4105                           prodh	equ	0xFF4
  4106                           prodl	equ	0xFF3
  4107                           postinc0	equ	0xFEE
  4108                           wreg	equ	0xFE8
  4109                           indf1	equ	0xFE7
  4110                           postinc1	equ	0xFE6
  4111                           postdec1	equ	0xFE5
  4112                           fsr1h	equ	0xFE2
  4113                           fsr1l	equ	0xFE1
  4114                           indf2	equ	0xFDF
  4115                           postinc2	equ	0xFDE
  4116                           fsr2h	equ	0xFDA
  4117                           fsr2l	equ	0xFD9
  4118                           status	equ	0xFD8
  4119                           
  4120 ;; *************** function _USBStallHandler *****************
  4121 ;; Defined at:
  4122 ;;		line 2202 in file "usb/usb_device.c"
  4123 ;; Parameters:    Size  Location     Type
  4124 ;;		None
  4125 ;; Auto vars:     Size  Location     Type
  4126 ;;		None
  4127 ;; Return value:  Size  Location     Type
  4128 ;;                  1    wreg      void 
  4129 ;; Registers used:
  4130 ;;		wreg, fsr2l, fsr2h, status,2, status,0
  4131 ;; Tracked objects:
  4132 ;;		On entry : 0/0
  4133 ;;		On exit  : 0/0
  4134 ;;		Unchanged: 0/0
  4135 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  4136 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  4137 ;;      Locals:         0       0       0       0       0       0       0       0       0       0
  4138 ;;      Temps:          1       0       0       0       0       0       0       0       0       0
  4139 ;;      Totals:         1       0       0       0       0       0       0       0       0       0
  4140 ;;Total ram usage:        1 bytes
  4141 ;; Hardware stack levels used:    1
  4142 ;; This function calls:
  4143 ;;		Nothing
  4144 ;; This function is called by:
  4145 ;;		_USBDeviceTasks
  4146 ;; This function uses a non-reentrant model
  4147 ;;
  4148                           
  4149                           	psect	text19
  4150  0023DC                     __ptext19:
  4151                           	opt stack 0
  4152  0023DC                     _USBStallHandler:
  4153                           	opt stack 29
  4154                           
  4155                           ;usb_device.c: 2214: if(UEP0bits.EPSTALL == 1)
  4156                           
  4157                           ;incstack = 0
  4158  0023DC  A070               	btfss	3952,0,c	;volatile
  4159  0023DE  D01D               	goto	l303
  4160                           
  4161                           ;usb_device.c: 2215: {
  4162                           ;usb_device.c: 2217: if((pBDTEntryEP0OutCurrent->STAT.Val == 0x80) && (pBDTEntryIn[0]->S
      +                          TAT.Val == (0x80|0x04)))
  4163  0023E0  C055  FFD9         	movff	_pBDTEntryEP0OutCurrent,fsr2l
  4164  0023E4  C056  FFDA         	movff	_pBDTEntryEP0OutCurrent+1,fsr2h
  4165  0023E8  0E80               	movlw	128
  4166  0023EA  18DE               	xorwf	postinc2,w,c
  4167  0023EC  A4D8               	btfss	status,2,c
  4168  0023EE  D014               	goto	l3606
  4169  0023F0  C051  FFD9         	movff	_pBDTEntryIn,fsr2l
  4170  0023F4  C052  FFDA         	movff	_pBDTEntryIn+1,fsr2h
  4171  0023F8  0E84               	movlw	132
  4172  0023FA  18DE               	xorwf	postinc2,w,c
  4173  0023FC  A4D8               	btfss	status,2,c
  4174  0023FE  D00C               	goto	l3606
  4175                           
  4176                           ;usb_device.c: 2218: {
  4177                           ;usb_device.c: 2220: pBDTEntryEP0OutCurrent->STAT.Val = 0x00|(0x08 & 0x08)|0x04;
  4178  002400  C055  FFD9         	movff	_pBDTEntryEP0OutCurrent,fsr2l
  4179  002404  C056  FFDA         	movff	_pBDTEntryEP0OutCurrent+1,fsr2h
  4180  002408  0E0C               	movlw	12
  4181  00240A  6EDF               	movwf	indf2,c
  4182                           
  4183                           ;usb_device.c: 2221: pBDTEntryEP0OutCurrent->STAT.Val |= 0x80;
  4184  00240C  C055  FFD9         	movff	_pBDTEntryEP0OutCurrent,fsr2l
  4185  002410  C056  FFDA         	movff	_pBDTEntryEP0OutCurrent+1,fsr2h
  4186  002414  0E00               	movlw	0
  4187  002416  8EDB               	bsf	plusw2,7,c
  4188  002418                     l3606:
  4189                           
  4190                           ;usb_device.c: 2222: }
  4191                           ;usb_device.c: 2223: UEP0bits.EPSTALL = 0;
  4192  002418  9070               	bcf	3952,0,c	;volatile
  4193  00241A                     l303:
  4194                           
  4195                           ;usb_device.c: 2224: }
  4196                           ;usb_device.c: 2226: (UIR &= 0xDF);
  4197  00241A  9A68               	bcf	3944,5,c	;volatile
  4198  00241C  0012               	return		;funcret
  4199  00241E                     __end_of_USBStallHandler:
  4200                           	opt stack 0
  4201                           tblptru	equ	0xFF8
  4202                           tblptrh	equ	0xFF7
  4203                           tblptrl	equ	0xFF6
  4204                           tablat	equ	0xFF5
  4205                           prodh	equ	0xFF4
  4206                           prodl	equ	0xFF3
  4207                           postinc0	equ	0xFEE
  4208                           wreg	equ	0xFE8
  4209                           indf1	equ	0xFE7
  4210                           postinc1	equ	0xFE6
  4211                           postdec1	equ	0xFE5
  4212                           fsr1h	equ	0xFE2
  4213                           fsr1l	equ	0xFE1
  4214                           indf2	equ	0xFDF
  4215                           postinc2	equ	0xFDE
  4216                           plusw2	equ	0xFDB
  4217                           fsr2h	equ	0xFDA
  4218                           fsr2l	equ	0xFD9
  4219                           status	equ	0xFD8
  4220                           
  4221 ;; *************** function _USBIncrement1msInternalTimers *****************
  4222 ;; Defined at:
  4223 ;;		line 3025 in file "usb/usb_device.c"
  4224 ;; Parameters:    Size  Location     Type
  4225 ;;		None
  4226 ;; Auto vars:     Size  Location     Type
  4227 ;;		None
  4228 ;; Return value:  Size  Location     Type
  4229 ;;                  1    wreg      void 
  4230 ;; Registers used:
  4231 ;;		wreg, status,2, status,0
  4232 ;; Tracked objects:
  4233 ;;		On entry : 0/0
  4234 ;;		On exit  : 0/0
  4235 ;;		Unchanged: 0/0
  4236 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  4237 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  4238 ;;      Locals:         0       0       0       0       0       0       0       0       0       0
  4239 ;;      Temps:          0       0       0       0       0       0       0       0       0       0
  4240 ;;      Totals:         0       0       0       0       0       0       0       0       0       0
  4241 ;;Total ram usage:        0 bytes
  4242 ;; Hardware stack levels used:    1
  4243 ;; This function calls:
  4244 ;;		Nothing
  4245 ;; This function is called by:
  4246 ;;		_USBDeviceTasks
  4247 ;; This function uses a non-reentrant model
  4248 ;;
  4249                           
  4250                           	psect	text20
  4251  0026F0                     __ptext20:
  4252                           	opt stack 0
  4253  0026F0                     _USBIncrement1msInternalTimers:
  4254                           	opt stack 29
  4255                           
  4256                           ;usb_device.c: 3033: USB1msTickCount++;
  4257                           
  4258                           ;incstack = 0
  4259  0026F0  0E01               	movlw	1
  4260  0026F2  0100               	movlb	0	; () banked
  4261  0026F4  27CC               	addwf	_USB1msTickCount& (0+255),f,b
  4262  0026F6  0E00               	movlw	0
  4263  0026F8  23CD               	addwfc	(_USB1msTickCount+1)& (0+255),f,b
  4264  0026FA  23CE               	addwfc	(_USB1msTickCount+2)& (0+255),f,b
  4265  0026FC  23CF               	addwfc	(_USB1msTickCount+3)& (0+255),f,b
  4266                           
  4267                           ; BSR set to: 0
  4268                           ;usb_device.c: 3034: if(USBBusIsSuspended == 0)
  4269  0026FE  0100               	movlb	0	; () banked
  4270  002700  51E0               	movf	_USBBusIsSuspended& (0+255),w,b
  4271  002702  A4D8               	btfss	status,2,c
  4272  002704  0012               	return	
  4273                           
  4274                           ; BSR set to: 0
  4275                           ;usb_device.c: 3035: {
  4276                           ;usb_device.c: 3036: USBTicksSinceSuspendEnd++;
  4277  002706  0100               	movlb	0	; () banked
  4278  002708  2BE6               	incf	_USBTicksSinceSuspendEnd& (0+255),f,b
  4279                           
  4280                           ; BSR set to: 0
  4281                           ;usb_device.c: 3038: if(USBTicksSinceSuspendEnd == 0)
  4282  00270A  0100               	movlb	0	; () banked
  4283  00270C  51E6               	movf	_USBTicksSinceSuspendEnd& (0+255),w,b
  4284  00270E  A4D8               	btfss	status,2,c
  4285  002710  0012               	return	
  4286                           
  4287                           ; BSR set to: 0
  4288                           ;usb_device.c: 3039: {
  4289                           ;usb_device.c: 3040: USBTicksSinceSuspendEnd = 255;
  4290  002712  0100               	movlb	0	; () banked
  4291  002714  69E6               	setf	_USBTicksSinceSuspendEnd& (0+255),b
  4292                           
  4293                           ; BSR set to: 0
  4294  002716  0012               	return	
  4295  002718                     __end_of_USBIncrement1msInternalTimers:
  4296                           	opt stack 0
  4297                           tblptru	equ	0xFF8
  4298                           tblptrh	equ	0xFF7
  4299                           tblptrl	equ	0xFF6
  4300                           tablat	equ	0xFF5
  4301                           prodh	equ	0xFF4
  4302                           prodl	equ	0xFF3
  4303                           postinc0	equ	0xFEE
  4304                           wreg	equ	0xFE8
  4305                           indf1	equ	0xFE7
  4306                           postinc1	equ	0xFE6
  4307                           postdec1	equ	0xFE5
  4308                           fsr1h	equ	0xFE2
  4309                           fsr1l	equ	0xFE1
  4310                           indf2	equ	0xFDF
  4311                           postinc2	equ	0xFDE
  4312                           plusw2	equ	0xFDB
  4313                           fsr2h	equ	0xFDA
  4314                           fsr2l	equ	0xFD9
  4315                           status	equ	0xFD8
  4316                           
  4317 ;; *************** function _USBDeviceInit *****************
  4318 ;; Defined at:
  4319 ;;		line 277 in file "usb/usb_device.c"
  4320 ;; Parameters:    Size  Location     Type
  4321 ;;		None
  4322 ;; Auto vars:     Size  Location     Type
  4323 ;;  i               1    8[COMRAM] unsigned char 
  4324 ;; Return value:  Size  Location     Type
  4325 ;;                  1    wreg      void 
  4326 ;; Registers used:
  4327 ;;		wreg, fsr2l, fsr2h, status,2, status,0, prodl, prodh, cstack
  4328 ;; Tracked objects:
  4329 ;;		On entry : 0/0
  4330 ;;		On exit  : 0/0
  4331 ;;		Unchanged: 0/0
  4332 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  4333 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  4334 ;;      Locals:         1       0       0       0       0       0       0       0       0       0
  4335 ;;      Temps:          0       0       0       0       0       0       0       0       0       0
  4336 ;;      Totals:         1       0       0       0       0       0       0       0       0       0
  4337 ;;Total ram usage:        1 bytes
  4338 ;; Hardware stack levels used:    1
  4339 ;; Hardware stack levels required when called:    1
  4340 ;; This function calls:
  4341 ;;		_memset
  4342 ;; This function is called by:
  4343 ;;		_USBDeviceTasks
  4344 ;;		_main
  4345 ;; This function uses a non-reentrant model
  4346 ;;
  4347                           
  4348                           	psect	text21
  4349  001148                     __ptext21:
  4350                           	opt stack 0
  4351  001148                     _USBDeviceInit:
  4352                           	opt stack 28
  4353                           
  4354                           ;usb_device.c: 279: uint8_t i;
  4355                           ;usb_device.c: 281: {PIE2bits.USBIE = 0;};
  4356                           
  4357                           ; BSR set to: 0
  4358                           ;incstack = 0
  4359  001148  9AA0               	bcf	4000,5,c	;volatile
  4360                           
  4361                           ;usb_device.c: 285: ;
  4362                           ;usb_device.c: 288: {UEIR = 0;};
  4363  00114A  0E00               	movlw	0
  4364  00114C  6E6A               	movwf	3946,c	;volatile
  4365                           
  4366                           ;usb_device.c: 291: {UIR = 0;};
  4367  00114E  0E00               	movlw	0
  4368  001150  6E68               	movwf	3944,c	;volatile
  4369                           
  4370                           ;usb_device.c: 294: UEP0 = 0;
  4371  001152  0E00               	movlw	0
  4372  001154  6E70               	movwf	3952,c	;volatile
  4373                           
  4374                           ;usb_device.c: 296: memset((void*)&UEP1,0x00,(1));;
  4375  001156  0E71               	movlw	113
  4376  001158  6E01               	movwf	memset@p1,c
  4377  00115A  0E0F               	movlw	15
  4378  00115C  6E02               	movwf	memset@p1+1,c
  4379  00115E  0E00               	movlw	0
  4380  001160  6E04               	movwf	memset@c+1,c
  4381  001162  0E00               	movlw	0
  4382  001164  6E03               	movwf	memset@c,c
  4383  001166  0E00               	movlw	0
  4384  001168  6E06               	movwf	memset@n+1,c
  4385  00116A  0E01               	movlw	1
  4386  00116C  6E05               	movwf	memset@n,c
  4387  00116E  EC4E  F013         	call	_memset	;wreg free
  4388                           
  4389                           ;usb_device.c: 298: { UCFG = 0x10 | 0x00 | 0x04 | 0x02; UEIE = 0x9F; UIE = 0x39 | 0x40 |
      +                           0x02; };
  4390  001172  0E16               	movlw	22
  4391  001174  6E6F               	movwf	3951,c	;volatile
  4392  001176  0E9F               	movlw	159
  4393  001178  6E6B               	movwf	3947,c	;volatile
  4394  00117A  0E7B               	movlw	123
  4395  00117C  6E69               	movwf	3945,c	;volatile
  4396                           
  4397                           ;usb_device.c: 301: ;
  4398                           ;usb_device.c: 304: ;
  4399                           ;usb_device.c: 307: for(i = 0; i < (sizeof(BDT)/sizeof(BDT_ENTRY)); i++)
  4400  00117E  0E00               	movlw	0
  4401  001180  6E09               	movwf	USBDeviceInit@i,c
  4402  001182                     l3502:
  4403  001182  0E07               	movlw	7
  4404  001184  6409               	cpfsgt	USBDeviceInit@i,c
  4405  001186  D001               	goto	l3506
  4406  001188  D00E               	goto	l148
  4407  00118A                     l3506:
  4408                           
  4409                           ;usb_device.c: 308: {
  4410                           ;usb_device.c: 309: BDT[i].Val = 0x00;
  4411  00118A  5009               	movf	USBDeviceInit@i,w,c
  4412  00118C  0D04               	mullw	4
  4413  00118E  0E00               	movlw	0
  4414  001190  24F3               	addwf	prodl,w,c
  4415  001192  6ED9               	movwf	fsr2l,c
  4416  001194  0E04               	movlw	4
  4417  001196  20F4               	addwfc	prodh,w,c
  4418  001198  6EDA               	movwf	fsr2h,c
  4419  00119A  6ADE               	clrf	postinc2,c
  4420  00119C  6ADE               	clrf	postinc2,c
  4421  00119E  6ADE               	clrf	postinc2,c
  4422  0011A0  6ADD               	clrf	postdec2,c
  4423  0011A2  2A09               	incf	USBDeviceInit@i,f,c
  4424  0011A4  D7EE               	goto	l3502
  4425  0011A6                     l148:
  4426                           
  4427                           ;usb_device.c: 310: }
  4428                           ;usb_device.c: 313: UCONbits.PPBRST = 1;
  4429  0011A6  8C6D               	bsf	3949,6,c	;volatile
  4430                           
  4431                           ;usb_device.c: 316: UADDR = 0x00;
  4432  0011A8  0E00               	movlw	0
  4433  0011AA  6E6E               	movwf	3950,c	;volatile
  4434                           
  4435                           ;usb_device.c: 319: UCONbits.PKTDIS = 0;
  4436  0011AC  986D               	bcf	3949,4,c	;volatile
  4437                           
  4438                           ;usb_device.c: 322: UCONbits.PPBRST = 0;
  4439  0011AE  9C6D               	bcf	3949,6,c	;volatile
  4440  0011B0                     l3518:
  4441                           
  4442                           ;usb_device.c: 326: {
  4443                           ;usb_device.c: 327: (UIR &= 0xF7);
  4444  0011B0  9668               	bcf	3944,3,c	;volatile
  4445                           
  4446                           ;usb_device.c: 329: inPipes[0].info.Val = 0;
  4447  0011B2  0E00               	movlw	0
  4448  0011B4  6E4E               	movwf	_inPipes+3,c
  4449                           
  4450                           ;usb_device.c: 330: outPipes[0].info.Val = 0;
  4451  0011B6  0E00               	movlw	0
  4452  0011B8  0100               	movlb	0	; () banked
  4453  0011BA  6FC7               	movwf	(_outPipes+3)& (0+255),b
  4454                           
  4455                           ; BSR set to: 0
  4456                           ;usb_device.c: 331: outPipes[0].wCount.Val = 0;
  4457  0011BC  0E00               	movlw	0
  4458  0011BE  0100               	movlb	0	; () banked
  4459  0011C0  6FC9               	movwf	(_outPipes+5)& (0+255),b
  4460  0011C2  0E00               	movlw	0
  4461  0011C4  6FC8               	movwf	(_outPipes+4)& (0+255),b
  4462                           
  4463                           ; BSR set to: 0
  4464                           ;usb_device.c: 332: }while(UIRbits.TRNIF == 1);
  4465  0011C6  B668               	btfsc	3944,3,c	;volatile
  4466  0011C8  D7F3               	goto	l3518
  4467                           
  4468                           ; BSR set to: 0
  4469                           ;usb_device.c: 336: USBStatusStageEnabledFlag1 = 1;
  4470                           
  4471                           ; BSR set to: 0
  4472  0011CA  0E01               	movlw	1
  4473  0011CC  0100               	movlb	0	; () banked
  4474  0011CE  6FE3               	movwf	_USBStatusStageEnabledFlag1& (0+255),b	;volatile
  4475                           
  4476                           ;usb_device.c: 337: USBStatusStageEnabledFlag2 = 1;
  4477  0011D0  0E01               	movlw	1
  4478  0011D2  0100               	movlb	0	; () banked
  4479  0011D4  6FE4               	movwf	_USBStatusStageEnabledFlag2& (0+255),b	;volatile
  4480                           
  4481                           ;usb_device.c: 339: USBDeferINDataStagePackets = 0;
  4482  0011D6  0E00               	movlw	0
  4483  0011D8  0100               	movlb	0	; () banked
  4484  0011DA  6FE1               	movwf	_USBDeferINDataStagePackets& (0+255),b	;volatile
  4485                           
  4486                           ;usb_device.c: 340: USBDeferOUTDataStagePackets = 0;
  4487  0011DC  0E00               	movlw	0
  4488  0011DE  0100               	movlb	0	; () banked
  4489  0011E0  6FE2               	movwf	_USBDeferOUTDataStagePackets& (0+255),b	;volatile
  4490                           
  4491                           ;usb_device.c: 341: USBBusIsSuspended = 0;
  4492  0011E2  0E00               	movlw	0
  4493  0011E4  0100               	movlb	0	; () banked
  4494  0011E6  6FE0               	movwf	_USBBusIsSuspended& (0+255),b
  4495                           
  4496                           ;usb_device.c: 345: for(i = 0; i < (uint8_t)(1+1u); i++)
  4497  0011E8  0E00               	movlw	0
  4498  0011EA  6E09               	movwf	USBDeviceInit@i,c
  4499  0011EC                     l3530:
  4500                           
  4501                           ; BSR set to: 0
  4502  0011EC  0E01               	movlw	1
  4503  0011EE  6409               	cpfsgt	USBDeviceInit@i,c
  4504  0011F0  D001               	goto	l3534
  4505  0011F2  D02E               	goto	l3540
  4506  0011F4                     l3534:
  4507                           
  4508                           ;usb_device.c: 346: {
  4509                           ;usb_device.c: 347: pBDTEntryIn[i] = 0u;
  4510  0011F4  5009               	movf	USBDeviceInit@i,w,c
  4511  0011F6  0D02               	mullw	2
  4512  0011F8  0E51               	movlw	low _pBDTEntryIn
  4513  0011FA  24F3               	addwf	prodl,w,c
  4514  0011FC  6ED9               	movwf	fsr2l,c
  4515  0011FE  0E00               	movlw	high _pBDTEntryIn
  4516  001200  20F4               	addwfc	prodh,w,c
  4517  001202  6EDA               	movwf	fsr2h,c
  4518  001204  0E00               	movlw	0
  4519  001206  6EDE               	movwf	postinc2,c
  4520  001208  0E00               	movlw	0
  4521  00120A  6EDD               	movwf	postdec2,c
  4522                           
  4523                           ;usb_device.c: 348: pBDTEntryOut[i] = 0u;
  4524  00120C  5009               	movf	USBDeviceInit@i,w,c
  4525  00120E  0D02               	mullw	2
  4526  001210  0ED0               	movlw	low _pBDTEntryOut
  4527  001212  24F3               	addwf	prodl,w,c
  4528  001214  6ED9               	movwf	fsr2l,c
  4529  001216  0E00               	movlw	high _pBDTEntryOut
  4530  001218  20F4               	addwfc	prodh,w,c
  4531  00121A  6EDA               	movwf	fsr2h,c
  4532  00121C  0E00               	movlw	0
  4533  00121E  6EDE               	movwf	postinc2,c
  4534  001220  0E00               	movlw	0
  4535  001222  6EDD               	movwf	postdec2,c
  4536                           
  4537                           ;usb_device.c: 349: ep_data_in[i].Val = 0u;
  4538  001224  5009               	movf	USBDeviceInit@i,w,c
  4539  001226  0D01               	mullw	1
  4540  001228  0ED8               	movlw	low _ep_data_in
  4541  00122A  24F3               	addwf	prodl,w,c
  4542  00122C  6ED9               	movwf	fsr2l,c
  4543  00122E  0E00               	movlw	high _ep_data_in
  4544  001230  20F4               	addwfc	prodh,w,c
  4545  001232  6EDA               	movwf	fsr2h,c
  4546  001234  0E00               	movlw	0
  4547  001236  6EDF               	movwf	indf2,c
  4548                           
  4549                           ;usb_device.c: 350: ep_data_out[i].Val = 0u;
  4550  001238  5009               	movf	USBDeviceInit@i,w,c
  4551  00123A  0D01               	mullw	1
  4552  00123C  0EDA               	movlw	low _ep_data_out
  4553  00123E  24F3               	addwf	prodl,w,c
  4554  001240  6ED9               	movwf	fsr2l,c
  4555  001242  0E00               	movlw	high _ep_data_out
  4556  001244  20F4               	addwfc	prodh,w,c
  4557  001246  6EDA               	movwf	fsr2h,c
  4558  001248  0E00               	movlw	0
  4559  00124A  6EDF               	movwf	indf2,c
  4560  00124C  2A09               	incf	USBDeviceInit@i,f,c
  4561  00124E  D7CE               	goto	l3530
  4562  001250                     l3540:
  4563                           
  4564                           ;usb_device.c: 351: }
  4565                           ;usb_device.c: 354: pBDTEntryIn[0] = (volatile BDT_ENTRY*)&BDT[2];
  4566  001250  0E08               	movlw	8
  4567  001252  6E51               	movwf	_pBDTEntryIn,c
  4568  001254  0E04               	movlw	4
  4569  001256  6E52               	movwf	_pBDTEntryIn+1,c
  4570                           
  4571                           ;usb_device.c: 356: UEP0 = 0x06|0x10;
  4572  001258  0E16               	movlw	22
  4573  00125A  6E70               	movwf	3952,c	;volatile
  4574                           
  4575                           ;usb_device.c: 358: BDT[0].ADR = ((uint16_t)(&SetupPkt));
  4576  00125C  0E04               	movlw	4
  4577  00125E  0104               	movlb	4	; () banked
  4578  001260  6F03               	movwf	3,b	;volatile
  4579  001262  0E20               	movlw	32
  4580  001264  6F02               	movwf	2,b	;volatile
  4581                           
  4582                           ; BSR set to: 4
  4583                           ;usb_device.c: 359: BDT[0].CNT = 8;
  4584  001266  0E08               	movlw	8
  4585  001268  0104               	movlb	4	; () banked
  4586  00126A  6F01               	movwf	1,b	;volatile
  4587                           
  4588                           ; BSR set to: 4
  4589                           ;usb_device.c: 360: BDT[0].STAT.Val = 0x00|0x04;
  4590  00126C  0E04               	movlw	4
  4591  00126E  0104               	movlb	4	; () banked
  4592  001270  6F00               	movwf	0,b	;volatile
  4593                           
  4594                           ; BSR set to: 4
  4595                           ;usb_device.c: 361: BDT[0].STAT.Val |= 0x80;
  4596  001272  0104               	movlb	4	; () banked
  4597  001274  8F00               	bsf	0,7,b	;volatile
  4598                           
  4599                           ; BSR set to: 4
  4600                           ;usb_device.c: 364: USBActiveConfiguration = 0;
  4601  001276  0E00               	movlw	0
  4602  001278  6E5D               	movwf	_USBActiveConfiguration,c
  4603                           
  4604                           ; BSR set to: 4
  4605                           ;usb_device.c: 366: USB1msTickCount = 0;
  4606  00127A  0E00               	movlw	0
  4607  00127C  0100               	movlb	0	; () banked
  4608  00127E  6FCC               	movwf	_USB1msTickCount& (0+255),b
  4609  001280  0E00               	movlw	0
  4610  001282  6FCD               	movwf	(_USB1msTickCount+1)& (0+255),b
  4611  001284  0E00               	movlw	0
  4612  001286  6FCE               	movwf	(_USB1msTickCount+2)& (0+255),b
  4613  001288  0E00               	movlw	0
  4614  00128A  6FCF               	movwf	(_USB1msTickCount+3)& (0+255),b
  4615                           
  4616                           ; BSR set to: 0
  4617                           ;usb_device.c: 367: USBTicksSinceSuspendEnd = 0;
  4618  00128C  0E00               	movlw	0
  4619  00128E  0100               	movlb	0	; () banked
  4620  001290  6FE6               	movwf	_USBTicksSinceSuspendEnd& (0+255),b
  4621                           
  4622                           ; BSR set to: 0
  4623                           ;usb_device.c: 370: USBDeviceState = DETACHED_STATE;
  4624  001292  0E00               	movlw	0
  4625  001294  6E5A               	movwf	_USBDeviceState,c
  4626                           
  4627                           ; BSR set to: 0
  4628  001296  0012               	return		;funcret
  4629  001298                     __end_of_USBDeviceInit:
  4630                           	opt stack 0
  4631                           tblptru	equ	0xFF8
  4632                           tblptrh	equ	0xFF7
  4633                           tblptrl	equ	0xFF6
  4634                           tablat	equ	0xFF5
  4635                           prodh	equ	0xFF4
  4636                           prodl	equ	0xFF3
  4637                           postinc0	equ	0xFEE
  4638                           wreg	equ	0xFE8
  4639                           indf1	equ	0xFE7
  4640                           postinc1	equ	0xFE6
  4641                           postdec1	equ	0xFE5
  4642                           fsr1h	equ	0xFE2
  4643                           fsr1l	equ	0xFE1
  4644                           indf2	equ	0xFDF
  4645                           postinc2	equ	0xFDE
  4646                           postdec2	equ	0xFDD
  4647                           plusw2	equ	0xFDB
  4648                           fsr2h	equ	0xFDA
  4649                           fsr2l	equ	0xFD9
  4650                           status	equ	0xFD8
  4651                           
  4652 ;; *************** function _USBCtrlEPService *****************
  4653 ;; Defined at:
  4654 ;;		line 2372 in file "usb/usb_device.c"
  4655 ;; Parameters:    Size  Location     Type
  4656 ;;		None
  4657 ;; Auto vars:     Size  Location     Type
  4658 ;;		None
  4659 ;; Return value:  Size  Location     Type
  4660 ;;                  1    wreg      void 
  4661 ;; Registers used:
  4662 ;;		wreg, fsr1l, fsr1h, fsr2l, fsr2h, status,2, status,0, tblptrl, tblptrh, tblptru, prodl, prodh, cstack
  4663 ;; Tracked objects:
  4664 ;;		On entry : 0/0
  4665 ;;		On exit  : 0/0
  4666 ;;		Unchanged: 0/0
  4667 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  4668 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  4669 ;;      Locals:         0       0       0       0       0       0       0       0       0       0
  4670 ;;      Temps:          1       0       0       0       0       0       0       0       0       0
  4671 ;;      Totals:         1       0       0       0       0       0       0       0       0       0
  4672 ;;Total ram usage:        1 bytes
  4673 ;; Hardware stack levels used:    1
  4674 ;; Hardware stack levels required when called:    7
  4675 ;; This function calls:
  4676 ;;		_USBCtrlTrfInHandler
  4677 ;;		_USBCtrlTrfOutHandler
  4678 ;;		_USBCtrlTrfSetupHandler
  4679 ;;		_memcpy
  4680 ;; This function is called by:
  4681 ;;		_USBDeviceTasks
  4682 ;; This function uses a non-reentrant model
  4683 ;;
  4684                           
  4685                           	psect	text22
  4686  001D66                     __ptext22:
  4687                           	opt stack 0
  4688  001D66                     _USBCtrlEPService:
  4689                           	opt stack 22
  4690                           
  4691                           ;usb_device.c: 2378: USBStatusStageTimeoutCounter = (uint8_t)45;
  4692                           
  4693                           ; BSR set to: 0
  4694                           ;incstack = 0
  4695  001D66  0E2D               	movlw	45
  4696  001D68  0100               	movlb	0	; () banked
  4697  001D6A  6FE5               	movwf	_USBStatusStageTimeoutCounter& (0+255),b
  4698                           
  4699                           ; BSR set to: 0
  4700                           ;usb_device.c: 2382: if((USTATcopy.Val & ~0x02) == 0x00)
  4701  001D6C  C05F  F01B         	movff	_USTATcopy,??_USBCtrlEPService
  4702  001D70  0EFD               	movlw	253
  4703  001D72  161B               	andwf	??_USBCtrlEPService,f,c
  4704  001D74  A4D8               	btfss	status,2,c
  4705  001D76  D03B               	goto	l3626
  4706                           
  4707                           ; BSR set to: 0
  4708                           ;usb_device.c: 2383: {
  4709                           ;usb_device.c: 2386: pBDTEntryEP0OutCurrent = (volatile BDT_ENTRY*)&BDT[(USTATcopy.Val &
      +                           0x7E)>>1];
  4710  001D78  C05F  F01B         	movff	_USTATcopy,??_USBCtrlEPService
  4711  001D7C  90D8               	bcf	status,0,c
  4712  001D7E  321B               	rrcf	??_USBCtrlEPService,f,c
  4713  001D80  0E3F               	movlw	63
  4714  001D82  161B               	andwf	??_USBCtrlEPService,f,c
  4715  001D84  501B               	movf	??_USBCtrlEPService,w,c
  4716  001D86  0D04               	mullw	4
  4717  001D88  0E00               	movlw	0
  4718  001D8A  24F3               	addwf	prodl,w,c
  4719  001D8C  6E55               	movwf	_pBDTEntryEP0OutCurrent,c
  4720  001D8E  0E04               	movlw	4
  4721  001D90  20F4               	addwfc	prodh,w,c
  4722  001D92  6E56               	movwf	_pBDTEntryEP0OutCurrent+1,c
  4723                           
  4724                           ; BSR set to: 0
  4725                           ;usb_device.c: 2394: pBDTEntryEP0OutNext = pBDTEntryEP0OutCurrent;
  4726  001D94  C055  F057         	movff	_pBDTEntryEP0OutCurrent,_pBDTEntryEP0OutNext
  4727  001D98  C056  F058         	movff	_pBDTEntryEP0OutCurrent+1,_pBDTEntryEP0OutNext+1
  4728                           
  4729                           ; BSR set to: 0
  4730                           ;usb_device.c: 2396: pBDTEntryEP0OutNext = (volatile BDT_ENTRY*)(((uintptr_t)pBDTEntryEP
      +                          0OutNext) ^ 0x0004);
  4731  001D9C  0E04               	movlw	4
  4732  001D9E  1857               	xorwf	_pBDTEntryEP0OutNext,w,c
  4733  001DA0  6E57               	movwf	_pBDTEntryEP0OutNext,c
  4734  001DA2  5058               	movf	_pBDTEntryEP0OutNext+1,w,c
  4735  001DA4  6E58               	movwf	_pBDTEntryEP0OutNext+1,c
  4736                           
  4737                           ; BSR set to: 0
  4738                           ;usb_device.c: 2399: if(pBDTEntryEP0OutCurrent->STAT.PID == 0xD)
  4739  001DA6  C055  FFD9         	movff	_pBDTEntryEP0OutCurrent,fsr2l
  4740  001DAA  C056  FFDA         	movff	_pBDTEntryEP0OutCurrent+1,fsr2h
  4741  001DAE  30DF               	rrcf	indf2,w,c
  4742  001DB0  32E8               	rrcf	wreg,f,c
  4743  001DB2  0B0F               	andlw	15
  4744  001DB4  0A0D               	xorlw	13
  4745  001DB6  A4D8               	btfss	status,2,c
  4746  001DB8  D017               	goto	l3624
  4747                           
  4748                           ; BSR set to: 0
  4749                           ;usb_device.c: 2400: {
  4750                           ;usb_device.c: 2405: memcpy((uint8_t*)&SetupPkt, (uint8_t*)((void *)(pBDTEntryEP0OutCurr
      +                          ent->ADR)), 8);
  4751  001DBA  0E20               	movlw	32
  4752  001DBC  6E01               	movwf	memcpy@d1,c
  4753  001DBE  0E04               	movlw	4
  4754  001DC0  6E02               	movwf	memcpy@d1+1,c
  4755  001DC2  EE20 F002          	lfsr	2,2
  4756  001DC6  5055               	movf	_pBDTEntryEP0OutCurrent,w,c
  4757  001DC8  26D9               	addwf	fsr2l,f,c
  4758  001DCA  5056               	movf	_pBDTEntryEP0OutCurrent+1,w,c
  4759  001DCC  22DA               	addwfc	fsr2h,f,c
  4760  001DCE  CFDE F003          	movff	postinc2,memcpy@s1
  4761  001DD2  CFDD F004          	movff	postdec2,memcpy@s1+1
  4762  001DD6  0E00               	movlw	0
  4763  001DD8  6E06               	movwf	memcpy@n+1,c
  4764  001DDA  0E08               	movlw	8
  4765  001DDC  6E05               	movwf	memcpy@n,c
  4766  001DDE  EC2F  F012         	call	_memcpy	;wreg free
  4767                           
  4768                           ;usb_device.c: 2408: USBCtrlTrfSetupHandler();
  4769  001DE2  ECFF  F00E         	call	_USBCtrlTrfSetupHandler	;wreg free
  4770                           
  4771                           ;usb_device.c: 2409: }
  4772  001DE6  0012               	return	
  4773  001DE8                     l3624:
  4774                           
  4775                           ;usb_device.c: 2410: else
  4776                           ;usb_device.c: 2411: {
  4777                           ;usb_device.c: 2413: USBCtrlTrfOutHandler();
  4778  001DE8  EC13  F011         	call	_USBCtrlTrfOutHandler	;wreg free
  4779                           
  4780                           ;usb_device.c: 2414: }
  4781                           ;usb_device.c: 2415: }
  4782  001DEC  0012               	return	
  4783  001DEE                     l3626:
  4784                           
  4785                           ;usb_device.c: 2416: else if((USTATcopy.Val & ~0x02) == 0x04)
  4786  001DEE  505F               	movf	_USTATcopy,w,c
  4787  001DF0  0BFD               	andlw	253
  4788  001DF2  0A04               	xorlw	4
  4789  001DF4  A4D8               	btfss	status,2,c
  4790  001DF6  0012               	return	
  4791                           
  4792                           ;usb_device.c: 2417: {
  4793                           ;usb_device.c: 2420: USBCtrlTrfInHandler();
  4794  001DF8  EC13  F00D         	call	_USBCtrlTrfInHandler	;wreg free
  4795  001DFC  0012               	return	
  4796  001DFE                     __end_of_USBCtrlEPService:
  4797                           	opt stack 0
  4798                           tblptru	equ	0xFF8
  4799                           tblptrh	equ	0xFF7
  4800                           tblptrl	equ	0xFF6
  4801                           tablat	equ	0xFF5
  4802                           prodh	equ	0xFF4
  4803                           prodl	equ	0xFF3
  4804                           postinc0	equ	0xFEE
  4805                           wreg	equ	0xFE8
  4806                           indf1	equ	0xFE7
  4807                           postinc1	equ	0xFE6
  4808                           postdec1	equ	0xFE5
  4809                           fsr1h	equ	0xFE2
  4810                           fsr1l	equ	0xFE1
  4811                           indf2	equ	0xFDF
  4812                           postinc2	equ	0xFDE
  4813                           postdec2	equ	0xFDD
  4814                           plusw2	equ	0xFDB
  4815                           fsr2h	equ	0xFDA
  4816                           fsr2l	equ	0xFD9
  4817                           status	equ	0xFD8
  4818                           
  4819 ;; *************** function _memcpy *****************
  4820 ;; Defined at:
  4821 ;;		line 11 in file "C:\Program Files (x86)\Microchip\xc8\v1.38\sources\common\memcpy.c"
  4822 ;; Parameters:    Size  Location     Type
  4823 ;;  d1              2    0[COMRAM] PTR void 
  4824 ;;		 -> SetupPkt(8), 
  4825 ;;  s1              2    2[COMRAM] PTR const void 
  4826 ;;		 -> midiData(4), ReceivedDataBuffer(64), CtrlTrfData(8), RAM(2047), 
  4827 ;;		 -> SetupPkt(8), 
  4828 ;;  n               2    4[COMRAM] unsigned int 
  4829 ;; Auto vars:     Size  Location     Type
  4830 ;;  s               2    8[COMRAM] PTR const unsigned char 
  4831 ;;		 -> midiData(4), ReceivedDataBuffer(64), CtrlTrfData(8), RAM(2047), 
  4832 ;;		 -> SetupPkt(8), 
  4833 ;;  d               2    6[COMRAM] PTR unsigned char 
  4834 ;;		 -> SetupPkt(8), 
  4835 ;; Return value:  Size  Location     Type
  4836 ;;                  2    0[COMRAM] PTR void 
  4837 ;; Registers used:
  4838 ;;		wreg, fsr1l, fsr1h, fsr2l, fsr2h, status,2, status,0
  4839 ;; Tracked objects:
  4840 ;;		On entry : 0/0
  4841 ;;		On exit  : 0/0
  4842 ;;		Unchanged: 0/0
  4843 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  4844 ;;      Params:         6       0       0       0       0       0       0       0       0       0
  4845 ;;      Locals:         4       0       0       0       0       0       0       0       0       0
  4846 ;;      Temps:          0       0       0       0       0       0       0       0       0       0
  4847 ;;      Totals:        10       0       0       0       0       0       0       0       0       0
  4848 ;;Total ram usage:       10 bytes
  4849 ;; Hardware stack levels used:    1
  4850 ;; This function calls:
  4851 ;;		Nothing
  4852 ;; This function is called by:
  4853 ;;		_USBCtrlEPService
  4854 ;; This function uses a non-reentrant model
  4855 ;;
  4856                           
  4857                           	psect	text23
  4858  00245E                     __ptext23:
  4859                           	opt stack 0
  4860  00245E                     _memcpy:
  4861                           	opt stack 28
  4862                           
  4863                           ;incstack = 0
  4864  00245E  C003  F009         	movff	memcpy@s1,memcpy@s
  4865  002462  C004  F00A         	movff	memcpy@s1+1,memcpy@s+1
  4866  002466  C001  F007         	movff	memcpy@d1,memcpy@d
  4867  00246A  C002  F008         	movff	memcpy@d1+1,memcpy@d+1
  4868  00246E  D00E               	goto	l3324
  4869  002470                     l3318:
  4870  002470  C009  FFD9         	movff	memcpy@s,fsr2l
  4871  002474  C00A  FFDA         	movff	memcpy@s+1,fsr2h
  4872  002478  C007  FFE1         	movff	memcpy@d,fsr1l
  4873  00247C  C008  FFE2         	movff	memcpy@d+1,fsr1h
  4874  002480  CFDF FFE7          	movff	indf2,indf1
  4875  002484  4A09               	infsnz	memcpy@s,f,c
  4876  002486  2A0A               	incf	memcpy@s+1,f,c
  4877  002488  4A07               	infsnz	memcpy@d,f,c
  4878  00248A  2A08               	incf	memcpy@d+1,f,c
  4879  00248C                     l3324:
  4880  00248C  0605               	decf	memcpy@n,f,c
  4881  00248E  A0D8               	btfss	status,0,c
  4882  002490  0606               	decf	memcpy@n+1,f,c
  4883  002492  2805               	incf	memcpy@n,w,c
  4884  002494  E1ED               	bnz	l3318
  4885  002496  2806               	incf	memcpy@n+1,w,c
  4886  002498  B4D8               	btfsc	status,2,c
  4887  00249A  0012               	return	
  4888  00249C  D7E9               	goto	l3318
  4889  00249E                     __end_of_memcpy:
  4890                           	opt stack 0
  4891                           tblptru	equ	0xFF8
  4892                           tblptrh	equ	0xFF7
  4893                           tblptrl	equ	0xFF6
  4894                           tablat	equ	0xFF5
  4895                           prodh	equ	0xFF4
  4896                           prodl	equ	0xFF3
  4897                           postinc0	equ	0xFEE
  4898                           wreg	equ	0xFE8
  4899                           indf1	equ	0xFE7
  4900                           postinc1	equ	0xFE6
  4901                           postdec1	equ	0xFE5
  4902                           fsr1h	equ	0xFE2
  4903                           fsr1l	equ	0xFE1
  4904                           indf2	equ	0xFDF
  4905                           postinc2	equ	0xFDE
  4906                           postdec2	equ	0xFDD
  4907                           plusw2	equ	0xFDB
  4908                           fsr2h	equ	0xFDA
  4909                           fsr2l	equ	0xFD9
  4910                           status	equ	0xFD8
  4911                           
  4912 ;; *************** function _USBCtrlTrfSetupHandler *****************
  4913 ;; Defined at:
  4914 ;;		line 2465 in file "usb/usb_device.c"
  4915 ;; Parameters:    Size  Location     Type
  4916 ;;		None
  4917 ;; Auto vars:     Size  Location     Type
  4918 ;;		None
  4919 ;; Return value:  Size  Location     Type
  4920 ;;                  1    wreg      void 
  4921 ;; Registers used:
  4922 ;;		wreg, fsr1l, fsr1h, fsr2l, fsr2h, status,2, status,0, tblptrl, tblptrh, tblptru, prodl, prodh, cstack
  4923 ;; Tracked objects:
  4924 ;;		On entry : 0/0
  4925 ;;		On exit  : 0/0
  4926 ;;		Unchanged: 0/0
  4927 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  4928 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  4929 ;;      Locals:         0       0       0       0       0       0       0       0       0       0
  4930 ;;      Temps:          0       0       0       0       0       0       0       0       0       0
  4931 ;;      Totals:         0       0       0       0       0       0       0       0       0       0
  4932 ;;Total ram usage:        0 bytes
  4933 ;; Hardware stack levels used:    1
  4934 ;; Hardware stack levels required when called:    6
  4935 ;; This function calls:
  4936 ;;		_USBCheckStdRequest
  4937 ;;		_USBCtrlEPServiceComplete
  4938 ;;		_USER_USB_CALLBACK_EVENT_HANDLER
  4939 ;; This function is called by:
  4940 ;;		_USBCtrlEPService
  4941 ;; This function uses a non-reentrant model
  4942 ;;
  4943                           
  4944                           	psect	text24
  4945  001DFE                     __ptext24:
  4946                           	opt stack 0
  4947  001DFE                     _USBCtrlTrfSetupHandler:
  4948                           	opt stack 22
  4949                           
  4950                           ;usb_device.c: 2470: shortPacketStatus = 0;
  4951                           
  4952                           ;incstack = 0
  4953  001DFE  0E00               	movlw	0
  4954  001E00  6E5C               	movwf	_shortPacketStatus,c
  4955                           
  4956                           ;usb_device.c: 2471: USBDeferStatusStagePacket = 0;
  4957  001E02  0E00               	movlw	0
  4958  001E04  6E59               	movwf	_USBDeferStatusStagePacket,c	;volatile
  4959                           
  4960                           ;usb_device.c: 2472: USBDeferINDataStagePackets = 0;
  4961  001E06  0E00               	movlw	0
  4962  001E08  0100               	movlb	0	; () banked
  4963  001E0A  6FE1               	movwf	_USBDeferINDataStagePackets& (0+255),b	;volatile
  4964                           
  4965                           ;usb_device.c: 2473: USBDeferOUTDataStagePackets = 0;
  4966  001E0C  0E00               	movlw	0
  4967  001E0E  0100               	movlb	0	; () banked
  4968  001E10  6FE2               	movwf	_USBDeferOUTDataStagePackets& (0+255),b	;volatile
  4969                           
  4970                           ;usb_device.c: 2474: BothEP0OutUOWNsSet = 0;
  4971  001E12  0E00               	movlw	0
  4972  001E14  0100               	movlb	0	; () banked
  4973  001E16  6FDE               	movwf	_BothEP0OutUOWNsSet& (0+255),b
  4974                           
  4975                           ;usb_device.c: 2475: controlTransferState = 0;
  4976  001E18  0E00               	movlw	0
  4977  001E1A  6E5B               	movwf	_controlTransferState,c
  4978                           
  4979                           ; BSR set to: 0
  4980                           ;usb_device.c: 2484: pBDTEntryIn[0]->STAT.Val &= ~(0x80);
  4981  001E1C  C051  FFD9         	movff	_pBDTEntryIn,fsr2l
  4982  001E20  C052  FFDA         	movff	_pBDTEntryIn+1,fsr2h
  4983  001E24  0E7F               	movlw	127
  4984  001E26  16DF               	andwf	indf2,f,c
  4985                           
  4986                           ; BSR set to: 0
  4987                           ;usb_device.c: 2486: pBDTEntryIn[0] = (volatile BDT_ENTRY*)(((uintptr_t)pBDTEntryIn[0]) 
      +                          ^ 0x0004);
  4988  001E28  0E04               	movlw	4
  4989  001E2A  1851               	xorwf	_pBDTEntryIn,w,c
  4990  001E2C  6E51               	movwf	_pBDTEntryIn,c
  4991  001E2E  5052               	movf	_pBDTEntryIn+1,w,c
  4992  001E30  6E52               	movwf	_pBDTEntryIn+1,c
  4993                           
  4994                           ; BSR set to: 0
  4995                           ;usb_device.c: 2487: pBDTEntryIn[0]->STAT.Val &= ~(0x80);
  4996  001E32  C051  FFD9         	movff	_pBDTEntryIn,fsr2l
  4997  001E36  C052  FFDA         	movff	_pBDTEntryIn+1,fsr2h
  4998  001E3A  0E7F               	movlw	127
  4999  001E3C  16DF               	andwf	indf2,f,c
  5000                           
  5001                           ; BSR set to: 0
  5002                           ;usb_device.c: 2488: pBDTEntryIn[0] = (volatile BDT_ENTRY*)(((uintptr_t)pBDTEntryIn[0]) 
      +                          ^ 0x0004);
  5003  001E3E  0E04               	movlw	4
  5004  001E40  1851               	xorwf	_pBDTEntryIn,w,c
  5005  001E42  6E51               	movwf	_pBDTEntryIn,c
  5006  001E44  5052               	movf	_pBDTEntryIn+1,w,c
  5007  001E46  6E52               	movwf	_pBDTEntryIn+1,c
  5008                           
  5009                           ; BSR set to: 0
  5010                           ;usb_device.c: 2489: pBDTEntryEP0OutNext->STAT.Val &= ~(0x80);
  5011  001E48  C057  FFD9         	movff	_pBDTEntryEP0OutNext,fsr2l
  5012  001E4C  C058  FFDA         	movff	_pBDTEntryEP0OutNext+1,fsr2h
  5013  001E50  0E7F               	movlw	127
  5014  001E52  16DF               	andwf	indf2,f,c
  5015                           
  5016                           ; BSR set to: 0
  5017                           ;usb_device.c: 2491: inPipes[0].info.Val = 0;
  5018  001E54  0E00               	movlw	0
  5019  001E56  6E4E               	movwf	_inPipes+3,c
  5020                           
  5021                           ; BSR set to: 0
  5022                           ;usb_device.c: 2492: inPipes[0].wCount.Val = 0;
  5023  001E58  0E00               	movlw	0
  5024  001E5A  6E50               	movwf	_inPipes+5,c
  5025  001E5C  0E00               	movlw	0
  5026  001E5E  6E4F               	movwf	_inPipes+4,c
  5027                           
  5028                           ; BSR set to: 0
  5029                           ;usb_device.c: 2493: outPipes[0].info.Val = 0;
  5030  001E60  0E00               	movlw	0
  5031  001E62  0100               	movlb	0	; () banked
  5032  001E64  6FC7               	movwf	(_outPipes+3)& (0+255),b
  5033                           
  5034                           ; BSR set to: 0
  5035                           ;usb_device.c: 2494: outPipes[0].wCount.Val = 0;
  5036  001E66  0E00               	movlw	0
  5037  001E68  0100               	movlb	0	; () banked
  5038  001E6A  6FC9               	movwf	(_outPipes+5)& (0+255),b
  5039  001E6C  0E00               	movlw	0
  5040  001E6E  6FC8               	movwf	(_outPipes+4)& (0+255),b
  5041                           
  5042                           ; BSR set to: 0
  5043                           ;usb_device.c: 2500: USBCheckStdRequest();
  5044  001E70  ECD8  F00B         	call	_USBCheckStdRequest	;wreg free
  5045                           
  5046                           ;usb_device.c: 2501: USER_USB_CALLBACK_EVENT_HANDLER(EVENT_EP0_REQUEST,0,0);
  5047  001E74  0E00               	movlw	0
  5048  001E76  6E0E               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@event+1,c
  5049  001E78  0E03               	movlw	3
  5050  001E7A  6E0D               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@event,c
  5051  001E7C  0E00               	movlw	0
  5052  001E7E  6E0F               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@pdata,c
  5053  001E80  0E00               	movlw	0
  5054  001E82  6E10               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@pdata+1,c
  5055  001E84  0E00               	movlw	0
  5056  001E86  6E12               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@size+1,c
  5057  001E88  0E00               	movlw	0
  5058  001E8A  6E11               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@size,c
  5059  001E8C  EC6E  F011         	call	_USER_USB_CALLBACK_EVENT_HANDLER	;wreg free
  5060                           
  5061                           ;usb_device.c: 2514: USBCtrlEPServiceComplete();
  5062  001E90  EC68  F00A         	call	_USBCtrlEPServiceComplete	;wreg free
  5063  001E94  0012               	return		;funcret
  5064  001E96                     __end_of_USBCtrlTrfSetupHandler:
  5065                           	opt stack 0
  5066                           tblptru	equ	0xFF8
  5067                           tblptrh	equ	0xFF7
  5068                           tblptrl	equ	0xFF6
  5069                           tablat	equ	0xFF5
  5070                           prodh	equ	0xFF4
  5071                           prodl	equ	0xFF3
  5072                           postinc0	equ	0xFEE
  5073                           wreg	equ	0xFE8
  5074                           indf1	equ	0xFE7
  5075                           postinc1	equ	0xFE6
  5076                           postdec1	equ	0xFE5
  5077                           fsr1h	equ	0xFE2
  5078                           fsr1l	equ	0xFE1
  5079                           indf2	equ	0xFDF
  5080                           postinc2	equ	0xFDE
  5081                           postdec2	equ	0xFDD
  5082                           plusw2	equ	0xFDB
  5083                           fsr2h	equ	0xFDA
  5084                           fsr2l	equ	0xFD9
  5085                           status	equ	0xFD8
  5086                           
  5087 ;; *************** function _USBCtrlEPServiceComplete *****************
  5088 ;; Defined at:
  5089 ;;		line 1616 in file "usb/usb_device.c"
  5090 ;; Parameters:    Size  Location     Type
  5091 ;;		None
  5092 ;; Auto vars:     Size  Location     Type
  5093 ;;		None
  5094 ;; Return value:  Size  Location     Type
  5095 ;;                  1    wreg      void 
  5096 ;; Registers used:
  5097 ;;		wreg, fsr1l, fsr1h, fsr2l, fsr2h, status,2, status,0, tblptrl, tblptrh, tblptru, cstack
  5098 ;; Tracked objects:
  5099 ;;		On entry : 0/0
  5100 ;;		On exit  : 0/0
  5101 ;;		Unchanged: 0/0
  5102 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  5103 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  5104 ;;      Locals:         0       0       0       0       0       0       0       0       0       0
  5105 ;;      Temps:          0       0       0       0       0       0       0       0       0       0
  5106 ;;      Totals:         0       0       0       0       0       0       0       0       0       0
  5107 ;;Total ram usage:        0 bytes
  5108 ;; Hardware stack levels used:    1
  5109 ;; Hardware stack levels required when called:    2
  5110 ;; This function calls:
  5111 ;;		_USBCtrlEPAllowDataStage
  5112 ;;		_USBCtrlEPAllowStatusStage
  5113 ;; This function is called by:
  5114 ;;		_USBCtrlTrfSetupHandler
  5115 ;; This function uses a non-reentrant model
  5116 ;;
  5117                           
  5118                           	psect	text25
  5119  0014D0                     __ptext25:
  5120                           	opt stack 0
  5121  0014D0                     _USBCtrlEPServiceComplete:
  5122                           	opt stack 25
  5123                           
  5124                           ;usb_device.c: 1622: UCONbits.PKTDIS = 0;
  5125                           
  5126                           ;incstack = 0
  5127  0014D0  986D               	bcf	3949,4,c	;volatile
  5128                           
  5129                           ;usb_device.c: 1628: if(inPipes[0].info.bits.busy == 0)
  5130  0014D2  BE4E               	btfsc	_inPipes+3,7,c
  5131  0014D4  D03C               	goto	l227
  5132                           
  5133                           ;usb_device.c: 1629: {
  5134                           ;usb_device.c: 1630: if(outPipes[0].info.bits.busy == 1)
  5135  0014D6  0100               	movlb	0	; () banked
  5136  0014D8  AFC7               	btfss	(_outPipes+3)& (0+255),7,b
  5137  0014DA  D00E               	goto	l3104
  5138                           
  5139                           ; BSR set to: 0
  5140                           ;usb_device.c: 1631: {
  5141                           ;usb_device.c: 1632: controlTransferState = 2;
  5142  0014DC  0E02               	movlw	2
  5143  0014DE  6E5B               	movwf	_controlTransferState,c
  5144                           
  5145                           ;usb_device.c: 1643: if(USBDeferOUTDataStagePackets == 0)
  5146  0014E0  0100               	movlb	0	; () banked
  5147  0014E2  51E2               	movf	_USBDeferOUTDataStagePackets& (0+255),w,b	;volatile
  5148  0014E4  B4D8               	btfsc	status,2,c
  5149                           
  5150                           ; BSR set to: 0
  5151                           ;usb_device.c: 1644: {
  5152                           ;usb_device.c: 1645: USBCtrlEPAllowDataStage();
  5153  0014E6  EC18  F00E         	call	_USBCtrlEPAllowDataStage	;wreg free
  5154                           
  5155                           ;usb_device.c: 1646: }
  5156                           ;usb_device.c: 1650: USBStatusStageEnabledFlag2 = 0;
  5157  0014EA  0E00               	movlw	0
  5158  0014EC  0100               	movlb	0	; () banked
  5159  0014EE  6FE4               	movwf	_USBStatusStageEnabledFlag2& (0+255),b	;volatile
  5160                           
  5161                           ; BSR set to: 0
  5162                           ;usb_device.c: 1651: USBStatusStageEnabledFlag1 = 0;
  5163  0014F0  0E00               	movlw	0
  5164  0014F2  0100               	movlb	0	; () banked
  5165  0014F4  6FE3               	movwf	_USBStatusStageEnabledFlag1& (0+255),b	;volatile
  5166                           
  5167                           ;usb_device.c: 1652: }
  5168  0014F6  0012               	return	
  5169  0014F8                     l3104:
  5170                           
  5171                           ; BSR set to: 0
  5172                           ;usb_device.c: 1653: else
  5173                           ;usb_device.c: 1654: {
  5174                           ;usb_device.c: 1659: pBDTEntryEP0OutNext->CNT = 8;
  5175  0014F8  EE20 F001          	lfsr	2,1
  5176  0014FC  5057               	movf	_pBDTEntryEP0OutNext,w,c
  5177  0014FE  26D9               	addwf	fsr2l,f,c
  5178  001500  5058               	movf	_pBDTEntryEP0OutNext+1,w,c
  5179  001502  22DA               	addwfc	fsr2h,f,c
  5180  001504  0E08               	movlw	8
  5181  001506  6EDF               	movwf	indf2,c
  5182                           
  5183                           ;usb_device.c: 1660: pBDTEntryEP0OutNext->ADR = ((uint16_t)(&SetupPkt));
  5184  001508  EE20 F002          	lfsr	2,2
  5185  00150C  5057               	movf	_pBDTEntryEP0OutNext,w,c
  5186  00150E  26D9               	addwf	fsr2l,f,c
  5187  001510  5058               	movf	_pBDTEntryEP0OutNext+1,w,c
  5188  001512  22DA               	addwfc	fsr2h,f,c
  5189  001514  0E20               	movlw	32
  5190  001516  6EDE               	movwf	postinc2,c
  5191  001518  0E04               	movlw	4
  5192  00151A  6EDD               	movwf	postdec2,c
  5193                           
  5194                           ; BSR set to: 0
  5195                           ;usb_device.c: 1661: pBDTEntryEP0OutNext->STAT.Val = 0x00|(0x08 & 0x08)|0x04;
  5196  00151C  C057  FFD9         	movff	_pBDTEntryEP0OutNext,fsr2l
  5197  001520  C058  FFDA         	movff	_pBDTEntryEP0OutNext+1,fsr2h
  5198  001524  0E0C               	movlw	12
  5199  001526  6EDF               	movwf	indf2,c
  5200                           
  5201                           ; BSR set to: 0
  5202                           ;usb_device.c: 1662: pBDTEntryEP0OutNext->STAT.Val |= 0x80;
  5203  001528  C057  FFD9         	movff	_pBDTEntryEP0OutNext,fsr2l
  5204  00152C  C058  FFDA         	movff	_pBDTEntryEP0OutNext+1,fsr2h
  5205  001530  0E00               	movlw	0
  5206  001532  8EDB               	bsf	plusw2,7,c
  5207                           
  5208                           ;usb_device.c: 1663: pBDTEntryIn[0]->STAT.Val = 0x04;
  5209  001534  C051  FFD9         	movff	_pBDTEntryIn,fsr2l
  5210  001538  C052  FFDA         	movff	_pBDTEntryIn+1,fsr2h
  5211  00153C  0E04               	movlw	4
  5212  00153E  6EDF               	movwf	indf2,c
  5213                           
  5214                           ; BSR set to: 0
  5215                           ;usb_device.c: 1664: pBDTEntryIn[0]->STAT.Val |= 0x80;
  5216  001540  C051  FFD9         	movff	_pBDTEntryIn,fsr2l
  5217  001544  C052  FFDA         	movff	_pBDTEntryIn+1,fsr2h
  5218  001548  0E00               	movlw	0
  5219  00154A  8EDB               	bsf	plusw2,7,c
  5220                           
  5221                           ; BSR set to: 0
  5222                           ;usb_device.c: 1665: }
  5223                           ;usb_device.c: 1666: }
  5224  00154C  0012               	return	
  5225  00154E                     l227:
  5226                           
  5227                           ;usb_device.c: 1667: else
  5228                           ;usb_device.c: 1668: {
  5229                           ;usb_device.c: 1669: if(SetupPkt.DataDir == (0x80>>7))
  5230  00154E  0104               	movlb	4	; () banked
  5231  001550  AF20               	btfss	32,7,b	;volatile
  5232  001552  D013               	goto	l3124
  5233                           
  5234                           ; BSR set to: 4
  5235                           ;usb_device.c: 1670: {
  5236                           ;usb_device.c: 1671: controlTransferState = 1;
  5237  001554  0E01               	movlw	1
  5238  001556  6E5B               	movwf	_controlTransferState,c
  5239                           
  5240                           ;usb_device.c: 1685: if(USBDeferINDataStagePackets == 0)
  5241  001558  0100               	movlb	0	; () banked
  5242  00155A  51E1               	movf	_USBDeferINDataStagePackets& (0+255),w,b	;volatile
  5243  00155C  B4D8               	btfsc	status,2,c
  5244                           
  5245                           ; BSR set to: 0
  5246                           ;usb_device.c: 1686: {
  5247                           ;usb_device.c: 1687: USBCtrlEPAllowDataStage();
  5248  00155E  EC18  F00E         	call	_USBCtrlEPAllowDataStage	;wreg free
  5249                           
  5250                           ;usb_device.c: 1688: }
  5251                           ;usb_device.c: 1710: USBStatusStageEnabledFlag2 = 0;
  5252  001562  0E00               	movlw	0
  5253  001564  0100               	movlb	0	; () banked
  5254  001566  6FE4               	movwf	_USBStatusStageEnabledFlag2& (0+255),b	;volatile
  5255                           
  5256                           ; BSR set to: 0
  5257                           ;usb_device.c: 1711: USBStatusStageEnabledFlag1 = 0;
  5258  001568  0E00               	movlw	0
  5259  00156A  0100               	movlb	0	; () banked
  5260  00156C  6FE3               	movwf	_USBStatusStageEnabledFlag1& (0+255),b	;volatile
  5261                           
  5262                           ; BSR set to: 0
  5263                           ;usb_device.c: 1712: if(USBDeferStatusStagePacket == 0)
  5264  00156E  5059               	movf	_USBDeferStatusStagePacket,w,c	;volatile
  5265  001570  A4D8               	btfss	status,2,c
  5266  001572  0012               	return	
  5267                           
  5268                           ; BSR set to: 0
  5269                           ;usb_device.c: 1713: {
  5270                           ;usb_device.c: 1714: USBCtrlEPAllowStatusStage();
  5271  001574  EC45  F00C         	call	_USBCtrlEPAllowStatusStage	;wreg free
  5272                           
  5273                           ;usb_device.c: 1715: }
  5274                           ;usb_device.c: 1716: }
  5275  001578  0012               	return	
  5276  00157A                     l3124:
  5277                           
  5278                           ;usb_device.c: 1717: else
  5279                           ;usb_device.c: 1718: {
  5280                           ;usb_device.c: 1729: controlTransferState = 2;
  5281  00157A  0E02               	movlw	2
  5282  00157C  6E5B               	movwf	_controlTransferState,c
  5283                           
  5284                           ;usb_device.c: 1732: pBDTEntryEP0OutNext->CNT = 8;
  5285  00157E  EE20 F001          	lfsr	2,1
  5286  001582  5057               	movf	_pBDTEntryEP0OutNext,w,c
  5287  001584  26D9               	addwf	fsr2l,f,c
  5288  001586  5058               	movf	_pBDTEntryEP0OutNext+1,w,c
  5289  001588  22DA               	addwfc	fsr2h,f,c
  5290  00158A  0E08               	movlw	8
  5291  00158C  6EDF               	movwf	indf2,c
  5292                           
  5293                           ;usb_device.c: 1733: pBDTEntryEP0OutNext->ADR = ((uint16_t)(&SetupPkt));
  5294  00158E  EE20 F002          	lfsr	2,2
  5295  001592  5057               	movf	_pBDTEntryEP0OutNext,w,c
  5296  001594  26D9               	addwf	fsr2l,f,c
  5297  001596  5058               	movf	_pBDTEntryEP0OutNext+1,w,c
  5298  001598  22DA               	addwfc	fsr2h,f,c
  5299  00159A  0E20               	movlw	32
  5300  00159C  6EDE               	movwf	postinc2,c
  5301  00159E  0E04               	movlw	4
  5302  0015A0  6EDD               	movwf	postdec2,c
  5303                           
  5304                           ;usb_device.c: 1734: pBDTEntryEP0OutNext->STAT.Val = 0x04;
  5305  0015A2  C057  FFD9         	movff	_pBDTEntryEP0OutNext,fsr2l
  5306  0015A6  C058  FFDA         	movff	_pBDTEntryEP0OutNext+1,fsr2h
  5307  0015AA  0E04               	movlw	4
  5308  0015AC  6EDF               	movwf	indf2,c
  5309                           
  5310                           ;usb_device.c: 1735: pBDTEntryEP0OutNext->STAT.Val |= 0x80;
  5311  0015AE  C057  FFD9         	movff	_pBDTEntryEP0OutNext,fsr2l
  5312  0015B2  C058  FFDA         	movff	_pBDTEntryEP0OutNext+1,fsr2h
  5313  0015B6  0E00               	movlw	0
  5314  0015B8  8EDB               	bsf	plusw2,7,c
  5315                           
  5316                           ;usb_device.c: 1738: USBStatusStageEnabledFlag2 = 0;
  5317  0015BA  0E00               	movlw	0
  5318  0015BC  0100               	movlb	0	; () banked
  5319  0015BE  6FE4               	movwf	_USBStatusStageEnabledFlag2& (0+255),b	;volatile
  5320                           
  5321                           ; BSR set to: 0
  5322                           ;usb_device.c: 1739: USBStatusStageEnabledFlag1 = 0;
  5323  0015C0  0E00               	movlw	0
  5324  0015C2  0100               	movlb	0	; () banked
  5325  0015C4  6FE3               	movwf	_USBStatusStageEnabledFlag1& (0+255),b	;volatile
  5326                           
  5327                           ; BSR set to: 0
  5328                           ;usb_device.c: 1740: if(USBDeferStatusStagePacket == 0)
  5329  0015C6  5059               	movf	_USBDeferStatusStagePacket,w,c	;volatile
  5330  0015C8  A4D8               	btfss	status,2,c
  5331  0015CA  0012               	return	
  5332                           
  5333                           ; BSR set to: 0
  5334                           ;usb_device.c: 1741: {
  5335                           ;usb_device.c: 1742: USBCtrlEPAllowStatusStage();
  5336  0015CC  EC45  F00C         	call	_USBCtrlEPAllowStatusStage	;wreg free
  5337  0015D0  0012               	return	
  5338  0015D2                     __end_of_USBCtrlEPServiceComplete:
  5339                           	opt stack 0
  5340                           tblptru	equ	0xFF8
  5341                           tblptrh	equ	0xFF7
  5342                           tblptrl	equ	0xFF6
  5343                           tablat	equ	0xFF5
  5344                           prodh	equ	0xFF4
  5345                           prodl	equ	0xFF3
  5346                           postinc0	equ	0xFEE
  5347                           wreg	equ	0xFE8
  5348                           indf1	equ	0xFE7
  5349                           postinc1	equ	0xFE6
  5350                           postdec1	equ	0xFE5
  5351                           fsr1h	equ	0xFE2
  5352                           fsr1l	equ	0xFE1
  5353                           indf2	equ	0xFDF
  5354                           postinc2	equ	0xFDE
  5355                           postdec2	equ	0xFDD
  5356                           plusw2	equ	0xFDB
  5357                           fsr2h	equ	0xFDA
  5358                           fsr2l	equ	0xFD9
  5359                           status	equ	0xFD8
  5360                           
  5361 ;; *************** function _USBCtrlEPAllowDataStage *****************
  5362 ;; Defined at:
  5363 ;;		line 1488 in file "usb/usb_device.c"
  5364 ;; Parameters:    Size  Location     Type
  5365 ;;		None
  5366 ;; Auto vars:     Size  Location     Type
  5367 ;;		None
  5368 ;; Return value:  Size  Location     Type
  5369 ;;                  1    wreg      void 
  5370 ;; Registers used:
  5371 ;;		wreg, fsr1l, fsr1h, fsr2l, fsr2h, status,2, status,0, tblptrl, tblptrh, tblptru, cstack
  5372 ;; Tracked objects:
  5373 ;;		On entry : 0/0
  5374 ;;		On exit  : 0/0
  5375 ;;		Unchanged: 0/0
  5376 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  5377 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  5378 ;;      Locals:         0       0       0       0       0       0       0       0       0       0
  5379 ;;      Temps:          0       0       0       0       0       0       0       0       0       0
  5380 ;;      Totals:         0       0       0       0       0       0       0       0       0       0
  5381 ;;Total ram usage:        0 bytes
  5382 ;; Hardware stack levels used:    1
  5383 ;; Hardware stack levels required when called:    1
  5384 ;; This function calls:
  5385 ;;		_USBCtrlTrfTxService
  5386 ;; This function is called by:
  5387 ;;		_USBCtrlEPServiceComplete
  5388 ;; This function uses a non-reentrant model
  5389 ;;
  5390                           
  5391                           	psect	text26
  5392  001C30                     __ptext26:
  5393                           	opt stack 0
  5394  001C30                     _USBCtrlEPAllowDataStage:
  5395                           	opt stack 25
  5396                           
  5397                           ;usb_device.c: 1490: USBDeferINDataStagePackets = 0;
  5398                           
  5399                           ;incstack = 0
  5400  001C30  0E00               	movlw	0
  5401  001C32  0100               	movlb	0	; () banked
  5402  001C34  6FE1               	movwf	_USBDeferINDataStagePackets& (0+255),b	;volatile
  5403                           
  5404                           ;usb_device.c: 1491: USBDeferOUTDataStagePackets = 0;
  5405  001C36  0E00               	movlw	0
  5406  001C38  0100               	movlb	0	; () banked
  5407  001C3A  6FE2               	movwf	_USBDeferOUTDataStagePackets& (0+255),b	;volatile
  5408                           
  5409                           ; BSR set to: 0
  5410                           ;usb_device.c: 1493: if(controlTransferState == 2)
  5411  001C3C  0E02               	movlw	2
  5412  001C3E  185B               	xorwf	_controlTransferState,w,c
  5413  001C40  A4D8               	btfss	status,2,c
  5414  001C42  D01F               	goto	l2884
  5415                           
  5416                           ; BSR set to: 0
  5417                           ;usb_device.c: 1494: {
  5418                           ;usb_device.c: 1496: pBDTEntryEP0OutNext->CNT = 8;
  5419  001C44  EE20 F001          	lfsr	2,1
  5420  001C48  5057               	movf	_pBDTEntryEP0OutNext,w,c
  5421  001C4A  26D9               	addwf	fsr2l,f,c
  5422  001C4C  5058               	movf	_pBDTEntryEP0OutNext+1,w,c
  5423  001C4E  22DA               	addwfc	fsr2h,f,c
  5424  001C50  0E08               	movlw	8
  5425  001C52  6EDF               	movwf	indf2,c
  5426                           
  5427                           ;usb_device.c: 1497: pBDTEntryEP0OutNext->ADR = ((uint16_t)(&CtrlTrfData));
  5428  001C54  EE20 F002          	lfsr	2,2
  5429  001C58  5057               	movf	_pBDTEntryEP0OutNext,w,c
  5430  001C5A  26D9               	addwf	fsr2l,f,c
  5431  001C5C  5058               	movf	_pBDTEntryEP0OutNext+1,w,c
  5432  001C5E  22DA               	addwfc	fsr2h,f,c
  5433  001C60  0E28               	movlw	40
  5434  001C62  6EDE               	movwf	postinc2,c
  5435  001C64  0E04               	movlw	4
  5436  001C66  6EDD               	movwf	postdec2,c
  5437                           
  5438                           ; BSR set to: 0
  5439                           ;usb_device.c: 1498: pBDTEntryEP0OutNext->STAT.Val = 0x40|(0x08 & 0x08);
  5440  001C68  C057  FFD9         	movff	_pBDTEntryEP0OutNext,fsr2l
  5441  001C6C  C058  FFDA         	movff	_pBDTEntryEP0OutNext+1,fsr2h
  5442  001C70  0E48               	movlw	72
  5443  001C72  6EDF               	movwf	indf2,c
  5444                           
  5445                           ; BSR set to: 0
  5446                           ;usb_device.c: 1499: pBDTEntryEP0OutNext->STAT.Val |= 0x80;
  5447  001C74  C057  FFD9         	movff	_pBDTEntryEP0OutNext,fsr2l
  5448  001C78  C058  FFDA         	movff	_pBDTEntryEP0OutNext+1,fsr2h
  5449  001C7C  0E00               	movlw	0
  5450  001C7E  8EDB               	bsf	plusw2,7,c
  5451                           
  5452                           ;usb_device.c: 1500: }
  5453  001C80  0012               	return	
  5454  001C82                     l2884:
  5455                           
  5456                           ; BSR set to: 0
  5457                           ;usb_device.c: 1501: else
  5458                           ;usb_device.c: 1502: {
  5459                           ;usb_device.c: 1505: if(SetupPkt.wLength < inPipes[0].wCount.Val)
  5460  001C82  504F               	movf	_inPipes+4,w,c
  5461  001C84  0104               	movlb	4	; () banked
  5462  001C86  5D26               	subwf	38,w,b	;volatile
  5463  001C88  5050               	movf	_inPipes+5,w,c
  5464  001C8A  0104               	movlb	4	; () banked
  5465  001C8C  5927               	subwfb	39,w,b	;volatile
  5466  001C8E  B0D8               	btfsc	status,0,c
  5467  001C90  D004               	goto	l2888
  5468                           
  5469                           ; BSR set to: 4
  5470                           ;usb_device.c: 1506: {
  5471                           ;usb_device.c: 1507: inPipes[0].wCount.Val = SetupPkt.wLength;
  5472  001C92  C426 F04F          	movff	1062,_inPipes+4	;volatile
  5473  001C96  C427 F050          	movff	1063,_inPipes+5	;volatile
  5474  001C9A                     l2888:
  5475                           
  5476                           ; BSR set to: 4
  5477                           ;usb_device.c: 1508: }
  5478                           ;usb_device.c: 1509: USBCtrlTrfTxService();
  5479  001C9A  ECAC  F00C         	call	_USBCtrlTrfTxService	;wreg free
  5480                           
  5481                           ;usb_device.c: 1514: pBDTEntryIn[0]->ADR = ((uint16_t)(&CtrlTrfData));
  5482  001C9E  EE20 F002          	lfsr	2,2
  5483  001CA2  5051               	movf	_pBDTEntryIn,w,c
  5484  001CA4  26D9               	addwf	fsr2l,f,c
  5485  001CA6  5052               	movf	_pBDTEntryIn+1,w,c
  5486  001CA8  22DA               	addwfc	fsr2h,f,c
  5487  001CAA  0E28               	movlw	40
  5488  001CAC  6EDE               	movwf	postinc2,c
  5489  001CAE  0E04               	movlw	4
  5490  001CB0  6EDD               	movwf	postdec2,c
  5491                           
  5492                           ;usb_device.c: 1515: pBDTEntryIn[0]->STAT.Val = 0x40|(0x08 & 0x08);
  5493  001CB2  C051  FFD9         	movff	_pBDTEntryIn,fsr2l
  5494  001CB6  C052  FFDA         	movff	_pBDTEntryIn+1,fsr2h
  5495  001CBA  0E48               	movlw	72
  5496  001CBC  6EDF               	movwf	indf2,c
  5497                           
  5498                           ;usb_device.c: 1516: pBDTEntryIn[0]->STAT.Val |= 0x80;
  5499  001CBE  C051  FFD9         	movff	_pBDTEntryIn,fsr2l
  5500  001CC2  C052  FFDA         	movff	_pBDTEntryIn+1,fsr2h
  5501  001CC6  0E00               	movlw	0
  5502  001CC8  8EDB               	bsf	plusw2,7,c
  5503  001CCA  0012               	return	
  5504  001CCC                     __end_of_USBCtrlEPAllowDataStage:
  5505                           	opt stack 0
  5506                           tblptru	equ	0xFF8
  5507                           tblptrh	equ	0xFF7
  5508                           tblptrl	equ	0xFF6
  5509                           tablat	equ	0xFF5
  5510                           prodh	equ	0xFF4
  5511                           prodl	equ	0xFF3
  5512                           postinc0	equ	0xFEE
  5513                           wreg	equ	0xFE8
  5514                           indf1	equ	0xFE7
  5515                           postinc1	equ	0xFE6
  5516                           postdec1	equ	0xFE5
  5517                           fsr1h	equ	0xFE2
  5518                           fsr1l	equ	0xFE1
  5519                           indf2	equ	0xFDF
  5520                           postinc2	equ	0xFDE
  5521                           postdec2	equ	0xFDD
  5522                           plusw2	equ	0xFDB
  5523                           fsr2h	equ	0xFDA
  5524                           fsr2l	equ	0xFD9
  5525                           status	equ	0xFD8
  5526                           
  5527 ;; *************** function _USBCheckStdRequest *****************
  5528 ;; Defined at:
  5529 ;;		line 2686 in file "usb/usb_device.c"
  5530 ;; Parameters:    Size  Location     Type
  5531 ;;		None
  5532 ;; Auto vars:     Size  Location     Type
  5533 ;;		None
  5534 ;; Return value:  Size  Location     Type
  5535 ;;                  1    wreg      void 
  5536 ;; Registers used:
  5537 ;;		wreg, fsr1l, fsr1h, fsr2l, fsr2h, status,2, status,0, tblptrl, tblptrh, tblptru, prodl, prodh, cstack
  5538 ;; Tracked objects:
  5539 ;;		On entry : 0/0
  5540 ;;		On exit  : 0/0
  5541 ;;		Unchanged: 0/0
  5542 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  5543 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  5544 ;;      Locals:         0       0       0       0       0       0       0       0       0       0
  5545 ;;      Temps:          0       0       0       0       0       0       0       0       0       0
  5546 ;;      Totals:         0       0       0       0       0       0       0       0       0       0
  5547 ;;Total ram usage:        0 bytes
  5548 ;; Hardware stack levels used:    1
  5549 ;; Hardware stack levels required when called:    5
  5550 ;; This function calls:
  5551 ;;		_USBStdFeatureReqHandler
  5552 ;;		_USBStdGetDscHandler
  5553 ;;		_USBStdGetStatusHandler
  5554 ;;		_USBStdSetCfgHandler
  5555 ;;		_USER_USB_CALLBACK_EVENT_HANDLER
  5556 ;; This function is called by:
  5557 ;;		_USBCtrlTrfSetupHandler
  5558 ;; This function uses a non-reentrant model
  5559 ;;
  5560                           
  5561                           	psect	text27
  5562  0017B0                     __ptext27:
  5563                           	opt stack 0
  5564  0017B0                     _USBCheckStdRequest:
  5565                           	opt stack 22
  5566                           
  5567                           ;usb_device.c: 2688: if(SetupPkt.RequestType != (0x00>>5)) return;
  5568                           
  5569                           ;incstack = 0
  5570  0017B0  0104               	movlb	4	; () banked
  5571  0017B2  3920               	swapf	32,w,b	;volatile
  5572  0017B4  32E8               	rrcf	wreg,f,c
  5573  0017B6  0B03               	andlw	3
  5574  0017B8  0900               	iorlw	0
  5575  0017BA  A4D8               	btfss	status,2,c
  5576  0017BC  0012               	return	
  5577  0017BE  D043               	goto	l3222
  5578  0017C0                     l352:
  5579                           
  5580                           ; BSR set to: 4
  5581                           ;usb_device.c: 2693: inPipes[0].info.bits.busy = 1;
  5582  0017C0  8E4E               	bsf	_inPipes+3,7,c
  5583                           
  5584                           ; BSR set to: 4
  5585                           ;usb_device.c: 2694: USBDeviceState = ADR_PENDING_STATE;
  5586  0017C2  0E08               	movlw	8
  5587  0017C4  6E5A               	movwf	_USBDeviceState,c
  5588                           
  5589                           ;usb_device.c: 2696: break;
  5590  0017C6  0012               	return	
  5591  0017C8                     l3192:
  5592                           
  5593                           ; BSR set to: 4
  5594                           ;usb_device.c: 2698: USBStdGetDscHandler();
  5595  0017C8  EC4C  F009         	call	_USBStdGetDscHandler	;wreg free
  5596                           
  5597                           ;usb_device.c: 2699: break;
  5598  0017CC  0012               	return	
  5599  0017CE                     l3194:
  5600                           
  5601                           ;usb_device.c: 2701: USBStdSetCfgHandler();
  5602  0017CE  EC6A  F00B         	call	_USBStdSetCfgHandler	;wreg free
  5603                           
  5604                           ;usb_device.c: 2702: break;
  5605  0017D2  0012               	return	
  5606  0017D4                     l3196:
  5607                           
  5608                           ;usb_device.c: 2704: inPipes[0].pSrc.bRam = (uint8_t*)&USBActiveConfiguration;
  5609  0017D4  0E5D               	movlw	low _USBActiveConfiguration
  5610  0017D6  6E4B               	movwf	_inPipes,c
  5611  0017D8  0E00               	movlw	high _USBActiveConfiguration
  5612  0017DA  6E4C               	movwf	_inPipes+1,c
  5613                           
  5614                           ;usb_device.c: 2705: inPipes[0].info.bits.ctrl_trf_mem = 0x01;
  5615  0017DC  804E               	bsf	_inPipes+3,0,c
  5616                           
  5617                           ;usb_device.c: 2706: inPipes[0].wCount.v[0] = 1;
  5618  0017DE  0E01               	movlw	1
  5619  0017E0  6E4F               	movwf	_inPipes+4,c
  5620                           
  5621                           ;usb_device.c: 2707: inPipes[0].info.bits.busy = 1;
  5622  0017E2  8E4E               	bsf	_inPipes+3,7,c
  5623                           
  5624                           ;usb_device.c: 2708: break;
  5625  0017E4  0012               	return	
  5626  0017E6                     l3204:
  5627                           
  5628                           ;usb_device.c: 2710: USBStdGetStatusHandler();
  5629  0017E6  EC74  F00D         	call	_USBStdGetStatusHandler	;wreg free
  5630                           
  5631                           ;usb_device.c: 2711: break;
  5632  0017EA  0012               	return	
  5633  0017EC                     l3206:
  5634                           
  5635                           ;usb_device.c: 2713: case 3:
  5636                           ;usb_device.c: 2714: USBStdFeatureReqHandler();
  5637  0017EC  ECF2  F005         	call	_USBStdFeatureReqHandler	;wreg free
  5638                           
  5639                           ;usb_device.c: 2715: break;
  5640  0017F0  0012               	return	
  5641  0017F2                     l3208:
  5642                           
  5643                           ;usb_device.c: 2717: inPipes[0].pSrc.bRam = (uint8_t*)&USBAlternateInterface[SetupPkt.bI
      +                          ntfID];
  5644  0017F2  0104               	movlb	4	; () banked
  5645  0017F4  5124               	movf	36,w,b	;volatile
  5646  0017F6  0D01               	mullw	1
  5647  0017F8  0E5E               	movlw	low _USBAlternateInterface
  5648  0017FA  24F3               	addwf	prodl,w,c
  5649  0017FC  6E4B               	movwf	_inPipes,c
  5650  0017FE  0E00               	movlw	high _USBAlternateInterface
  5651  001800  20F4               	addwfc	prodh,w,c
  5652  001802  6E4C               	movwf	_inPipes+1,c
  5653                           
  5654                           ; BSR set to: 4
  5655                           ;usb_device.c: 2718: inPipes[0].info.bits.ctrl_trf_mem = 0x01;
  5656  001804  804E               	bsf	_inPipes+3,0,c
  5657                           
  5658                           ; BSR set to: 4
  5659                           ;usb_device.c: 2719: inPipes[0].wCount.v[0] = 1;
  5660  001806  0E01               	movlw	1
  5661  001808  6E4F               	movwf	_inPipes+4,c
  5662                           
  5663                           ; BSR set to: 4
  5664                           ;usb_device.c: 2720: inPipes[0].info.bits.busy = 1;
  5665  00180A  8E4E               	bsf	_inPipes+3,7,c
  5666                           
  5667                           ;usb_device.c: 2721: break;
  5668  00180C  0012               	return	
  5669  00180E                     l361:
  5670                           
  5671                           ; BSR set to: 4
  5672                           ;usb_device.c: 2723: inPipes[0].info.bits.busy = 1;
  5673  00180E  8E4E               	bsf	_inPipes+3,7,c
  5674                           
  5675                           ; BSR set to: 4
  5676                           ;usb_device.c: 2724: USBAlternateInterface[SetupPkt.bIntfID] = SetupPkt.bAltID;
  5677  001810  0104               	movlb	4	; () banked
  5678  001812  5124               	movf	36,w,b	;volatile
  5679  001814  0D01               	mullw	1
  5680  001816  0E5E               	movlw	low _USBAlternateInterface
  5681  001818  24F3               	addwf	prodl,w,c
  5682  00181A  6ED9               	movwf	fsr2l,c
  5683  00181C  0E00               	movlw	high _USBAlternateInterface
  5684  00181E  20F4               	addwfc	prodh,w,c
  5685  001820  6EDA               	movwf	fsr2h,c
  5686  001822  C422 FFDF          	movff	1058,indf2	;volatile
  5687                           
  5688                           ;usb_device.c: 2725: break;
  5689  001826  0012               	return	
  5690  001828                     l3218:
  5691                           
  5692                           ; BSR set to: 4
  5693                           ;usb_device.c: 2727: USER_USB_CALLBACK_EVENT_HANDLER(EVENT_SET_DESCRIPTOR,0,0);
  5694  001828  0E00               	movlw	0
  5695  00182A  6E0E               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@event+1,c
  5696  00182C  0E02               	movlw	2
  5697  00182E  6E0D               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@event,c
  5698  001830  0E00               	movlw	0
  5699  001832  6E0F               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@pdata,c
  5700  001834  0E00               	movlw	0
  5701  001836  6E10               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@pdata+1,c
  5702  001838  0E00               	movlw	0
  5703  00183A  6E12               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@size+1,c
  5704  00183C  0E00               	movlw	0
  5705  00183E  6E11               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@size,c
  5706  001840  EC6E  F011         	call	_USER_USB_CALLBACK_EVENT_HANDLER	;wreg free
  5707                           
  5708                           ;usb_device.c: 2732: }
  5709                           
  5710                           ;usb_device.c: 2731: break;
  5711                           
  5712                           ;usb_device.c: 2730: default:
  5713                           
  5714                           ;usb_device.c: 2729: case 12:
  5715                           
  5716                           ;usb_device.c: 2728: break;
  5717  001844  0012               	return	
  5718  001846                     l3222:
  5719  001846  0104               	movlb	4	; () banked
  5720  001848  5121               	movf	33,w,b	;volatile
  5721                           
  5722                           ; Switch size 1, requested type "space"
  5723                           ; Number of cases is 11, Range of values is 0 to 12
  5724                           ; switch strategies available:
  5725                           ; Name         Instructions Cycles
  5726                           ; simple_byte           34    18 (average)
  5727                           ;	Chosen strategy is simple_byte
  5728  00184A  0A00               	xorlw	0	; case 0
  5729  00184C  B4D8               	btfsc	status,2,c
  5730  00184E  D7CB               	goto	l3204
  5731  001850  0A01               	xorlw	1	; case 1
  5732  001852  B4D8               	btfsc	status,2,c
  5733  001854  D7CB               	goto	l3206
  5734  001856  0A02               	xorlw	2	; case 3
  5735  001858  B4D8               	btfsc	status,2,c
  5736  00185A  D7C8               	goto	l3206
  5737  00185C  0A06               	xorlw	6	; case 5
  5738  00185E  B4D8               	btfsc	status,2,c
  5739  001860  D7AF               	goto	l352
  5740  001862  0A03               	xorlw	3	; case 6
  5741  001864  B4D8               	btfsc	status,2,c
  5742  001866  D7B0               	goto	l3192
  5743  001868  0A01               	xorlw	1	; case 7
  5744  00186A  B4D8               	btfsc	status,2,c
  5745  00186C  D7DD               	goto	l3218
  5746  00186E  0A0F               	xorlw	15	; case 8
  5747  001870  B4D8               	btfsc	status,2,c
  5748  001872  D7B0               	goto	l3196
  5749  001874  0A01               	xorlw	1	; case 9
  5750  001876  B4D8               	btfsc	status,2,c
  5751  001878  D7AA               	goto	l3194
  5752  00187A  0A03               	xorlw	3	; case 10
  5753  00187C  B4D8               	btfsc	status,2,c
  5754  00187E  D7B9               	goto	l3208
  5755  001880  0A01               	xorlw	1	; case 11
  5756  001882  B4D8               	btfsc	status,2,c
  5757  001884  D7C4               	goto	l361
  5758  001886  0A07               	xorlw	7	; case 12
  5759  001888  0012               	return	
  5760  00188A                     __end_of_USBCheckStdRequest:
  5761                           	opt stack 0
  5762                           tblptru	equ	0xFF8
  5763                           tblptrh	equ	0xFF7
  5764                           tblptrl	equ	0xFF6
  5765                           tablat	equ	0xFF5
  5766                           prodh	equ	0xFF4
  5767                           prodl	equ	0xFF3
  5768                           postinc0	equ	0xFEE
  5769                           wreg	equ	0xFE8
  5770                           indf1	equ	0xFE7
  5771                           postinc1	equ	0xFE6
  5772                           postdec1	equ	0xFE5
  5773                           fsr1h	equ	0xFE2
  5774                           fsr1l	equ	0xFE1
  5775                           indf2	equ	0xFDF
  5776                           postinc2	equ	0xFDE
  5777                           postdec2	equ	0xFDD
  5778                           plusw2	equ	0xFDB
  5779                           fsr2h	equ	0xFDA
  5780                           fsr2l	equ	0xFD9
  5781                           status	equ	0xFD8
  5782                           
  5783 ;; *************** function _USBStdSetCfgHandler *****************
  5784 ;; Defined at:
  5785 ;;		line 1968 in file "usb/usb_device.c"
  5786 ;; Parameters:    Size  Location     Type
  5787 ;;		None
  5788 ;; Auto vars:     Size  Location     Type
  5789 ;;  i               1   20[COMRAM] unsigned char 
  5790 ;; Return value:  Size  Location     Type
  5791 ;;                  1    wreg      void 
  5792 ;; Registers used:
  5793 ;;		wreg, fsr2l, fsr2h, status,2, status,0, prodl, prodh, cstack
  5794 ;; Tracked objects:
  5795 ;;		On entry : 0/0
  5796 ;;		On exit  : 0/0
  5797 ;;		Unchanged: 0/0
  5798 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  5799 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  5800 ;;      Locals:         1       0       0       0       0       0       0       0       0       0
  5801 ;;      Temps:          0       0       0       0       0       0       0       0       0       0
  5802 ;;      Totals:         1       0       0       0       0       0       0       0       0       0
  5803 ;;Total ram usage:        1 bytes
  5804 ;; Hardware stack levels used:    1
  5805 ;; Hardware stack levels required when called:    4
  5806 ;; This function calls:
  5807 ;;		_USER_USB_CALLBACK_EVENT_HANDLER
  5808 ;;		_memset
  5809 ;; This function is called by:
  5810 ;;		_USBCheckStdRequest
  5811 ;; This function uses a non-reentrant model
  5812 ;;
  5813                           
  5814                           	psect	text28
  5815  0016D4                     __ptext28:
  5816                           	opt stack 0
  5817  0016D4                     _USBStdSetCfgHandler:
  5818                           	opt stack 22
  5819                           
  5820                           ;usb_device.c: 1970: uint8_t i;
  5821                           ;usb_device.c: 1973: inPipes[0].info.bits.busy = 1;
  5822                           
  5823                           ;incstack = 0
  5824  0016D4  8E4E               	bsf	_inPipes+3,7,c
  5825                           
  5826                           ;usb_device.c: 1976: memset((void*)&UEP1,0x00,(1));;
  5827  0016D6  0E71               	movlw	113
  5828  0016D8  6E01               	movwf	memset@p1,c
  5829  0016DA  0E0F               	movlw	15
  5830  0016DC  6E02               	movwf	memset@p1+1,c
  5831  0016DE  0E00               	movlw	0
  5832  0016E0  6E04               	movwf	memset@c+1,c
  5833  0016E2  0E00               	movlw	0
  5834  0016E4  6E03               	movwf	memset@c,c
  5835  0016E6  0E00               	movlw	0
  5836  0016E8  6E06               	movwf	memset@n+1,c
  5837  0016EA  0E01               	movlw	1
  5838  0016EC  6E05               	movwf	memset@n,c
  5839  0016EE  EC4E  F013         	call	_memset	;wreg free
  5840                           
  5841                           ;usb_device.c: 1979: memset((void*)&BDT[0], 0x00, sizeof(BDT));
  5842  0016F2  0E00               	movlw	0
  5843  0016F4  6E01               	movwf	memset@p1,c
  5844  0016F6  0E04               	movlw	4
  5845  0016F8  6E02               	movwf	memset@p1+1,c
  5846  0016FA  0E00               	movlw	0
  5847  0016FC  6E04               	movwf	memset@c+1,c
  5848  0016FE  0E00               	movlw	0
  5849  001700  6E03               	movwf	memset@c,c
  5850  001702  0E00               	movlw	0
  5851  001704  6E06               	movwf	memset@n+1,c
  5852  001706  0E20               	movlw	32
  5853  001708  6E05               	movwf	memset@n,c
  5854  00170A  EC4E  F013         	call	_memset	;wreg free
  5855                           
  5856                           ;usb_device.c: 1982: UCONbits.PPBRST = 1;
  5857  00170E  8C6D               	bsf	3949,6,c	;volatile
  5858                           
  5859                           ;usb_device.c: 1987: for(i = 0; i < (uint8_t)(1+1u); i++)
  5860  001710  0E00               	movlw	0
  5861  001712  6E15               	movwf	USBStdSetCfgHandler@i,c
  5862  001714                     l2904:
  5863  001714  0E01               	movlw	1
  5864  001716  6415               	cpfsgt	USBStdSetCfgHandler@i,c
  5865  001718  D001               	goto	l2908
  5866  00171A  D016               	goto	l2914
  5867  00171C                     l2908:
  5868                           
  5869                           ;usb_device.c: 1988: {
  5870                           ;usb_device.c: 1989: ep_data_in[i].Val = 0u;
  5871  00171C  5015               	movf	USBStdSetCfgHandler@i,w,c
  5872  00171E  0D01               	mullw	1
  5873  001720  0ED8               	movlw	low _ep_data_in
  5874  001722  24F3               	addwf	prodl,w,c
  5875  001724  6ED9               	movwf	fsr2l,c
  5876  001726  0E00               	movlw	high _ep_data_in
  5877  001728  20F4               	addwfc	prodh,w,c
  5878  00172A  6EDA               	movwf	fsr2h,c
  5879  00172C  0E00               	movlw	0
  5880  00172E  6EDF               	movwf	indf2,c
  5881                           
  5882                           ;usb_device.c: 1990: ep_data_out[i].Val = 0u;
  5883  001730  5015               	movf	USBStdSetCfgHandler@i,w,c
  5884  001732  0D01               	mullw	1
  5885  001734  0EDA               	movlw	low _ep_data_out
  5886  001736  24F3               	addwf	prodl,w,c
  5887  001738  6ED9               	movwf	fsr2l,c
  5888  00173A  0E00               	movlw	high _ep_data_out
  5889  00173C  20F4               	addwfc	prodh,w,c
  5890  00173E  6EDA               	movwf	fsr2h,c
  5891  001740  0E00               	movlw	0
  5892  001742  6EDF               	movwf	indf2,c
  5893  001744  2A15               	incf	USBStdSetCfgHandler@i,f,c
  5894  001746  D7E6               	goto	l2904
  5895  001748                     l2914:
  5896                           
  5897                           ;usb_device.c: 1991: }
  5898                           ;usb_device.c: 1994: memset((void*)&USBAlternateInterface,0x00,1);
  5899  001748  0E5E               	movlw	low _USBAlternateInterface
  5900  00174A  6E01               	movwf	memset@p1,c
  5901  00174C  0E00               	movlw	high _USBAlternateInterface
  5902  00174E  6E02               	movwf	memset@p1+1,c
  5903  001750  0E00               	movlw	0
  5904  001752  6E04               	movwf	memset@c+1,c
  5905  001754  0E00               	movlw	0
  5906  001756  6E03               	movwf	memset@c,c
  5907  001758  0E00               	movlw	0
  5908  00175A  6E06               	movwf	memset@n+1,c
  5909  00175C  0E01               	movlw	1
  5910  00175E  6E05               	movwf	memset@n,c
  5911  001760  EC4E  F013         	call	_memset	;wreg free
  5912                           
  5913                           ;usb_device.c: 1997: UCONbits.PPBRST = 0;
  5914  001764  9C6D               	bcf	3949,6,c	;volatile
  5915                           
  5916                           ;usb_device.c: 1999: pBDTEntryIn[0] = (volatile BDT_ENTRY*)&BDT[2];
  5917  001766  0E08               	movlw	8
  5918  001768  6E51               	movwf	_pBDTEntryIn,c
  5919  00176A  0E04               	movlw	4
  5920  00176C  6E52               	movwf	_pBDTEntryIn+1,c
  5921                           
  5922                           ;usb_device.c: 2002: pBDTEntryEP0OutCurrent = (volatile BDT_ENTRY*)&BDT[0];
  5923  00176E  0E00               	movlw	0
  5924  001770  6E55               	movwf	_pBDTEntryEP0OutCurrent,c
  5925  001772  0E04               	movlw	4
  5926  001774  6E56               	movwf	_pBDTEntryEP0OutCurrent+1,c
  5927                           
  5928                           ;usb_device.c: 2003: pBDTEntryEP0OutNext = pBDTEntryEP0OutCurrent;
  5929  001776  C055  F057         	movff	_pBDTEntryEP0OutCurrent,_pBDTEntryEP0OutNext
  5930  00177A  C056  F058         	movff	_pBDTEntryEP0OutCurrent+1,_pBDTEntryEP0OutNext+1
  5931                           
  5932                           ;usb_device.c: 2006: USBActiveConfiguration = SetupPkt.bConfigurationValue;
  5933  00177E  C422 F05D          	movff	1058,_USBActiveConfiguration	;volatile
  5934                           
  5935                           ;usb_device.c: 2009: if(USBActiveConfiguration == 0)
  5936  001782  505D               	movf	_USBActiveConfiguration,w,c
  5937  001784  A4D8               	btfss	status,2,c
  5938  001786  D003               	goto	l2930
  5939                           
  5940                           ;usb_device.c: 2010: {
  5941                           ;usb_device.c: 2012: USBDeviceState = ADDRESS_STATE;
  5942  001788  0E10               	movlw	16
  5943  00178A  6E5A               	movwf	_USBDeviceState,c
  5944                           
  5945                           ;usb_device.c: 2013: }
  5946  00178C  0012               	return	
  5947  00178E                     l2930:
  5948                           
  5949                           ;usb_device.c: 2014: else
  5950                           ;usb_device.c: 2015: {
  5951                           ;usb_device.c: 2017: USER_USB_CALLBACK_EVENT_HANDLER(EVENT_CONFIGURED,(void*)&USBActiveC
      +                          onfiguration,1);
  5952  00178E  0E00               	movlw	0
  5953  001790  6E0E               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@event+1,c
  5954  001792  0E01               	movlw	1
  5955  001794  6E0D               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@event,c
  5956  001796  0E5D               	movlw	low _USBActiveConfiguration
  5957  001798  6E0F               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@pdata,c
  5958  00179A  0E00               	movlw	high _USBActiveConfiguration
  5959  00179C  6E10               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@pdata+1,c
  5960  00179E  0E00               	movlw	0
  5961  0017A0  6E12               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@size+1,c
  5962  0017A2  0E01               	movlw	1
  5963  0017A4  6E11               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@size,c
  5964  0017A6  EC6E  F011         	call	_USER_USB_CALLBACK_EVENT_HANDLER	;wreg free
  5965                           
  5966                           ;usb_device.c: 2022: USBDeviceState = CONFIGURED_STATE;
  5967  0017AA  0E20               	movlw	32
  5968  0017AC  6E5A               	movwf	_USBDeviceState,c
  5969  0017AE  0012               	return	
  5970  0017B0                     __end_of_USBStdSetCfgHandler:
  5971                           	opt stack 0
  5972                           tblptru	equ	0xFF8
  5973                           tblptrh	equ	0xFF7
  5974                           tblptrl	equ	0xFF6
  5975                           tablat	equ	0xFF5
  5976                           prodh	equ	0xFF4
  5977                           prodl	equ	0xFF3
  5978                           postinc0	equ	0xFEE
  5979                           wreg	equ	0xFE8
  5980                           indf1	equ	0xFE7
  5981                           postinc1	equ	0xFE6
  5982                           postdec1	equ	0xFE5
  5983                           fsr1h	equ	0xFE2
  5984                           fsr1l	equ	0xFE1
  5985                           indf2	equ	0xFDF
  5986                           postinc2	equ	0xFDE
  5987                           postdec2	equ	0xFDD
  5988                           plusw2	equ	0xFDB
  5989                           fsr2h	equ	0xFDA
  5990                           fsr2l	equ	0xFD9
  5991                           status	equ	0xFD8
  5992                           
  5993 ;; *************** function _memset *****************
  5994 ;; Defined at:
  5995 ;;		line 8 in file "C:\Program Files (x86)\Microchip\xc8\v1.38\sources\common\memset.c"
  5996 ;; Parameters:    Size  Location     Type
  5997 ;;  p1              2    0[COMRAM] PTR void 
  5998 ;;		 -> USBAlternateInterface(1), BDT(32), UEP1(1), 
  5999 ;;  c               2    2[COMRAM] int 
  6000 ;;  n               2    4[COMRAM] unsigned int 
  6001 ;; Auto vars:     Size  Location     Type
  6002 ;;  p               2    6[COMRAM] PTR unsigned char 
  6003 ;;		 -> USBAlternateInterface(1), BDT(32), UEP1(1), 
  6004 ;; Return value:  Size  Location     Type
  6005 ;;                  2    0[COMRAM] PTR void 
  6006 ;; Registers used:
  6007 ;;		wreg, fsr2l, fsr2h, status,2, status,0
  6008 ;; Tracked objects:
  6009 ;;		On entry : 0/0
  6010 ;;		On exit  : 0/0
  6011 ;;		Unchanged: 0/0
  6012 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  6013 ;;      Params:         6       0       0       0       0       0       0       0       0       0
  6014 ;;      Locals:         2       0       0       0       0       0       0       0       0       0
  6015 ;;      Temps:          0       0       0       0       0       0       0       0       0       0
  6016 ;;      Totals:         8       0       0       0       0       0       0       0       0       0
  6017 ;;Total ram usage:        8 bytes
  6018 ;; Hardware stack levels used:    1
  6019 ;; This function calls:
  6020 ;;		Nothing
  6021 ;; This function is called by:
  6022 ;;		_USBDeviceInit
  6023 ;;		_USBStdSetCfgHandler
  6024 ;; This function uses a non-reentrant model
  6025 ;;
  6026                           
  6027                           	psect	text29
  6028  00269C                     __ptext29:
  6029                           	opt stack 0
  6030  00269C                     _memset:
  6031                           	opt stack 28
  6032                           
  6033                           ;incstack = 0
  6034  00269C  C001  F007         	movff	memset@p1,memset@p
  6035  0026A0  C002  F008         	movff	memset@p1+1,memset@p+1
  6036  0026A4  D008               	goto	l2778
  6037  0026A6                     l2774:
  6038  0026A6  C007  FFD9         	movff	memset@p,fsr2l
  6039  0026AA  C008  FFDA         	movff	memset@p+1,fsr2h
  6040  0026AE  C003  FFDF         	movff	memset@c,indf2
  6041  0026B2  4A07               	infsnz	memset@p,f,c
  6042  0026B4  2A08               	incf	memset@p+1,f,c
  6043  0026B6                     l2778:
  6044  0026B6  0605               	decf	memset@n,f,c
  6045  0026B8  A0D8               	btfss	status,0,c
  6046  0026BA  0606               	decf	memset@n+1,f,c
  6047  0026BC  2805               	incf	memset@n,w,c
  6048  0026BE  E1F3               	bnz	l2774
  6049  0026C0  2806               	incf	memset@n+1,w,c
  6050  0026C2  B4D8               	btfsc	status,2,c
  6051  0026C4  0012               	return	
  6052  0026C6  D7EF               	goto	l2774
  6053  0026C8                     __end_of_memset:
  6054                           	opt stack 0
  6055                           tblptru	equ	0xFF8
  6056                           tblptrh	equ	0xFF7
  6057                           tblptrl	equ	0xFF6
  6058                           tablat	equ	0xFF5
  6059                           prodh	equ	0xFF4
  6060                           prodl	equ	0xFF3
  6061                           postinc0	equ	0xFEE
  6062                           wreg	equ	0xFE8
  6063                           indf1	equ	0xFE7
  6064                           postinc1	equ	0xFE6
  6065                           postdec1	equ	0xFE5
  6066                           fsr1h	equ	0xFE2
  6067                           fsr1l	equ	0xFE1
  6068                           indf2	equ	0xFDF
  6069                           postinc2	equ	0xFDE
  6070                           postdec2	equ	0xFDD
  6071                           plusw2	equ	0xFDB
  6072                           fsr2h	equ	0xFDA
  6073                           fsr2l	equ	0xFD9
  6074                           status	equ	0xFD8
  6075                           
  6076 ;; *************** function _USBStdGetStatusHandler *****************
  6077 ;; Defined at:
  6078 ;;		line 2129 in file "usb/usb_device.c"
  6079 ;; Parameters:    Size  Location     Type
  6080 ;;		None
  6081 ;; Auto vars:     Size  Location     Type
  6082 ;;  p               2    1[COMRAM] PTR struct __BDT
  6083 ;;		 -> RAM(2047), NULL(0), BDT(32), 
  6084 ;; Return value:  Size  Location     Type
  6085 ;;                  1    wreg      void 
  6086 ;; Registers used:
  6087 ;;		wreg, fsr2l, fsr2h, status,2, status,0, prodl, prodh
  6088 ;; Tracked objects:
  6089 ;;		On entry : 0/0
  6090 ;;		On exit  : 0/0
  6091 ;;		Unchanged: 0/0
  6092 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  6093 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  6094 ;;      Locals:         2       0       0       0       0       0       0       0       0       0
  6095 ;;      Temps:          1       0       0       0       0       0       0       0       0       0
  6096 ;;      Totals:         3       0       0       0       0       0       0       0       0       0
  6097 ;;Total ram usage:        3 bytes
  6098 ;; Hardware stack levels used:    1
  6099 ;; This function calls:
  6100 ;;		Nothing
  6101 ;; This function is called by:
  6102 ;;		_USBCheckStdRequest
  6103 ;; This function uses a non-reentrant model
  6104 ;;
  6105                           
  6106                           	psect	text30
  6107  001AE8                     __ptext30:
  6108                           	opt stack 0
  6109  001AE8                     _USBStdGetStatusHandler:
  6110                           	opt stack 26
  6111                           
  6112                           ;usb_device.c: 2131: CtrlTrfData[0] = 0;
  6113                           
  6114                           ;incstack = 0
  6115  001AE8  0E00               	movlw	0
  6116  001AEA  0104               	movlb	4	; () banked
  6117  001AEC  6F28               	movwf	40,b	;volatile
  6118                           
  6119                           ;usb_device.c: 2132: CtrlTrfData[1] = 0;
  6120  001AEE  0E00               	movlw	0
  6121  001AF0  0104               	movlb	4	; () banked
  6122  001AF2  6F29               	movwf	41,b	;volatile
  6123                           
  6124                           ;usb_device.c: 2134: switch(SetupPkt.Recipient)
  6125  001AF4  D039               	goto	l2986
  6126  001AF6                     l290:
  6127                           
  6128                           ; BSR set to: 4
  6129                           ;usb_device.c: 2137: inPipes[0].info.bits.busy = 1;
  6130  001AF6  8E4E               	bsf	_inPipes+3,7,c
  6131                           
  6132                           ; BSR set to: 4
  6133                           ;usb_device.c: 2145: }
  6134                           ;usb_device.c: 2147: if(RemoteWakeup == 1)
  6135                           
  6136                           ; BSR set to: 4
  6137                           
  6138                           ; BSR set to: 4
  6139                           ;usb_device.c: 2143: {
  6140                           ;usb_device.c: 2144: CtrlTrfData[0]|=0x01;
  6141                           
  6142                           ;usb_device.c: 2142: if(0 == 1)
  6143  001AF8  0100               	movlb	0	; () banked
  6144  001AFA  05DF               	decf	_RemoteWakeup& (0+255),w,b
  6145  001AFC  A4D8               	btfss	status,2,c
  6146  001AFE  D040               	goto	l293
  6147                           
  6148                           ; BSR set to: 0
  6149                           ;usb_device.c: 2148: {
  6150                           ;usb_device.c: 2149: CtrlTrfData[0]|=0x02;
  6151  001B00  0104               	movlb	4	; () banked
  6152  001B02  8328               	bsf	40,1,b	;volatile
  6153                           
  6154                           ; BSR set to: 4
  6155                           ;usb_device.c: 2150: }
  6156                           ;usb_device.c: 2151: break;
  6157  001B04  D03D               	goto	l293
  6158  001B06                     l294:
  6159                           
  6160                           ; BSR set to: 4
  6161                           ;usb_device.c: 2153: inPipes[0].info.bits.busy = 1;
  6162  001B06  8E4E               	bsf	_inPipes+3,7,c
  6163                           
  6164                           ;usb_device.c: 2154: break;
  6165  001B08  D03B               	goto	l293
  6166  001B0A                     l295:
  6167                           
  6168                           ; BSR set to: 4
  6169                           ;usb_device.c: 2156: inPipes[0].info.bits.busy = 1;
  6170  001B0A  8E4E               	bsf	_inPipes+3,7,c
  6171                           
  6172                           ;usb_device.c: 2160: {
  6173                           ;usb_device.c: 2161: BDT_ENTRY *p;
  6174                           ;usb_device.c: 2163: if(SetupPkt.EPDir == 0)
  6175  001B0C  0104               	movlb	4	; () banked
  6176  001B0E  BF24               	btfsc	36,7,b	;volatile
  6177  001B10  D00B               	goto	l2976
  6178                           
  6179                           ; BSR set to: 4
  6180                           ;usb_device.c: 2164: {
  6181                           ;usb_device.c: 2165: p = (BDT_ENTRY*)pBDTEntryOut[SetupPkt.EPNum];
  6182  001B12  0104               	movlb	4	; () banked
  6183  001B14  5124               	movf	36,w,b	;volatile
  6184  001B16  0B0F               	andlw	15
  6185  001B18  6E01               	movwf	??_USBStdGetStatusHandler& (0+255),c
  6186  001B1A  5001               	movf	??_USBStdGetStatusHandler,w,c
  6187  001B1C  0D02               	mullw	2
  6188  001B1E  0ED0               	movlw	low _pBDTEntryOut
  6189  001B20  24F3               	addwf	prodl,w,c
  6190  001B22  6ED9               	movwf	fsr2l,c
  6191  001B24  0E00               	movlw	high _pBDTEntryOut
  6192  001B26  D00A               	goto	L2
  6193  001B28                     l2976:
  6194                           
  6195                           ; BSR set to: 4
  6196                           ;usb_device.c: 2167: else
  6197                           ;usb_device.c: 2168: {
  6198                           ;usb_device.c: 2169: p = (BDT_ENTRY*)pBDTEntryIn[SetupPkt.EPNum];
  6199  001B28  0104               	movlb	4	; () banked
  6200  001B2A  5124               	movf	36,w,b	;volatile
  6201  001B2C  0B0F               	andlw	15
  6202  001B2E  6E01               	movwf	??_USBStdGetStatusHandler& (0+255),c
  6203  001B30  5001               	movf	??_USBStdGetStatusHandler,w,c
  6204  001B32  0D02               	mullw	2
  6205  001B34  0E51               	movlw	low _pBDTEntryIn
  6206  001B36  24F3               	addwf	prodl,w,c
  6207  001B38  6ED9               	movwf	fsr2l,c
  6208  001B3A  0E00               	movlw	high _pBDTEntryIn
  6209  001B3C                     L2:
  6210  001B3C  20F4               	addwfc	prodh,w,c
  6211  001B3E  6EDA               	movwf	fsr2h,c
  6212  001B40  CFDE F002          	movff	postinc2,USBStdGetStatusHandler@p
  6213  001B44  CFDD F003          	movff	postdec2,USBStdGetStatusHandler@p+1
  6214                           
  6215                           ; BSR set to: 4
  6216                           ;usb_device.c: 2170: }
  6217                           ;usb_device.c: 2172: if((p->STAT.UOWN == 1) && (p->STAT.BSTALL == 1))
  6218                           
  6219                           ; BSR set to: 4
  6220  001B48  C002  FFD9         	movff	USBStdGetStatusHandler@p,fsr2l
  6221  001B4C  C003  FFDA         	movff	USBStdGetStatusHandler@p+1,fsr2h
  6222  001B50  AEDF               	btfss	indf2,7,c
  6223  001B52  D016               	goto	l293
  6224                           
  6225                           ; BSR set to: 4
  6226  001B54  C002  FFD9         	movff	USBStdGetStatusHandler@p,fsr2l
  6227  001B58  C003  FFDA         	movff	USBStdGetStatusHandler@p+1,fsr2h
  6228  001B5C  A4DF               	btfss	indf2,2,c
  6229  001B5E  D010               	goto	l293
  6230                           
  6231                           ; BSR set to: 4
  6232                           ;usb_device.c: 2173: CtrlTrfData[0]=0x01;
  6233  001B60  0E01               	movlw	1
  6234  001B62  0104               	movlb	4	; () banked
  6235  001B64  6F28               	movwf	40,b	;volatile
  6236                           
  6237                           ; BSR set to: 4
  6238                           ;usb_device.c: 2175: }
  6239                           ;usb_device.c: 2176: }
  6240                           
  6241                           ; BSR set to: 4
  6242                           ;usb_device.c: 2174: break;
  6243  001B66  D00C               	goto	l293
  6244  001B68                     l2986:
  6245                           
  6246                           ; BSR set to: 4
  6247  001B68  0104               	movlb	4	; () banked
  6248  001B6A  5120               	movf	32,w,b	;volatile
  6249  001B6C  0B1F               	andlw	31
  6250                           
  6251                           ; Switch size 1, requested type "space"
  6252                           ; Number of cases is 3, Range of values is 0 to 2
  6253                           ; switch strategies available:
  6254                           ; Name         Instructions Cycles
  6255                           ; simple_byte           10     6 (average)
  6256                           ;	Chosen strategy is simple_byte
  6257  001B6E  0A00               	xorlw	0	; case 0
  6258  001B70  B4D8               	btfsc	status,2,c
  6259  001B72  D7C1               	goto	l290
  6260  001B74  0A01               	xorlw	1	; case 1
  6261  001B76  B4D8               	btfsc	status,2,c
  6262  001B78  D7C6               	goto	l294
  6263  001B7A  0A03               	xorlw	3	; case 2
  6264  001B7C  B4D8               	btfsc	status,2,c
  6265  001B7E  D7C5               	goto	l295
  6266  001B80                     l293:
  6267                           
  6268                           ;usb_device.c: 2178: if(inPipes[0].info.bits.busy == 1)
  6269  001B80  AE4E               	btfss	_inPipes+3,7,c
  6270  001B82  0012               	return	
  6271                           
  6272                           ;usb_device.c: 2179: {
  6273                           ;usb_device.c: 2180: inPipes[0].pSrc.bRam = (uint8_t*)&CtrlTrfData;
  6274  001B84  0E28               	movlw	40
  6275  001B86  6E4B               	movwf	_inPipes,c
  6276  001B88  0E04               	movlw	4
  6277  001B8A  6E4C               	movwf	_inPipes+1,c
  6278                           
  6279                           ;usb_device.c: 2181: inPipes[0].info.bits.ctrl_trf_mem = 0x01;
  6280  001B8C  804E               	bsf	_inPipes+3,0,c
  6281                           
  6282                           ;usb_device.c: 2182: inPipes[0].wCount.v[0] = 2;
  6283  001B8E  0E02               	movlw	2
  6284  001B90  6E4F               	movwf	_inPipes+4,c
  6285  001B92  0012               	return	
  6286  001B94                     __end_of_USBStdGetStatusHandler:
  6287                           	opt stack 0
  6288                           tblptru	equ	0xFF8
  6289                           tblptrh	equ	0xFF7
  6290                           tblptrl	equ	0xFF6
  6291                           tablat	equ	0xFF5
  6292                           prodh	equ	0xFF4
  6293                           prodl	equ	0xFF3
  6294                           postinc0	equ	0xFEE
  6295                           wreg	equ	0xFE8
  6296                           indf1	equ	0xFE7
  6297                           postinc1	equ	0xFE6
  6298                           postdec1	equ	0xFE5
  6299                           fsr1h	equ	0xFE2
  6300                           fsr1l	equ	0xFE1
  6301                           indf2	equ	0xFDF
  6302                           postinc2	equ	0xFDE
  6303                           postdec2	equ	0xFDD
  6304                           plusw2	equ	0xFDB
  6305                           fsr2h	equ	0xFDA
  6306                           fsr2l	equ	0xFD9
  6307                           status	equ	0xFD8
  6308                           
  6309 ;; *************** function _USBStdGetDscHandler *****************
  6310 ;; Defined at:
  6311 ;;		line 2043 in file "usb/usb_device.c"
  6312 ;; Parameters:    Size  Location     Type
  6313 ;;		None
  6314 ;; Auto vars:     Size  Location     Type
  6315 ;;		None
  6316 ;; Return value:  Size  Location     Type
  6317 ;;                  1    wreg      void 
  6318 ;; Registers used:
  6319 ;;		wreg, fsr1l, fsr1h, status,2, status,0, tblptrl, tblptrh, tblptru, prodl, prodh
  6320 ;; Tracked objects:
  6321 ;;		On entry : 0/0
  6322 ;;		On exit  : 0/0
  6323 ;;		Unchanged: 0/0
  6324 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  6325 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  6326 ;;      Locals:         0       0       0       0       0       0       0       0       0       0
  6327 ;;      Temps:          2       0       0       0       0       0       0       0       0       0
  6328 ;;      Totals:         2       0       0       0       0       0       0       0       0       0
  6329 ;;Total ram usage:        2 bytes
  6330 ;; Hardware stack levels used:    1
  6331 ;; This function calls:
  6332 ;;		Nothing
  6333 ;; This function is called by:
  6334 ;;		_USBCheckStdRequest
  6335 ;; This function uses a non-reentrant model
  6336 ;;
  6337                           
  6338                           	psect	text31
  6339  001298                     __ptext31:
  6340                           	opt stack 0
  6341  001298                     _USBStdGetDscHandler:
  6342                           	opt stack 26
  6343                           
  6344                           ;usb_device.c: 2045: if(SetupPkt.bmRequestType == 0x80)
  6345                           
  6346                           ;incstack = 0
  6347  001298  0E80               	movlw	128
  6348  00129A  0104               	movlb	4	; () banked
  6349  00129C  1920               	xorwf	32,w,b	;volatile
  6350  00129E  A4D8               	btfss	status,2,c
  6351  0012A0  0012               	return	
  6352                           
  6353                           ; BSR set to: 4
  6354                           ;usb_device.c: 2046: {
  6355                           ;usb_device.c: 2047: inPipes[0].info.Val = 0x00 | 0x80 | 0x40;
  6356  0012A2  0EC0               	movlw	192
  6357  0012A4  6E4E               	movwf	_inPipes+3,c
  6358                           
  6359                           ;usb_device.c: 2049: switch(SetupPkt.bDescriptorType)
  6360  0012A6  D07C               	goto	l2964
  6361  0012A8                     l2938:
  6362                           
  6363                           ; BSR set to: 4
  6364                           ;usb_device.c: 2055: inPipes[0].pSrc.bRom = (const uint8_t*)&device_dsc;
  6365  0012A8  0EBC               	movlw	low _device_dsc
  6366  0012AA  6E4B               	movwf	_inPipes,c
  6367  0012AC  0E08               	movlw	high _device_dsc
  6368  0012AE  6E4C               	movwf	_inPipes+1,c
  6369                           
  6370                           ; BSR set to: 4
  6371                           ;usb_device.c: 2057: inPipes[0].wCount.Val = sizeof(device_dsc);
  6372  0012B0  0E00               	movlw	0
  6373  0012B2  6E50               	movwf	_inPipes+5,c
  6374  0012B4  0E12               	movlw	18
  6375  0012B6  6E4F               	movwf	_inPipes+4,c
  6376                           
  6377                           ;usb_device.c: 2058: break;
  6378  0012B8  0012               	return	
  6379  0012BA                     l2942:
  6380                           
  6381                           ; BSR set to: 4
  6382                           ;usb_device.c: 2063: if(SetupPkt.bDscIndex < 1)
  6383  0012BA  0104               	movlb	4	; () banked
  6384  0012BC  5122               	movf	34,w,b	;volatile
  6385  0012BE  A4D8               	btfss	status,2,c
  6386  0012C0  D03E               	goto	l2950
  6387                           
  6388                           ; BSR set to: 4
  6389                           ;usb_device.c: 2064: {
  6390                           ;usb_device.c: 2066: inPipes[0].pSrc.bRom = *(USB_CD_Ptr+SetupPkt.bDscIndex);
  6391  0012C2  0104               	movlb	4	; () banked
  6392  0012C4  5122               	movf	34,w,b	;volatile
  6393  0012C6  0D02               	mullw	2
  6394  0012C8  0E07               	movlw	low _USB_CD_Ptr
  6395  0012CA  24F3               	addwf	prodl,w,c
  6396  0012CC  6EF6               	movwf	tblptrl,c
  6397  0012CE  0E08               	movlw	high _USB_CD_Ptr
  6398  0012D0  20F4               	addwfc	prodh,w,c
  6399  0012D2  6EF7               	movwf	tblptrh,c
  6400  0012D4                     	if	0	;There are less than 3 active tblptr bytes
  6401  0012D4                     	endif
  6402  0012D4  0009               	tblrd		*+
  6403  0012D6  CFF5 F04B          	movff	tablat,_inPipes
  6404  0012DA  000A               	tblrd		*-
  6405  0012DC  CFF5 F04C          	movff	tablat,_inPipes+1
  6406                           
  6407                           ; BSR set to: 4
  6408                           ;usb_device.c: 2074: inPipes[0].wCount.byte.LB = *(inPipes[0].pSrc.bRom+2);
  6409  0012E0  0E02               	movlw	2
  6410  0012E2  244B               	addwf	_inPipes,w,c
  6411  0012E4  6E01               	movwf	??_USBStdGetDscHandler& (0+255),c
  6412  0012E6  0E00               	movlw	0
  6413  0012E8  204C               	addwfc	_inPipes+1,w,c
  6414  0012EA  6E02               	movwf	(??_USBStdGetDscHandler+1)& (0+255),c
  6415  0012EC  C001  FFF6         	movff	??_USBStdGetDscHandler,tblptrl
  6416  0012F0  C002  FFF7         	movff	??_USBStdGetDscHandler+1,tblptrh
  6417  0012F4  6AF8               	clrf	tblptru,c
  6418  0012F6  0E07               	movlw	(high __ramtop+-1)
  6419  0012F8  64F7               	cpfsgt	tblptrh,c
  6420  0012FA  D003               	bra	u1987
  6421  0012FC  0008               	tblrd		*
  6422  0012FE  50F5               	movf	tablat,w,c
  6423  001300  D005               	bra	u1980
  6424  001302                     u1987:
  6425  001302  CFF6 FFE1          	movff	tblptrl,fsr1l
  6426  001306  CFF7 FFE2          	movff	tblptrh,fsr1h
  6427  00130A  50E7               	movf	indf1,w,c
  6428  00130C                     u1980:
  6429  00130C  6E4F               	movwf	_inPipes+4,c
  6430                           
  6431                           ;usb_device.c: 2075: inPipes[0].wCount.byte.HB = *(inPipes[0].pSrc.bRom+3);
  6432  00130E  0E03               	movlw	3
  6433  001310  244B               	addwf	_inPipes,w,c
  6434  001312  6E01               	movwf	??_USBStdGetDscHandler& (0+255),c
  6435  001314  0E00               	movlw	0
  6436  001316  204C               	addwfc	_inPipes+1,w,c
  6437  001318  6E02               	movwf	(??_USBStdGetDscHandler+1)& (0+255),c
  6438  00131A  C001  FFF6         	movff	??_USBStdGetDscHandler,tblptrl
  6439  00131E  C002  FFF7         	movff	??_USBStdGetDscHandler+1,tblptrh
  6440  001322  6AF8               	clrf	tblptru,c
  6441  001324  0E07               	movlw	(high __ramtop+-1)
  6442  001326  64F7               	cpfsgt	tblptrh,c
  6443  001328  D003               	bra	u1997
  6444  00132A  0008               	tblrd		*
  6445  00132C  50F5               	movf	tablat,w,c
  6446  00132E  D005               	bra	u1990
  6447  001330                     u1997:
  6448  001330  CFF6 FFE1          	movff	tblptrl,fsr1l
  6449  001334  CFF7 FFE2          	movff	tblptrh,fsr1h
  6450  001338  50E7               	movf	indf1,w,c
  6451  00133A                     u1990:
  6452  00133A  6E50               	movwf	_inPipes+5,c
  6453                           
  6454                           ;usb_device.c: 2076: }
  6455  00133C  0012               	return	
  6456  00133E                     l2950:
  6457                           
  6458                           ;usb_device.c: 2077: else
  6459                           ;usb_device.c: 2078: {
  6460                           ;usb_device.c: 2079: inPipes[0].info.Val = 0;
  6461  00133E  0E00               	movlw	0
  6462  001340  6E4E               	movwf	_inPipes+3,c
  6463                           
  6464                           ;usb_device.c: 2080: }
  6465                           ;usb_device.c: 2081: break;
  6466  001342  0012               	return	
  6467  001344                     l2952:
  6468                           
  6469                           ;usb_device.c: 2086: if(SetupPkt.bDscIndex<3)
  6470  001344  0E03               	movlw	3
  6471  001346  0104               	movlb	4	; () banked
  6472  001348  6122               	cpfslt	34,b	;volatile
  6473  00134A  D024               	goto	l2958
  6474                           
  6475                           ; BSR set to: 4
  6476                           ;usb_device.c: 2087: {
  6477                           ;usb_device.c: 2089: inPipes[0].pSrc.bRom = *(USB_SD_Ptr+SetupPkt.bDscIndex);
  6478  00134C  0104               	movlb	4	; () banked
  6479  00134E  5122               	movf	34,w,b	;volatile
  6480  001350  0D02               	mullw	2
  6481  001352  0E01               	movlw	low _USB_SD_Ptr
  6482  001354  24F3               	addwf	prodl,w,c
  6483  001356  6EF6               	movwf	tblptrl,c
  6484  001358  0E08               	movlw	high _USB_SD_Ptr
  6485  00135A  20F4               	addwfc	prodh,w,c
  6486  00135C  6EF7               	movwf	tblptrh,c
  6487  00135E                     	if	0	;There are less than 3 active tblptr bytes
  6488  00135E                     	endif
  6489  00135E  0009               	tblrd		*+
  6490  001360  CFF5 F04B          	movff	tablat,_inPipes
  6491  001364  000A               	tblrd		*-
  6492  001366  CFF5 F04C          	movff	tablat,_inPipes+1
  6493                           
  6494                           ; BSR set to: 4
  6495                           ;usb_device.c: 2091: inPipes[0].wCount.Val = *inPipes[0].pSrc.bRom;
  6496  00136A  C04B  FFF6         	movff	_inPipes,tblptrl
  6497  00136E  C04C  FFF7         	movff	_inPipes+1,tblptrh
  6498  001372  6AF8               	clrf	tblptru,c
  6499  001374  0E07               	movlw	(high __ramtop+-1)
  6500  001376  64F7               	cpfsgt	tblptrh,c
  6501  001378  D003               	bra	u2017
  6502  00137A  0008               	tblrd		*
  6503  00137C  50F5               	movf	tablat,w,c
  6504  00137E  D005               	bra	u2010
  6505  001380                     u2017:
  6506  001380  CFF6 FFE1          	movff	tblptrl,fsr1l
  6507  001384  CFF7 FFE2          	movff	tblptrh,fsr1h
  6508  001388  50E7               	movf	indf1,w,c
  6509  00138A                     u2010:
  6510  00138A  6E01               	movwf	??_USBStdGetDscHandler& (0+255),c
  6511  00138C  5001               	movf	??_USBStdGetDscHandler,w,c
  6512  00138E  6E4F               	movwf	_inPipes+4,c
  6513  001390  6A50               	clrf	_inPipes+5,c
  6514                           
  6515                           ;usb_device.c: 2092: }
  6516  001392  0012               	return	
  6517  001394                     l2958:
  6518                           
  6519                           ;usb_device.c: 2102: else
  6520                           ;usb_device.c: 2103: {
  6521                           ;usb_device.c: 2104: inPipes[0].info.Val = 0;
  6522  001394  0E00               	movlw	0
  6523  001396  6E4E               	movwf	_inPipes+3,c
  6524                           
  6525                           ;usb_device.c: 2105: }
  6526                           ;usb_device.c: 2106: break;
  6527  001398  0012               	return	
  6528  00139A                     l2960:
  6529                           
  6530                           ;usb_device.c: 2108: inPipes[0].info.Val = 0;
  6531  00139A  0E00               	movlw	0
  6532  00139C  6E4E               	movwf	_inPipes+3,c
  6533                           
  6534                           ;usb_device.c: 2110: }
  6535                           
  6536                           ;usb_device.c: 2109: break;
  6537  00139E  0012               	return	
  6538  0013A0                     l2964:
  6539  0013A0  0104               	movlb	4	; () banked
  6540  0013A2  5123               	movf	35,w,b	;volatile
  6541                           
  6542                           ; Switch size 1, requested type "space"
  6543                           ; Number of cases is 3, Range of values is 1 to 3
  6544                           ; switch strategies available:
  6545                           ; Name         Instructions Cycles
  6546                           ; simple_byte           10     6 (average)
  6547                           ;	Chosen strategy is simple_byte
  6548  0013A4  0A01               	xorlw	1	; case 1
  6549  0013A6  B4D8               	btfsc	status,2,c
  6550  0013A8  D77F               	goto	l2938
  6551  0013AA  0A03               	xorlw	3	; case 2
  6552  0013AC  B4D8               	btfsc	status,2,c
  6553  0013AE  D785               	goto	l2942
  6554  0013B0  0A01               	xorlw	1	; case 3
  6555  0013B2  B4D8               	btfsc	status,2,c
  6556  0013B4  D7C7               	goto	l2952
  6557  0013B6  D7F1               	goto	l2960
  6558  0013B8                     __end_of_USBStdGetDscHandler:
  6559                           	opt stack 0
  6560                           tblptru	equ	0xFF8
  6561                           tblptrh	equ	0xFF7
  6562                           tblptrl	equ	0xFF6
  6563                           tablat	equ	0xFF5
  6564                           prodh	equ	0xFF4
  6565                           prodl	equ	0xFF3
  6566                           postinc0	equ	0xFEE
  6567                           wreg	equ	0xFE8
  6568                           indf1	equ	0xFE7
  6569                           postinc1	equ	0xFE6
  6570                           postdec1	equ	0xFE5
  6571                           fsr1h	equ	0xFE2
  6572                           fsr1l	equ	0xFE1
  6573                           indf2	equ	0xFDF
  6574                           postinc2	equ	0xFDE
  6575                           postdec2	equ	0xFDD
  6576                           plusw2	equ	0xFDB
  6577                           fsr2h	equ	0xFDA
  6578                           fsr2l	equ	0xFD9
  6579                           status	equ	0xFD8
  6580                           
  6581 ;; *************** function _USBStdFeatureReqHandler *****************
  6582 ;; Defined at:
  6583 ;;		line 2754 in file "usb/usb_device.c"
  6584 ;; Parameters:    Size  Location     Type
  6585 ;;		None
  6586 ;; Auto vars:     Size  Location     Type
  6587 ;;  p               2   24[COMRAM] PTR struct __BDT
  6588 ;;		 -> RAM(2047), NULL(0), BDT(32), 
  6589 ;;  pUEP            2   21[COMRAM] PTR unsigned char 
  6590 ;;		 -> UEP0(1), 
  6591 ;;  current_ep_d    1   23[COMRAM] struct .
  6592 ;; Return value:  Size  Location     Type
  6593 ;;                  1    wreg      void 
  6594 ;; Registers used:
  6595 ;;		wreg, fsr2l, fsr2h, status,2, status,0, prodl, prodh, cstack
  6596 ;; Tracked objects:
  6597 ;;		On entry : 0/0
  6598 ;;		On exit  : 0/0
  6599 ;;		Unchanged: 0/0
  6600 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  6601 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  6602 ;;      Locals:         5       0       0       0       0       0       0       0       0       0
  6603 ;;      Temps:          1       0       0       0       0       0       0       0       0       0
  6604 ;;      Totals:         6       0       0       0       0       0       0       0       0       0
  6605 ;;Total ram usage:        6 bytes
  6606 ;; Hardware stack levels used:    1
  6607 ;; Hardware stack levels required when called:    4
  6608 ;; This function calls:
  6609 ;;		_USER_USB_CALLBACK_EVENT_HANDLER
  6610 ;; This function is called by:
  6611 ;;		_USBCheckStdRequest
  6612 ;; This function uses a non-reentrant model
  6613 ;;
  6614                           
  6615                           	psect	text32
  6616  000BE4                     __ptext32:
  6617                           	opt stack 0
  6618  000BE4                     _USBStdFeatureReqHandler:
  6619                           	opt stack 22
  6620                           
  6621                           ;usb_device.c: 2756: BDT_ENTRY *p;
  6622                           ;usb_device.c: 2757: EP_STATUS current_ep_data;
  6623                           ;usb_device.c: 2761: unsigned char* pUEP;
  6624                           ;usb_device.c: 2799: if((SetupPkt.bFeature == 1)&&
  6625                           ;usb_device.c: 2800: (SetupPkt.Recipient == (0x00)))
  6626                           
  6627                           ;incstack = 0
  6628  000BE4  0104               	movlb	4	; () banked
  6629  000BE6  0522               	decf	34,w,b	;volatile
  6630  000BE8  A4D8               	btfss	status,2,c
  6631  000BEA  D011               	goto	l367
  6632                           
  6633                           ; BSR set to: 4
  6634  000BEC  0104               	movlb	4	; () banked
  6635  000BEE  5120               	movf	32,w,b	;volatile
  6636  000BF0  0B1F               	andlw	31
  6637  000BF2  0900               	iorlw	0
  6638  000BF4  A4D8               	btfss	status,2,c
  6639  000BF6  D00B               	goto	l367
  6640                           
  6641                           ; BSR set to: 4
  6642                           ;usb_device.c: 2801: {
  6643                           ;usb_device.c: 2802: inPipes[0].info.bits.busy = 1;
  6644  000BF8  8E4E               	bsf	_inPipes+3,7,c
  6645                           
  6646                           ; BSR set to: 4
  6647                           ;usb_device.c: 2803: if(SetupPkt.bRequest == 3)
  6648  000BFA  0E03               	movlw	3
  6649  000BFC  0104               	movlb	4	; () banked
  6650  000BFE  1921               	xorwf	33,w,b	;volatile
  6651  000C00  A4D8               	btfss	status,2,c
  6652  000C02  D002               	goto	l3004
  6653                           
  6654                           ; BSR set to: 4
  6655                           ;usb_device.c: 2804: RemoteWakeup = 1;
  6656  000C04  0E01               	movlw	1
  6657  000C06  D001               	goto	L3
  6658  000C08                     l3004:
  6659                           
  6660                           ;usb_device.c: 2805: else
  6661                           ;usb_device.c: 2806: RemoteWakeup = 0;
  6662  000C08  0E00               	movlw	0
  6663  000C0A                     L3:
  6664  000C0A  0100               	movlb	0	; () banked
  6665  000C0C  6FDF               	movwf	_RemoteWakeup& (0+255),b
  6666  000C0E                     l367:
  6667                           
  6668                           ;usb_device.c: 2807: }
  6669                           ;usb_device.c: 2810: if((SetupPkt.bFeature == 0)&&
  6670                           ;usb_device.c: 2811: (SetupPkt.Recipient == (0x02))&&
  6671                           ;usb_device.c: 2812: (SetupPkt.EPNum != 0) && (SetupPkt.EPNum <= 1)&&
  6672                           ;usb_device.c: 2813: (USBDeviceState == CONFIGURED_STATE))
  6673  000C0E  0104               	movlb	4	; () banked
  6674  000C10  5122               	movf	34,w,b	;volatile
  6675  000C12  A4D8               	btfss	status,2,c
  6676  000C14  0012               	return	
  6677                           
  6678                           ; BSR set to: 4
  6679  000C16  0104               	movlb	4	; () banked
  6680  000C18  5120               	movf	32,w,b	;volatile
  6681  000C1A  0B1F               	andlw	31
  6682  000C1C  0A02               	xorlw	2
  6683  000C1E  A4D8               	btfss	status,2,c
  6684  000C20  0012               	return	
  6685                           
  6686                           ; BSR set to: 4
  6687  000C22  0104               	movlb	4	; () banked
  6688  000C24  5124               	movf	36,w,b	;volatile
  6689  000C26  0B0F               	andlw	15
  6690  000C28  0900               	iorlw	0
  6691  000C2A  B4D8               	btfsc	status,2,c
  6692  000C2C  0012               	return	
  6693                           
  6694                           ; BSR set to: 4
  6695  000C2E  0104               	movlb	4	; () banked
  6696  000C30  5124               	movf	36,w,b	;volatile
  6697  000C32  0B0F               	andlw	15
  6698  000C34  6E15               	movwf	??_USBStdFeatureReqHandler& (0+255),c
  6699  000C36  0E02               	movlw	2
  6700  000C38  6015               	cpfslt	??_USBStdFeatureReqHandler,c
  6701  000C3A  0012               	return	
  6702                           
  6703                           ; BSR set to: 4
  6704  000C3C  0E20               	movlw	32
  6705  000C3E  185A               	xorwf	_USBDeviceState,w,c
  6706  000C40  A4D8               	btfss	status,2,c
  6707  000C42  0012               	return	
  6708                           
  6709                           ; BSR set to: 4
  6710                           ;usb_device.c: 2814: {
  6711                           ;usb_device.c: 2817: inPipes[0].info.bits.busy = 1;
  6712  000C44  8E4E               	bsf	_inPipes+3,7,c
  6713                           
  6714                           ;usb_device.c: 2820: if(SetupPkt.EPDir == 0)
  6715  000C46  0104               	movlb	4	; () banked
  6716  000C48  BF24               	btfsc	36,7,b	;volatile
  6717  000C4A  D01B               	goto	l3018
  6718                           
  6719                           ; BSR set to: 4
  6720                           ;usb_device.c: 2821: {
  6721                           ;usb_device.c: 2822: p = (BDT_ENTRY*)pBDTEntryOut[SetupPkt.EPNum];
  6722  000C4C  0104               	movlb	4	; () banked
  6723  000C4E  5124               	movf	36,w,b	;volatile
  6724  000C50  0B0F               	andlw	15
  6725  000C52  6E15               	movwf	??_USBStdFeatureReqHandler& (0+255),c
  6726  000C54  5015               	movf	??_USBStdFeatureReqHandler,w,c
  6727  000C56  0D02               	mullw	2
  6728  000C58  0ED0               	movlw	low _pBDTEntryOut
  6729  000C5A  24F3               	addwf	prodl,w,c
  6730  000C5C  6ED9               	movwf	fsr2l,c
  6731  000C5E  0E00               	movlw	high _pBDTEntryOut
  6732  000C60  20F4               	addwfc	prodh,w,c
  6733  000C62  6EDA               	movwf	fsr2h,c
  6734  000C64  CFDE F019          	movff	postinc2,USBStdFeatureReqHandler@p
  6735  000C68  CFDD F01A          	movff	postdec2,USBStdFeatureReqHandler@p+1
  6736                           
  6737                           ;usb_device.c: 2823: current_ep_data.Val = ep_data_out[SetupPkt.EPNum].Val;
  6738  000C6C  0104               	movlb	4	; () banked
  6739  000C6E  5124               	movf	36,w,b	;volatile
  6740  000C70  0B0F               	andlw	15
  6741  000C72  6E15               	movwf	??_USBStdFeatureReqHandler& (0+255),c
  6742  000C74  5015               	movf	??_USBStdFeatureReqHandler,w,c
  6743  000C76  0D01               	mullw	1
  6744  000C78  0EDA               	movlw	low _ep_data_out
  6745  000C7A  24F3               	addwf	prodl,w,c
  6746  000C7C  6ED9               	movwf	fsr2l,c
  6747  000C7E  0E00               	movlw	high _ep_data_out
  6748  000C80  D01A               	goto	L4
  6749  000C82                     l3018:
  6750                           
  6751                           ; BSR set to: 4
  6752                           ;usb_device.c: 2825: else
  6753                           ;usb_device.c: 2826: {
  6754                           ;usb_device.c: 2827: p = (BDT_ENTRY*)pBDTEntryIn[SetupPkt.EPNum];
  6755  000C82  0104               	movlb	4	; () banked
  6756  000C84  5124               	movf	36,w,b	;volatile
  6757  000C86  0B0F               	andlw	15
  6758  000C88  6E15               	movwf	??_USBStdFeatureReqHandler& (0+255),c
  6759  000C8A  5015               	movf	??_USBStdFeatureReqHandler,w,c
  6760  000C8C  0D02               	mullw	2
  6761  000C8E  0E51               	movlw	low _pBDTEntryIn
  6762  000C90  24F3               	addwf	prodl,w,c
  6763  000C92  6ED9               	movwf	fsr2l,c
  6764  000C94  0E00               	movlw	high _pBDTEntryIn
  6765  000C96  20F4               	addwfc	prodh,w,c
  6766  000C98  6EDA               	movwf	fsr2h,c
  6767  000C9A  CFDE F019          	movff	postinc2,USBStdFeatureReqHandler@p
  6768  000C9E  CFDD F01A          	movff	postdec2,USBStdFeatureReqHandler@p+1
  6769                           
  6770                           ;usb_device.c: 2828: current_ep_data.Val = ep_data_in[SetupPkt.EPNum].Val;
  6771  000CA2  0104               	movlb	4	; () banked
  6772  000CA4  5124               	movf	36,w,b	;volatile
  6773  000CA6  0B0F               	andlw	15
  6774  000CA8  6E15               	movwf	??_USBStdFeatureReqHandler& (0+255),c
  6775  000CAA  5015               	movf	??_USBStdFeatureReqHandler,w,c
  6776  000CAC  0D01               	mullw	1
  6777  000CAE  0ED8               	movlw	low _ep_data_in
  6778  000CB0  24F3               	addwf	prodl,w,c
  6779  000CB2  6ED9               	movwf	fsr2l,c
  6780  000CB4  0E00               	movlw	high _ep_data_in
  6781  000CB6                     L4:
  6782  000CB6  20F4               	addwfc	prodh,w,c
  6783  000CB8  6EDA               	movwf	fsr2h,c
  6784  000CBA  50DF               	movf	indf2,w,c
  6785  000CBC  6E18               	movwf	USBStdFeatureReqHandler@current_ep_data,c
  6786                           
  6787                           ; BSR set to: 4
  6788                           ;usb_device.c: 2829: }
  6789                           ;usb_device.c: 2835: if(current_ep_data.bits.ping_pong_state == 0)
  6790                           
  6791                           ; BSR set to: 4
  6792  000CBE  B018               	btfsc	USBStdFeatureReqHandler@current_ep_data,0,c
  6793  000CC0  D006               	goto	l3024
  6794                           
  6795                           ; BSR set to: 4
  6796                           ;usb_device.c: 2836: {
  6797                           ;usb_device.c: 2837: p = (BDT_ENTRY*)(((uintptr_t)p) & (~0x0004));
  6798  000CC2  0EFB               	movlw	251
  6799  000CC4  1419               	andwf	USBStdFeatureReqHandler@p,w,c
  6800  000CC6  6E19               	movwf	USBStdFeatureReqHandler@p,c
  6801  000CC8  0EFF               	movlw	255
  6802  000CCA  141A               	andwf	USBStdFeatureReqHandler@p+1,w,c
  6803  000CCC  D004               	goto	L5
  6804  000CCE                     l3024:
  6805                           
  6806                           ; BSR set to: 4
  6807                           ;usb_device.c: 2839: else
  6808                           ;usb_device.c: 2840: {
  6809                           ;usb_device.c: 2841: p = (BDT_ENTRY*)(((uintptr_t)p) | 0x0004);
  6810  000CCE  0E04               	movlw	4
  6811  000CD0  1019               	iorwf	USBStdFeatureReqHandler@p,w,c
  6812  000CD2  6E19               	movwf	USBStdFeatureReqHandler@p,c
  6813  000CD4  501A               	movf	USBStdFeatureReqHandler@p+1,w,c
  6814  000CD6                     L5:
  6815  000CD6  6E1A               	movwf	USBStdFeatureReqHandler@p+1,c
  6816                           
  6817                           ; BSR set to: 4
  6818                           ;usb_device.c: 2842: }
  6819                           ;usb_device.c: 2847: if(SetupPkt.EPDir == 0)
  6820                           
  6821                           ; BSR set to: 4
  6822  000CD8  0104               	movlb	4	; () banked
  6823  000CDA  BF24               	btfsc	36,7,b	;volatile
  6824  000CDC  D00B               	goto	l3030
  6825                           
  6826                           ; BSR set to: 4
  6827                           ;usb_device.c: 2848: {
  6828                           ;usb_device.c: 2849: pBDTEntryOut[SetupPkt.EPNum] = (volatile BDT_ENTRY *)p;
  6829  000CDE  0104               	movlb	4	; () banked
  6830  000CE0  5124               	movf	36,w,b	;volatile
  6831  000CE2  0B0F               	andlw	15
  6832  000CE4  6E15               	movwf	??_USBStdFeatureReqHandler& (0+255),c
  6833  000CE6  5015               	movf	??_USBStdFeatureReqHandler,w,c
  6834  000CE8  0D02               	mullw	2
  6835  000CEA  0ED0               	movlw	low _pBDTEntryOut
  6836  000CEC  24F3               	addwf	prodl,w,c
  6837  000CEE  6ED9               	movwf	fsr2l,c
  6838  000CF0  0E00               	movlw	high _pBDTEntryOut
  6839  000CF2  D00A               	goto	L6
  6840  000CF4                     l3030:
  6841                           
  6842                           ; BSR set to: 4
  6843                           ;usb_device.c: 2851: else
  6844                           ;usb_device.c: 2852: {
  6845                           ;usb_device.c: 2853: pBDTEntryIn[SetupPkt.EPNum] = (volatile BDT_ENTRY *)p;
  6846  000CF4  0104               	movlb	4	; () banked
  6847  000CF6  5124               	movf	36,w,b	;volatile
  6848  000CF8  0B0F               	andlw	15
  6849  000CFA  6E15               	movwf	??_USBStdFeatureReqHandler& (0+255),c
  6850  000CFC  5015               	movf	??_USBStdFeatureReqHandler,w,c
  6851  000CFE  0D02               	mullw	2
  6852  000D00  0E51               	movlw	low _pBDTEntryIn
  6853  000D02  24F3               	addwf	prodl,w,c
  6854  000D04  6ED9               	movwf	fsr2l,c
  6855  000D06  0E00               	movlw	high _pBDTEntryIn
  6856  000D08                     L6:
  6857  000D08  20F4               	addwfc	prodh,w,c
  6858  000D0A  6EDA               	movwf	fsr2h,c
  6859  000D0C  C019  FFDE         	movff	USBStdFeatureReqHandler@p,postinc2
  6860  000D10  C01A  FFDD         	movff	USBStdFeatureReqHandler@p+1,postdec2
  6861                           
  6862                           ; BSR set to: 4
  6863                           ;usb_device.c: 2854: }
  6864                           ;usb_device.c: 2857: if(SetupPkt.bRequest == 3)
  6865                           
  6866                           ; BSR set to: 4
  6867  000D14  0E03               	movlw	3
  6868  000D16  0104               	movlb	4	; () banked
  6869  000D18  1921               	xorwf	33,w,b	;volatile
  6870  000D1A  A4D8               	btfss	status,2,c
  6871  000D1C  D02F               	goto	l3046
  6872                           
  6873                           ; BSR set to: 4
  6874                           ;usb_device.c: 2858: {
  6875                           ;usb_device.c: 2859: if(p->STAT.UOWN == 1)
  6876  000D1E  C019  FFD9         	movff	USBStdFeatureReqHandler@p,fsr2l
  6877  000D22  C01A  FFDA         	movff	USBStdFeatureReqHandler@p+1,fsr2h
  6878  000D26  AEDF               	btfss	indf2,7,c
  6879  000D28  D01C               	goto	l3042
  6880                           
  6881                           ; BSR set to: 4
  6882                           ;usb_device.c: 2860: {
  6883                           ;usb_device.c: 2863: if(SetupPkt.EPDir == 0)
  6884  000D2A  0104               	movlb	4	; () banked
  6885  000D2C  BF24               	btfsc	36,7,b	;volatile
  6886  000D2E  D00B               	goto	l3040
  6887                           
  6888                           ; BSR set to: 4
  6889                           ;usb_device.c: 2864: {
  6890                           ;usb_device.c: 2865: ep_data_out[SetupPkt.EPNum].bits.transfer_terminated = 1;
  6891  000D30  0104               	movlb	4	; () banked
  6892  000D32  5124               	movf	36,w,b	;volatile
  6893  000D34  0B0F               	andlw	15
  6894  000D36  6E15               	movwf	??_USBStdFeatureReqHandler& (0+255),c
  6895  000D38  5015               	movf	??_USBStdFeatureReqHandler,w,c
  6896  000D3A  0D01               	mullw	1
  6897  000D3C  0EDA               	movlw	low _ep_data_out
  6898  000D3E  24F3               	addwf	prodl,w,c
  6899  000D40  6ED9               	movwf	fsr2l,c
  6900  000D42  0E00               	movlw	high _ep_data_out
  6901  000D44  D00A               	goto	L7
  6902  000D46                     l3040:
  6903                           
  6904                           ;usb_device.c: 2867: else
  6905                           ;usb_device.c: 2868: {
  6906                           ;usb_device.c: 2869: ep_data_in[SetupPkt.EPNum].bits.transfer_terminated = 1;
  6907  000D46  0104               	movlb	4	; () banked
  6908  000D48  5124               	movf	36,w,b	;volatile
  6909  000D4A  0B0F               	andlw	15
  6910  000D4C  6E15               	movwf	??_USBStdFeatureReqHandler& (0+255),c
  6911  000D4E  5015               	movf	??_USBStdFeatureReqHandler,w,c
  6912  000D50  0D01               	mullw	1
  6913  000D52  0ED8               	movlw	low _ep_data_in
  6914  000D54  24F3               	addwf	prodl,w,c
  6915  000D56  6ED9               	movwf	fsr2l,c
  6916  000D58  0E00               	movlw	high _ep_data_in
  6917  000D5A                     L7:
  6918  000D5A  20F4               	addwfc	prodh,w,c
  6919  000D5C  6EDA               	movwf	fsr2h,c
  6920  000D5E  0100               	movlb	0	; () banked
  6921  000D60  82DF               	bsf	indf2,1,c
  6922  000D62                     l3042:
  6923                           
  6924                           ;usb_device.c: 2870: }
  6925                           ;usb_device.c: 2871: }
  6926                           ;usb_device.c: 2874: p->STAT.Val |= 0x04;
  6927  000D62  C019  FFD9         	movff	USBStdFeatureReqHandler@p,fsr2l
  6928  000D66  C01A  FFDA         	movff	USBStdFeatureReqHandler@p+1,fsr2h
  6929  000D6A  0E00               	movlw	0
  6930  000D6C  84DB               	bsf	plusw2,2,c
  6931                           
  6932                           ;usb_device.c: 2875: p->STAT.Val |= 0x80;
  6933  000D6E  C019  FFD9         	movff	USBStdFeatureReqHandler@p,fsr2l
  6934  000D72  C01A  FFDA         	movff	USBStdFeatureReqHandler@p+1,fsr2h
  6935  000D76  0E00               	movlw	0
  6936  000D78  8EDB               	bsf	plusw2,7,c
  6937                           
  6938                           ;usb_device.c: 2876: }
  6939  000D7A  0012               	return	
  6940  000D7C                     l3046:
  6941                           
  6942                           ;usb_device.c: 2877: else
  6943                           ;usb_device.c: 2878: {
  6944                           ;usb_device.c: 2882: p = (BDT_ENTRY*)(((uintptr_t)p) ^ 0x0004);
  6945  000D7C  0E04               	movlw	4
  6946  000D7E  1819               	xorwf	USBStdFeatureReqHandler@p,w,c
  6947  000D80  6E19               	movwf	USBStdFeatureReqHandler@p,c
  6948  000D82  501A               	movf	USBStdFeatureReqHandler@p+1,w,c
  6949  000D84  6E1A               	movwf	USBStdFeatureReqHandler@p+1,c
  6950                           
  6951                           ;usb_device.c: 2884: if(p->STAT.UOWN == 1)
  6952  000D86  C019  FFD9         	movff	USBStdFeatureReqHandler@p,fsr2l
  6953  000D8A  C01A  FFDA         	movff	USBStdFeatureReqHandler@p+1,fsr2h
  6954  000D8E  AEDF               	btfss	indf2,7,c
  6955  000D90  D01B               	goto	l3056
  6956                           
  6957                           ;usb_device.c: 2885: {
  6958                           ;usb_device.c: 2888: p->STAT.Val &= (~0x80);
  6959  000D92  C019  FFD9         	movff	USBStdFeatureReqHandler@p,fsr2l
  6960  000D96  C01A  FFDA         	movff	USBStdFeatureReqHandler@p+1,fsr2h
  6961  000D9A  0E7F               	movlw	127
  6962  000D9C  16DF               	andwf	indf2,f,c
  6963                           
  6964                           ;usb_device.c: 2889: p->STAT.Val |= 0x40;
  6965  000D9E  C019  FFD9         	movff	USBStdFeatureReqHandler@p,fsr2l
  6966  000DA2  C01A  FFDA         	movff	USBStdFeatureReqHandler@p+1,fsr2h
  6967  000DA6  0E00               	movlw	0
  6968  000DA8  8CDB               	bsf	plusw2,6,c
  6969                           
  6970                           ;usb_device.c: 2890: USER_USB_CALLBACK_EVENT_HANDLER(EVENT_TRANSFER_TERMINATED,p,sizeof(
      +                          p));
  6971  000DAA  0E00               	movlw	0
  6972  000DAC  6E0E               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@event+1,c
  6973  000DAE  0E05               	movlw	5
  6974  000DB0  6E0D               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@event,c
  6975  000DB2  C019  F00F         	movff	USBStdFeatureReqHandler@p,USER_USB_CALLBACK_EVENT_HANDLER@pdata
  6976  000DB6  C01A  F010         	movff	USBStdFeatureReqHandler@p+1,USER_USB_CALLBACK_EVENT_HANDLER@pdata+1
  6977  000DBA  0E00               	movlw	0
  6978  000DBC  6E12               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@size+1,c
  6979  000DBE  0E02               	movlw	2
  6980  000DC0  6E11               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@size,c
  6981  000DC2  EC6E  F011         	call	_USER_USB_CALLBACK_EVENT_HANDLER	;wreg free
  6982                           
  6983                           ;usb_device.c: 2891: }
  6984  000DC6  D006               	goto	l3058
  6985  000DC8                     l3056:
  6986                           
  6987                           ;usb_device.c: 2892: else
  6988                           ;usb_device.c: 2893: {
  6989                           ;usb_device.c: 2895: p->STAT.Val |= 0x40;
  6990  000DC8  C019  FFD9         	movff	USBStdFeatureReqHandler@p,fsr2l
  6991  000DCC  C01A  FFDA         	movff	USBStdFeatureReqHandler@p+1,fsr2h
  6992  000DD0  0E00               	movlw	0
  6993  000DD2  8CDB               	bsf	plusw2,6,c
  6994  000DD4                     l3058:
  6995                           
  6996                           ;usb_device.c: 2896: }
  6997                           ;usb_device.c: 2900: p = (BDT_ENTRY*)(((uintptr_t)p) ^ 0x0004);
  6998  000DD4  0E04               	movlw	4
  6999  000DD6  1819               	xorwf	USBStdFeatureReqHandler@p,w,c
  7000  000DD8  6E19               	movwf	USBStdFeatureReqHandler@p,c
  7001  000DDA  501A               	movf	USBStdFeatureReqHandler@p+1,w,c
  7002  000DDC  6E1A               	movwf	USBStdFeatureReqHandler@p+1,c
  7003                           
  7004                           ;usb_device.c: 2906: if((current_ep_data.bits.transfer_terminated != 0) || (p->STAT.UOWN
      +                           == 1))
  7005  000DDE  B218               	btfsc	USBStdFeatureReqHandler@current_ep_data,1,c
  7006  000DE0  D006               	goto	l386
  7007  000DE2  C019  FFD9         	movff	USBStdFeatureReqHandler@p,fsr2l
  7008  000DE6  C01A  FFDA         	movff	USBStdFeatureReqHandler@p+1,fsr2h
  7009  000DEA  AEDF               	btfss	indf2,7,c
  7010  000DEC  D031               	goto	l3072
  7011  000DEE                     l386:
  7012                           
  7013                           ;usb_device.c: 2907: {
  7014                           ;usb_device.c: 2908: if(SetupPkt.EPDir == 0)
  7015  000DEE  0104               	movlb	4	; () banked
  7016  000DF0  BF24               	btfsc	36,7,b	;volatile
  7017  000DF2  D00B               	goto	l3066
  7018                           
  7019                           ; BSR set to: 4
  7020                           ;usb_device.c: 2909: {
  7021                           ;usb_device.c: 2910: ep_data_out[SetupPkt.EPNum].bits.transfer_terminated = 0;
  7022  000DF4  0104               	movlb	4	; () banked
  7023  000DF6  5124               	movf	36,w,b	;volatile
  7024  000DF8  0B0F               	andlw	15
  7025  000DFA  6E15               	movwf	??_USBStdFeatureReqHandler& (0+255),c
  7026  000DFC  5015               	movf	??_USBStdFeatureReqHandler,w,c
  7027  000DFE  0D01               	mullw	1
  7028  000E00  0EDA               	movlw	low _ep_data_out
  7029  000E02  24F3               	addwf	prodl,w,c
  7030  000E04  6ED9               	movwf	fsr2l,c
  7031  000E06  0E00               	movlw	high _ep_data_out
  7032  000E08  D00A               	goto	L8
  7033  000E0A                     l3066:
  7034                           
  7035                           ;usb_device.c: 2912: else
  7036                           ;usb_device.c: 2913: {
  7037                           ;usb_device.c: 2914: ep_data_in[SetupPkt.EPNum].bits.transfer_terminated = 0;
  7038  000E0A  0104               	movlb	4	; () banked
  7039  000E0C  5124               	movf	36,w,b	;volatile
  7040  000E0E  0B0F               	andlw	15
  7041  000E10  6E15               	movwf	??_USBStdFeatureReqHandler& (0+255),c
  7042  000E12  5015               	movf	??_USBStdFeatureReqHandler,w,c
  7043  000E14  0D01               	mullw	1
  7044  000E16  0ED8               	movlw	low _ep_data_in
  7045  000E18  24F3               	addwf	prodl,w,c
  7046  000E1A  6ED9               	movwf	fsr2l,c
  7047  000E1C  0E00               	movlw	high _ep_data_in
  7048  000E1E                     L8:
  7049  000E1E  20F4               	addwfc	prodh,w,c
  7050  000E20  6EDA               	movwf	fsr2h,c
  7051  000E22  0100               	movlb	0	; () banked
  7052  000E24  92DF               	bcf	indf2,1,c
  7053                           
  7054                           ; BSR set to: 0
  7055                           ;usb_device.c: 2915: }
  7056                           ;usb_device.c: 2917: p->STAT.Val &= ~(0x80 | 0x40 | 0x04);
  7057                           
  7058                           ; BSR set to: 0
  7059  000E26  C019  FFD9         	movff	USBStdFeatureReqHandler@p,fsr2l
  7060  000E2A  C01A  FFDA         	movff	USBStdFeatureReqHandler@p+1,fsr2h
  7061  000E2E  0E3B               	movlw	59
  7062  000E30  16DF               	andwf	indf2,f,c
  7063                           
  7064                           ; BSR set to: 0
  7065                           ;usb_device.c: 2920: USER_USB_CALLBACK_EVENT_HANDLER(EVENT_TRANSFER_TERMINATED,p,sizeof(
      +                          p));
  7066  000E32  0E00               	movlw	0
  7067  000E34  6E0E               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@event+1,c
  7068  000E36  0E05               	movlw	5
  7069  000E38  6E0D               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@event,c
  7070  000E3A  C019  F00F         	movff	USBStdFeatureReqHandler@p,USER_USB_CALLBACK_EVENT_HANDLER@pdata
  7071  000E3E  C01A  F010         	movff	USBStdFeatureReqHandler@p+1,USER_USB_CALLBACK_EVENT_HANDLER@pdata+1
  7072  000E42  0E00               	movlw	0
  7073  000E44  6E12               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@size+1,c
  7074  000E46  0E02               	movlw	2
  7075  000E48  6E11               	movwf	USER_USB_CALLBACK_EVENT_HANDLER@size,c
  7076  000E4A  EC6E  F011         	call	_USER_USB_CALLBACK_EVENT_HANDLER	;wreg free
  7077                           
  7078                           ;usb_device.c: 2921: }
  7079  000E4E  D006               	goto	l3074
  7080  000E50                     l3072:
  7081                           
  7082                           ;usb_device.c: 2922: else
  7083                           ;usb_device.c: 2923: {
  7084                           ;usb_device.c: 2925: p->STAT.Val &= ~(0x80 | 0x40 | 0x04);
  7085  000E50  C019  FFD9         	movff	USBStdFeatureReqHandler@p,fsr2l
  7086  000E54  C01A  FFDA         	movff	USBStdFeatureReqHandler@p+1,fsr2h
  7087  000E58  0E3B               	movlw	59
  7088  000E5A  16DF               	andwf	indf2,f,c
  7089  000E5C                     l3074:
  7090                           
  7091                           ;usb_device.c: 2926: }
  7092                           ;usb_device.c: 2973: pUEP = (unsigned char*)(&UEP0+SetupPkt.EPNum);
  7093  000E5C  0104               	movlb	4	; () banked
  7094  000E5E  5124               	movf	36,w,b	;volatile
  7095  000E60  0B0F               	andlw	15
  7096  000E62  6E15               	movwf	??_USBStdFeatureReqHandler& (0+255),c
  7097  000E64  5015               	movf	??_USBStdFeatureReqHandler,w,c
  7098  000E66  0D01               	mullw	1
  7099  000E68  0E70               	movlw	112
  7100  000E6A  24F3               	addwf	prodl,w,c
  7101  000E6C  6E16               	movwf	USBStdFeatureReqHandler@pUEP,c
  7102  000E6E  0E0F               	movlw	15
  7103  000E70  20F4               	addwfc	prodh,w,c
  7104  000E72  6E17               	movwf	USBStdFeatureReqHandler@pUEP+1,c
  7105                           
  7106                           ; BSR set to: 4
  7107                           ;usb_device.c: 2977: *pUEP &= ~0x0001;
  7108  000E74  C016  FFD9         	movff	USBStdFeatureReqHandler@pUEP,fsr2l
  7109  000E78  C017  FFDA         	movff	USBStdFeatureReqHandler@pUEP+1,fsr2h
  7110  000E7C  0EFE               	movlw	254
  7111  000E7E  16DF               	andwf	indf2,f,c
  7112                           
  7113                           ; BSR set to: 4
  7114  000E80  0012               	return	
  7115  000E82                     __end_of_USBStdFeatureReqHandler:
  7116                           	opt stack 0
  7117                           tblptru	equ	0xFF8
  7118                           tblptrh	equ	0xFF7
  7119                           tblptrl	equ	0xFF6
  7120                           tablat	equ	0xFF5
  7121                           prodh	equ	0xFF4
  7122                           prodl	equ	0xFF3
  7123                           postinc0	equ	0xFEE
  7124                           wreg	equ	0xFE8
  7125                           indf1	equ	0xFE7
  7126                           postinc1	equ	0xFE6
  7127                           postdec1	equ	0xFE5
  7128                           fsr1h	equ	0xFE2
  7129                           fsr1l	equ	0xFE1
  7130                           indf2	equ	0xFDF
  7131                           postinc2	equ	0xFDE
  7132                           postdec2	equ	0xFDD
  7133                           plusw2	equ	0xFDB
  7134                           fsr2h	equ	0xFDA
  7135                           fsr2l	equ	0xFD9
  7136                           status	equ	0xFD8
  7137                           
  7138 ;; *************** function _USER_USB_CALLBACK_EVENT_HANDLER *****************
  7139 ;; Defined at:
  7140 ;;		line 28 in file "usb_events.c"
  7141 ;; Parameters:    Size  Location     Type
  7142 ;;  event           2   12[COMRAM] enum E4324
  7143 ;;  pdata           2   14[COMRAM] PTR void 
  7144 ;;		 -> RAM(2047), USTATcopy(1), USBActiveConfiguration(1), NULL(0), 
  7145 ;;		 -> BDT(32), 
  7146 ;;  size            2   16[COMRAM] unsigned int 
  7147 ;; Auto vars:     Size  Location     Type
  7148 ;;		None
  7149 ;; Return value:  Size  Location     Type
  7150 ;;                  1    wreg      unsigned char 
  7151 ;; Registers used:
  7152 ;;		wreg, fsr2l, fsr2h, status,2, status,0, prodl, prodh, cstack
  7153 ;; Tracked objects:
  7154 ;;		On entry : 0/0
  7155 ;;		On exit  : 0/0
  7156 ;;		Unchanged: 0/0
  7157 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  7158 ;;      Params:         6       0       0       0       0       0       0       0       0       0
  7159 ;;      Locals:         0       0       0       0       0       0       0       0       0       0
  7160 ;;      Temps:          2       0       0       0       0       0       0       0       0       0
  7161 ;;      Totals:         8       0       0       0       0       0       0       0       0       0
  7162 ;;Total ram usage:        8 bytes
  7163 ;; Hardware stack levels used:    1
  7164 ;; Hardware stack levels required when called:    3
  7165 ;; This function calls:
  7166 ;;		_APP_DeviceAudioMIDIInitialize
  7167 ;; This function is called by:
  7168 ;;		_USBDeviceTasks
  7169 ;;		_USBStdSetCfgHandler
  7170 ;;		_USBSuspend
  7171 ;;		_USBWakeFromSuspend
  7172 ;;		_USBCtrlTrfSetupHandler
  7173 ;;		_USBCheckStdRequest
  7174 ;;		_USBStdFeatureReqHandler
  7175 ;; This function uses a non-reentrant model
  7176 ;;
  7177                           
  7178                           	psect	text33
  7179  0022DC                     __ptext33:
  7180                           	opt stack 0
  7181  0022DC                     _USER_USB_CALLBACK_EVENT_HANDLER:
  7182                           	opt stack 26
  7183                           
  7184                           ;usb_events.c: 30: switch( (int) event )
  7185                           
  7186                           ;incstack = 0
  7187  0022DC  D003               	goto	l2786
  7188  0022DE                     l2782:
  7189                           
  7190                           ;usb_events.c: 51: APP_DeviceAudioMIDIInitialize();
  7191  0022DE  ECC4  F011         	call	_APP_DeviceAudioMIDIInitialize	;wreg free
  7192                           
  7193                           ;usb_events.c: 68: }
  7194                           
  7195                           ;usb_events.c: 67: break;
  7196                           
  7197                           ;usb_events.c: 66: default:
  7198                           
  7199                           ;usb_events.c: 64: break;
  7200                           
  7201                           ;usb_events.c: 63: case EVENT_TRANSFER_TERMINATED:
  7202                           
  7203                           ;usb_events.c: 61: break;
  7204                           
  7205                           ;usb_events.c: 60: case EVENT_BUS_ERROR:
  7206                           
  7207                           ;usb_events.c: 58: break;
  7208                           
  7209                           ;usb_events.c: 57: case EVENT_EP0_REQUEST:
  7210                           
  7211                           ;usb_events.c: 55: break;
  7212                           
  7213                           ;usb_events.c: 54: case EVENT_SET_DESCRIPTOR:
  7214                           
  7215                           ;usb_events.c: 52: break;
  7216  0022E2  0012               	return	
  7217  0022E4                     l2786:
  7218  0022E4  C00D  F013         	movff	USER_USB_CALLBACK_EVENT_HANDLER@event,??_USER_USB_CALLBACK_EVENT_HANDLER
  7219  0022E8  C00E  F014         	movff	USER_USB_CALLBACK_EVENT_HANDLER@event+1,??_USER_USB_CALLBACK_EVENT_HANDLER+1
  7220                           
  7221                           ; Switch on 2 bytes has been partitioned into a top level switch of size 1, and 2 sub-sw
      +                          itches
  7222                           ; Switch size 1, requested type "space"
  7223                           ; Number of cases is 2, Range of values is 0 to 127
  7224                           ; switch strategies available:
  7225                           ; Name         Instructions Cycles
  7226                           ; simple_byte            7     4 (average)
  7227                           ;	Chosen strategy is simple_byte
  7228  0022EC  5014               	movf	??_USER_USB_CALLBACK_EVENT_HANDLER+1,w,c
  7229  0022EE  0A00               	xorlw	0	; case 0
  7230  0022F0  B4D8               	btfsc	status,2,c
  7231  0022F2  D004               	goto	l4012
  7232  0022F4  0A7F               	xorlw	127	; case 127
  7233  0022F6  A4D8               	btfss	status,2,c
  7234  0022F8  0012               	return	
  7235  0022FA  D018               	goto	l4014
  7236  0022FC                     l4012:
  7237                           
  7238                           ; Switch size 1, requested type "space"
  7239                           ; Number of cases is 8, Range of values is 1 to 117
  7240                           ; switch strategies available:
  7241                           ; Name         Instructions Cycles
  7242                           ; simple_byte           25    13 (average)
  7243                           ;	Chosen strategy is simple_byte
  7244  0022FC  5013               	movf	??_USER_USB_CALLBACK_EVENT_HANDLER,w,c
  7245  0022FE  0A01               	xorlw	1	; case 1
  7246  002300  B4D8               	btfsc	status,2,c
  7247  002302  D7ED               	goto	l2782
  7248  002304  0A03               	xorlw	3	; case 2
  7249  002306  B4D8               	btfsc	status,2,c
  7250  002308  0012               	return	
  7251  00230A  0A01               	xorlw	1	; case 3
  7252  00230C  B4D8               	btfsc	status,2,c
  7253  00230E  0012               	return	
  7254  002310  0A06               	xorlw	6	; case 5
  7255  002312  B4D8               	btfsc	status,2,c
  7256  002314  0012               	return	
  7257  002316  0A77               	xorlw	119	; case 114
  7258  002318  B4D8               	btfsc	status,2,c
  7259  00231A  0012               	return	
  7260  00231C  0A01               	xorlw	1	; case 115
  7261  00231E  B4D8               	btfsc	status,2,c
  7262  002320  0012               	return	
  7263  002322  0A07               	xorlw	7	; case 116
  7264  002324  B4D8               	btfsc	status,2,c
  7265  002326  0012               	return	
  7266  002328  0A01               	xorlw	1	; case 117
  7267  00232A  0012               	return	
  7268  00232C                     l4014:
  7269                           
  7270                           ; Switch size 1, requested type "space"
  7271                           ; Number of cases is 1, Range of values is 255 to 255
  7272                           ; switch strategies available:
  7273                           ; Name         Instructions Cycles
  7274                           ; simple_byte            4     3 (average)
  7275                           ;	Chosen strategy is simple_byte
  7276  00232C  5013               	movf	??_USER_USB_CALLBACK_EVENT_HANDLER,w,c
  7277  00232E  0AFF               	xorlw	255	; case 255
  7278  002330  0012               	return	
  7279  002332                     __end_of_USER_USB_CALLBACK_EVENT_HANDLER:
  7280                           	opt stack 0
  7281                           tblptru	equ	0xFF8
  7282                           tblptrh	equ	0xFF7
  7283                           tblptrl	equ	0xFF6
  7284                           tablat	equ	0xFF5
  7285                           prodh	equ	0xFF4
  7286                           prodl	equ	0xFF3
  7287                           postinc0	equ	0xFEE
  7288                           wreg	equ	0xFE8
  7289                           indf1	equ	0xFE7
  7290                           postinc1	equ	0xFE6
  7291                           postdec1	equ	0xFE5
  7292                           fsr1h	equ	0xFE2
  7293                           fsr1l	equ	0xFE1
  7294                           indf2	equ	0xFDF
  7295                           postinc2	equ	0xFDE
  7296                           postdec2	equ	0xFDD
  7297                           plusw2	equ	0xFDB
  7298                           fsr2h	equ	0xFDA
  7299                           fsr2l	equ	0xFD9
  7300                           status	equ	0xFD8
  7301                           
  7302 ;; *************** function _APP_DeviceAudioMIDIInitialize *****************
  7303 ;; Defined at:
  7304 ;;		line 43 in file "midi.c"
  7305 ;; Parameters:    Size  Location     Type
  7306 ;;		None
  7307 ;; Auto vars:     Size  Location     Type
  7308 ;;		None
  7309 ;; Return value:  Size  Location     Type
  7310 ;;                  1    wreg      void 
  7311 ;; Registers used:
  7312 ;;		wreg, fsr2l, fsr2h, status,2, status,0, prodl, prodh, cstack
  7313 ;; Tracked objects:
  7314 ;;		On entry : 0/0
  7315 ;;		On exit  : 0/0
  7316 ;;		Unchanged: 0/0
  7317 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  7318 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  7319 ;;      Locals:         0       0       0       0       0       0       0       0       0       0
  7320 ;;      Temps:          0       0       0       0       0       0       0       0       0       0
  7321 ;;      Totals:         0       0       0       0       0       0       0       0       0       0
  7322 ;;Total ram usage:        0 bytes
  7323 ;; Hardware stack levels used:    1
  7324 ;; Hardware stack levels required when called:    2
  7325 ;; This function calls:
  7326 ;;		_USBEnableEndpoint
  7327 ;;		_USBTransferOnePacket
  7328 ;; This function is called by:
  7329 ;;		_USER_USB_CALLBACK_EVENT_HANDLER
  7330 ;; This function uses a non-reentrant model
  7331 ;;
  7332                           
  7333                           	psect	text34
  7334  002388                     __ptext34:
  7335                           	opt stack 0
  7336  002388                     _APP_DeviceAudioMIDIInitialize:
  7337                           	opt stack 26
  7338                           
  7339                           ;midi.c: 45: USBTxHandle = (0);
  7340                           
  7341                           ;incstack = 0
  7342  002388  0E00               	movlw	0
  7343  00238A  0100               	movlb	0	; () banked
  7344  00238C  6FD6               	movwf	_USBTxHandle& (0+255),b
  7345  00238E  0E00               	movlw	0
  7346  002390  0100               	movlb	0	; () banked
  7347  002392  6FD7               	movwf	(_USBTxHandle+1)& (0+255),b
  7348                           
  7349                           ;midi.c: 46: USBRxHandle = (0);
  7350  002394  0E00               	movlw	0
  7351  002396  0100               	movlb	0	; () banked
  7352  002398  6FD4               	movwf	_USBRxHandle& (0+255),b
  7353  00239A  0E00               	movlw	0
  7354  00239C  0100               	movlb	0	; () banked
  7355  00239E  6FD5               	movwf	(_USBRxHandle+1)& (0+255),b
  7356                           
  7357                           ; BSR set to: 0
  7358                           ;midi.c: 48: pitch = 0x3C;
  7359  0023A0  0E3C               	movlw	60
  7360  0023A2  0100               	movlb	0	; () banked
  7361  0023A4  6FEE               	movwf	_pitch& (0+255),b
  7362                           
  7363                           ; BSR set to: 0
  7364                           ;midi.c: 49: sentNoteOff = 1;
  7365  0023A6  0E01               	movlw	1
  7366  0023A8  0100               	movlb	0	; () banked
  7367  0023AA  6FEF               	movwf	_sentNoteOff& (0+255),b
  7368                           
  7369                           ; BSR set to: 0
  7370                           ;midi.c: 51: msCounter = 0;
  7371  0023AC  0E00               	movlw	0
  7372  0023AE  0100               	movlb	0	; () banked
  7373  0023B0  6FED               	movwf	_msCounter& (0+255),b
  7374                           
  7375                           ; BSR set to: 0
  7376                           ;midi.c: 54: USBEnableEndpoint(1,0x04|0x02|0x10|0x08);
  7377  0023B2  0E1E               	movlw	30
  7378  0023B4  6E09               	movwf	USBEnableEndpoint@options,c
  7379  0023B6  0E01               	movlw	1
  7380  0023B8  EC6D  F012         	call	_USBEnableEndpoint
  7381                           
  7382                           ;midi.c: 57: USBRxHandle = USBTransferOnePacket(1,0,(uint8_t*)&ReceivedDataBuffer,64);
  7383  0023BC  0E00               	movlw	0
  7384  0023BE  6E01               	movwf	USBTransferOnePacket@dir,c
  7385  0023C0  0E00               	movlw	0
  7386  0023C2  6E02               	movwf	USBTransferOnePacket@data,c
  7387  0023C4  0E05               	movlw	5
  7388  0023C6  6E03               	movwf	USBTransferOnePacket@data+1,c
  7389  0023C8  0E40               	movlw	64
  7390  0023CA  6E04               	movwf	USBTransferOnePacket@len,c
  7391  0023CC  0E01               	movlw	1
  7392  0023CE  ECE9  F00A         	call	_USBTransferOnePacket
  7393  0023D2  C001  F0D4         	movff	?_USBTransferOnePacket,_USBRxHandle
  7394  0023D6  C002  F0D5         	movff	?_USBTransferOnePacket+1,_USBRxHandle+1
  7395  0023DA  0012               	return		;funcret
  7396  0023DC                     __end_of_APP_DeviceAudioMIDIInitialize:
  7397                           	opt stack 0
  7398                           tblptru	equ	0xFF8
  7399                           tblptrh	equ	0xFF7
  7400                           tblptrl	equ	0xFF6
  7401                           tablat	equ	0xFF5
  7402                           prodh	equ	0xFF4
  7403                           prodl	equ	0xFF3
  7404                           postinc0	equ	0xFEE
  7405                           wreg	equ	0xFE8
  7406                           indf1	equ	0xFE7
  7407                           postinc1	equ	0xFE6
  7408                           postdec1	equ	0xFE5
  7409                           fsr1h	equ	0xFE2
  7410                           fsr1l	equ	0xFE1
  7411                           indf2	equ	0xFDF
  7412                           postinc2	equ	0xFDE
  7413                           postdec2	equ	0xFDD
  7414                           plusw2	equ	0xFDB
  7415                           fsr2h	equ	0xFDA
  7416                           fsr2l	equ	0xFD9
  7417                           status	equ	0xFD8
  7418                           
  7419 ;; *************** function _USBTransferOnePacket *****************
  7420 ;; Defined at:
  7421 ;;		line 995 in file "usb/usb_device.c"
  7422 ;; Parameters:    Size  Location     Type
  7423 ;;  ep              1    wreg     unsigned char 
  7424 ;;  dir             1    0[COMRAM] unsigned char 
  7425 ;;  data            2    1[COMRAM] PTR unsigned char 
  7426 ;;		 -> midiData(4), ReceivedDataBuffer(64), 
  7427 ;;  len             1    3[COMRAM] unsigned char 
  7428 ;; Auto vars:     Size  Location     Type
  7429 ;;  ep              1    8[COMRAM] unsigned char 
  7430 ;;  handle          2    9[COMRAM] PTR volatile struct __BD
  7431 ;;		 -> RAM(2047), NULL(0), BDT(32), 
  7432 ;; Return value:  Size  Location     Type
  7433 ;;                  2    0[COMRAM] PTR void 
  7434 ;; Registers used:
  7435 ;;		wreg, fsr2l, fsr2h, status,2, status,0, prodl, prodh
  7436 ;; Tracked objects:
  7437 ;;		On entry : 0/0
  7438 ;;		On exit  : 0/0
  7439 ;;		Unchanged: 0/0
  7440 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  7441 ;;      Params:         4       0       0       0       0       0       0       0       0       0
  7442 ;;      Locals:         3       0       0       0       0       0       0       0       0       0
  7443 ;;      Temps:          4       0       0       0       0       0       0       0       0       0
  7444 ;;      Totals:        11       0       0       0       0       0       0       0       0       0
  7445 ;;Total ram usage:       11 bytes
  7446 ;; Hardware stack levels used:    1
  7447 ;; This function calls:
  7448 ;;		Nothing
  7449 ;; This function is called by:
  7450 ;;		_APP_DeviceAudioMIDIInitialize
  7451 ;;		_sendMIDINote
  7452 ;;		_processReceivedMIDI
  7453 ;;		_sendMIDIControl
  7454 ;; This function uses a non-reentrant model
  7455 ;;
  7456                           
  7457                           	psect	text35
  7458  0015D2                     __ptext35:
  7459                           	opt stack 0
  7460  0015D2                     _USBTransferOnePacket:
  7461                           	opt stack 28
  7462                           
  7463                           ;incstack = 0
  7464                           ;USBTransferOnePacket@ep stored from wreg
  7465  0015D2  6E09               	movwf	USBTransferOnePacket@ep,c
  7466                           
  7467                           ;usb_device.c: 997: volatile BDT_ENTRY* handle;
  7468                           ;usb_device.c: 1000: if(dir != 0)
  7469  0015D4  5001               	movf	USBTransferOnePacket@dir,w,c
  7470  0015D6  B4D8               	btfsc	status,2,c
  7471  0015D8  D007               	goto	l2734
  7472                           
  7473                           ;usb_device.c: 1001: {
  7474                           ;usb_device.c: 1003: handle = pBDTEntryIn[ep];
  7475  0015DA  5009               	movf	USBTransferOnePacket@ep,w,c
  7476  0015DC  0D02               	mullw	2
  7477  0015DE  0E51               	movlw	low _pBDTEntryIn
  7478  0015E0  24F3               	addwf	prodl,w,c
  7479  0015E2  6ED9               	movwf	fsr2l,c
  7480  0015E4  0E00               	movlw	high _pBDTEntryIn
  7481  0015E6  D006               	goto	L9
  7482  0015E8                     l2734:
  7483                           
  7484                           ;usb_device.c: 1005: else
  7485                           ;usb_device.c: 1006: {
  7486                           ;usb_device.c: 1008: handle = pBDTEntryOut[ep];
  7487  0015E8  5009               	movf	USBTransferOnePacket@ep,w,c
  7488  0015EA  0D02               	mullw	2
  7489  0015EC  0ED0               	movlw	low _pBDTEntryOut
  7490  0015EE  24F3               	addwf	prodl,w,c
  7491  0015F0  6ED9               	movwf	fsr2l,c
  7492  0015F2  0E00               	movlw	high _pBDTEntryOut
  7493  0015F4                     L9:
  7494  0015F4  20F4               	addwfc	prodh,w,c
  7495  0015F6  6EDA               	movwf	fsr2h,c
  7496  0015F8  CFDE F00A          	movff	postinc2,USBTransferOnePacket@handle
  7497  0015FC  CFDD F00B          	movff	postdec2,USBTransferOnePacket@handle+1
  7498                           
  7499                           ;usb_device.c: 1009: }
  7500                           ;usb_device.c: 1013: if(handle == 0)
  7501  001600  500A               	movf	USBTransferOnePacket@handle,w,c
  7502  001602  100B               	iorwf	USBTransferOnePacket@handle+1,w,c
  7503  001604  A4D8               	btfss	status,2,c
  7504  001606  D005               	goto	l2742
  7505                           
  7506                           ;usb_device.c: 1014: {
  7507                           ;usb_device.c: 1015: return 0;
  7508  001608  0E00               	movlw	0
  7509  00160A  6E01               	movwf	?_USBTransferOnePacket,c
  7510  00160C  0E00               	movlw	0
  7511  00160E  6E02               	movwf	?_USBTransferOnePacket+1,c
  7512  001610  0012               	return	
  7513  001612                     l2742:
  7514                           
  7515                           ;usb_device.c: 1016: }
  7516                           ;usb_device.c: 1029: handle->ADR = ((uint16_t)(data));
  7517  001612  EE20 F002          	lfsr	2,2
  7518  001616  500A               	movf	USBTransferOnePacket@handle,w,c
  7519  001618  26D9               	addwf	fsr2l,f,c
  7520  00161A  500B               	movf	USBTransferOnePacket@handle+1,w,c
  7521  00161C  22DA               	addwfc	fsr2h,f,c
  7522  00161E  C002  FFDE         	movff	USBTransferOnePacket@data,postinc2
  7523  001622  C003  FFDD         	movff	USBTransferOnePacket@data+1,postdec2
  7524                           
  7525                           ;usb_device.c: 1030: handle->CNT = len;
  7526  001626  EE20 F001          	lfsr	2,1
  7527  00162A  500A               	movf	USBTransferOnePacket@handle,w,c
  7528  00162C  26D9               	addwf	fsr2l,f,c
  7529  00162E  500B               	movf	USBTransferOnePacket@handle+1,w,c
  7530  001630  22DA               	addwfc	fsr2h,f,c
  7531  001632  C004  FFDF         	movff	USBTransferOnePacket@len,indf2
  7532                           
  7533                           ;usb_device.c: 1031: handle->STAT.Val &= 0x40;
  7534  001636  C00A  FFD9         	movff	USBTransferOnePacket@handle,fsr2l
  7535  00163A  C00B  FFDA         	movff	USBTransferOnePacket@handle+1,fsr2h
  7536  00163E  0E40               	movlw	64
  7537  001640  16DF               	andwf	indf2,f,c
  7538                           
  7539                           ;usb_device.c: 1032: handle->STAT.Val |= (0x08 & 0x08);
  7540  001642  C00A  FFD9         	movff	USBTransferOnePacket@handle,fsr2l
  7541  001646  C00B  FFDA         	movff	USBTransferOnePacket@handle+1,fsr2h
  7542  00164A  0E00               	movlw	0
  7543  00164C  86DB               	bsf	plusw2,3,c
  7544                           
  7545                           ;usb_device.c: 1033: handle->STAT.Val |= 0x80;
  7546  00164E  C00A  FFD9         	movff	USBTransferOnePacket@handle,fsr2l
  7547  001652  C00B  FFDA         	movff	USBTransferOnePacket@handle+1,fsr2h
  7548  001656  0E00               	movlw	0
  7549  001658  8EDB               	bsf	plusw2,7,c
  7550                           
  7551                           ;usb_device.c: 1036: if(dir != 0)
  7552  00165A  5001               	movf	USBTransferOnePacket@dir,w,c
  7553  00165C  B4D8               	btfsc	status,2,c
  7554  00165E  D018               	goto	l2754
  7555                           
  7556                           ;usb_device.c: 1037: {
  7557                           ;usb_device.c: 1039: pBDTEntryIn[ep] = (BDT_ENTRY*)(((uintptr_t)pBDTEntryIn[ep]) ^ 0x000
      +                          4);
  7558  001660  5009               	movf	USBTransferOnePacket@ep,w,c
  7559  001662  0D02               	mullw	2
  7560  001664  0E51               	movlw	low _pBDTEntryIn
  7561  001666  24F3               	addwf	prodl,w,c
  7562  001668  6ED9               	movwf	fsr2l,c
  7563  00166A  0E00               	movlw	high _pBDTEntryIn
  7564  00166C  20F4               	addwfc	prodh,w,c
  7565  00166E  6EDA               	movwf	fsr2h,c
  7566  001670  CFDE F005          	movff	postinc2,??_USBTransferOnePacket
  7567  001674  CFDD F006          	movff	postdec2,??_USBTransferOnePacket+1
  7568  001678  0E04               	movlw	4
  7569  00167A  1805               	xorwf	??_USBTransferOnePacket,w,c
  7570  00167C  6E07               	movwf	(??_USBTransferOnePacket+2)& (0+255),c
  7571  00167E  5006               	movf	??_USBTransferOnePacket+1,w,c
  7572  001680  6E08               	movwf	(??_USBTransferOnePacket+3)& (0+255),c
  7573  001682  5009               	movf	USBTransferOnePacket@ep,w,c
  7574  001684  0D02               	mullw	2
  7575  001686  0E51               	movlw	low _pBDTEntryIn
  7576  001688  24F3               	addwf	prodl,w,c
  7577  00168A  6ED9               	movwf	fsr2l,c
  7578  00168C  0E00               	movlw	high _pBDTEntryIn
  7579  00168E  D017               	goto	L10
  7580  001690                     l2754:
  7581                           
  7582                           ;usb_device.c: 1041: else
  7583                           ;usb_device.c: 1042: {
  7584                           ;usb_device.c: 1044: pBDTEntryOut[ep] = (BDT_ENTRY*)(((uintptr_t)pBDTEntryOut[ep]) ^ 0x0
      +                          004);
  7585  001690  5009               	movf	USBTransferOnePacket@ep,w,c
  7586  001692  0D02               	mullw	2
  7587  001694  0ED0               	movlw	low _pBDTEntryOut
  7588  001696  24F3               	addwf	prodl,w,c
  7589  001698  6ED9               	movwf	fsr2l,c
  7590  00169A  0E00               	movlw	high _pBDTEntryOut
  7591  00169C  20F4               	addwfc	prodh,w,c
  7592  00169E  6EDA               	movwf	fsr2h,c
  7593  0016A0  CFDE F005          	movff	postinc2,??_USBTransferOnePacket
  7594  0016A4  CFDD F006          	movff	postdec2,??_USBTransferOnePacket+1
  7595  0016A8  0E04               	movlw	4
  7596  0016AA  1805               	xorwf	??_USBTransferOnePacket,w,c
  7597  0016AC  6E07               	movwf	(??_USBTransferOnePacket+2)& (0+255),c
  7598  0016AE  5006               	movf	??_USBTransferOnePacket+1,w,c
  7599  0016B0  6E08               	movwf	(??_USBTransferOnePacket+3)& (0+255),c
  7600  0016B2  5009               	movf	USBTransferOnePacket@ep,w,c
  7601  0016B4  0D02               	mullw	2
  7602  0016B6  0ED0               	movlw	low _pBDTEntryOut
  7603  0016B8  24F3               	addwf	prodl,w,c
  7604  0016BA  6ED9               	movwf	fsr2l,c
  7605  0016BC  0E00               	movlw	high _pBDTEntryOut
  7606  0016BE                     L10:
  7607  0016BE  20F4               	addwfc	prodh,w,c
  7608  0016C0  6EDA               	movwf	fsr2h,c
  7609  0016C2  C007  FFDE         	movff	??_USBTransferOnePacket+2,postinc2
  7610  0016C6  C008  FFDD         	movff	??_USBTransferOnePacket+3,postdec2
  7611                           
  7612                           ;usb_device.c: 1045: }
  7613                           ;usb_device.c: 1046: return (void*)handle;
  7614  0016CA  C00A  F001         	movff	USBTransferOnePacket@handle,?_USBTransferOnePacket
  7615  0016CE  C00B  F002         	movff	USBTransferOnePacket@handle+1,?_USBTransferOnePacket+1
  7616  0016D2  0012               	return	
  7617  0016D4                     __end_of_USBTransferOnePacket:
  7618                           	opt stack 0
  7619                           tblptru	equ	0xFF8
  7620                           tblptrh	equ	0xFF7
  7621                           tblptrl	equ	0xFF6
  7622                           tablat	equ	0xFF5
  7623                           prodh	equ	0xFF4
  7624                           prodl	equ	0xFF3
  7625                           postinc0	equ	0xFEE
  7626                           wreg	equ	0xFE8
  7627                           indf1	equ	0xFE7
  7628                           postinc1	equ	0xFE6
  7629                           postdec1	equ	0xFE5
  7630                           fsr1h	equ	0xFE2
  7631                           fsr1l	equ	0xFE1
  7632                           indf2	equ	0xFDF
  7633                           postinc2	equ	0xFDE
  7634                           postdec2	equ	0xFDD
  7635                           plusw2	equ	0xFDB
  7636                           fsr2h	equ	0xFDA
  7637                           fsr2l	equ	0xFD9
  7638                           status	equ	0xFD8
  7639                           
  7640 ;; *************** function _USBEnableEndpoint *****************
  7641 ;; Defined at:
  7642 ;;		line 878 in file "usb/usb_device.c"
  7643 ;; Parameters:    Size  Location     Type
  7644 ;;  ep              1    wreg     unsigned char 
  7645 ;;  options         1    8[COMRAM] unsigned char 
  7646 ;; Auto vars:     Size  Location     Type
  7647 ;;  ep              1   11[COMRAM] unsigned char 
  7648 ;;  p               2    9[COMRAM] PTR unsigned char 
  7649 ;;		 -> UEP0(1), 
  7650 ;; Return value:  Size  Location     Type
  7651 ;;                  1    wreg      void 
  7652 ;; Registers used:
  7653 ;;		wreg, fsr2l, fsr2h, status,2, status,0, prodl, prodh, cstack
  7654 ;; Tracked objects:
  7655 ;;		On entry : 0/0
  7656 ;;		On exit  : 0/0
  7657 ;;		Unchanged: 0/0
  7658 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  7659 ;;      Params:         1       0       0       0       0       0       0       0       0       0
  7660 ;;      Locals:         3       0       0       0       0       0       0       0       0       0
  7661 ;;      Temps:          0       0       0       0       0       0       0       0       0       0
  7662 ;;      Totals:         4       0       0       0       0       0       0       0       0       0
  7663 ;;Total ram usage:        4 bytes
  7664 ;; Hardware stack levels used:    1
  7665 ;; Hardware stack levels required when called:    1
  7666 ;; This function calls:
  7667 ;;		_USBConfigureEndpoint
  7668 ;; This function is called by:
  7669 ;;		_APP_DeviceAudioMIDIInitialize
  7670 ;; This function uses a non-reentrant model
  7671 ;;
  7672                           
  7673                           	psect	text36
  7674  0024DA                     __ptext36:
  7675                           	opt stack 0
  7676  0024DA                     _USBEnableEndpoint:
  7677                           	opt stack 26
  7678                           
  7679                           ;incstack = 0
  7680                           ;USBEnableEndpoint@ep stored from wreg
  7681  0024DA  6E0C               	movwf	USBEnableEndpoint@ep,c
  7682                           
  7683                           ;usb_device.c: 880: unsigned char* p;
  7684                           ;usb_device.c: 884: if(options & 0x04)
  7685  0024DC  A409               	btfss	USBEnableEndpoint@options,2,c
  7686  0024DE  D005               	goto	l2722
  7687                           
  7688                           ;usb_device.c: 885: {
  7689                           ;usb_device.c: 886: USBConfigureEndpoint(ep, 0);
  7690  0024E0  0E00               	movlw	0
  7691  0024E2  6E01               	movwf	USBConfigureEndpoint@direction,c
  7692  0024E4  500C               	movf	USBEnableEndpoint@ep,w,c
  7693  0024E6  EC4B  F00F         	call	_USBConfigureEndpoint
  7694  0024EA                     l2722:
  7695                           
  7696                           ;usb_device.c: 887: }
  7697                           ;usb_device.c: 888: if(options & 0x02)
  7698  0024EA  A209               	btfss	USBEnableEndpoint@options,1,c
  7699  0024EC  D005               	goto	l2726
  7700                           
  7701                           ;usb_device.c: 889: {
  7702                           ;usb_device.c: 890: USBConfigureEndpoint(ep, 1);
  7703  0024EE  0E01               	movlw	1
  7704  0024F0  6E01               	movwf	USBConfigureEndpoint@direction,c
  7705  0024F2  500C               	movf	USBEnableEndpoint@ep,w,c
  7706  0024F4  EC4B  F00F         	call	_USBConfigureEndpoint
  7707  0024F8                     l2726:
  7708                           
  7709                           ;usb_device.c: 891: }
  7710                           ;usb_device.c: 899: p = (unsigned char*)(&UEP0+ep);
  7711  0024F8  500C               	movf	USBEnableEndpoint@ep,w,c
  7712  0024FA  0D01               	mullw	1
  7713  0024FC  0E70               	movlw	112
  7714  0024FE  24F3               	addwf	prodl,w,c
  7715  002500  6E0A               	movwf	USBEnableEndpoint@p,c
  7716  002502  0E0F               	movlw	15
  7717  002504  20F4               	addwfc	prodh,w,c
  7718  002506  6E0B               	movwf	USBEnableEndpoint@p+1,c
  7719                           
  7720                           ;usb_device.c: 901: *p = options;
  7721  002508  C00A  FFD9         	movff	USBEnableEndpoint@p,fsr2l
  7722  00250C  C00B  FFDA         	movff	USBEnableEndpoint@p+1,fsr2h
  7723  002510  C009  FFDF         	movff	USBEnableEndpoint@options,indf2
  7724  002514  0012               	return		;funcret
  7725  002516                     __end_of_USBEnableEndpoint:
  7726                           	opt stack 0
  7727                           tblptru	equ	0xFF8
  7728                           tblptrh	equ	0xFF7
  7729                           tblptrl	equ	0xFF6
  7730                           tablat	equ	0xFF5
  7731                           prodh	equ	0xFF4
  7732                           prodl	equ	0xFF3
  7733                           postinc0	equ	0xFEE
  7734                           wreg	equ	0xFE8
  7735                           indf1	equ	0xFE7
  7736                           postinc1	equ	0xFE6
  7737                           postdec1	equ	0xFE5
  7738                           fsr1h	equ	0xFE2
  7739                           fsr1l	equ	0xFE1
  7740                           indf2	equ	0xFDF
  7741                           postinc2	equ	0xFDE
  7742                           postdec2	equ	0xFDD
  7743                           plusw2	equ	0xFDB
  7744                           fsr2h	equ	0xFDA
  7745                           fsr2l	equ	0xFD9
  7746                           status	equ	0xFD8
  7747                           
  7748 ;; *************** function _USBConfigureEndpoint *****************
  7749 ;; Defined at:
  7750 ;;		line 1543 in file "usb/usb_device.c"
  7751 ;; Parameters:    Size  Location     Type
  7752 ;;  EPNum           1    wreg     unsigned char 
  7753 ;;  direction       1    0[COMRAM] unsigned char 
  7754 ;; Auto vars:     Size  Location     Type
  7755 ;;  EPNum           1    5[COMRAM] unsigned char 
  7756 ;;  handle          2    6[COMRAM] PTR volatile struct __BD
  7757 ;;		 -> BDT(32), 
  7758 ;; Return value:  Size  Location     Type
  7759 ;;                  1    wreg      void 
  7760 ;; Registers used:
  7761 ;;		wreg, fsr2l, fsr2h, status,2, status,0, prodl, prodh
  7762 ;; Tracked objects:
  7763 ;;		On entry : 0/0
  7764 ;;		On exit  : 0/0
  7765 ;;		Unchanged: 0/0
  7766 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  7767 ;;      Params:         1       0       0       0       0       0       0       0       0       0
  7768 ;;      Locals:         3       0       0       0       0       0       0       0       0       0
  7769 ;;      Temps:          4       0       0       0       0       0       0       0       0       0
  7770 ;;      Totals:         8       0       0       0       0       0       0       0       0       0
  7771 ;;Total ram usage:        8 bytes
  7772 ;; Hardware stack levels used:    1
  7773 ;; This function calls:
  7774 ;;		Nothing
  7775 ;; This function is called by:
  7776 ;;		_USBEnableEndpoint
  7777 ;; This function uses a non-reentrant model
  7778 ;;
  7779                           
  7780                           	psect	text37
  7781  001E96                     __ptext37:
  7782                           	opt stack 0
  7783  001E96                     _USBConfigureEndpoint:
  7784                           	opt stack 26
  7785                           
  7786                           ;incstack = 0
  7787                           ;USBConfigureEndpoint@EPNum stored from wreg
  7788  001E96  6E06               	movwf	USBConfigureEndpoint@EPNum,c
  7789                           
  7790                           ;usb_device.c: 1545: volatile BDT_ENTRY* handle;
  7791                           ;usb_device.c: 1549: handle = (volatile BDT_ENTRY*)&BDT[0];
  7792  001E98  0E00               	movlw	0
  7793  001E9A  6E07               	movwf	USBConfigureEndpoint@handle,c
  7794  001E9C  0E04               	movlw	4
  7795  001E9E  6E08               	movwf	USBConfigureEndpoint@handle+1,c
  7796                           
  7797                           ;usb_device.c: 1550: handle += (4*EPNum+2*direction+0u);
  7798  001EA0  5001               	movf	USBConfigureEndpoint@direction,w,c
  7799  001EA2  6E02               	movwf	??_USBConfigureEndpoint& (0+255),c
  7800  001EA4  6A03               	clrf	(??_USBConfigureEndpoint+1)& (0+255),c
  7801  001EA6  90D8               	bcf	status,0,c
  7802  001EA8  3602               	rlcf	??_USBConfigureEndpoint,f,c
  7803  001EAA  3603               	rlcf	??_USBConfigureEndpoint+1,f,c
  7804  001EAC  5006               	movf	USBConfigureEndpoint@EPNum,w,c
  7805  001EAE  6E04               	movwf	(??_USBConfigureEndpoint+2)& (0+255),c
  7806  001EB0  6A05               	clrf	(??_USBConfigureEndpoint+3)& (0+255),c
  7807  001EB2  90D8               	bcf	status,0,c
  7808  001EB4  3604               	rlcf	??_USBConfigureEndpoint+2,f,c
  7809  001EB6  3605               	rlcf	??_USBConfigureEndpoint+3,f,c
  7810  001EB8  90D8               	bcf	status,0,c
  7811  001EBA  3604               	rlcf	??_USBConfigureEndpoint+2,f,c
  7812  001EBC  3605               	rlcf	??_USBConfigureEndpoint+3,f,c
  7813  001EBE  5002               	movf	??_USBConfigureEndpoint,w,c
  7814  001EC0  2604               	addwf	??_USBConfigureEndpoint+2,f,c
  7815  001EC2  5003               	movf	??_USBConfigureEndpoint+1,w,c
  7816  001EC4  2205               	addwfc	??_USBConfigureEndpoint+3,f,c
  7817  001EC6  90D8               	bcf	status,0,c
  7818  001EC8  3604               	rlcf	??_USBConfigureEndpoint+2,f,c
  7819  001ECA  3605               	rlcf	??_USBConfigureEndpoint+3,f,c
  7820  001ECC  90D8               	bcf	status,0,c
  7821  001ECE  3604               	rlcf	??_USBConfigureEndpoint+2,f,c
  7822  001ED0  3605               	rlcf	??_USBConfigureEndpoint+3,f,c
  7823  001ED2  5004               	movf	??_USBConfigureEndpoint+2,w,c
  7824  001ED4  2607               	addwf	USBConfigureEndpoint@handle,f,c
  7825  001ED6  5005               	movf	??_USBConfigureEndpoint+3,w,c
  7826  001ED8  2208               	addwfc	USBConfigureEndpoint@handle+1,f,c
  7827                           
  7828                           ;usb_device.c: 1552: handle->STAT.UOWN = 0;
  7829  001EDA  C007  FFD9         	movff	USBConfigureEndpoint@handle,fsr2l
  7830  001EDE  C008  FFDA         	movff	USBConfigureEndpoint@handle+1,fsr2h
  7831  001EE2  9EDF               	bcf	indf2,7,c
  7832                           
  7833                           ;usb_device.c: 1557: if(direction == 0)
  7834  001EE4  5001               	movf	USBConfigureEndpoint@direction,w,c
  7835  001EE6  A4D8               	btfss	status,2,c
  7836  001EE8  D007               	goto	l2712
  7837                           
  7838                           ;usb_device.c: 1558: {
  7839                           ;usb_device.c: 1559: pBDTEntryOut[EPNum] = handle;
  7840  001EEA  5006               	movf	USBConfigureEndpoint@EPNum,w,c
  7841  001EEC  0D02               	mullw	2
  7842  001EEE  0ED0               	movlw	low _pBDTEntryOut
  7843  001EF0  24F3               	addwf	prodl,w,c
  7844  001EF2  6ED9               	movwf	fsr2l,c
  7845  001EF4  0E00               	movlw	high _pBDTEntryOut
  7846  001EF6  D006               	goto	L11
  7847  001EF8                     l2712:
  7848                           
  7849                           ;usb_device.c: 1561: else
  7850                           ;usb_device.c: 1562: {
  7851                           ;usb_device.c: 1563: pBDTEntryIn[EPNum] = handle;
  7852  001EF8  5006               	movf	USBConfigureEndpoint@EPNum,w,c
  7853  001EFA  0D02               	mullw	2
  7854  001EFC  0E51               	movlw	low _pBDTEntryIn
  7855  001EFE  24F3               	addwf	prodl,w,c
  7856  001F00  6ED9               	movwf	fsr2l,c
  7857  001F02  0E00               	movlw	high _pBDTEntryIn
  7858  001F04                     L11:
  7859  001F04  20F4               	addwfc	prodh,w,c
  7860  001F06  6EDA               	movwf	fsr2h,c
  7861  001F08  C007  FFDE         	movff	USBConfigureEndpoint@handle,postinc2
  7862  001F0C  C008  FFDD         	movff	USBConfigureEndpoint@handle+1,postdec2
  7863                           
  7864                           ;usb_device.c: 1564: }
  7865                           ;usb_device.c: 1567: handle->STAT.DTS = 0;
  7866  001F10  C007  FFD9         	movff	USBConfigureEndpoint@handle,fsr2l
  7867  001F14  C008  FFDA         	movff	USBConfigureEndpoint@handle+1,fsr2h
  7868  001F18  9CDF               	bcf	indf2,6,c
  7869                           
  7870                           ;usb_device.c: 1568: (handle+1)->STAT.DTS = 1;
  7871  001F1A  EE20 F004          	lfsr	2,4
  7872  001F1E  5007               	movf	USBConfigureEndpoint@handle,w,c
  7873  001F20  26D9               	addwf	fsr2l,f,c
  7874  001F22  5008               	movf	USBConfigureEndpoint@handle+1,w,c
  7875  001F24  22DA               	addwfc	fsr2h,f,c
  7876  001F26  8CDF               	bsf	indf2,6,c
  7877  001F28  0012               	return		;funcret
  7878  001F2A                     __end_of_USBConfigureEndpoint:
  7879                           	opt stack 0
  7880                           tblptru	equ	0xFF8
  7881                           tblptrh	equ	0xFF7
  7882                           tblptrl	equ	0xFF6
  7883                           tablat	equ	0xFF5
  7884                           prodh	equ	0xFF4
  7885                           prodl	equ	0xFF3
  7886                           postinc0	equ	0xFEE
  7887                           wreg	equ	0xFE8
  7888                           indf1	equ	0xFE7
  7889                           postinc1	equ	0xFE6
  7890                           postdec1	equ	0xFE5
  7891                           fsr1h	equ	0xFE2
  7892                           fsr1l	equ	0xFE1
  7893                           indf2	equ	0xFDF
  7894                           postinc2	equ	0xFDE
  7895                           postdec2	equ	0xFDD
  7896                           plusw2	equ	0xFDB
  7897                           fsr2h	equ	0xFDA
  7898                           fsr2l	equ	0xFD9
  7899                           status	equ	0xFD8
  7900                           
  7901 ;; *************** function _USBCtrlTrfOutHandler *****************
  7902 ;; Defined at:
  7903 ;;		line 2538 in file "usb/usb_device.c"
  7904 ;; Parameters:    Size  Location     Type
  7905 ;;		None
  7906 ;; Auto vars:     Size  Location     Type
  7907 ;;		None
  7908 ;; Return value:  Size  Location     Type
  7909 ;;                  1    wreg      void 
  7910 ;; Registers used:
  7911 ;;		wreg, fsr1l, fsr1h, fsr2l, fsr2h, status,2, status,0, prodl, prodh, cstack
  7912 ;; Tracked objects:
  7913 ;;		On entry : 0/0
  7914 ;;		On exit  : 0/0
  7915 ;;		Unchanged: 0/0
  7916 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  7917 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  7918 ;;      Locals:         0       0       0       0       0       0       0       0       0       0
  7919 ;;      Temps:          0       0       0       0       0       0       0       0       0       0
  7920 ;;      Totals:         0       0       0       0       0       0       0       0       0       0
  7921 ;;Total ram usage:        0 bytes
  7922 ;; Hardware stack levels used:    1
  7923 ;; Hardware stack levels required when called:    2
  7924 ;; This function calls:
  7925 ;;		_USBCtrlTrfRxService
  7926 ;; This function is called by:
  7927 ;;		_USBCtrlEPService
  7928 ;; This function uses a non-reentrant model
  7929 ;;
  7930                           
  7931                           	psect	text38
  7932  002226                     __ptext38:
  7933                           	opt stack 0
  7934  002226                     _USBCtrlTrfOutHandler:
  7935                           	opt stack 26
  7936                           
  7937                           ;usb_device.c: 2540: if(controlTransferState == 2)
  7938                           
  7939                           ;incstack = 0
  7940  002226  0E02               	movlw	2
  7941  002228  185B               	xorwf	_controlTransferState,w,c
  7942  00222A  A4D8               	btfss	status,2,c
  7943  00222C  D003               	goto	l3356
  7944                           
  7945                           ;usb_device.c: 2541: {
  7946                           ;usb_device.c: 2542: USBCtrlTrfRxService();
  7947  00222E  ECDC  F009         	call	_USBCtrlTrfRxService	;wreg free
  7948                           
  7949                           ;usb_device.c: 2543: }
  7950  002232  0012               	return	
  7951  002234                     l3356:
  7952                           
  7953                           ;usb_device.c: 2544: else
  7954                           ;usb_device.c: 2545: {
  7955                           ;usb_device.c: 2548: controlTransferState = 0;
  7956  002234  0E00               	movlw	0
  7957  002236  6E5B               	movwf	_controlTransferState,c
  7958                           
  7959                           ;usb_device.c: 2555: if(BothEP0OutUOWNsSet == 0)
  7960  002238  0100               	movlb	0	; () banked
  7961  00223A  51DE               	movf	_BothEP0OutUOWNsSet& (0+255),w,b
  7962  00223C  A4D8               	btfss	status,2,c
  7963  00223E  D01F               	goto	l3364
  7964                           
  7965                           ; BSR set to: 0
  7966                           ;usb_device.c: 2556: {
  7967                           ;usb_device.c: 2557: pBDTEntryEP0OutNext->CNT = 8;
  7968  002240  EE20 F001          	lfsr	2,1
  7969  002244  5057               	movf	_pBDTEntryEP0OutNext,w,c
  7970  002246  26D9               	addwf	fsr2l,f,c
  7971  002248  5058               	movf	_pBDTEntryEP0OutNext+1,w,c
  7972  00224A  22DA               	addwfc	fsr2h,f,c
  7973  00224C  0E08               	movlw	8
  7974  00224E  6EDF               	movwf	indf2,c
  7975                           
  7976                           ;usb_device.c: 2558: pBDTEntryEP0OutNext->ADR = ((uint16_t)(&SetupPkt));
  7977  002250  EE20 F002          	lfsr	2,2
  7978  002254  5057               	movf	_pBDTEntryEP0OutNext,w,c
  7979  002256  26D9               	addwf	fsr2l,f,c
  7980  002258  5058               	movf	_pBDTEntryEP0OutNext+1,w,c
  7981  00225A  22DA               	addwfc	fsr2h,f,c
  7982  00225C  0E20               	movlw	32
  7983  00225E  6EDE               	movwf	postinc2,c
  7984  002260  0E04               	movlw	4
  7985  002262  6EDD               	movwf	postdec2,c
  7986                           
  7987                           ; BSR set to: 0
  7988                           ;usb_device.c: 2559: pBDTEntryEP0OutNext->STAT.Val = 0x00|(0x08 & 0x08)|0x04;
  7989  002264  C057  FFD9         	movff	_pBDTEntryEP0OutNext,fsr2l
  7990  002268  C058  FFDA         	movff	_pBDTEntryEP0OutNext+1,fsr2h
  7991  00226C  0E0C               	movlw	12
  7992  00226E  6EDF               	movwf	indf2,c
  7993                           
  7994                           ; BSR set to: 0
  7995                           ;usb_device.c: 2560: pBDTEntryEP0OutNext->STAT.Val |= 0x80;
  7996  002270  C057  FFD9         	movff	_pBDTEntryEP0OutNext,fsr2l
  7997  002274  C058  FFDA         	movff	_pBDTEntryEP0OutNext+1,fsr2h
  7998  002278  0E00               	movlw	0
  7999  00227A  8EDB               	bsf	plusw2,7,c
  8000                           
  8001                           ;usb_device.c: 2561: }
  8002  00227C  0012               	return	
  8003  00227E                     l3364:
  8004                           
  8005                           ; BSR set to: 0
  8006                           ;usb_device.c: 2562: else
  8007                           ;usb_device.c: 2563: {
  8008                           ;usb_device.c: 2564: BothEP0OutUOWNsSet = 0;
  8009  00227E  0E00               	movlw	0
  8010  002280  0100               	movlb	0	; () banked
  8011  002282  6FDE               	movwf	_BothEP0OutUOWNsSet& (0+255),b
  8012                           
  8013                           ; BSR set to: 0
  8014  002284  0012               	return	
  8015  002286                     __end_of_USBCtrlTrfOutHandler:
  8016                           	opt stack 0
  8017                           tblptru	equ	0xFF8
  8018                           tblptrh	equ	0xFF7
  8019                           tblptrl	equ	0xFF6
  8020                           tablat	equ	0xFF5
  8021                           prodh	equ	0xFF4
  8022                           prodl	equ	0xFF3
  8023                           postinc0	equ	0xFEE
  8024                           wreg	equ	0xFE8
  8025                           indf1	equ	0xFE7
  8026                           postinc1	equ	0xFE6
  8027                           postdec1	equ	0xFE5
  8028                           fsr1h	equ	0xFE2
  8029                           fsr1l	equ	0xFE1
  8030                           indf2	equ	0xFDF
  8031                           postinc2	equ	0xFDE
  8032                           postdec2	equ	0xFDD
  8033                           plusw2	equ	0xFDB
  8034                           fsr2h	equ	0xFDA
  8035                           fsr2l	equ	0xFD9
  8036                           status	equ	0xFD8
  8037                           
  8038 ;; *************** function _USBCtrlTrfRxService *****************
  8039 ;; Defined at:
  8040 ;;		line 1852 in file "usb/usb_device.c"
  8041 ;; Parameters:    Size  Location     Type
  8042 ;;		None
  8043 ;; Auto vars:     Size  Location     Type
  8044 ;;  byteToRead      1    1[COMRAM] unsigned char 
  8045 ;;  i               1    0[COMRAM] unsigned char 
  8046 ;; Return value:  Size  Location     Type
  8047 ;;                  1    wreg      void 
  8048 ;; Registers used:
  8049 ;;		wreg, fsr1l, fsr1h, fsr2l, fsr2h, status,2, status,0, prodl, prodh, cstack
  8050 ;; Tracked objects:
  8051 ;;		On entry : 0/0
  8052 ;;		On exit  : 0/0
  8053 ;;		Unchanged: 0/0
  8054 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  8055 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  8056 ;;      Locals:         2       0       0       0       0       0       0       0       0       0
  8057 ;;      Temps:          0       0       0       0       0       0       0       0       0       0
  8058 ;;      Totals:         2       0       0       0       0       0       0       0       0       0
  8059 ;;Total ram usage:        2 bytes
  8060 ;; Hardware stack levels used:    1
  8061 ;; Hardware stack levels required when called:    1
  8062 ;; This function calls:
  8063 ;;		_USBCtrlEPAllowStatusStage
  8064 ;; This function is called by:
  8065 ;;		_USBCtrlTrfOutHandler
  8066 ;; This function uses a non-reentrant model
  8067 ;;
  8068                           
  8069                           	psect	text39
  8070  0013B8                     __ptext39:
  8071                           	opt stack 0
  8072  0013B8                     _USBCtrlTrfRxService:
  8073                           	opt stack 26
  8074                           
  8075                           ;usb_device.c: 1854: uint8_t byteToRead;
  8076                           ;usb_device.c: 1855: uint8_t i;
  8077                           ;usb_device.c: 1859: byteToRead = pBDTEntryEP0OutCurrent->CNT;
  8078                           
  8079                           ;incstack = 0
  8080  0013B8  EE20 F001          	lfsr	2,1
  8081  0013BC  5055               	movf	_pBDTEntryEP0OutCurrent,w,c
  8082  0013BE  26D9               	addwf	fsr2l,f,c
  8083  0013C0  5056               	movf	_pBDTEntryEP0OutCurrent+1,w,c
  8084  0013C2  22DA               	addwfc	fsr2h,f,c
  8085  0013C4  50DF               	movf	indf2,w,c
  8086  0013C6  6E02               	movwf	USBCtrlTrfRxService@byteToRead,c
  8087                           
  8088                           ;usb_device.c: 1865: if(byteToRead > outPipes[0].wCount.Val)
  8089  0013C8  5002               	movf	USBCtrlTrfRxService@byteToRead,w,c
  8090  0013CA  0100               	movlb	0	; () banked
  8091  0013CC  5DC8               	subwf	(_outPipes+4)& (0+255),w,b
  8092  0013CE  0E00               	movlw	0
  8093  0013D0  59C9               	subwfb	(_outPipes+5)& (0+255),w,b
  8094  0013D2  A0D8               	btfss	status,0,c
  8095                           
  8096                           ; BSR set to: 0
  8097                           ;usb_device.c: 1866: {
  8098                           ;usb_device.c: 1867: byteToRead = outPipes[0].wCount.Val;
  8099  0013D4  C0C8  F002         	movff	_outPipes+4,USBCtrlTrfRxService@byteToRead
  8100                           
  8101                           ; BSR set to: 0
  8102                           ;usb_device.c: 1868: }
  8103                           ;usb_device.c: 1870: outPipes[0].wCount.Val -= byteToRead;
  8104                           
  8105                           ; BSR set to: 0
  8106  0013D8  5002               	movf	USBCtrlTrfRxService@byteToRead,w,c
  8107  0013DA  0100               	movlb	0	; () banked
  8108  0013DC  5FC8               	subwf	(_outPipes+4)& (0+255),f,b
  8109  0013DE  0E00               	movlw	0
  8110  0013E0  5BC9               	subwfb	(_outPipes+5)& (0+255),f,b
  8111                           
  8112                           ; BSR set to: 0
  8113                           ;usb_device.c: 1874: for(i=0;i<byteToRead;i++)
  8114  0013E2  0E00               	movlw	0
  8115  0013E4  6E01               	movwf	USBCtrlTrfRxService@i,c
  8116  0013E6  D012               	goto	l3158
  8117  0013E8                     l3152:
  8118                           
  8119                           ; BSR set to: 0
  8120                           ;usb_device.c: 1875: {
  8121                           ;usb_device.c: 1876: *outPipes[0].pDst.bRam++ = CtrlTrfData[i];
  8122  0013E8  5001               	movf	USBCtrlTrfRxService@i,w,c
  8123  0013EA  0D01               	mullw	1
  8124  0013EC  0E28               	movlw	40
  8125  0013EE  24F3               	addwf	prodl,w,c
  8126  0013F0  6ED9               	movwf	fsr2l,c
  8127  0013F2  0E04               	movlw	4
  8128  0013F4  20F4               	addwfc	prodh,w,c
  8129  0013F6  6EDA               	movwf	fsr2h,c
  8130  0013F8  C0C4  FFE1         	movff	_outPipes,fsr1l
  8131  0013FC  C0C5  FFE2         	movff	_outPipes+1,fsr1h
  8132  001400  CFDF FFE7          	movff	indf2,indf1
  8133                           
  8134                           ; BSR set to: 0
  8135  001404  0100               	movlb	0	; () banked
  8136  001406  4BC4               	infsnz	_outPipes& (0+255),f,b
  8137  001408  2BC5               	incf	(_outPipes+1)& (0+255),f,b
  8138                           
  8139                           ; BSR set to: 0
  8140  00140A  2A01               	incf	USBCtrlTrfRxService@i,f,c
  8141  00140C                     l3158:
  8142                           
  8143                           ; BSR set to: 0
  8144  00140C  5002               	movf	USBCtrlTrfRxService@byteToRead,w,c
  8145  00140E  5C01               	subwf	USBCtrlTrfRxService@i,w,c
  8146  001410  A0D8               	btfss	status,0,c
  8147  001412  D7EA               	goto	l3152
  8148                           
  8149                           ; BSR set to: 0
  8150                           ;usb_device.c: 1877: }
  8151                           ;usb_device.c: 1881: if(outPipes[0].wCount.Val > 0)
  8152                           
  8153                           ; BSR set to: 0
  8154  001414  0100               	movlb	0	; () banked
  8155  001416  51C8               	movf	(_outPipes+4)& (0+255),w,b
  8156  001418  0100               	movlb	0	; () banked
  8157  00141A  11C9               	iorwf	(_outPipes+5)& (0+255),w,b
  8158  00141C  B4D8               	btfsc	status,2,c
  8159  00141E  D032               	goto	l3174
  8160                           
  8161                           ; BSR set to: 0
  8162                           ;usb_device.c: 1882: {
  8163                           ;usb_device.c: 1883: pBDTEntryEP0OutNext->CNT = 8;
  8164  001420  EE20 F001          	lfsr	2,1
  8165  001424  5057               	movf	_pBDTEntryEP0OutNext,w,c
  8166  001426  26D9               	addwf	fsr2l,f,c
  8167  001428  5058               	movf	_pBDTEntryEP0OutNext+1,w,c
  8168  00142A  22DA               	addwfc	fsr2h,f,c
  8169  00142C  0E08               	movlw	8
  8170  00142E  6EDF               	movwf	indf2,c
  8171                           
  8172                           ;usb_device.c: 1884: pBDTEntryEP0OutNext->ADR = ((uint16_t)(&CtrlTrfData));
  8173  001430  EE20 F002          	lfsr	2,2
  8174  001434  5057               	movf	_pBDTEntryEP0OutNext,w,c
  8175  001436  26D9               	addwf	fsr2l,f,c
  8176  001438  5058               	movf	_pBDTEntryEP0OutNext+1,w,c
  8177  00143A  22DA               	addwfc	fsr2h,f,c
  8178  00143C  0E28               	movlw	40
  8179  00143E  6EDE               	movwf	postinc2,c
  8180  001440  0E04               	movlw	4
  8181  001442  6EDD               	movwf	postdec2,c
  8182                           
  8183                           ; BSR set to: 0
  8184                           ;usb_device.c: 1885: if(pBDTEntryEP0OutCurrent->STAT.DTS == 0)
  8185  001444  C055  FFD9         	movff	_pBDTEntryEP0OutCurrent,fsr2l
  8186  001448  C056  FFDA         	movff	_pBDTEntryEP0OutCurrent+1,fsr2h
  8187  00144C  BCDF               	btfsc	indf2,6,c
  8188  00144E  D00D               	goto	l3170
  8189                           
  8190                           ; BSR set to: 0
  8191                           ;usb_device.c: 1886: {
  8192                           ;usb_device.c: 1887: pBDTEntryEP0OutNext->STAT.Val = 0x40|(0x08 & 0x08);
  8193  001450  C057  FFD9         	movff	_pBDTEntryEP0OutNext,fsr2l
  8194  001454  C058  FFDA         	movff	_pBDTEntryEP0OutNext+1,fsr2h
  8195  001458  0E48               	movlw	72
  8196  00145A  6EDF               	movwf	indf2,c
  8197                           
  8198                           ; BSR set to: 0
  8199                           ;usb_device.c: 1888: pBDTEntryEP0OutNext->STAT.Val |= 0x80;
  8200  00145C  C057  FFD9         	movff	_pBDTEntryEP0OutNext,fsr2l
  8201  001460  C058  FFDA         	movff	_pBDTEntryEP0OutNext+1,fsr2h
  8202  001464  0E00               	movlw	0
  8203  001466  8EDB               	bsf	plusw2,7,c
  8204                           
  8205                           ;usb_device.c: 1889: }
  8206  001468  0012               	return	
  8207  00146A                     l3170:
  8208                           
  8209                           ; BSR set to: 0
  8210                           ;usb_device.c: 1890: else
  8211                           ;usb_device.c: 1891: {
  8212                           ;usb_device.c: 1892: pBDTEntryEP0OutNext->STAT.Val = 0x00|(0x08 & 0x08);
  8213  00146A  C057  FFD9         	movff	_pBDTEntryEP0OutNext,fsr2l
  8214  00146E  C058  FFDA         	movff	_pBDTEntryEP0OutNext+1,fsr2h
  8215  001472  0E08               	movlw	8
  8216  001474  6EDF               	movwf	indf2,c
  8217                           
  8218                           ; BSR set to: 0
  8219                           ;usb_device.c: 1893: pBDTEntryEP0OutNext->STAT.Val |= 0x80;
  8220  001476  C057  FFD9         	movff	_pBDTEntryEP0OutNext,fsr2l
  8221  00147A  C058  FFDA         	movff	_pBDTEntryEP0OutNext+1,fsr2h
  8222  00147E  0E00               	movlw	0
  8223  001480  8EDB               	bsf	plusw2,7,c
  8224                           
  8225                           ; BSR set to: 0
  8226                           ;usb_device.c: 1894: }
  8227                           ;usb_device.c: 1895: }
  8228  001482  0012               	return	
  8229  001484                     l3174:
  8230                           
  8231                           ; BSR set to: 0
  8232                           ;usb_device.c: 1896: else
  8233                           ;usb_device.c: 1897: {
  8234                           ;usb_device.c: 1901: pBDTEntryEP0OutNext->CNT = 8;
  8235  001484  EE20 F001          	lfsr	2,1
  8236  001488  5057               	movf	_pBDTEntryEP0OutNext,w,c
  8237  00148A  26D9               	addwf	fsr2l,f,c
  8238  00148C  5058               	movf	_pBDTEntryEP0OutNext+1,w,c
  8239  00148E  22DA               	addwfc	fsr2h,f,c
  8240  001490  0E08               	movlw	8
  8241  001492  6EDF               	movwf	indf2,c
  8242                           
  8243                           ;usb_device.c: 1902: pBDTEntryEP0OutNext->ADR = ((uint16_t)(&SetupPkt));
  8244  001494  EE20 F002          	lfsr	2,2
  8245  001498  5057               	movf	_pBDTEntryEP0OutNext,w,c
  8246  00149A  26D9               	addwf	fsr2l,f,c
  8247  00149C  5058               	movf	_pBDTEntryEP0OutNext+1,w,c
  8248  00149E  22DA               	addwfc	fsr2h,f,c
  8249  0014A0  0E20               	movlw	32
  8250  0014A2  6EDE               	movwf	postinc2,c
  8251  0014A4  0E04               	movlw	4
  8252  0014A6  6EDD               	movwf	postdec2,c
  8253                           
  8254                           ; BSR set to: 0
  8255                           ;usb_device.c: 1906: pBDTEntryEP0OutNext->STAT.Val = 0x04;
  8256  0014A8  C057  FFD9         	movff	_pBDTEntryEP0OutNext,fsr2l
  8257  0014AC  C058  FFDA         	movff	_pBDTEntryEP0OutNext+1,fsr2h
  8258  0014B0  0E04               	movlw	4
  8259  0014B2  6EDF               	movwf	indf2,c
  8260                           
  8261                           ; BSR set to: 0
  8262                           ;usb_device.c: 1907: pBDTEntryEP0OutNext->STAT.Val |= 0x80;
  8263  0014B4  C057  FFD9         	movff	_pBDTEntryEP0OutNext,fsr2l
  8264  0014B8  C058  FFDA         	movff	_pBDTEntryEP0OutNext+1,fsr2h
  8265  0014BC  0E00               	movlw	0
  8266  0014BE  8EDB               	bsf	plusw2,7,c
  8267                           
  8268                           ; BSR set to: 0
  8269                           ;usb_device.c: 1926: }
  8270                           ;usb_device.c: 1927: outPipes[0].info.bits.busy = 0;
  8271                           
  8272                           ; BSR set to: 0
  8273  0014C0  0100               	movlb	0	; () banked
  8274  0014C2  9FC7               	bcf	(_outPipes+3)& (0+255),7,b
  8275                           
  8276                           ; BSR set to: 0
  8277                           ;usb_device.c: 1941: if(USBDeferStatusStagePacket == 0)
  8278  0014C4  5059               	movf	_USBDeferStatusStagePacket,w,c	;volatile
  8279  0014C6  A4D8               	btfss	status,2,c
  8280  0014C8  0012               	return	
  8281                           
  8282                           ; BSR set to: 0
  8283                           ;usb_device.c: 1942: {
  8284                           ;usb_device.c: 1943: USBCtrlEPAllowStatusStage();
  8285  0014CA  EC45  F00C         	call	_USBCtrlEPAllowStatusStage	;wreg free
  8286  0014CE  0012               	return	
  8287  0014D0                     __end_of_USBCtrlTrfRxService:
  8288                           	opt stack 0
  8289                           tblptru	equ	0xFF8
  8290                           tblptrh	equ	0xFF7
  8291                           tblptrl	equ	0xFF6
  8292                           tablat	equ	0xFF5
  8293                           prodh	equ	0xFF4
  8294                           prodl	equ	0xFF3
  8295                           postinc0	equ	0xFEE
  8296                           wreg	equ	0xFE8
  8297                           indf1	equ	0xFE7
  8298                           postinc1	equ	0xFE6
  8299                           postdec1	equ	0xFE5
  8300                           fsr1h	equ	0xFE2
  8301                           fsr1l	equ	0xFE1
  8302                           indf2	equ	0xFDF
  8303                           postinc2	equ	0xFDE
  8304                           postdec2	equ	0xFDD
  8305                           plusw2	equ	0xFDB
  8306                           fsr2h	equ	0xFDA
  8307                           fsr2l	equ	0xFD9
  8308                           status	equ	0xFD8
  8309                           
  8310 ;; *************** function _USBCtrlEPAllowStatusStage *****************
  8311 ;; Defined at:
  8312 ;;		line 1416 in file "usb/usb_device.c"
  8313 ;; Parameters:    Size  Location     Type
  8314 ;;		None
  8315 ;; Auto vars:     Size  Location     Type
  8316 ;;		None
  8317 ;; Return value:  Size  Location     Type
  8318 ;;                  1    wreg      void 
  8319 ;; Registers used:
  8320 ;;		wreg, fsr2l, fsr2h, status,2, status,0
  8321 ;; Tracked objects:
  8322 ;;		On entry : 0/0
  8323 ;;		On exit  : 0/0
  8324 ;;		Unchanged: 0/0
  8325 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  8326 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  8327 ;;      Locals:         0       0       0       0       0       0       0       0       0       0
  8328 ;;      Temps:          0       0       0       0       0       0       0       0       0       0
  8329 ;;      Totals:         0       0       0       0       0       0       0       0       0       0
  8330 ;;Total ram usage:        0 bytes
  8331 ;; Hardware stack levels used:    1
  8332 ;; This function calls:
  8333 ;;		Nothing
  8334 ;; This function is called by:
  8335 ;;		_USBDeviceTasks
  8336 ;;		_USBCtrlEPServiceComplete
  8337 ;;		_USBCtrlTrfRxService
  8338 ;; This function uses a non-reentrant model
  8339 ;;
  8340                           
  8341                           	psect	text40
  8342  00188A                     __ptext40:
  8343                           	opt stack 0
  8344  00188A                     _USBCtrlEPAllowStatusStage:
  8345                           	opt stack 26
  8346                           
  8347                           ;usb_device.c: 1423: if(USBStatusStageEnabledFlag1 == 0)
  8348                           
  8349                           ;incstack = 0
  8350  00188A  0100               	movlb	0	; () banked
  8351  00188C  51E3               	movf	_USBStatusStageEnabledFlag1& (0+255),w,b	;volatile
  8352  00188E  A4D8               	btfss	status,2,c
  8353  001890  0012               	return	
  8354                           
  8355                           ; BSR set to: 0
  8356                           ;usb_device.c: 1424: {
  8357                           ;usb_device.c: 1425: USBStatusStageEnabledFlag1 = 1;
  8358  001892  0E01               	movlw	1
  8359  001894  0100               	movlb	0	; () banked
  8360  001896  6FE3               	movwf	_USBStatusStageEnabledFlag1& (0+255),b	;volatile
  8361                           
  8362                           ;usb_device.c: 1426: if(USBStatusStageEnabledFlag2 == 0)
  8363  001898  0100               	movlb	0	; () banked
  8364  00189A  51E4               	movf	_USBStatusStageEnabledFlag2& (0+255),w,b	;volatile
  8365  00189C  A4D8               	btfss	status,2,c
  8366  00189E  0012               	return	
  8367                           
  8368                           ; BSR set to: 0
  8369                           ;usb_device.c: 1427: {
  8370                           ;usb_device.c: 1428: USBStatusStageEnabledFlag2 = 1;
  8371  0018A0  0E01               	movlw	1
  8372  0018A2  0100               	movlb	0	; () banked
  8373  0018A4  6FE4               	movwf	_USBStatusStageEnabledFlag2& (0+255),b	;volatile
  8374                           
  8375                           ; BSR set to: 0
  8376                           ;usb_device.c: 1432: if(controlTransferState == 2)
  8377  0018A6  0E02               	movlw	2
  8378  0018A8  185B               	xorwf	_controlTransferState,w,c
  8379  0018AA  A4D8               	btfss	status,2,c
  8380  0018AC  D015               	goto	l2854
  8381                           
  8382                           ; BSR set to: 0
  8383                           ;usb_device.c: 1433: {
  8384                           ;usb_device.c: 1434: pBDTEntryIn[0]->CNT = 0;
  8385  0018AE  EE20 F001          	lfsr	2,1
  8386  0018B2  5051               	movf	_pBDTEntryIn,w,c
  8387  0018B4  26D9               	addwf	fsr2l,f,c
  8388  0018B6  5052               	movf	_pBDTEntryIn+1,w,c
  8389  0018B8  22DA               	addwfc	fsr2h,f,c
  8390  0018BA  0E00               	movlw	0
  8391  0018BC  6EDF               	movwf	indf2,c
  8392                           
  8393                           ; BSR set to: 0
  8394                           ;usb_device.c: 1435: pBDTEntryIn[0]->STAT.Val = 0x40|(0x08 & 0x08);
  8395  0018BE  C051  FFD9         	movff	_pBDTEntryIn,fsr2l
  8396  0018C2  C052  FFDA         	movff	_pBDTEntryIn+1,fsr2h
  8397  0018C6  0E48               	movlw	72
  8398  0018C8  6EDF               	movwf	indf2,c
  8399                           
  8400                           ; BSR set to: 0
  8401                           ;usb_device.c: 1436: pBDTEntryIn[0]->STAT.Val |= 0x80;
  8402  0018CA  C051  FFD9         	movff	_pBDTEntryIn,fsr2l
  8403  0018CE  C052  FFDA         	movff	_pBDTEntryIn+1,fsr2h
  8404  0018D2  0E00               	movlw	0
  8405  0018D4  8EDB               	bsf	plusw2,7,c
  8406                           
  8407                           ;usb_device.c: 1437: }
  8408  0018D6  0012               	return	
  8409  0018D8                     l2854:
  8410                           
  8411                           ; BSR set to: 0
  8412                           ;usb_device.c: 1438: else if(controlTransferState == 1)
  8413  0018D8  045B               	decf	_controlTransferState,w,c
  8414  0018DA  A4D8               	btfss	status,2,c
  8415  0018DC  0012               	return	
  8416                           
  8417                           ; BSR set to: 0
  8418                           ;usb_device.c: 1439: {
  8419                           ;usb_device.c: 1440: BothEP0OutUOWNsSet = 0;
  8420  0018DE  0E00               	movlw	0
  8421  0018E0  0100               	movlb	0	; () banked
  8422  0018E2  6FDE               	movwf	_BothEP0OutUOWNsSet& (0+255),b
  8423                           
  8424                           ; BSR set to: 0
  8425                           ;usb_device.c: 1445: pBDTEntryEP0OutCurrent->CNT = 8;
  8426  0018E4  EE20 F001          	lfsr	2,1
  8427  0018E8  5055               	movf	_pBDTEntryEP0OutCurrent,w,c
  8428  0018EA  26D9               	addwf	fsr2l,f,c
  8429  0018EC  5056               	movf	_pBDTEntryEP0OutCurrent+1,w,c
  8430  0018EE  22DA               	addwfc	fsr2h,f,c
  8431  0018F0  0E08               	movlw	8
  8432  0018F2  6EDF               	movwf	indf2,c
  8433                           
  8434                           ; BSR set to: 0
  8435                           ;usb_device.c: 1446: pBDTEntryEP0OutCurrent->ADR = ((uint16_t)(&SetupPkt));
  8436  0018F4  EE20 F002          	lfsr	2,2
  8437  0018F8  5055               	movf	_pBDTEntryEP0OutCurrent,w,c
  8438  0018FA  26D9               	addwf	fsr2l,f,c
  8439  0018FC  5056               	movf	_pBDTEntryEP0OutCurrent+1,w,c
  8440  0018FE  22DA               	addwfc	fsr2h,f,c
  8441  001900  0E20               	movlw	32
  8442  001902  6EDE               	movwf	postinc2,c
  8443  001904  0E04               	movlw	4
  8444  001906  6EDD               	movwf	postdec2,c
  8445                           
  8446                           ; BSR set to: 0
  8447                           ;usb_device.c: 1447: pBDTEntryEP0OutCurrent->STAT.Val = 0x04;
  8448  001908  C055  FFD9         	movff	_pBDTEntryEP0OutCurrent,fsr2l
  8449  00190C  C056  FFDA         	movff	_pBDTEntryEP0OutCurrent+1,fsr2h
  8450  001910  0E04               	movlw	4
  8451  001912  6EDF               	movwf	indf2,c
  8452                           
  8453                           ; BSR set to: 0
  8454                           ;usb_device.c: 1448: pBDTEntryEP0OutCurrent->STAT.Val |= 0x80;
  8455  001914  C055  FFD9         	movff	_pBDTEntryEP0OutCurrent,fsr2l
  8456  001918  C056  FFDA         	movff	_pBDTEntryEP0OutCurrent+1,fsr2h
  8457  00191C  0E00               	movlw	0
  8458  00191E  8EDB               	bsf	plusw2,7,c
  8459                           
  8460                           ; BSR set to: 0
  8461                           ;usb_device.c: 1449: BothEP0OutUOWNsSet = 1;
  8462  001920  0E01               	movlw	1
  8463  001922  0100               	movlb	0	; () banked
  8464  001924  6FDE               	movwf	_BothEP0OutUOWNsSet& (0+255),b
  8465                           
  8466                           ; BSR set to: 0
  8467                           ;usb_device.c: 1453: pBDTEntryEP0OutNext->CNT = 8;
  8468  001926  EE20 F001          	lfsr	2,1
  8469  00192A  5057               	movf	_pBDTEntryEP0OutNext,w,c
  8470  00192C  26D9               	addwf	fsr2l,f,c
  8471  00192E  5058               	movf	_pBDTEntryEP0OutNext+1,w,c
  8472  001930  22DA               	addwfc	fsr2h,f,c
  8473  001932  0E08               	movlw	8
  8474  001934  6EDF               	movwf	indf2,c
  8475                           
  8476                           ; BSR set to: 0
  8477                           ;usb_device.c: 1454: pBDTEntryEP0OutNext->ADR = ((uint16_t)(&SetupPkt));
  8478  001936  EE20 F002          	lfsr	2,2
  8479  00193A  5057               	movf	_pBDTEntryEP0OutNext,w,c
  8480  00193C  26D9               	addwf	fsr2l,f,c
  8481  00193E  5058               	movf	_pBDTEntryEP0OutNext+1,w,c
  8482  001940  22DA               	addwfc	fsr2h,f,c
  8483  001942  0E20               	movlw	32
  8484  001944  6EDE               	movwf	postinc2,c
  8485  001946  0E04               	movlw	4
  8486  001948  6EDD               	movwf	postdec2,c
  8487                           
  8488                           ; BSR set to: 0
  8489                           ;usb_device.c: 1455: pBDTEntryEP0OutNext->STAT.Val = 0x80;
  8490  00194A  C057  FFD9         	movff	_pBDTEntryEP0OutNext,fsr2l
  8491  00194E  C058  FFDA         	movff	_pBDTEntryEP0OutNext+1,fsr2h
  8492  001952  0E80               	movlw	128
  8493  001954  6EDF               	movwf	indf2,c
  8494                           
  8495                           ; BSR set to: 0
  8496                           
  8497                           ; BSR set to: 0
  8498                           
  8499                           ; BSR set to: 0
  8500  001956  0012               	return	
  8501  001958                     __end_of_USBCtrlEPAllowStatusStage:
  8502                           	opt stack 0
  8503                           tblptru	equ	0xFF8
  8504                           tblptrh	equ	0xFF7
  8505                           tblptrl	equ	0xFF6
  8506                           tablat	equ	0xFF5
  8507                           prodh	equ	0xFF4
  8508                           prodl	equ	0xFF3
  8509                           postinc0	equ	0xFEE
  8510                           wreg	equ	0xFE8
  8511                           indf1	equ	0xFE7
  8512                           postinc1	equ	0xFE6
  8513                           postdec1	equ	0xFE5
  8514                           fsr1h	equ	0xFE2
  8515                           fsr1l	equ	0xFE1
  8516                           indf2	equ	0xFDF
  8517                           postinc2	equ	0xFDE
  8518                           postdec2	equ	0xFDD
  8519                           plusw2	equ	0xFDB
  8520                           fsr2h	equ	0xFDA
  8521                           fsr2l	equ	0xFD9
  8522                           status	equ	0xFD8
  8523                           
  8524 ;; *************** function _USBCtrlTrfInHandler *****************
  8525 ;; Defined at:
  8526 ;;		line 2592 in file "usb/usb_device.c"
  8527 ;; Parameters:    Size  Location     Type
  8528 ;;		None
  8529 ;; Auto vars:     Size  Location     Type
  8530 ;;  lastDTS         1    1[COMRAM] unsigned char 
  8531 ;; Return value:  Size  Location     Type
  8532 ;;                  1    wreg      void 
  8533 ;; Registers used:
  8534 ;;		wreg, fsr1l, fsr1h, fsr2l, fsr2h, status,2, status,0, tblptrl, tblptrh, tblptru, cstack
  8535 ;; Tracked objects:
  8536 ;;		On entry : 0/0
  8537 ;;		On exit  : 0/0
  8538 ;;		Unchanged: 0/0
  8539 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  8540 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  8541 ;;      Locals:         1       0       0       0       0       0       0       0       0       0
  8542 ;;      Temps:          0       0       0       0       0       0       0       0       0       0
  8543 ;;      Totals:         1       0       0       0       0       0       0       0       0       0
  8544 ;;Total ram usage:        1 bytes
  8545 ;; Hardware stack levels used:    1
  8546 ;; Hardware stack levels required when called:    1
  8547 ;; This function calls:
  8548 ;;		_USBCtrlTrfTxService
  8549 ;; This function is called by:
  8550 ;;		_USBCtrlEPService
  8551 ;; This function uses a non-reentrant model
  8552 ;;
  8553                           
  8554                           	psect	text41
  8555  001A26                     __ptext41:
  8556                           	opt stack 0
  8557  001A26                     _USBCtrlTrfInHandler:
  8558                           	opt stack 27
  8559                           
  8560                           ;usb_device.c: 2594: uint8_t lastDTS;
  8561                           ;usb_device.c: 2596: lastDTS = pBDTEntryIn[0]->STAT.DTS;
  8562                           
  8563                           ; BSR set to: 0
  8564                           ;incstack = 0
  8565  001A26  C051  FFD9         	movff	_pBDTEntryIn,fsr2l
  8566  001A2A  C052  FFDA         	movff	_pBDTEntryIn+1,fsr2h
  8567  001A2E  0E00               	movlw	0
  8568  001A30  BCDF               	btfsc	indf2,6,c
  8569  001A32  0E01               	movlw	1
  8570  001A34  6E02               	movwf	USBCtrlTrfInHandler@lastDTS,c
  8571                           
  8572                           ;usb_device.c: 2599: pBDTEntryIn[0] = (volatile BDT_ENTRY*)(((uintptr_t)pBDTEntryIn[0]) 
      +                          ^ 0x0004);
  8573  001A36  0E04               	movlw	4
  8574  001A38  1851               	xorwf	_pBDTEntryIn,w,c
  8575  001A3A  6E51               	movwf	_pBDTEntryIn,c
  8576  001A3C  5052               	movf	_pBDTEntryIn+1,w,c
  8577  001A3E  6E52               	movwf	_pBDTEntryIn+1,c
  8578                           
  8579                           ;usb_device.c: 2604: if(USBDeviceState == ADR_PENDING_STATE)
  8580  001A40  0E08               	movlw	8
  8581  001A42  185A               	xorwf	_USBDeviceState,w,c
  8582  001A44  A4D8               	btfss	status,2,c
  8583  001A46  D00B               	goto	l3380
  8584                           
  8585                           ;usb_device.c: 2605: {
  8586                           ;usb_device.c: 2606: UADDR = (SetupPkt.bDevADR & 0x7F);
  8587  001A48  0104               	movlb	4	; () banked
  8588  001A4A  5122               	movf	34,w,b	;volatile
  8589  001A4C  0B7F               	andlw	127
  8590  001A4E  6E6E               	movwf	3950,c	;volatile
  8591                           
  8592                           ; BSR set to: 4
  8593                           ;usb_device.c: 2607: if(UADDR != 0u)
  8594  001A50  506E               	movf	3950,w,c	;volatile
  8595  001A52  B4D8               	btfsc	status,2,c
  8596  001A54  D002               	goto	l3378
  8597                           
  8598                           ; BSR set to: 4
  8599                           ;usb_device.c: 2608: {
  8600                           ;usb_device.c: 2609: USBDeviceState=ADDRESS_STATE;
  8601  001A56  0E10               	movlw	16
  8602  001A58  D001               	goto	L12
  8603  001A5A                     l3378:
  8604                           
  8605                           ; BSR set to: 4
  8606                           ;usb_device.c: 2611: else
  8607                           ;usb_device.c: 2612: {
  8608                           ;usb_device.c: 2613: USBDeviceState=DEFAULT_STATE;
  8609  001A5A  0E04               	movlw	4
  8610  001A5C                     L12:
  8611  001A5C  6E5A               	movwf	_USBDeviceState,c
  8612  001A5E                     l3380:
  8613                           
  8614                           ;usb_device.c: 2614: }
  8615                           ;usb_device.c: 2615: }
  8616                           ;usb_device.c: 2618: if(controlTransferState == 1)
  8617  001A5E  045B               	decf	_controlTransferState,w,c
  8618  001A60  A4D8               	btfss	status,2,c
  8619  001A62  D03A               	goto	l338
  8620                           
  8621                           ;usb_device.c: 2619: {
  8622                           ;usb_device.c: 2620: pBDTEntryIn[0]->ADR = ((uint16_t)(CtrlTrfData));
  8623  001A64  EE20 F002          	lfsr	2,2
  8624  001A68  5051               	movf	_pBDTEntryIn,w,c
  8625  001A6A  26D9               	addwf	fsr2l,f,c
  8626  001A6C  5052               	movf	_pBDTEntryIn+1,w,c
  8627  001A6E  22DA               	addwfc	fsr2h,f,c
  8628  001A70  0E28               	movlw	40
  8629  001A72  6EDE               	movwf	postinc2,c
  8630  001A74  0E04               	movlw	4
  8631  001A76  6EDD               	movwf	postdec2,c
  8632                           
  8633                           ;usb_device.c: 2621: USBCtrlTrfTxService();
  8634  001A78  ECAC  F00C         	call	_USBCtrlTrfTxService	;wreg free
  8635                           
  8636                           ;usb_device.c: 2627: if(shortPacketStatus == 2)
  8637  001A7C  0E02               	movlw	2
  8638  001A7E  185C               	xorwf	_shortPacketStatus,w,c
  8639  001A80  A4D8               	btfss	status,2,c
  8640  001A82  D00D               	goto	l3392
  8641                           
  8642                           ;usb_device.c: 2628: {
  8643                           ;usb_device.c: 2631: pBDTEntryIn[0]->STAT.Val = 0x04;
  8644  001A84  C051  FFD9         	movff	_pBDTEntryIn,fsr2l
  8645  001A88  C052  FFDA         	movff	_pBDTEntryIn+1,fsr2h
  8646  001A8C  0E04               	movlw	4
  8647  001A8E  6EDF               	movwf	indf2,c
  8648                           
  8649                           ;usb_device.c: 2632: pBDTEntryIn[0]->STAT.Val |= 0x80;
  8650  001A90  C051  FFD9         	movff	_pBDTEntryIn,fsr2l
  8651  001A94  C052  FFDA         	movff	_pBDTEntryIn+1,fsr2h
  8652  001A98  0E00               	movlw	0
  8653  001A9A  8EDB               	bsf	plusw2,7,c
  8654                           
  8655                           ;usb_device.c: 2633: }
  8656  001A9C  0012               	return	
  8657  001A9E                     l3392:
  8658                           
  8659                           ;usb_device.c: 2634: else
  8660                           ;usb_device.c: 2635: {
  8661                           ;usb_device.c: 2636: if(lastDTS == 0)
  8662  001A9E  5002               	movf	USBCtrlTrfInHandler@lastDTS,w,c
  8663  001AA0  A4D8               	btfss	status,2,c
  8664  001AA2  D00D               	goto	l3398
  8665                           
  8666                           ;usb_device.c: 2637: {
  8667                           ;usb_device.c: 2638: pBDTEntryIn[0]->STAT.Val = 0x40|(0x08 & 0x08);
  8668  001AA4  C051  FFD9         	movff	_pBDTEntryIn,fsr2l
  8669  001AA8  C052  FFDA         	movff	_pBDTEntryIn+1,fsr2h
  8670  001AAC  0E48               	movlw	72
  8671  001AAE  6EDF               	movwf	indf2,c
  8672                           
  8673                           ;usb_device.c: 2639: pBDTEntryIn[0]->STAT.Val |= 0x80;
  8674  001AB0  C051  FFD9         	movff	_pBDTEntryIn,fsr2l
  8675  001AB4  C052  FFDA         	movff	_pBDTEntryIn+1,fsr2h
  8676  001AB8  0E00               	movlw	0
  8677  001ABA  8EDB               	bsf	plusw2,7,c
  8678                           
  8679                           ;usb_device.c: 2640: }
  8680  001ABC  0012               	return	
  8681  001ABE                     l3398:
  8682                           
  8683                           ;usb_device.c: 2641: else
  8684                           ;usb_device.c: 2642: {
  8685                           ;usb_device.c: 2643: pBDTEntryIn[0]->STAT.Val = 0x00|(0x08 & 0x08);
  8686  001ABE  C051  FFD9         	movff	_pBDTEntryIn,fsr2l
  8687  001AC2  C052  FFDA         	movff	_pBDTEntryIn+1,fsr2h
  8688  001AC6  0E08               	movlw	8
  8689  001AC8  6EDF               	movwf	indf2,c
  8690                           
  8691                           ;usb_device.c: 2644: pBDTEntryIn[0]->STAT.Val |= 0x80;
  8692  001ACA  C051  FFD9         	movff	_pBDTEntryIn,fsr2l
  8693  001ACE  C052  FFDA         	movff	_pBDTEntryIn+1,fsr2h
  8694  001AD2  0E00               	movlw	0
  8695  001AD4  8EDB               	bsf	plusw2,7,c
  8696                           
  8697                           ;usb_device.c: 2645: }
  8698                           ;usb_device.c: 2646: }
  8699                           ;usb_device.c: 2647: }
  8700  001AD6  0012               	return	
  8701  001AD8                     l338:
  8702                           
  8703                           ;usb_device.c: 2648: else
  8704                           ;usb_device.c: 2649: {
  8705                           ;usb_device.c: 2653: if(outPipes[0].info.bits.busy == 1)
  8706  001AD8  0100               	movlb	0	; () banked
  8707  001ADA  AFC7               	btfss	(_outPipes+3)& (0+255),7,b
  8708  001ADC  D002               	goto	l3404
  8709                           
  8710                           ; BSR set to: 0
  8711                           ;usb_device.c: 2658: }
  8712                           ;usb_device.c: 2659: outPipes[0].info.bits.busy = 0;
  8713                           
  8714                           ; BSR set to: 0
  8715  001ADE  0100               	movlb	0	; () banked
  8716  001AE0  9FC7               	bcf	(_outPipes+3)& (0+255),7,b
  8717  001AE2                     l3404:
  8718                           
  8719                           ; BSR set to: 0
  8720                           ;usb_device.c: 2660: }
  8721                           ;usb_device.c: 2662: controlTransferState = 0;
  8722  001AE2  0E00               	movlw	0
  8723  001AE4  6E5B               	movwf	_controlTransferState,c
  8724  001AE6  0012               	return	
  8725  001AE8                     __end_of_USBCtrlTrfInHandler:
  8726                           	opt stack 0
  8727                           tblptru	equ	0xFF8
  8728                           tblptrh	equ	0xFF7
  8729                           tblptrl	equ	0xFF6
  8730                           tablat	equ	0xFF5
  8731                           prodh	equ	0xFF4
  8732                           prodl	equ	0xFF3
  8733                           postinc0	equ	0xFEE
  8734                           wreg	equ	0xFE8
  8735                           indf1	equ	0xFE7
  8736                           postinc1	equ	0xFE6
  8737                           postdec1	equ	0xFE5
  8738                           fsr1h	equ	0xFE2
  8739                           fsr1l	equ	0xFE1
  8740                           indf2	equ	0xFDF
  8741                           postinc2	equ	0xFDE
  8742                           postdec2	equ	0xFDD
  8743                           plusw2	equ	0xFDB
  8744                           fsr2h	equ	0xFDA
  8745                           fsr2l	equ	0xFD9
  8746                           status	equ	0xFD8
  8747                           
  8748 ;; *************** function _USBCtrlTrfTxService *****************
  8749 ;; Defined at:
  8750 ;;		line 1771 in file "usb/usb_device.c"
  8751 ;; Parameters:    Size  Location     Type
  8752 ;;		None
  8753 ;; Auto vars:     Size  Location     Type
  8754 ;;  byteToSend      1    0[COMRAM] unsigned char 
  8755 ;; Return value:  Size  Location     Type
  8756 ;;                  1    wreg      void 
  8757 ;; Registers used:
  8758 ;;		wreg, fsr1l, fsr1h, fsr2l, fsr2h, status,2, status,0, tblptrl, tblptrh, tblptru
  8759 ;; Tracked objects:
  8760 ;;		On entry : 0/0
  8761 ;;		On exit  : 0/0
  8762 ;;		Unchanged: 0/0
  8763 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  8764 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  8765 ;;      Locals:         1       0       0       0       0       0       0       0       0       0
  8766 ;;      Temps:          0       0       0       0       0       0       0       0       0       0
  8767 ;;      Totals:         1       0       0       0       0       0       0       0       0       0
  8768 ;;Total ram usage:        1 bytes
  8769 ;; Hardware stack levels used:    1
  8770 ;; This function calls:
  8771 ;;		Nothing
  8772 ;; This function is called by:
  8773 ;;		_USBCtrlEPAllowDataStage
  8774 ;;		_USBCtrlTrfInHandler
  8775 ;; This function uses a non-reentrant model
  8776 ;;
  8777                           
  8778                           	psect	text42
  8779  001958                     __ptext42:
  8780                           	opt stack 0
  8781  001958                     _USBCtrlTrfTxService:
  8782                           	opt stack 25
  8783                           
  8784                           ;usb_device.c: 1773: uint8_t byteToSend;
  8785                           ;usb_device.c: 1777: byteToSend = 8;
  8786                           
  8787                           ;incstack = 0
  8788  001958  0E08               	movlw	8
  8789  00195A  6E01               	movwf	USBCtrlTrfTxService@byteToSend,c
  8790                           
  8791                           ;usb_device.c: 1778: if(inPipes[0].wCount.Val < (uint8_t)8)
  8792  00195C  5050               	movf	_inPipes+5,w,c
  8793  00195E  E110               	bnz	l2810
  8794  001960  0E08               	movlw	8
  8795  001962  5C4F               	subwf	_inPipes+4,w,c
  8796  001964  B0D8               	btfsc	status,0,c
  8797  001966  D00C               	goto	l2810
  8798                           
  8799                           ;usb_device.c: 1779: {
  8800                           ;usb_device.c: 1780: byteToSend = inPipes[0].wCount.Val;
  8801  001968  C04F  F001         	movff	_inPipes+4,USBCtrlTrfTxService@byteToSend
  8802                           
  8803                           ;usb_device.c: 1787: if(shortPacketStatus == 0)
  8804  00196C  505C               	movf	_shortPacketStatus,w,c
  8805  00196E  A4D8               	btfss	status,2,c
  8806  001970  D002               	goto	l2806
  8807                           
  8808                           ;usb_device.c: 1788: {
  8809                           ;usb_device.c: 1789: shortPacketStatus = 1;
  8810  001972  0E01               	movlw	1
  8811  001974  D004               	goto	L13
  8812  001976                     l2806:
  8813                           
  8814                           ;usb_device.c: 1791: else if(shortPacketStatus == 1)
  8815  001976  045C               	decf	_shortPacketStatus,w,c
  8816  001978  A4D8               	btfss	status,2,c
  8817  00197A  D002               	goto	l2810
  8818                           
  8819                           ;usb_device.c: 1792: {
  8820                           ;usb_device.c: 1793: shortPacketStatus = 2;
  8821  00197C  0E02               	movlw	2
  8822  00197E                     L13:
  8823  00197E  6E5C               	movwf	_shortPacketStatus,c
  8824  001980                     l2810:
  8825                           
  8826                           ;usb_device.c: 1794: }
  8827                           ;usb_device.c: 1795: }
  8828                           ;usb_device.c: 1799: inPipes[0].wCount.Val -= byteToSend;
  8829  001980  5001               	movf	USBCtrlTrfTxService@byteToSend,w,c
  8830  001982  5E4F               	subwf	_inPipes+4,f,c
  8831  001984  0E00               	movlw	0
  8832  001986  5A50               	subwfb	_inPipes+5,f,c
  8833                           
  8834                           ;usb_device.c: 1804: pBDTEntryIn[0]->CNT = byteToSend;
  8835  001988  EE20 F001          	lfsr	2,1
  8836  00198C  5051               	movf	_pBDTEntryIn,w,c
  8837  00198E  26D9               	addwf	fsr2l,f,c
  8838  001990  5052               	movf	_pBDTEntryIn+1,w,c
  8839  001992  22DA               	addwfc	fsr2h,f,c
  8840  001994  C001  FFDF         	movff	USBCtrlTrfTxService@byteToSend,indf2
  8841                           
  8842                           ;usb_device.c: 1808: pDst = ( uint8_t*)CtrlTrfData;
  8843  001998  0E28               	movlw	40
  8844  00199A  0100               	movlb	0	; () banked
  8845  00199C  6FDC               	movwf	_pDst& (0+255),b
  8846  00199E  0E04               	movlw	4
  8847  0019A0  0100               	movlb	0	; () banked
  8848  0019A2  6FDD               	movwf	(_pDst+1)& (0+255),b
  8849                           
  8850                           ; BSR set to: 0
  8851                           ;usb_device.c: 1809: if(inPipes[0].info.bits.ctrl_trf_mem == 0x00)
  8852  0019A4  A04E               	btfss	_inPipes+3,0,c
  8853  0019A6  D01C               	goto	l2828
  8854  0019A8  D03A               	goto	l2838
  8855  0019AA                     l2820:
  8856                           
  8857                           ; BSR set to: 0
  8858                           ;usb_device.c: 1812: {
  8859                           ;usb_device.c: 1813: *pDst++ = *inPipes[0].pSrc.bRom++;
  8860  0019AA  C04B  FFF6         	movff	_inPipes,tblptrl
  8861  0019AE  C04C  FFF7         	movff	_inPipes+1,tblptrh
  8862  0019B2  6AF8               	clrf	tblptru,c
  8863  0019B4  C0DC  FFD9         	movff	_pDst,fsr2l
  8864  0019B8  C0DD  FFDA         	movff	_pDst+1,fsr2h
  8865  0019BC  0E07               	movlw	(high __ramtop+-1)
  8866  0019BE  64F7               	cpfsgt	tblptrh,c
  8867  0019C0  D003               	bra	u1837
  8868  0019C2  0008               	tblrd		*
  8869  0019C4  50F5               	movf	tablat,w,c
  8870  0019C6  D005               	bra	u1830
  8871  0019C8                     u1837:
  8872  0019C8  CFF6 FFE1          	movff	tblptrl,fsr1l
  8873  0019CC  CFF7 FFE2          	movff	tblptrh,fsr1h
  8874  0019D0  50E7               	movf	indf1,w,c
  8875  0019D2                     u1830:
  8876  0019D2  6EDF               	movwf	indf2,c
  8877  0019D4  4A4B               	infsnz	_inPipes,f,c
  8878  0019D6  2A4C               	incf	_inPipes+1,f,c
  8879  0019D8  0100               	movlb	0	; () banked
  8880  0019DA  4BDC               	infsnz	_pDst& (0+255),f,b
  8881  0019DC  2BDD               	incf	(_pDst+1)& (0+255),f,b
  8882                           
  8883                           ; BSR set to: 0
  8884                           ;usb_device.c: 1814: byteToSend--;
  8885  0019DE  0601               	decf	USBCtrlTrfTxService@byteToSend,f,c
  8886  0019E0                     l2828:
  8887                           
  8888                           ; BSR set to: 0
  8889  0019E0  5001               	movf	USBCtrlTrfTxService@byteToSend,w,c
  8890  0019E2  B4D8               	btfsc	status,2,c
  8891  0019E4  0012               	return	
  8892  0019E6  D7E1               	goto	l2820
  8893  0019E8                     l2830:
  8894                           
  8895                           ; BSR set to: 0
  8896                           ;usb_device.c: 1820: {
  8897                           ;usb_device.c: 1821: *pDst++ = *inPipes[0].pSrc.bRam++;
  8898  0019E8  C04B  FFF6         	movff	_inPipes,tblptrl
  8899  0019EC  C04C  FFF7         	movff	_inPipes+1,tblptrh
  8900  0019F0  6AF8               	clrf	tblptru,c
  8901  0019F2  C0DC  FFD9         	movff	_pDst,fsr2l
  8902  0019F6  C0DD  FFDA         	movff	_pDst+1,fsr2h
  8903  0019FA  0E07               	movlw	(high __ramtop+-1)
  8904  0019FC  64F7               	cpfsgt	tblptrh,c
  8905  0019FE  D003               	bra	u1857
  8906  001A00  0008               	tblrd		*
  8907  001A02  50F5               	movf	tablat,w,c
  8908  001A04  D005               	bra	u1850
  8909  001A06                     u1857:
  8910  001A06  CFF6 FFE1          	movff	tblptrl,fsr1l
  8911  001A0A  CFF7 FFE2          	movff	tblptrh,fsr1h
  8912  001A0E  50E7               	movf	indf1,w,c
  8913  001A10                     u1850:
  8914  001A10  6EDF               	movwf	indf2,c
  8915  001A12  4A4B               	infsnz	_inPipes,f,c
  8916  001A14  2A4C               	incf	_inPipes+1,f,c
  8917  001A16  0100               	movlb	0	; () banked
  8918  001A18  4BDC               	infsnz	_pDst& (0+255),f,b
  8919  001A1A  2BDD               	incf	(_pDst+1)& (0+255),f,b
  8920                           
  8921                           ; BSR set to: 0
  8922                           ;usb_device.c: 1822: byteToSend--;
  8923  001A1C  0601               	decf	USBCtrlTrfTxService@byteToSend,f,c
  8924  001A1E                     l2838:
  8925                           
  8926                           ; BSR set to: 0
  8927  001A1E  5001               	movf	USBCtrlTrfTxService@byteToSend,w,c
  8928  001A20  B4D8               	btfsc	status,2,c
  8929  001A22  0012               	return	
  8930  001A24  D7E1               	goto	l2830
  8931  001A26                     __end_of_USBCtrlTrfTxService:
  8932                           	opt stack 0
  8933                           tblptru	equ	0xFF8
  8934                           tblptrh	equ	0xFF7
  8935                           tblptrl	equ	0xFF6
  8936                           tablat	equ	0xFF5
  8937                           prodh	equ	0xFF4
  8938                           prodl	equ	0xFF3
  8939                           postinc0	equ	0xFEE
  8940                           wreg	equ	0xFE8
  8941                           indf1	equ	0xFE7
  8942                           postinc1	equ	0xFE6
  8943                           postdec1	equ	0xFE5
  8944                           fsr1h	equ	0xFE2
  8945                           fsr1l	equ	0xFE1
  8946                           indf2	equ	0xFDF
  8947                           postinc2	equ	0xFDE
  8948                           postdec2	equ	0xFDD
  8949                           plusw2	equ	0xFDB
  8950                           fsr2h	equ	0xFDA
  8951                           fsr2l	equ	0xFD9
  8952                           status	equ	0xFD8
  8953                           
  8954 ;; *************** function _SYSTEM_Initialize *****************
  8955 ;; Defined at:
  8956 ;;		line 71 in file "system.c"
  8957 ;; Parameters:    Size  Location     Type
  8958 ;;  state           1    wreg     enum E4267
  8959 ;; Auto vars:     Size  Location     Type
  8960 ;;  state           1   10[COMRAM] enum E4267
  8961 ;; Return value:  Size  Location     Type
  8962 ;;                  1    wreg      void 
  8963 ;; Registers used:
  8964 ;;		wreg, fsr2l, fsr2h, status,2, status,0, prodl, prodh, cstack
  8965 ;; Tracked objects:
  8966 ;;		On entry : 0/0
  8967 ;;		On exit  : 0/0
  8968 ;;		Unchanged: 0/0
  8969 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  8970 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  8971 ;;      Locals:         1       0       0       0       0       0       0       0       0       0
  8972 ;;      Temps:          1       0       0       0       0       0       0       0       0       0
  8973 ;;      Totals:         2       0       0       0       0       0       0       0       0       0
  8974 ;;Total ram usage:        2 bytes
  8975 ;; Hardware stack levels used:    1
  8976 ;; Hardware stack levels required when called:    2
  8977 ;; This function calls:
  8978 ;;		_sendLEDs
  8979 ;; This function is called by:
  8980 ;;		_main
  8981 ;; This function uses a non-reentrant model
  8982 ;;
  8983                           
  8984                           	psect	text43
  8985  002332                     __ptext43:
  8986                           	opt stack 0
  8987  002332                     _SYSTEM_Initialize:
  8988                           	opt stack 28
  8989                           
  8990                           ; BSR set to: 0
  8991                           ;incstack = 0
  8992                           ;SYSTEM_Initialize@state stored from wreg
  8993  002332  6E0B               	movwf	SYSTEM_Initialize@state,c
  8994                           
  8995                           ;system.c: 74: PORTA = 0b00000000;
  8996  002334  0E00               	movlw	0
  8997  002336  6E80               	movwf	3968,c	;volatile
  8998                           
  8999                           ;system.c: 75: PORTE = 0b00000000;
  9000  002338  0E00               	movlw	0
  9001  00233A  6E84               	movwf	3972,c	;volatile
  9002                           
  9003                           ;system.c: 77: ADCON1 = 0b00001111;
  9004  00233C  0E0F               	movlw	15
  9005  00233E  6EC1               	movwf	4033,c	;volatile
  9006                           
  9007                           ;system.c: 78: CMCON = 0b00000111;
  9008  002340  0E07               	movlw	7
  9009  002342  6EB4               	movwf	4020,c	;volatile
  9010                           
  9011                           ;system.c: 80: TRISA = 0b00110000;
  9012  002344  0E30               	movlw	48
  9013  002346  6E92               	movwf	3986,c	;volatile
  9014                           
  9015                           ;system.c: 81: TRISE = 0b00000011;
  9016  002348  0E03               	movlw	3
  9017  00234A  6E96               	movwf	3990,c	;volatile
  9018                           
  9019                           ;system.c: 83: TRISB = 0b00010000;
  9020  00234C  0E10               	movlw	16
  9021  00234E  6E93               	movwf	3987,c	;volatile
  9022                           
  9023                           ;system.c: 84: TRISC = 0b00000000;
  9024  002350  0E00               	movlw	0
  9025  002352  6E94               	movwf	3988,c	;volatile
  9026                           
  9027                           ;system.c: 85: TRISD = 0b00000000;
  9028  002354  0E00               	movlw	0
  9029  002356  6E95               	movwf	3989,c	;volatile
  9030                           
  9031                           ;system.c: 90: INTCONbits.T0IE = 0;
  9032  002358  9AF2               	bcf	intcon,5,c	;volatile
  9033                           
  9034                           ;system.c: 91: INTCONbits.T0IF = 0;
  9035  00235A  94F2               	bcf	intcon,2,c	;volatile
  9036                           
  9037                           ;system.c: 104: }
  9038                           
  9039                           ;system.c: 103: break;
  9040                           
  9041                           ;system.c: 102: case SYSTEM_STATE_USB_RESUME:
  9042                           
  9043                           ;system.c: 100: break;
  9044                           
  9045                           ;system.c: 99: case SYSTEM_STATE_USB_SUSPEND:
  9046                           
  9047                           ;system.c: 97: break;
  9048                           
  9049                           ;system.c: 95: {
  9050                           ;system.c: 96: case SYSTEM_STATE_USB_START:
  9051                           
  9052                           ;system.c: 94: switch(state)
  9053  00235C  500B               	movf	SYSTEM_Initialize@state,w,c
  9054                           
  9055                           ; Switch size 1, requested type "space"
  9056                           ; Number of cases is 3, Range of values is 0 to 2
  9057                           ; switch strategies available:
  9058                           ; Name         Instructions Cycles
  9059                           ; simple_byte           10     6 (average)
  9060                           ;	Chosen strategy is simple_byte
  9061  00235E  0A00               	xorlw	0	; case 0
  9062  002360  B4D8               	btfsc	status,2,c
  9063  002362  D003               	goto	l3830
  9064  002364  0A01               	xorlw	1	; case 1
  9065  002366  A4D8               	btfss	status,2,c
  9066  002368  0A03               	xorlw	3	; case 2
  9067  00236A                     l3830:
  9068                           
  9069                           ;system.c: 106: _delay((unsigned long)((10)*(48000000/4000.0)));
  9070  00236A  0E9C               	movlw	156
  9071  00236C  6E0A               	movwf	??_SYSTEM_Initialize& (0+255),c
  9072  00236E  0ED7               	movlw	215
  9073  002370                     u3447:
  9074  002370  2EE8               	decfsz	wreg,f,c
  9075  002372  D7FE               	goto	u3447
  9076  002374  2E0A               	decfsz	??_SYSTEM_Initialize& (0+255),f,c
  9077  002376  D7FC               	goto	u3447
  9078  002378  F000               	nop	
  9079                           
  9080                           ;system.c: 107: sendLEDs(global_leds);
  9081  00237A  0E84               	movlw	low _global_leds
  9082  00237C  6E04               	movwf	sendLEDs@leds,c
  9083  00237E  0E00               	movlw	high _global_leds
  9084  002380  6E05               	movwf	sendLEDs@leds+1,c
  9085  002382  EC66  F00E         	call	_sendLEDs	;wreg free
  9086  002386  0012               	return		;funcret
  9087  002388                     __end_of_SYSTEM_Initialize:
  9088                           	opt stack 0
  9089                           tblptru	equ	0xFF8
  9090                           tblptrh	equ	0xFF7
  9091                           tblptrl	equ	0xFF6
  9092                           tablat	equ	0xFF5
  9093                           prodh	equ	0xFF4
  9094                           prodl	equ	0xFF3
  9095                           intcon	equ	0xFF2
  9096                           postinc0	equ	0xFEE
  9097                           wreg	equ	0xFE8
  9098                           indf1	equ	0xFE7
  9099                           postinc1	equ	0xFE6
  9100                           postdec1	equ	0xFE5
  9101                           fsr1h	equ	0xFE2
  9102                           fsr1l	equ	0xFE1
  9103                           indf2	equ	0xFDF
  9104                           postinc2	equ	0xFDE
  9105                           postdec2	equ	0xFDD
  9106                           plusw2	equ	0xFDB
  9107                           fsr2h	equ	0xFDA
  9108                           fsr2l	equ	0xFD9
  9109                           status	equ	0xFD8
  9110                           
  9111 ;; *************** function _sendLEDs *****************
  9112 ;; Defined at:
  9113 ;;		line 8 in file "outputs.c"
  9114 ;; Parameters:    Size  Location     Type
  9115 ;;  leds            2    3[COMRAM] PTR unsigned char [4]
  9116 ;;		 -> pressedButtonEff@leds(64), global_leds(64), 
  9117 ;; Auto vars:     Size  Location     Type
  9118 ;;  j               1    8[COMRAM] unsigned char 
  9119 ;;  i               1    7[COMRAM] unsigned char 
  9120 ;; Return value:  Size  Location     Type
  9121 ;;                  1    wreg      void 
  9122 ;; Registers used:
  9123 ;;		wreg, fsr2l, fsr2h, status,2, status,0, prodl, prodh, cstack
  9124 ;; Tracked objects:
  9125 ;;		On entry : 0/0
  9126 ;;		On exit  : 0/0
  9127 ;;		Unchanged: 0/0
  9128 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  9129 ;;      Params:         2       0       0       0       0       0       0       0       0       0
  9130 ;;      Locals:         2       0       0       0       0       0       0       0       0       0
  9131 ;;      Temps:          2       0       0       0       0       0       0       0       0       0
  9132 ;;      Totals:         6       0       0       0       0       0       0       0       0       0
  9133 ;;Total ram usage:        6 bytes
  9134 ;; Hardware stack levels used:    1
  9135 ;; Hardware stack levels required when called:    1
  9136 ;; This function calls:
  9137 ;;		_SPI_8bit
  9138 ;; This function is called by:
  9139 ;;		_bankChange
  9140 ;;		_channelChange
  9141 ;;		_pressedButtonEff
  9142 ;;		_ledsIntro
  9143 ;;		_blinkLedAsync
  9144 ;;		_SYSTEM_Initialize
  9145 ;; This function uses a non-reentrant model
  9146 ;;
  9147                           
  9148                           	psect	text44
  9149  001CCC                     __ptext44:
  9150                           	opt stack 0
  9151  001CCC                     _sendLEDs:
  9152                           	opt stack 27
  9153                           
  9154                           ;outputs.c: 10: LATBbits.LATB2 = 0;
  9155                           
  9156                           ;incstack = 0
  9157  001CCC  948A               	bcf	3978,2,c	;volatile
  9158                           
  9159                           ;outputs.c: 11: _delay((unsigned long)((1)*(48000000/4000.0)));
  9160  001CCE  0E10               	movlw	16
  9161  001CD0  6E06               	movwf	??_sendLEDs& (0+255),c
  9162  001CD2  0E94               	movlw	148
  9163  001CD4                     u3457:
  9164  001CD4  2EE8               	decfsz	wreg,f,c
  9165  001CD6  D7FE               	goto	u3457
  9166  001CD8  2E06               	decfsz	??_sendLEDs& (0+255),f,c
  9167  001CDA  D7FC               	goto	u3457
  9168  001CDC  D000               	nop2	
  9169                           
  9170                           ;outputs.c: 14: SPI_8bit(0b00000000);
  9171  001CDE  0E00               	movlw	0
  9172  001CE0  EC09  F013         	call	_SPI_8bit
  9173                           
  9174                           ;outputs.c: 15: SPI_8bit(0b00000000);
  9175  001CE4  0E00               	movlw	0
  9176  001CE6  EC09  F013         	call	_SPI_8bit
  9177                           
  9178                           ;outputs.c: 16: SPI_8bit(0b00000000);
  9179  001CEA  0E00               	movlw	0
  9180  001CEC  EC09  F013         	call	_SPI_8bit
  9181                           
  9182                           ;outputs.c: 17: SPI_8bit(0b00000000);
  9183  001CF0  0E00               	movlw	0
  9184  001CF2  EC09  F013         	call	_SPI_8bit
  9185                           
  9186                           ;outputs.c: 20: for (char i = 0; i < 16; i++) {
  9187  001CF6  0E00               	movlw	0
  9188  001CF8  6E08               	movwf	sendLEDs@i,c
  9189  001CFA                     l3286:
  9190  001CFA  0E0F               	movlw	15
  9191  001CFC  6408               	cpfsgt	sendLEDs@i,c
  9192  001CFE  D001               	goto	l3290
  9193  001D00  D01F               	goto	l3306
  9194  001D02                     l3290:
  9195                           
  9196                           ;outputs.c: 22: for (char j = 0; j < 4; j++) {
  9197  001D02  0E00               	movlw	0
  9198  001D04  6E09               	movwf	sendLEDs@j,c
  9199  001D06                     l3292:
  9200  001D06  0E03               	movlw	3
  9201  001D08  6409               	cpfsgt	sendLEDs@j,c
  9202  001D0A  D001               	goto	l3296
  9203  001D0C  D017               	goto	l3302
  9204  001D0E                     l3296:
  9205                           
  9206                           ;outputs.c: 24: SPI_8bit(leds[i][j]);
  9207  001D0E  5008               	movf	sendLEDs@i,w,c
  9208  001D10  0D04               	mullw	4
  9209  001D12  C004  F006         	movff	sendLEDs@leds,??_sendLEDs
  9210  001D16  C005  F007         	movff	sendLEDs@leds+1,??_sendLEDs+1
  9211  001D1A  50F3               	movf	prodl,w,c
  9212  001D1C  2606               	addwf	??_sendLEDs,f,c
  9213  001D1E  50F4               	movf	prodh,w,c
  9214  001D20  2207               	addwfc	??_sendLEDs+1,f,c
  9215  001D22  5009               	movf	sendLEDs@j,w,c
  9216  001D24  0D01               	mullw	1
  9217  001D26  50F3               	movf	prodl,w,c
  9218  001D28  2406               	addwf	??_sendLEDs,w,c
  9219  001D2A  6ED9               	movwf	fsr2l,c
  9220  001D2C  50F4               	movf	prodh,w,c
  9221  001D2E  2007               	addwfc	??_sendLEDs+1,w,c
  9222  001D30  6EDA               	movwf	fsr2h,c
  9223  001D32  50DF               	movf	indf2,w,c
  9224  001D34  EC09  F013         	call	_SPI_8bit
  9225  001D38  2A09               	incf	sendLEDs@j,f,c
  9226  001D3A  D7E5               	goto	l3292
  9227  001D3C                     l3302:
  9228  001D3C  2A08               	incf	sendLEDs@i,f,c
  9229  001D3E  D7DD               	goto	l3286
  9230  001D40                     l3306:
  9231                           
  9232                           ;outputs.c: 25: }
  9233                           ;outputs.c: 26: }
  9234                           ;outputs.c: 29: SPI_8bit(0b00000000);
  9235  001D40  0E00               	movlw	0
  9236  001D42  EC09  F013         	call	_SPI_8bit
  9237                           
  9238                           ;outputs.c: 30: SPI_8bit(0b00000000);
  9239  001D46  0E00               	movlw	0
  9240  001D48  EC09  F013         	call	_SPI_8bit
  9241                           
  9242                           ;outputs.c: 31: SPI_8bit(0b00000000);
  9243  001D4C  0E00               	movlw	0
  9244  001D4E  EC09  F013         	call	_SPI_8bit
  9245                           
  9246                           ;outputs.c: 32: SPI_8bit(0b00000000);
  9247  001D52  0E00               	movlw	0
  9248  001D54  EC09  F013         	call	_SPI_8bit
  9249                           
  9250                           ;outputs.c: 35: SPI_8bit(0b00000000);
  9251  001D58  0E00               	movlw	0
  9252  001D5A  EC09  F013         	call	_SPI_8bit
  9253                           
  9254                           ;outputs.c: 36: SPI_8bit(0b00000000);
  9255  001D5E  0E00               	movlw	0
  9256  001D60  EC09  F013         	call	_SPI_8bit
  9257  001D64  0012               	return		;funcret
  9258  001D66                     __end_of_sendLEDs:
  9259                           	opt stack 0
  9260                           tblptru	equ	0xFF8
  9261                           tblptrh	equ	0xFF7
  9262                           tblptrl	equ	0xFF6
  9263                           tablat	equ	0xFF5
  9264                           prodh	equ	0xFF4
  9265                           prodl	equ	0xFF3
  9266                           intcon	equ	0xFF2
  9267                           postinc0	equ	0xFEE
  9268                           wreg	equ	0xFE8
  9269                           indf1	equ	0xFE7
  9270                           postinc1	equ	0xFE6
  9271                           postdec1	equ	0xFE5
  9272                           fsr1h	equ	0xFE2
  9273                           fsr1l	equ	0xFE1
  9274                           indf2	equ	0xFDF
  9275                           postinc2	equ	0xFDE
  9276                           postdec2	equ	0xFDD
  9277                           plusw2	equ	0xFDB
  9278                           fsr2h	equ	0xFDA
  9279                           fsr2l	equ	0xFD9
  9280                           status	equ	0xFD8
  9281                           
  9282 ;; *************** function _SPI_8bit *****************
  9283 ;; Defined at:
  9284 ;;		line 41 in file "outputs.c"
  9285 ;; Parameters:    Size  Location     Type
  9286 ;;  data            1    wreg     unsigned char 
  9287 ;; Auto vars:     Size  Location     Type
  9288 ;;  data            1    1[COMRAM] unsigned char 
  9289 ;;  i               1    2[COMRAM] unsigned char 
  9290 ;; Return value:  Size  Location     Type
  9291 ;;                  1    wreg      void 
  9292 ;; Registers used:
  9293 ;;		wreg, status,2, status,0
  9294 ;; Tracked objects:
  9295 ;;		On entry : 0/0
  9296 ;;		On exit  : 0/0
  9297 ;;		Unchanged: 0/0
  9298 ;; Data sizes:     COMRAM   BANK0   BANK1   BANK2   BANK3   BANK4  BANK5h  BANK5l   BANK6   BANK7
  9299 ;;      Params:         0       0       0       0       0       0       0       0       0       0
  9300 ;;      Locals:         2       0       0       0       0       0       0       0       0       0
  9301 ;;      Temps:          1       0       0       0       0       0       0       0       0       0
  9302 ;;      Totals:         3       0       0       0       0       0       0       0       0       0
  9303 ;;Total ram usage:        3 bytes
  9304 ;; Hardware stack levels used:    1
  9305 ;; This function calls:
  9306 ;;		Nothing
  9307 ;; This function is called by:
  9308 ;;		_sendLEDs
  9309 ;; This function uses a non-reentrant model
  9310 ;;
  9311                           
  9312                           	psect	text45
  9313  002612                     __ptext45:
  9314                           	opt stack 0
  9315  002612                     _SPI_8bit:
  9316                           	opt stack 27
  9317                           
  9318                           ;incstack = 0
  9319                           ;SPI_8bit@data stored from wreg
  9320  002612  6E02               	movwf	SPI_8bit@data,c
  9321                           
  9322                           ;outputs.c: 43: for (char i = 0; i < 8; i++) {
  9323  002614  0E00               	movlw	0
  9324  002616  6E03               	movwf	SPI_8bit@i,c
  9325  002618                     l3080:
  9326  002618  0E07               	movlw	7
  9327  00261A  6403               	cpfsgt	SPI_8bit@i,c
  9328  00261C  D001               	goto	l634
  9329  00261E  0012               	return	
  9330  002620                     l634:
  9331                           
  9332                           ;outputs.c: 44: LATBbits.LATB2 = 0;
  9333  002620  948A               	bcf	3978,2,c	;volatile
  9334                           
  9335                           ;outputs.c: 45: LATBbits.LATB1 = 0x01 & data;
  9336  002622  C002  F001         	movff	SPI_8bit@data,??_SPI_8bit
  9337  002626  0E01               	movlw	1
  9338  002628  1601               	andwf	??_SPI_8bit,f,c
  9339  00262A  4601               	rlncf	??_SPI_8bit,f,c
  9340  00262C  508A               	movf	3978,w,c	;volatile
  9341  00262E  1801               	xorwf	??_SPI_8bit,w,c
  9342  002630  0BFD               	andlw	-3
  9343  002632  1801               	xorwf	??_SPI_8bit,w,c
  9344  002634  6E8A               	movwf	3978,c	;volatile
  9345                           
  9346                           ;outputs.c: 46: LATBbits.LATB2 = 1;
  9347  002636  848A               	bsf	3978,2,c	;volatile
  9348                           
  9349                           ;outputs.c: 48: data = data >> 1;
  9350  002638  90D8               	bcf	status,0,c
  9351  00263A  3002               	rrcf	SPI_8bit@data,w,c
  9352  00263C  6E02               	movwf	SPI_8bit@data,c
  9353  00263E  2A03               	incf	SPI_8bit@i,f,c
  9354  002640  D7EB               	goto	l3080
  9355  002642                     __end_of_SPI_8bit:
  9356                           	opt stack 0
  9357                           tblptru	equ	0xFF8
  9358                           tblptrh	equ	0xFF7
  9359                           tblptrl	equ	0xFF6
  9360                           tablat	equ	0xFF5
  9361                           prodh	equ	0xFF4
  9362                           prodl	equ	0xFF3
  9363                           intcon	equ	0xFF2
  9364                           postinc0	equ	0xFEE
  9365                           wreg	equ	0xFE8
  9366                           indf1	equ	0xFE7
  9367                           postinc1	equ	0xFE6
  9368                           postdec1	equ	0xFE5
  9369                           fsr1h	equ	0xFE2
  9370                           fsr1l	equ	0xFE1
  9371                           indf2	equ	0xFDF
  9372                           postinc2	equ	0xFDE
  9373                           postdec2	equ	0xFDD
  9374                           plusw2	equ	0xFDB
  9375                           fsr2h	equ	0xFDA
  9376                           fsr2l	equ	0xFD9
  9377                           status	equ	0xFD8
  9378                           tblptru	equ	0xFF8
  9379                           tblptrh	equ	0xFF7
  9380                           tblptrl	equ	0xFF6
  9381                           tablat	equ	0xFF5
  9382                           prodh	equ	0xFF4
  9383                           prodl	equ	0xFF3
  9384                           intcon	equ	0xFF2
  9385                           postinc0	equ	0xFEE
  9386                           wreg	equ	0xFE8
  9387                           indf1	equ	0xFE7
  9388                           postinc1	equ	0xFE6
  9389                           postdec1	equ	0xFE5
  9390                           fsr1h	equ	0xFE2
  9391                           fsr1l	equ	0xFE1
  9392                           indf2	equ	0xFDF
  9393                           postinc2	equ	0xFDE
  9394                           postdec2	equ	0xFDD
  9395                           plusw2	equ	0xFDB
  9396                           fsr2h	equ	0xFDA
  9397                           fsr2l	equ	0xFD9
  9398                           status	equ	0xFD8
  9399                           
  9400                           	psect	rparam
  9401  0000                     tblptru	equ	0xFF8
  9402                           tblptrh	equ	0xFF7
  9403                           tblptrl	equ	0xFF6
  9404                           tablat	equ	0xFF5
  9405                           prodh	equ	0xFF4
  9406                           prodl	equ	0xFF3
  9407                           intcon	equ	0xFF2
  9408                           postinc0	equ	0xFEE
  9409                           wreg	equ	0xFE8
  9410                           indf1	equ	0xFE7
  9411                           postinc1	equ	0xFE6
  9412                           postdec1	equ	0xFE5
  9413                           fsr1h	equ	0xFE2
  9414                           fsr1l	equ	0xFE1
  9415                           indf2	equ	0xFDF
  9416                           postinc2	equ	0xFDE
  9417                           postdec2	equ	0xFDD
  9418                           plusw2	equ	0xFDB
  9419                           fsr2h	equ	0xFDA
  9420                           fsr2l	equ	0xFD9
  9421                           status	equ	0xFD8


Data Sizes:
    Strings     0
    Constant    209
    Data        148
    BSS         66
    Persistent  0
    Stack       0

Auto Spaces:
    Space          Size  Autos    Used
    COMRAM           95     74      95
    BANK0           160      0     145
    BANK1           256      0      48
    BANK2           256      0       0
    BANK3           239      0       0
    BANK4           208      0       0
    BANK5h          124      0       0
    BANK5l           64      0       0
    BANK6           256      0       0
    BANK7           256      0       0

Pointer List with Targets:

    USER_USB_CALLBACK_EVENT_HANDLER@pdata	PTR void  size(2) Largest target is 2047
		 -> RAM(DATA[2047]), USTATcopy(COMRAM[1]), USBActiveConfiguration(COMRAM[1]), NULL(NULL[0]), 
		 -> BDT(BIGRAM_1l[32]), 

    memset@p1	PTR void  size(2) Largest target is 32
		 -> USBAlternateInterface(COMRAM[1]), BDT(BIGRAM_1l[32]), UEP1(SFR[1]), 

    memset@p	PTR unsigned char  size(2) Largest target is 32
		 -> USBAlternateInterface(COMRAM[1]), BDT(BIGRAM_1l[32]), UEP1(SFR[1]), 

    memcpy@d1	PTR void  size(2) Largest target is 8
		 -> SetupPkt(BIGRAM_1l[8]), 

    memcpy@d	PTR unsigned char  size(2) Largest target is 8
		 -> SetupPkt(BIGRAM_1l[8]), 

    memcpy@s1	PTR const void  size(2) Largest target is 2047
		 -> midiData(BIGRAM_1hl[4]), ReceivedDataBuffer(BIGRAM_1l[64]), CtrlTrfData(BIGRAM_1l[8]), RAM(DATA[2047]), 
		 -> SetupPkt(BIGRAM_1l[8]), 

    memcpy@s	PTR const unsigned char  size(2) Largest target is 2047
		 -> midiData(BIGRAM_1hl[4]), ReceivedDataBuffer(BIGRAM_1l[64]), CtrlTrfData(BIGRAM_1l[8]), RAM(DATA[2047]), 
		 -> SetupPkt(BIGRAM_1l[8]), 

    sendLEDs@leds	PTR unsigned char [4] size(2) Largest target is 64
		 -> pressedButtonEff@leds(COMRAM[64]), global_leds(BANK0[64]), 

    USBRxHandle	PTR void  size(2) Largest target is 2047
		 -> RAM(DATA[2047]), NULL(NULL[0]), BDT(BIGRAM_1l[32]), 

    USBTxHandle	PTR void  size(2) Largest target is 2047
		 -> RAM(DATA[2047]), NULL(NULL[0]), BDT(BIGRAM_1l[32]), 

    USBStdFeatureReqHandler@pUEP	PTR unsigned char  size(2) Largest target is 1
		 -> UEP0(SFR[1]), 

    USBStdFeatureReqHandler@p	PTR struct __BDT size(2) Largest target is 2047
		 -> RAM(DATA[2047]), NULL(NULL[0]), BDT(BIGRAM_1l[32]), 

    sp__memcpy	PTR void  size(2) Largest target is 8
		 -> SetupPkt(BIGRAM_1l[8]), 

    USBStdGetStatusHandler@p	PTR struct __BDT size(2) Largest target is 2047
		 -> RAM(DATA[2047]), NULL(NULL[0]), BDT(BIGRAM_1l[32]), 

    pDst	PTR unsigned char  size(2) Largest target is 8
		 -> CtrlTrfData(BIGRAM_1l[8]), NULL(NULL[0]), 

    USBConfigureEndpoint@handle	PTR volatile struct __BDT size(2) Largest target is 32
		 -> BDT(BIGRAM_1l[32]), 

    pBDTEntryEP0OutCurrent	PTR volatile struct __BDT size(2) Largest target is 32
		 -> NULL(NULL[0]), BDT(BIGRAM_1l[32]), 

    pBDTEntryEP0OutNext	PTR volatile struct __BDT size(2) Largest target is 2047
		 -> RAM(DATA[2047]), NULL(NULL[0]), BDT(BIGRAM_1l[32]), 

    USBTransferOnePacket@data	PTR unsigned char  size(2) Largest target is 64
		 -> midiData(BIGRAM_1hl[4]), ReceivedDataBuffer(BIGRAM_1l[64]), 

    sp__USBTransferOnePacket	PTR void  size(2) Largest target is 2047
		 -> RAM(DATA[2047]), NULL(NULL[0]), BDT(BIGRAM_1l[32]), 

    USBTransferOnePacket@handle	PTR volatile struct __BDT size(2) Largest target is 2047
		 -> RAM(DATA[2047]), NULL(NULL[0]), BDT(BIGRAM_1l[32]), 

    USBEnableEndpoint@p	PTR unsigned char  size(2) Largest target is 1
		 -> UEP0(SFR[1]), 

    pBDTEntryOut	PTR volatile struct __BDT[2] size(2) Largest target is 2047
		 -> RAM(DATA[2047]), NULL(NULL[0]), BDT(BIGRAM_1l[32]), 

    pBDTEntryIn	PTR volatile struct __BDT[2] size(2) Largest target is 2047
		 -> RAM(DATA[2047]), NULL(NULL[0]), BDT(BIGRAM_1l[32]), 

    S165$pFunc	PTR FTN()void  size(2) Largest target is 0

    outPipes.pFunc	PTR FTN()void  size(2) Largest target is 0

    S155$wRam	PTR unsigned int  size(2) Largest target is 0

    outPipes.pDst.wRam	PTR unsigned int  size(2) Largest target is 0

    S155$bRam	PTR unsigned char  size(2) Largest target is 0

    outPipes.pDst.bRam	PTR unsigned char  size(2) Largest target is 0

    S131$wRom	PTR const unsigned int  size(2) Largest target is 0

    inPipes.pSrc.wRom	PTR const unsigned int  size(2) Largest target is 0

    S131$wRam	PTR unsigned int  size(2) Largest target is 0

    inPipes.pSrc.wRam	PTR unsigned int  size(2) Largest target is 0

    S131$bRom	PTR const unsigned char  size(2) Largest target is 0

    inPipes.pSrc.bRom	PTR const unsigned char  size(2) Largest target is 0

    S131$bRam	PTR unsigned char  size(2) Largest target is 0

    inPipes.pSrc.bRam	PTR unsigned char  size(2) Largest target is 0

    sp__memset	PTR void  size(2) Largest target is 32
		 -> USBAlternateInterface(COMRAM[1]), BDT(BIGRAM_1l[32]), UEP1(SFR[1]), 

    USB_SD_Ptr	const PTR const unsigned char [3] size(2) Largest target is 52
		 -> sd002(CODE[26]), sd001(CODE[52]), sd000(CODE[4]), 

    USB_CD_Ptr	const PTR const unsigned char [1] size(2) Largest target is 101
		 -> configDescriptor1(CODE[101]), 


Critical Paths under _main in COMRAM

    _main->_pressedButtonEff
    _sendMatrixButtonsToMidi->_sendMIDINote
    _sendMIDINote->_USBTransferOnePacket
    _processSystemButtons->_bankChange
    _processSystemButtons->_channelChange
    _channelChange->_blinkLedAsync
    _bankChange->_blinkLedAsync
    _turnOnAllLeds->_changeColor
    _buttonPressed->_readMatrixButtons
    _blinkLedAsync->_sendLEDs
    _pressedButtonEff->_sendLEDs
    _ledsIntro->_sendLEDs
    _turnOffAllLeds->_changeColor
    _USBDeviceTasks->_USBCtrlEPService
    _USBWakeFromSuspend->_USER_USB_CALLBACK_EVENT_HANDLER
    _USBSuspend->_USER_USB_CALLBACK_EVENT_HANDLER
    _USBDeviceInit->_memset
    _USBCtrlEPAllowDataStage->_USBCtrlTrfTxService
    _USBCheckStdRequest->_USBStdFeatureReqHandler
    _USBStdSetCfgHandler->_USER_USB_CALLBACK_EVENT_HANDLER
    _USBStdFeatureReqHandler->_USER_USB_CALLBACK_EVENT_HANDLER
    _APP_DeviceAudioMIDIInitialize->_USBEnableEndpoint
    _USBEnableEndpoint->_USBConfigureEndpoint
    _USBCtrlTrfOutHandler->_USBCtrlTrfRxService
    _USBCtrlTrfInHandler->_USBCtrlTrfTxService
    _SYSTEM_Initialize->_sendLEDs
    _sendLEDs->_SPI_8bit

Critical Paths under _main in BANK0

    None.

Critical Paths under _main in BANK1

    None.

Critical Paths under _main in BANK2

    None.

Critical Paths under _main in BANK3

    None.

Critical Paths under _main in BANK4

    None.

Critical Paths under _main in BANK5h

    None.

Critical Paths under _main in BANK5l

    None.

Critical Paths under _main in BANK6

    None.

Critical Paths under _main in BANK7

    None.

Call Graph Tables:

 ---------------------------------------------------------------------------------
 (Depth) Function   	        Calls       Base Space   Used Autos Params    Refs
 ---------------------------------------------------------------------------------
 (0) _main                                                 0     0      0   68964
                  _SYSTEM_Initialize
                      _USBDeviceInit
                     _USBDeviceTasks
                          _ledsIntro
                   _pressedButtonEff
               _processSystemButtons
                  _readMatrixButtons
            _sendMatrixButtonsToMidi
 ---------------------------------------------------------------------------------
 (1) _sendMatrixButtonsToMidi                              3     3      0    1890
                                             15 COMRAM     3     3      0
                       _sendMIDINote
 ---------------------------------------------------------------------------------
 (2) _sendMIDINote                                         4     2      2    1712
                                             11 COMRAM     4     2      2
               _USBTransferOnePacket
 ---------------------------------------------------------------------------------
 (1) _processSystemButtons                                 0     0      0   21130
                         _bankChange
                      _channelChange
 ---------------------------------------------------------------------------------
 (2) _channelChange                                        2     2      0   10565
                                             18 COMRAM     2     2      0
                      _blinkLedAsync
                      _buttonPressed
                        _changeColor
                           _sendLEDs
                _systemButtonPressed
                     _turnOffAllLeds
                      _turnOnAllLeds
 ---------------------------------------------------------------------------------
 (2) _bankChange                                           2     2      0   10565
                                             18 COMRAM     2     2      0
                      _blinkLedAsync
                      _buttonPressed
                        _changeColor
                           _sendLEDs
                _systemButtonPressed
                     _turnOffAllLeds
                      _turnOnAllLeds
 ---------------------------------------------------------------------------------
 (3) _turnOnAllLeds                                        4     3      1    2152
                                              3 COMRAM     4     3      1
                        _changeColor
 ---------------------------------------------------------------------------------
 (3) _systemButtonPressed                                  1     1      0      27
                                              0 COMRAM     1     1      0
 ---------------------------------------------------------------------------------
 (3) _buttonPressed                                        3     3      0     182
                                              2 COMRAM     3     3      0
                  _readMatrixButtons
 ---------------------------------------------------------------------------------
 (1) _readMatrixButtons                                    2     2      0      68
                                              0 COMRAM     2     2      0
 ---------------------------------------------------------------------------------
 (3) _blinkLedAsync                                        9     6      3    3448
                                              9 COMRAM     9     6      3
                        _changeColor
                            _delayMs
                           _sendLEDs
 ---------------------------------------------------------------------------------
 (1) _pressedButtonEff                                    65    65      0    1419
                                              9 COMRAM    65    65      0
                           _sendLEDs
 ---------------------------------------------------------------------------------
 (1) _ledsIntro                                            4     4      0    4846
                                              9 COMRAM     4     4      0
                        _changeColor
                            _delayMs
                           _sendLEDs
                     _turnOffAllLeds
 ---------------------------------------------------------------------------------
 (3) _turnOffAllLeds                                       2     2      0    1930
                                              3 COMRAM     2     2      0
                        _changeColor
 ---------------------------------------------------------------------------------
 (4) _changeColor                                          3     1      2    1862
                                              0 COMRAM     3     1      2
 ---------------------------------------------------------------------------------
 (4) _delayMs                                              6     6      0      46
                                              0 COMRAM     6     6      0
 ---------------------------------------------------------------------------------
 (1) _USBDeviceTasks                                       1     1      0   37351
                                             27 COMRAM     1     1      0
          _USBCtrlEPAllowStatusStage
                   _USBCtrlEPService
                      _USBDeviceInit
      _USBIncrement1msInternalTimers
                    _USBStallHandler
                         _USBSuspend
                 _USBWakeFromSuspend
    _USER_USB_CALLBACK_EVENT_HANDLER
 ---------------------------------------------------------------------------------
 (2) _USBWakeFromSuspend                                   0     0      0    4780
    _USER_USB_CALLBACK_EVENT_HANDLER
 ---------------------------------------------------------------------------------
 (2) _USBSuspend                                           0     0      0    4780
    _USER_USB_CALLBACK_EVENT_HANDLER
 ---------------------------------------------------------------------------------
 (2) _USBStallHandler                                      1     1      0       0
                                              0 COMRAM     1     1      0
 ---------------------------------------------------------------------------------
 (2) _USBIncrement1msInternalTimers                        0     0      0       0
 ---------------------------------------------------------------------------------
 (2) _USBDeviceInit                                        1     1      0    1366
                                              8 COMRAM     1     1      0
                             _memset
 ---------------------------------------------------------------------------------
 (2) _USBCtrlEPService                                     1     1      0   21599
                                             26 COMRAM     1     1      0
                _USBCtrlTrfInHandler
               _USBCtrlTrfOutHandler
             _USBCtrlTrfSetupHandler
                             _memcpy
 ---------------------------------------------------------------------------------
 (3) _memcpy                                              10     4      6     387
                                              0 COMRAM    10     4      6
 ---------------------------------------------------------------------------------
 (3) _USBCtrlTrfSetupHandler                               0     0      0   20983
                 _USBCheckStdRequest
           _USBCtrlEPServiceComplete
    _USER_USB_CALLBACK_EVENT_HANDLER
 ---------------------------------------------------------------------------------
 (4) _USBCtrlEPServiceComplete                             0     0      0      92
            _USBCtrlEPAllowDataStage
          _USBCtrlEPAllowStatusStage
 ---------------------------------------------------------------------------------
 (5) _USBCtrlEPAllowDataStage                              0     0      0      92
                _USBCtrlTrfTxService
 ---------------------------------------------------------------------------------
 (4) _USBCheckStdRequest                                   0     0      0   16111
            _USBStdFeatureReqHandler
                _USBStdGetDscHandler
             _USBStdGetStatusHandler
                _USBStdSetCfgHandler
    _USER_USB_CALLBACK_EVENT_HANDLER
 ---------------------------------------------------------------------------------
 (5) _USBStdSetCfgHandler                                  1     1      0    6034
                                             20 COMRAM     1     1      0
    _USER_USB_CALLBACK_EVENT_HANDLER
                             _memset
 ---------------------------------------------------------------------------------
 (3) _memset                                               8     2      6    1164
                                              0 COMRAM     8     2      6
 ---------------------------------------------------------------------------------
 (5) _USBStdGetStatusHandler                               3     3      0      46
                                              0 COMRAM     3     3      0
 ---------------------------------------------------------------------------------
 (5) _USBStdGetDscHandler                                  2     2      0       0
                                              0 COMRAM     2     2      0
 ---------------------------------------------------------------------------------
 (5) _USBStdFeatureReqHandler                              6     6      0    5251
                                             20 COMRAM     6     6      0
    _USER_USB_CALLBACK_EVENT_HANDLER
 ---------------------------------------------------------------------------------
 (2) _USER_USB_CALLBACK_EVENT_HANDLER                      8     2      6    4780
                                             12 COMRAM     8     2      6
      _APP_DeviceAudioMIDIInitialize
 ---------------------------------------------------------------------------------
 (3) _APP_DeviceAudioMIDIInitialize                        0     0      0    2088
                  _USBEnableEndpoint
               _USBTransferOnePacket
 ---------------------------------------------------------------------------------
 (3) _USBTransferOnePacket                                11     7      4    1444
                                              0 COMRAM    11     7      4
 ---------------------------------------------------------------------------------
 (4) _USBEnableEndpoint                                    4     3      1     644
                                              8 COMRAM     4     3      1
               _USBConfigureEndpoint
 ---------------------------------------------------------------------------------
 (5) _USBConfigureEndpoint                                 8     7      1     400
                                              0 COMRAM     8     7      1
 ---------------------------------------------------------------------------------
 (3) _USBCtrlTrfOutHandler                                 0     0      0     114
                _USBCtrlTrfRxService
 ---------------------------------------------------------------------------------
 (4) _USBCtrlTrfRxService                                  2     2      0     114
                                              0 COMRAM     2     2      0
          _USBCtrlEPAllowStatusStage
 ---------------------------------------------------------------------------------
 (5) _USBCtrlEPAllowStatusStage                            0     0      0       0
 ---------------------------------------------------------------------------------
 (3) _USBCtrlTrfInHandler                                  1     1      0     115
                                              1 COMRAM     1     1      0
                _USBCtrlTrfTxService
 ---------------------------------------------------------------------------------
 (6) _USBCtrlTrfTxService                                  1     1      0      92
                                              0 COMRAM     1     1      0
 ---------------------------------------------------------------------------------
 (1) _SYSTEM_Initialize                                    2     2      0     894
                                              9 COMRAM     2     2      0
                           _sendLEDs
 ---------------------------------------------------------------------------------
 (3) _sendLEDs                                             6     4      2     872
                                              3 COMRAM     6     4      2
                           _SPI_8bit
 ---------------------------------------------------------------------------------
 (4) _SPI_8bit                                             3     3      0      91
                                              0 COMRAM     3     3      0
 ---------------------------------------------------------------------------------
 Estimated maximum stack depth 6
 ---------------------------------------------------------------------------------

 Call Graph Graphs:

 _main (ROOT)
   _SYSTEM_Initialize
     _sendLEDs
       _SPI_8bit
   _USBDeviceInit
     _memset
   _USBDeviceTasks
     _USBCtrlEPAllowStatusStage
     _USBCtrlEPService
       _USBCtrlTrfInHandler
         _USBCtrlTrfTxService
       _USBCtrlTrfOutHandler
         _USBCtrlTrfRxService
           _USBCtrlEPAllowStatusStage
       _USBCtrlTrfSetupHandler
         _USBCheckStdRequest
           _USBStdFeatureReqHandler
             _USER_USB_CALLBACK_EVENT_HANDLER
               _APP_DeviceAudioMIDIInitialize
                 _USBEnableEndpoint
                   _USBConfigureEndpoint
                 _USBTransferOnePacket
           _USBStdGetDscHandler
           _USBStdGetStatusHandler
           _USBStdSetCfgHandler
             _USER_USB_CALLBACK_EVENT_HANDLER
               _APP_DeviceAudioMIDIInitialize
                 _USBEnableEndpoint
                   _USBConfigureEndpoint
                 _USBTransferOnePacket
             _memset
           _USER_USB_CALLBACK_EVENT_HANDLER
             _APP_DeviceAudioMIDIInitialize
               _USBEnableEndpoint
                 _USBConfigureEndpoint
               _USBTransferOnePacket
         _USBCtrlEPServiceComplete
           _USBCtrlEPAllowDataStage
             _USBCtrlTrfTxService
           _USBCtrlEPAllowStatusStage
         _USER_USB_CALLBACK_EVENT_HANDLER
           _APP_DeviceAudioMIDIInitialize
             _USBEnableEndpoint
               _USBConfigureEndpoint
             _USBTransferOnePacket
       _memcpy
     _USBDeviceInit
       _memset
     _USBIncrement1msInternalTimers
     _USBStallHandler
     _USBSuspend
       _USER_USB_CALLBACK_EVENT_HANDLER
         _APP_DeviceAudioMIDIInitialize
           _USBEnableEndpoint
             _USBConfigureEndpoint
           _USBTransferOnePacket
     _USBWakeFromSuspend
       _USER_USB_CALLBACK_EVENT_HANDLER
         _APP_DeviceAudioMIDIInitialize
           _USBEnableEndpoint
             _USBConfigureEndpoint
           _USBTransferOnePacket
     _USER_USB_CALLBACK_EVENT_HANDLER
       _APP_DeviceAudioMIDIInitialize
         _USBEnableEndpoint
           _USBConfigureEndpoint
         _USBTransferOnePacket
   _ledsIntro
     _changeColor
     _delayMs
     _sendLEDs
       _SPI_8bit
     _turnOffAllLeds
       _changeColor
   _pressedButtonEff
     _sendLEDs
       _SPI_8bit
   _processSystemButtons
     _bankChange
       _blinkLedAsync
         _changeColor
         _delayMs
         _sendLEDs
           _SPI_8bit
       _buttonPressed
         _readMatrixButtons
       _changeColor
       _sendLEDs
         _SPI_8bit
       _systemButtonPressed
       _turnOffAllLeds
         _changeColor
       _turnOnAllLeds
         _changeColor
     _channelChange
       _blinkLedAsync
         _changeColor
         _delayMs
         _sendLEDs
           _SPI_8bit
       _buttonPressed
         _readMatrixButtons
       _changeColor
       _sendLEDs
         _SPI_8bit
       _systemButtonPressed
       _turnOffAllLeds
         _changeColor
       _turnOnAllLeds
         _changeColor
   _readMatrixButtons
   _sendMatrixButtonsToMidi
     _sendMIDINote
       _USBTransferOnePacket

 Address spaces:
Name               Size   Autos  Total    Cost      Usage
BIGRAM             3EE      0       0      26        0.0%
BIGRAM_1hh         27C      0       0      23        0.0%
EEDATA             100      0       0       0        0.0%
BITBANK7           100      0       0      21        0.0%
BANK7              100      0       0      22        0.0%
BITBANK6           100      0       0      19        0.0%
BANK6              100      0       0      20        0.0%
BITBANK2           100      0       0       8        0.0%
BANK2              100      0       0       9        0.0%
BITBANK1           100      0       0       6        0.0%
BANK1              100      0      30       7       18.8%
BITBANK3            EF      0       0      10        0.0%
BANK3               EF      0       0      11        0.0%
BITBANK4            D0      0       0      14        0.0%
BANK4               D0      0       0      12        0.0%
BIGRAM_1l           D0      0       0      25        0.0%
BITBANK0            A0      0       0       4        0.0%
BANK0               A0      0      91       5       90.6%
BANK5h              7C      0       0      17        0.0%
BITBANK5h           7C      0       0      15        0.0%
BITCOMRAM           5F      0       0       0        0.0%
COMRAM              5F     4A      5F       1      100.0%
BIGRAM_1hl          40      0       0      24        0.0%
BITBANK5l           40      0       0      16        0.0%
BANK5l              40      0       0      18        0.0%
BITSFR_5             0      0       0      40        0.0%
SFR_5                0      0       0      40        0.0%
BITSFR_4             0      0       0      40        0.0%
SFR_4                0      0       0      40        0.0%
BITSFR_3             0      0       0      40        0.0%
SFR_3                0      0       0      40        0.0%
BITSFR_2             0      0       0      40        0.0%
SFR_2                0      0       0      40        0.0%
BITSFR_1             0      0       0      40        0.0%
SFR_1                0      0       0      40        0.0%
BITSFR               0      0       0      40        0.0%
SFR                  0      0       0      40        0.0%
STACK                0      0       0       2        0.0%
NULL                 0      0       0       0        0.0%
ABS                  0      0     120      13        0.0%
DATA                 0      0     120       3        0.0%
CODE                 0      0       0       0        0.0%


Microchip Technology PIC18 Macro Assembler V1.38 build -256452561 
Symbol Table                                                                                   Tue Feb 25 10:10:24 2020

                              _USB_SD_Ptr 0801                               __CFG_BOR$ON 000000  
                           _USBDeviceInit 1148                               __CFG_BORV$3 000000  
                            __CFG_CP0$OFF 000000                              __CFG_CP1$OFF 000000  
                            __CFG_CP2$OFF 000000                              __CFG_CP3$OFF 000000  
    USER_USB_CALLBACK_EVENT_HANDLER@event 000D      USER_USB_CALLBACK_EVENT_HANDLER@pdata 000F  
                                     l303 241A                                       l160 0E9E  
                                     l227 154E                                       l148 11A6  
                                     l165 0ED4               __end_of_USBStdGetDscHandler 13B8  
                                     l174 0F66                                       l175 0FE6  
                                     l159 0EA0                                       l352 17C0  
                                     l176 0F76                                       l361 180E  
                                     l338 1AD8                                       l290 1AF6  
                                     l293 1B80                                       l294 1B06  
                                     l542 1BE4                                       l367 0C0E  
                                     l295 1B0A                                       l439 26EC  
                                     l641 25E0                                       l634 2620  
                                     l386 0DEE                                       l646 266E  
                                     _BDT 000400                              __CFG_CPB$OFF 000000  
                            __CFG_CPD$OFF 000000                                       _UIE 000F69  
                                     _UIR 000F68                      changeColor@intensity 0002  
                              _USBSuspend 25E2                              SPI_8bit@data 0002  
                    USBStdSetCfgHandler@i 0015                               _USBRxHandle 00D4  
                                     prod 000FF3                                       wreg 000FE8  
                          _USBDeviceTasks 0E82                            _USBDeviceState 005A  
                             _USBTxHandle 00D6                     ??_USBCtrlTrfRxService 0001  
                USBEnableEndpoint@options 0009                              __CFG_LVP$OFF 000000  
                    buttonPressed@pressed 0003                              __CFG_WDT$OFF 000000  
                                    l3004 0C08                                      l3030 0CF4  
                                    l3040 0D46                                      l3024 0CCE  
                                    l3104 14F8                                      l3042 0D62  
                                    l3018 0C82                                      l4012 22FC  
                                    l3204 17E6                                      l3124 157A  
                                    l3302 1D3C                                      l4014 232C  
                                    l3046 0D7C                                      l3206 17EC  
                                    l3222 1846                                      l3310 24AA  
                                    l3080 2618                                      l3152 13E8  
                                    l3072 0E50                                      l3056 0DC8  
                                    l3208 17F2                                      l3306 1D40  
                                    l3170 146A                                      l3074 0E5C  
                                    l3066 0E0A                                      l3058 0DD4  
                                    l3218 1828                                      l3314 24BE  
                                    l3234 2296                                      l3404 1AE2  
                                    l3324 248C                                      l3260 0A58  
                                    l3252 08EC                                      l3420 2454  
                                    l3412 242E                USBConfigureEndpoint@handle 0007  
                                    l3174 1484                                      l3158 140C  
                                    l3318 2470                                      l3502 1182  
                                    l3262 0AAE                                      l3254 0956  
                                    l3270 0BB0                                      l3238 229E  
                                    l2712 1EF8                                      l3192 17C8  
                                    l3264 0B04                                      l3256 09AC  
                                    l3424 245A                                      l3416 243E  
                                    l3290 1D02                                      l2810 1980  
                                    l2722 24EA                                      l3194 17CE  
                                    l3530 11EC                                      l3506 118A  
                                    l3266 0B5A                                      l3258 0A02  
                                    l3442 26E4                                      l3434 26D4  
                                    l3450 25BC                                      l3292 1D06  
                                    l2820 19AA                                      l3380 1A5E  
                                    l3364 227E                                      l3356 2234  
                                    l3196 17D4                                      l3540 1250  
                                    l3286 1CFA                                      l2830 19E8  
                                    l2806 1976                                      l2726 24F8  
                                    l2742 1612                                      l2734 15E8  
                                    l3534 11F4                                      l3518 11B0  
                                    l3606 2418                                      l3462 2094  
                                    l3438 26DC                                      l3454 25CC  
                                    l3702 1FA2                                      l3296 1D0E  
                                    l3392 1A9E                                      l2904 1714  
                                    l3624 1DE8                                      l3720 0EA8  
                                    l3378 1A5A                                      l2754 1690  
                                    l2930 178E                                      l2914 1748  
                                    l3626 1DEE                                      l3570 2576  
                                    l3730 0EC0                                      l3482 265A  
                                    l3474 20D8                                      l3650 2006  
                                    l2828 19E0                                      l2908 171C  
                                    l3830 236A                                      l2838 1A1E  
                                    l3398 1ABE                                      l2854 18D8  
                                    l2782 22DE                                      l2950 133E  
                                    l2942 12BA                                      l2774 26A6  
                                    l3814 0FC6                                      l3750 0EE4  
                                    l3478 264A                                      l3638 1FD4  
                                    l3902 1B98                                      l2960 139A  
                                    l2952 1344                                      l3568 2574  
                                    l3816 0FE2                                      l3808 0FA0  
                                    l3664 2046                                      l2786 22E4  
                                    l2938 12A8                                      l2778 26B6  
                                    l3770 0F24                                      l3762 0F12  
                                    l3738 0ECC                                      l3842 2110  
                                    l3906 1BA0                                      l3922 267E  
                                    l2964 13A0                                      l2884 1C82  
                                    l3780 0F38                                      l3756 0EEE  
                                    l3844 2118                                      l3676 2078  
                                    l3916 1C2C                                      l2958 1394  
                                    l3774 0F2E                                      l3862 2154  
                                    l3838 2100                                      l2976 1B28  
                                    l2888 1C9A                                      l3848 2128  
                                    l3872 0FF6                                      l3688 1F4A  
                                    l2986 1B68                                      l3794 0F6E  
                                    l3858 214E                                      l3882 113A  
                                    l3788 0F5C                                      l3876 1076  
                                    l3868 0FEE                                      l3892 2530  
                                    l3878 1136                                      u2010 138A  
                                    u2017 1380                                      u2410 22CA  
                                    u2416 22CC                                      u1830 19D2  
                                    u3417 228A                                      u1850 1A10  
                                    u3427 22D2                                      u1837 19C8  
                                    u3437 24B0                                      u3447 2370  
                                    u3457 1CD4                                      u1857 1A06  
                                    u1980 130C                                      u1990 133A  
                                    u1987 1302                                      u1997 1330  
                   ??_USBCtrlTrfTxService 0001                                      _UCFG 000F6F  
                                    _UEP0 000F70                                      _UEP1 000F71  
                                    _UEIE 000F6B                                      _UEIR 000F6A  
                                    _UCON 000F6D    USBStdFeatureReqHandler@current_ep_data 0018  
                                    _bank 00E7                                      _pDst 00DC  
                                    _main 2670                                      fsr1h 000FE2  
                                    fsr2h 000FDA                                      indf1 000FE7  
                                    fsr1l 000FE1                                      indf2 000FDF  
                                    fsr2l 000FD9                                      prodh 000FF4  
                                    prodl 000FF3                                      start 0002  
                           __CFG_IESO$OFF 000000                __end_of_USBCheckStdRequest 188A  
                  ??_USBCtrlTrfOutHandler 0003                             __CFG_MCLRE$ON 000000  
                            ___param_bank 000010                 ??_USBStdFeatureReqHandler 0015  
                   __end_of_channelChange 2088                  ??_USBStdGetStatusHandler 0001  
                          ?_USBDeviceInit 0001                       blinkLedAsync@xtimes 000A  
                           __CFG_PLLDIV$5 000000                            __CFG_CCP2MX$ON 000000  
                                   ?_main 0001         __size_of_USBCtrlEPServiceComplete 0102  
                                   _CMCON 000FB4                    __end_of_USBDeviceTasks 0FEA  
               ?_USBCtrlEPServiceComplete 0001                                     _UADDR 000F6E  
                                   _PORTA 000F80                                     _PORTE 000F84  
                           __CFG_USBDIV$2 000000                                     _TRISA 000F92  
                                   _TRISB 000F93                                     _TRISC 000F94  
                                   _TRISD 000F95                                     _TRISE 000F96  
                                   _USTAT 000F6C                             __CFG_PWRT$OFF 000000  
                         __end_of_delayMs 24DA                             __CFG_WRT0$OFF 000000  
      __size_of_USBCtrlEPAllowStatusStage 00CE                             __CFG_WRT1$OFF 000000  
                           __CFG_WRT2$OFF 000000                             __CFG_WRT3$OFF 000000  
                          __CFG_EBTR0$OFF 000000                            __CFG_FCMEN$OFF 000000  
                          __CFG_EBTR1$OFF 000000                            __CFG_EBTR2$OFF 000000  
                          __CFG_EBTR3$OFF 000000                      __size_of_changeColor 0310  
         __end_of_USBCtrlEPAllowDataStage 1CCC                                     _sd000 08CE  
                                   _sd001 086E                                     _sd002 08A2  
                           __CFG_WRTB$OFF 000000            ?_USBIncrement1msInternalTimers 0001  
                           __CFG_WRTC$OFF 000000                             __CFG_WRTD$OFF 000000  
   __end_of_APP_DeviceAudioMIDIInitialize 23DC    __size_of_APP_DeviceAudioMIDIInitialize 0054  
           _APP_DeviceAudioMIDIInitialize 2388                            __CFG_EBTRB$OFF 000000  
                        __end_of_SPI_8bit 2642                                     _pitch 00EE  
                    _processSystemButtons 2516               __end_of_systemButtonPressed 26F0  
                                   tablat 000FF5                                     plusw2 000FDB  
                                   status 000FD8                            __CFG_ICPRT$OFF 000000  
                        changeColor@color 0001              __size_of_USBStdSetCfgHandler 00DC  
                        blinkLedAsync@led 0012                           __initialization 21C4  
                            __end_of_main 269C                          _pressedButtonEff 0FEA  
               __size_of_USBCtrlEPService 0098                                    ??_main 004B  
                           __activetblptr 000002                           ?_USBDeviceTasks 0001  
                             ?_USBSuspend 0001                      pressedButtonEff@leds 000A  
                                  _ADCON1 000FC1                     ?_processSystemButtons 0001  
                  SYSTEM_Initialize@state 000B                         _readMatrixButtons 2286  
                  __size_of_turnOnAllLeds 0030                        ?_readMatrixButtons 0001  
                          __CFG_VREGEN$ON 000000                         _shortPacketStatus 005C  
                          __CFG_XINST$OFF 000000          __size_of_sendMatrixButtonsToMidi 009C  
                         USBDeviceTasks@i 001C               USBStdFeatureReqHandler@pUEP 0016  
                USBTransferOnePacket@data 0002                USBCtrlTrfInHandler@lastDTS 0002  
                         ??_USBDeviceInit 0009                            __CFG_STVREN$ON 000000  
                     ??_readMatrixButtons 0001                         _USBEnableEndpoint 24DA  
                  turnOnAllLeds@intensity 0004           __size_of_USBStdGetStatusHandler 00AC  
                  __size_of_buttonPressed 0040                                    _memcpy 245E  
                                  _memset 269C                                    clear_0 220A  
                                  clear_1 2216                     __end_of_blinkLedAsync 20F4  
                               ??_delayMs 0001                          __end_of_sendLEDs 1D66  
                      ?_USBEnableEndpoint 0009             __size_of_USBTransferOnePacket 0102  
                            __mediumconst 0000                                    tblptrh 000FF7  
                                  tblptrl 000FF6                                    tblptru 000FF8  
                     ??_USBEnableEndpoint 000A                             ?_sendMIDINote 000C  
               __end_of_readMatrixButtons 22DC                               _CtrlTrfData 000428  
                    _controlTransferState 005B                         _SYSTEM_Initialize 2332  
                              __accesstop 0060                   __end_of__initialization 221C  
                         __CFG_PBADEN$OFF 000000                        ?_SYSTEM_Initialize 0001  
                           ___rparam_used 000001                  __size_of_USBStallHandler 0042  
                     __size_of_USBSuspend 0030                            __pcstackCOMRAM 0001  
               __end_of_USBEnableEndpoint 2516                             __end_of_sd000 08D2  
                           __end_of_sd001 08A2                             __end_of_sd002 08BC  
                            __pidataBANK0 2160                              __pidataBANK1 2582  
                     ??_SYSTEM_Initialize 000A          __size_of_USBCtrlEPAllowDataStage 009C  
           __size_of_USBConfigureEndpoint 0094               __end_of_USBCtrlTrfInHandler 1AE8  
                               ?_SPI_8bit 0001                            blinkLedAsync@i 0010  
                              _bankChange 1FA6                             _turnOnAllLeds 25B2  
                  ??_processSystemButtons 0015                  ??_USBCtrlTrfSetupHandler 001B  
                          ??_sendMIDINote 000E                   _USBTicksSinceSuspendEnd 00E6  
               __end_of_SYSTEM_Initialize 2388                    _USBStdGetStatusHandler 1AE8  
                      __size_of_ledsIntro 006C                             _buttonPressed 241E  
                              __pbssBANK0 00C4               __size_of_USBWakeFromSuspend 0036  
                             _pBDTEntryIn 0051          __end_of_USBCtrlEPServiceComplete 15D2  
                    USBCtrlTrfRxService@i 0001                                   ?_memcpy 0001  
                              ??_SPI_8bit 0001                                   ?_memset 0001  
                              _device_dsc 08BC                            ?_turnOnAllLeds 0004  
                        _USBCtrlEPService 1D66                                _ep_data_in 00D8  
             __end_of_USBCtrlTrfRxService 14D0                        _USBCheckStdRequest 17B0  
                       _configDescriptor1 0809               __end_of_USBCtrlTrfTxService 1A26  
                     _USBStdSetCfgHandler 16D4                       ?_USBCheckStdRequest 0001  
                          ?_buttonPressed 0001              __size_of_USBStdGetDscHandler 0120  
                      readMatrixButtons@i 0002                __size_of_readMatrixButtons 0056  
                                 _UIEbits 000F69                  __end_of_pressedButtonEff 1148  
                                 _UIRbits 000F68                                 SPI_8bit@i 0003  
                 __size_of_turnOffAllLeds 002E                           turnOffAllLeds@i 0004  
                               ?_sendLEDs 0004                   _sendMatrixButtonsToMidi 1B94  
                                 __Hparam 0000           ??_USBIncrement1msInternalTimers 0001  
                    ?_USBStdSetCfgHandler 0001                                   __Lparam 0000  
              __size_of_USBEnableEndpoint 003C                      ??_USBCheckStdRequest 001B  
           __size_of_USBCtrlTrfOutHandler 0060                          ??_USBDeviceTasks 001C  
                       ??_USBStallHandler 0001                         __end_of_ledsIntro 2160  
                            __psmallconst 0800                                   _channel 00E8  
                                 __pcinit 21C4                           __size_of_memcpy 0040  
                                 _delayMs 249E                           __size_of_memset 002C  
               __end_of_configDescriptor1 086E                               ?_bankChange 0001  
                                 __ramtop 0800                                   __ptext0 2670  
                                 __ptext1 1B94                                   __ptext2 1F2A  
                                 __ptext3 2516                                   __ptext4 2018  
                                 __ptext5 1FA6                                   __ptext6 25B2  
                                 __ptext7 26C8                                   __ptext8 241E  
                                 __ptext9 2286                                   _inPipes 004B  
             _USBDeferOUTDataStagePackets 00E2                             ??_changeColor 0003  
                                 _in_mode 00EA                              ??_USBSuspend 0015  
                      __end_of_USB_CD_Ptr 0809                __size_of_SYSTEM_Initialize 0056  
         __size_of_USBCtrlTrfSetupHandler 0098                      end_of_initialization 221C  
                  __size_of_channelChange 0070                        __end_of_USB_SD_Ptr 0807  
                                 memcpy@d 0007                                   memcpy@n 0005  
                                 memcpy@s 0009                       _pBDTEntryEP0OutNext 0057  
                                 memset@c 0003                                   memset@n 0005  
                                 memset@p 0007                             __Lmediumconst 0000  
                         _USB1msTickCount 00CC                  ?_USBStdFeatureReqHandler 0001  
                              ??_sendLEDs 0006                     ??_USBStdSetCfgHandler 0015  
            __size_of_systemButtonPressed 0028                        __end_of_USBSuspend 2612  
                 _USBCtrlEPAllowDataStage 1C30                                   postdec1 000FE5  
                                 postdec2 000FDD                                   postinc0 000FEE  
                                 postinc1 000FE6                                   postinc2 000FDE  
                    __end_of_sendMIDINote 1FA6                           ??_turnOnAllLeds 0005  
                _USBCtrlEPServiceComplete 14D0                _USBStatusStageEnabledFlag1 00E3  
              _USBStatusStageEnabledFlag2 00E4                        USBEnableEndpoint@p 000A  
                               _PORTAbits 000F80                                 _PORTBbits 000F81  
                               _PORTEbits 000F84                           ??_buttonPressed 0003  
                      _ReceivedDataBuffer 000500                        _BothEP0OutUOWNsSet 00DE  
                     __end_of_changeColor 0BE4                 USBConfigureEndpoint@EPNum 0006  
              ?_USBCtrlEPAllowStatusStage 0001       USER_USB_CALLBACK_EVENT_HANDLER@size 0011  
                               _USTATcopy 005F                 ??_sendMatrixButtonsToMidi 0010  
            __end_of_USBTransferOnePacket 16D4                       __size_of_bankChange 0072  
                          changeColor@pos 0003                        blinkLedAsync@color 000B  
                  _USBCtrlTrfSetupHandler 1DFE                systemButtonPressed@pressed 0001  
                              ledsIntro@i 000C                     __end_of_USBDeviceInit 1298  
                              ledsIntro@j 000A     __end_of_USBIncrement1msInternalTimers 2718  
  __size_of_USBIncrement1msInternalTimers 0028             _USBIncrement1msInternalTimers 26F0  
                           _channelChange 2018                            __end_of_memcpy 249E  
                  blinkLedAsync@intensity 000C                            __end_of_memset 26C8  
                       __size_of_SPI_8bit 0030                         _USBBusIsSuspended 00E0  
                            sendLEDs@leds 0004                       start_initialization 21C4  
                 ?_USBStdGetStatusHandler 0001             USBCtrlTrfRxService@byteToRead 0002  
            __end_of_USBConfigureEndpoint 1F2A                            _turnOffAllLeds 2642  
         __end_of_USBStdFeatureReqHandler 0E82         __end_of_USBCtrlEPAllowStatusStage 1958  
                __end_of_USBCtrlEPService 1DFE                    __size_of_blinkLedAsync 006C  
               ??_USBCtrlEPAllowDataStage 0002                            USBDeviceInit@i 0009  
                  _pBDTEntryEP0OutCurrent 0055                   USBTransferOnePacket@dir 0001  
                 USBTransferOnePacket@len 0004                       _USBStdGetDscHandler 1298  
                          ?_channelChange 0001                               __pdataBANK0 0060  
                             __pdataBANK1 0100                          __CFG_LPT1OSC$OFF 000000  
                            _in_user_mode 00EC                                  ??_memcpy 0007  
                                ??_memset 0007           __end_of_sendMatrixButtonsToMidi 1C30  
                  _USBActiveConfiguration 005D            __end_of_USBStdGetStatusHandler 1B94  
                             _changeColor 08D4                               __pbssCOMRAM 004B  
            __size_of_USBCtrlTrfInHandler 00C2                    __end_of_turnOffAllLeds 2670  
                    ?_USBStdGetDscHandler 0001             __size_of_processSystemButtons 0036  
                       ?_pressedButtonEff 0001                __end_of_USBWakeFromSuspend 2582  
                         _USBStallHandler 23DC                              _pBDTEntryOut 00D0  
                      ??_pressedButtonEff 000A                     __size_of_sendMIDINote 007C  
          ?_APP_DeviceAudioMIDIInitialize 0001                         __size_of_sendLEDs 009A  
                                ?_delayMs 0001                              ??_bankChange 0013  
                          turnOnAllLeds@i 0006                             _blinkLedAsync 2088  
                               _mb_values 0070                      _USBTransferOnePacket 15D2  
                               _ledsIntro 20F4                               __smallconst 0800  
                               _m_buttons 0060                  sendMatrixButtonsToMidi@i 0012  
                     _systemButtonPressed 26C8                                 _msCounter 00ED  
            __end_of_USBCtrlTrfOutHandler 2286                           ?_turnOffAllLeds 0001  
                   ??_USBStdGetDscHandler 0001                               _ep_data_out 00DA  
                               _buttonMap 0120              __size_of_USBCtrlTrfRxService 0118  
           USBConfigureEndpoint@direction 0001                              _sendMIDINote 1F2A  
                               _sb_values 0080              __size_of_USBCtrlTrfTxService 00CE  
                                _LATBbits 000F8A                                  _LATDbits 000F8C  
              ??_USBCtrlEPServiceComplete 0002                        __end_of_bankChange 2018  
                                _PIE2bits 000FA0                      ?_systemButtonPressed 0001  
                                _PIR2bits 000FA1                           ??_channelChange 0013  
                        __CFG_WDTPS$32768 000000                                  _UEP0bits 000F70  
              _USBDeferINDataStagePackets 00E1               __size_of_USBCheckStdRequest 00DA  
                                _UCONbits 000F6D                      _USBConfigureEndpoint 1E96  
                                _SPI_8bit 2612                            ?_blinkLedAsync 000A  
                         _in_setting_mode 00EB          __size_of_USBStdFeatureReqHandler 029E  
                   ?_USBTransferOnePacket 0001                                ?_ledsIntro 0001  
                            _RemoteWakeup 00DF                               _global_leds 0084  
                 __end_of_USBStallHandler 241E                                 copy_data0 21D8  
                               copy_data1 21F8               ??_USBCtrlEPAllowStatusStage 0001  
             __end_of_USBStdSetCfgHandler 17B0                            buttonPressed@i 0004  
                      __end_of_device_dsc 08CE                     ??_systemButtonPressed 0001  
                 ?_USBCtrlTrfSetupHandler 0001                   USBStdGetStatusHandler@p 0002  
                                __Hrparam 0000                                  __Lrparam 0000  
                  USBTransferOnePacket@ep 0009                                  _SetupPkt 000420  
                   ?_USBConfigureEndpoint 0001                     __end_of_turnOnAllLeds 25E2  
                               sendLEDs@i 0008                                 sendLEDs@j 0009  
                        __size_of_delayMs 003C                channelChange@pressedButton 0013  
                 __size_of_USBDeviceTasks 0168                                  __ptext10 2088  
                                __ptext11 0FEA                                  __ptext20 26F0  
                                __ptext12 20F4                                  __ptext21 1148  
                                __ptext13 2642                                  __ptext30 1AE8  
                                __ptext22 1D66                                  __ptext14 08D4  
                                __ptext31 1298                                  __ptext23 245E  
                                __ptext15 249E                                  __ptext40 188A  
                                __ptext32 0BE4                                  __ptext24 1DFE  
                                __ptext16 0E82                                  __ptext41 1A26  
                                __ptext33 22DC                                  __ptext25 14D0  
                                __ptext17 254C                                  __ptext42 1958  
                                __ptext34 2388                                  __ptext26 1C30  
                                __ptext18 25E2                                  __ptext43 2332  
                                __ptext35 15D2                                  __ptext27 17B0  
                                __ptext19 23DC                                  __ptext44 1CCC  
                                __ptext36 24DA                                  __ptext28 16D4  
                                __ptext45 2612                                  __ptext37 1E96  
                                __ptext29 269C                                  __ptext38 2226  
                                __ptext39 13B8                channelChange@pressedSysBtn 0014  
                   __end_of_buttonPressed 245E                                  _btn_ctrl 0100  
                                _btn_note 0110                                  _midiData 000580  
          __end_of_USBCtrlTrfSetupHandler 1E96                             __size_of_main 002C  
                       ?_USBCtrlEPService 0001                                  _sendLEDs 1CCC  
                                delayMs@i 0005                                  delayMs@x 0004  
                      ??_USBCtrlEPService 001B                       _USBCtrlTrfInHandler 1A26  
                                _outPipes 00C4                                  _velocity 00F0  
                        sendMIDINote@note 000E                          sendMIDINote@sent 000F  
                    _USBCtrlTrfOutHandler 2226                           ??_blinkLedAsync 000D  
               _USBCtrlEPAllowStatusStage 188A                    ??_USBTransferOnePacket 0005  
                   __CFG_CPUDIV$OSC1_PLL2 000000                               ??_ledsIntro 000A  
                            ?_changeColor 0001                 _USBDeferStatusStagePacket 0059  
                              _INTCONbits 000FF2                         pressedButtonEff@i 004A  
                    ?_USBCtrlTrfInHandler 0001                                  memcpy@d1 0001  
                                memcpy@s1 0003             USBCtrlTrfTxService@byteToSend 0001  
                                memset@p1 0001                  ?_sendMatrixButtonsToMidi 0001  
                        ?_USBStallHandler 0001                  USBStdFeatureReqHandler@p 0019  
                  __size_of_USBDeviceInit 0150   __end_of_USER_USB_CALLBACK_EVENT_HANDLER 2332  
__size_of_USER_USB_CALLBACK_EVENT_HANDLER 0056         ??_USER_USB_CALLBACK_EVENT_HANDLER 0013  
        ?_USER_USB_CALLBACK_EVENT_HANDLER 000D           _USER_USB_CALLBACK_EVENT_HANDLER 22DC  
                             _sentNoteOff 00EF                    ??_USBConfigureEndpoint 0002  
                   ?_USBCtrlTrfOutHandler 0001              __end_of_processSystemButtons 254C  
                     _USBCtrlTrfRxService 13B8                        _USBWakeFromSuspend 254C  
               __size_of_pressedButtonEff 015E                   _USBStdFeatureReqHandler 0BE4  
                      turnOnAllLeds@color 0005                       _USBCtrlTrfTxService 1958  
                        ??_turnOffAllLeds 0004           ??_APP_DeviceAudioMIDIInitialize 000D  
                     ?_USBWakeFromSuspend 0001                     ??_USBCtrlTrfInHandler 0002  
                   _USBAlternateInterface 005E                       sendMIDINote@channel 000D  
                    sendMIDINote@velocity 000C                       USBEnableEndpoint@ep 000C  
                         _endpoint_number 00E9                      ?_USBCtrlTrfRxService 0001  
                 bankChange@pressedButton 0013                        __CFG_FOSC$HSPLL_HS 000000  
                ?_USBCtrlEPAllowDataStage 0001                      ?_USBCtrlTrfTxService 0001  
                 bankChange@pressedSysBtn 0014              _USBStatusStageTimeoutCounter 00E5  
                    ??_USBWakeFromSuspend 0015                USBTransferOnePacket@handle 000A  
                              _USB_CD_Ptr 0807  
