; generated by ARM C/C++ Compiler, 4.1 [Build 894]
; commandline ArmCC [--c99 --list --split_sections --debug -c --asm --interleave -o.\obj\hid_class.o --asm_dir=.\lst\ --list_dir=.\lst\ --depend=.\obj\hid_class.d --cpu=Cortex-M0 --apcs=interwork -I..\inc -I..\drv -I..\bsp -I..\bsp\Cmsis -I..\bsp\Driver -I..\bsp\system -I..\lib -I..\lib\libtk -IC:\Keil\ARM\RV31\Inc -IC:\Keil\ARM\CMSIS\Include -D__MICROLIB -D__LCDDISPLAY_BTL001_H --omf_browse=.\obj\hid_class.crf ..\bsp\USB\HID_Class.c]
                          THUMB

                          AREA ||i.HID_MainProcess||, CODE, READONLY, ALIGN=1

                  HID_MainProcess PROC
;;;467    
;;;468    int32_t HID_MainProcess(void)
000000  b09c              SUB      sp,sp,#0x70
;;;469    {
;;;470    	STR_USBD_T sParam;
;;;471    
;;;472    	USBD_Init();
000002  f7fffffe          BL       USBD_Init
;;;473    
;;;474    	sParam.UsbDeviceClass = USB_CLASS_HID;
;;;475    	sParam.u32CtrlMaxPacketSize = HID_MAX_PACKET_SIZE_CTRL;
000006  2008              MOVS     r0,#8
000008  2101              MOVS     r1,#1                 ;474
;;;476    	sParam.u32EndpointCount = 1;
;;;477    	sParam.EP[0].u32EpNum = INT_IN_EP_NUM;
;;;478    	sParam.EP[0].u32MaxPacketSize = HID_MAX_PACKET_SIZE_INT_IN;
00000a  9001              STR      r0,[sp,#4]
;;;479    	sParam.EP[0].IsDirIN = TRUE;
;;;480    	sParam.EP[0].IsIsoTransfer = FALSE;
00000c  9004              STR      r0,[sp,#0x10]
00000e  2000              MOVS     r0,#0
000010  9100              STR      r1,[sp,#0]            ;476
;;;481    	USB_Open(&sParam);
000012  9006              STR      r0,[sp,#0x18]
000014  9102              STR      r1,[sp,#8]            ;477
000016  9103              STR      r1,[sp,#0xc]          ;479
000018  9105              STR      r1,[sp,#0x14]         ;480
00001a  4668              MOV      r0,sp
00001c  f7fffffe          BL       USB_Open
                  |L1.32|
;;;482        
;;;483    	while(1)
;;;484    	{
;;;485    		Test_LCD();
000020  f7fffffe          BL       Test_LCD
000024  e7fc              B        |L1.32|
;;;486        }
;;;487    }
;;;488    
                          ENDP


                          AREA ||i.USB_ClassRequest||, CODE, READONLY, ALIGN=2

                  USB_ClassRequest PROC
;;;325      */
;;;326    uint32_t USB_ClassRequest(void)
000000  b510              PUSH     {r4,lr}
;;;327    {
;;;328    	switch(gUsbCtrl.UsbSetupBuf[1])
000002  4c15              LDR      r4,|L2.88|
;;;329    	{
;;;330    		/* SET_REPORT */
;;;331    		case SET_REPORT:
;;;332    		{
;;;333    			if ((gUsbCtrl.UsbSetupBuf[6] != 0) || (gUsbCtrl.UsbSetupBuf[7] != 0))
000004  2200              MOVS     r2,#0
000006  7a60              LDRB     r0,[r4,#9]            ;328  ; gUsbCtrl
;;;334    				return FALSE;
;;;335    
;;;336    			if (gUsbCtrl.UsbSetupBuf[3] == 2)
;;;337    			{
;;;338    				/* Request Type = Output */
;;;339    				USBD->CFG1 |= USB_CFG_DSQ_SYNC_DATA1;
000008  4914              LDR      r1,|L2.92|
00000a  2380              MOVS     r3,#0x80
00000c  2809              CMP      r0,#9                 ;328
00000e  d002              BEQ      |L2.22|
000010  280a              CMP      r0,#0xa               ;328
000012  d106              BNE      |L2.34|
000014  e01b              B        |L2.78|
                  |L2.22|
000016  7ba0              LDRB     r0,[r4,#0xe]          ;333  ; gUsbCtrl
000018  2800              CMP      r0,#0                 ;333
00001a  d102              BNE      |L2.34|
00001c  7be0              LDRB     r0,[r4,#0xf]          ;333  ; gUsbCtrl
00001e  2800              CMP      r0,#0                 ;333
000020  d001              BEQ      |L2.38|
                  |L2.34|
;;;340    				USBD->MXPLD1 = 0;
;;;341    			}
;;;342    			else if (gUsbCtrl.UsbSetupBuf[3] == 3)
;;;343    			{
;;;344    				/* Request Type = Feature */
;;;345    				USBD->CFG1 |= USB_CFG_DSQ_SYNC_DATA1;
;;;346    				USBD->MXPLD1 = 0;
;;;347    			}
;;;348    			else
;;;349    			{
;;;350    				/* Not support. Reply STALL. */
;;;351    				USBD->CFG0 |= (USB_CFG_SSTALL | 0x8000);
;;;352    				USBD->CFG1 |= (USB_CFG_SSTALL | 0x8000);
;;;353    			}
;;;354    
;;;355    			return TRUE;
;;;356    		}
;;;357    
;;;358    		/* SET_IDLE */
;;;359    		case SET_IDLE:
;;;360    		{
;;;361    			USBD->CFG0 |= USB_CFG_DSQ_SYNC_DATA1;
;;;362    			USBD->MXPLD0 = 0;
;;;363    			return TRUE;
;;;364    		}
;;;365    	}
;;;366    	return FALSE;
000022  2000              MOVS     r0,#0
;;;367    }
000024  bd10              POP      {r4,pc}
                  |L2.38|
000026  7ae0              LDRB     r0,[r4,#0xb]          ;336  ; gUsbCtrl
000028  2802              CMP      r0,#2                 ;336
00002a  d00b              BEQ      |L2.68|
00002c  2803              CMP      r0,#3                 ;342
00002e  d009              BEQ      |L2.68|
000030  6a8a              LDR      r2,[r1,#0x28]         ;351
000032  2041              MOVS     r0,#0x41              ;351
000034  0240              LSLS     r0,r0,#9              ;351
000036  4302              ORRS     r2,r2,r0              ;351
000038  628a              STR      r2,[r1,#0x28]         ;351
00003a  6b8a              LDR      r2,[r1,#0x38]         ;352
00003c  4302              ORRS     r2,r2,r0              ;352
00003e  638a              STR      r2,[r1,#0x38]         ;352
                  |L2.64|
000040  2001              MOVS     r0,#1                 ;355
000042  bd10              POP      {r4,pc}
                  |L2.68|
000044  6b88              LDR      r0,[r1,#0x38]         ;345
000046  4318              ORRS     r0,r0,r3              ;345
000048  6388              STR      r0,[r1,#0x38]         ;345
00004a  634a              STR      r2,[r1,#0x34]         ;346
00004c  e7f8              B        |L2.64|
                  |L2.78|
00004e  6a88              LDR      r0,[r1,#0x28]         ;361
000050  4318              ORRS     r0,r0,r3              ;361
000052  6288              STR      r0,[r1,#0x28]         ;361
000054  624a              STR      r2,[r1,#0x24]         ;362
000056  e7f3              B        |L2.64|
;;;368    
                          ENDP

                  |L2.88|
                          DCD      gUsbCtrl
                  |L2.92|
                          DCD      0x40060000

                          AREA ||i.USB_DeviceStart||, CODE, READONLY, ALIGN=1

                  USB_DeviceStart PROC
;;;454      */
;;;455    void USB_DeviceStart(void)
000000  b500              PUSH     {lr}
;;;456    {
;;;457    	/* start to IN data */
;;;458    	USB_EpAck0();
000002  f7fffffe          BL       USB_EpAck0
;;;459    }
000006  bd00              POP      {pc}
;;;460    
                          ENDP


                          AREA ||i.USB_EpAck0||, CODE, READONLY, ALIGN=2

                  USB_EpAck0 PROC
;;;373      */
;;;374    uint32_t USB_EpAck0(void)
000000  4a0a              LDR      r2,|L4.44|
;;;375    {
;;;376    	uint8_t *buf;
;;;377    
;;;378    	buf = (uint8_t *)((uint32_t)USBD_SRAM_BASE + (uint32_t)USBD->BUFSEG2);
000002  6810              LDR      r0,[r2,#0]
000004  4909              LDR      r1,|L4.44|
000006  31c0              ADDS     r1,r1,#0xc0
000008  1840              ADDS     r0,r0,r1
;;;379    
;;;380    	/* Update new report data */
;;;381    
;;;382    	buf[0] = 0x00;
00000a  2100              MOVS     r1,#0
00000c  7001              STRB     r1,[r0,#0]
;;;383    	buf[2] = 0x00;
00000e  7081              STRB     r1,[r0,#2]
;;;384    	buf[3] = 0x00;
000010  70c1              STRB     r1,[r0,#3]
;;;385    	
;;;386    	if(g_bAlarm == false) 
000012  4907              LDR      r1,|L4.48|
000014  6809              LDR      r1,[r1,#0]  ; g_bAlarm
000016  2900              CMP      r1,#0
000018  d005              BEQ      |L4.38|
;;;387    	{buf[1] = 0x03;	}
;;;388    	else
;;;389    	{buf[1] = 0XFD;	}
00001a  21fd              MOVS     r1,#0xfd
                  |L4.28|
00001c  7041              STRB     r1,[r0,#1]
;;;390    	
;;;391    	USBD->MXPLD2 = 4;
00001e  2004              MOVS     r0,#4
000020  6050              STR      r0,[r2,#4]
;;;392    	return 0;
000022  2000              MOVS     r0,#0
;;;393    }
000024  4770              BX       lr
                  |L4.38|
000026  2103              MOVS     r1,#3                 ;387
000028  e7f8              B        |L4.28|
;;;394    
                          ENDP

00002a  0000              DCW      0x0000
                  |L4.44|
                          DCD      0x40060040
                  |L4.48|
                          DCD      g_bAlarm

                          AREA ||i.USB_EpAck1||, CODE, READONLY, ALIGN=1

                  USB_EpAck1 PROC
;;;399      */
;;;400    uint32_t USB_EpAck1(void)
000000  2000              MOVS     r0,#0
;;;401    {
;;;402    	return 0;
;;;403    }
000002  4770              BX       lr
;;;404    
                          ENDP


                          AREA ||i.USB_EpAck2||, CODE, READONLY, ALIGN=1

                  USB_EpAck2 PROC
;;;410      */
;;;411    uint32_t USB_EpAck2(void)
000000  2000              MOVS     r0,#0
;;;412    {
;;;413    	return 0;
;;;414    }
000002  4770              BX       lr
;;;415    
                          ENDP


                          AREA ||i.USB_EpAck3||, CODE, READONLY, ALIGN=1

                  USB_EpAck3 PROC
;;;421      */
;;;422    uint32_t USB_EpAck3(void)
000000  2000              MOVS     r0,#0
;;;423    {
;;;424    	return 0;
;;;425    }
000002  4770              BX       lr
;;;426    
                          ENDP


                          AREA ||i.USB_EpAck4||, CODE, READONLY, ALIGN=1

                  USB_EpAck4 PROC
;;;432      */
;;;433    uint32_t USB_EpAck4(void)
000000  2000              MOVS     r0,#0
;;;434    {
;;;435    	return 0;
;;;436    }
000002  4770              BX       lr
;;;437    
                          ENDP


                          AREA ||i.USB_EpAck5||, CODE, READONLY, ALIGN=1

                  USB_EpAck5 PROC
;;;443      */
;;;444    uint32_t USB_EpAck5(void)
000000  2000              MOVS     r0,#0
;;;445    {
;;;446    	return 0;
;;;447    }
000002  4770              BX       lr
;;;448    
                          ENDP


                          AREA ||i.USB_ProcessDescriptor||, CODE, READONLY, ALIGN=2

                  USB_ProcessDescriptor PROC
;;;186      */
;;;187    uint32_t USB_ProcessDescriptor(uint8_t *pCtrl, uint32_t CtrlMaxPacketSize)
000000  b5f8              PUSH     {r3-r7,lr}
;;;188    {
000002  4603              MOV      r3,r0
;;;189    	gUsbCtrl.ReqLen = gUsbCtrl.UsbSetupBuf[6] + ((uint32_t)gUsbCtrl.UsbSetupBuf[7] << 8);
000004  4854              LDR      r0,|L10.344|
000006  460c              MOV      r4,r1                 ;188
000008  7bc2              LDRB     r2,[r0,#0xf]  ; gUsbCtrl
00000a  7b81              LDRB     r1,[r0,#0xe]  ; gUsbCtrl
00000c  0212              LSLS     r2,r2,#8
00000e  188a              ADDS     r2,r1,r2
;;;190    	USBD->CFG0 |= USB_CFG_DSQ_SYNC_DATA1;
000010  4d52              LDR      r5,|L10.348|
000012  6142              STR      r2,[r0,#0x14]  ; gUsbCtrl
000014  6aa9              LDR      r1,[r5,#0x28]
000016  2680              MOVS     r6,#0x80
000018  4331              ORRS     r1,r1,r6
00001a  62a9              STR      r1,[r5,#0x28]
;;;191                
;;;192    	switch (gUsbCtrl.UsbSetupBuf[3])
00001c  7ac1              LDRB     r1,[r0,#0xb]  ; gUsbCtrl
00001e  2601              MOVS     r6,#1
;;;193    	{
;;;194    		/* Get Device Descriptor */
;;;195    		case DESC_DEVICE:
;;;196    		{
;;;197    			gUsbCtrl.ReqLen = Minimum (gUsbCtrl.ReqLen, LEN_DEVICE);
;;;198    	
;;;199    			if (gUsbCtrl.ReqLen >= CtrlMaxPacketSize)
;;;200    			{
;;;201    				my_memcpy(pCtrl, (void *)USB_DeviceDescriptor, CtrlMaxPacketSize);
;;;202    				gUsbCtrl.pDesc = (uint8_t *)&USB_DeviceDescriptor[CtrlMaxPacketSize];
;;;203    				gUsbCtrl.EP0_Toggle = 1;
;;;204    				USBD->MXPLD0 = CtrlMaxPacketSize;
;;;205    				gUsbCtrl.ReqLen -= CtrlMaxPacketSize;
;;;206    				gUsbCtrl.StateFlag = FLAG_EP0_DATA_IN;
000020  2720              MOVS     r7,#0x20
000022  2901              CMP      r1,#1                 ;192
000024  d007              BEQ      |L10.54|
000026  2902              CMP      r1,#2                 ;192
000028  d027              BEQ      |L10.122|
00002a  2903              CMP      r1,#3                 ;192
00002c  d039              BEQ      |L10.162|
00002e  2922              CMP      r1,#0x22              ;192
000030  d03e              BEQ      |L10.176|
;;;207    			}
;;;208    			else
;;;209    			{
;;;210    				my_memcpy(pCtrl, (void *)USB_DeviceDescriptor, gUsbCtrl.ReqLen);
;;;211    				USBD->MXPLD0 = gUsbCtrl.ReqLen;
;;;212    				gUsbCtrl.StateFlag = FLAG_OUT_ACK;
;;;213    			}
;;;214    			USBD->MXPLD1 = 0;
;;;215    			break;
;;;216    		}
;;;217    		/* Get Configuration Descriptor */
;;;218    		case DESC_CONFIG:
;;;219    		{
;;;220    			gUsbCtrl.ReqLen = Minimum (gUsbCtrl.ReqLen, USB_ConfigDescriptor[2]);
;;;221    			if (gUsbCtrl.ReqLen >= CtrlMaxPacketSize)
;;;222    			{
;;;223    				my_memcpy(pCtrl, (void *)USB_ConfigDescriptor, CtrlMaxPacketSize);
;;;224    				gUsbCtrl.pDesc = (uint8_t *)&USB_ConfigDescriptor[CtrlMaxPacketSize];
;;;225    				gUsbCtrl.EP0_Toggle = 1;
;;;226    				USBD->MXPLD0 = CtrlMaxPacketSize;
;;;227    				gUsbCtrl.ReqLen -= CtrlMaxPacketSize;
;;;228    				gUsbCtrl.StateFlag = FLAG_EP0_DATA_IN;
;;;229    			}
;;;230    			else
;;;231    			{
;;;232    				my_memcpy(pCtrl, (void *)USB_ConfigDescriptor, gUsbCtrl.ReqLen);
;;;233    				USBD->MXPLD0 = gUsbCtrl.ReqLen;
;;;234    				gUsbCtrl.StateFlag = FLAG_OUT_ACK;
;;;235    			}
;;;236    			break;
;;;237    		}
;;;238    		/* Get String Descriptor */
;;;239    		case DESC_STRING:
;;;240    		{
;;;241    			/* Get Language */
;;;242    			if(gUsbCtrl.UsbSetupBuf[2] == 0)
;;;243    			{
;;;244    				gUsbCtrl.ReqLen = Minimum (gUsbCtrl.ReqLen, USB_StringLang[0]);
;;;245    				my_memcpy(pCtrl, (void *)USB_StringLang, gUsbCtrl.ReqLen);
;;;246    				USBD->MXPLD0 = gUsbCtrl.ReqLen;
;;;247    				gUsbCtrl.StateFlag = FLAG_OUT_ACK;
;;;248    				break;
;;;249    			}
;;;250    			/* Get Vendor String Descriptor */
;;;251    			else if (gUsbCtrl.UsbSetupBuf[2] == 1)
;;;252    			{
;;;253    				gUsbCtrl.ReqLen = Minimum (gUsbCtrl.ReqLen, USB_VendorStringDesc[0]);
;;;254    				if (gUsbCtrl.ReqLen >= CtrlMaxPacketSize)
;;;255    				{
;;;256    					my_memcpy(pCtrl, (void *)USB_VendorStringDesc, CtrlMaxPacketSize);
;;;257    					gUsbCtrl.pDesc = (uint8_t *)&USB_VendorStringDesc[CtrlMaxPacketSize];
;;;258    					gUsbCtrl.EP0_Toggle = 1;
;;;259    					USBD->MXPLD0 = CtrlMaxPacketSize;
;;;260    					gUsbCtrl.ReqLen -= CtrlMaxPacketSize;
;;;261    					gUsbCtrl.StateFlag = FLAG_EP0_DATA_IN;
;;;262    				}
;;;263    				else
;;;264    				{
;;;265    					my_memcpy(pCtrl, (void *)USB_VendorStringDesc, gUsbCtrl.ReqLen);
;;;266    					USBD->MXPLD0 = gUsbCtrl.ReqLen;
;;;267    					gUsbCtrl.StateFlag = FLAG_OUT_ACK;
;;;268    				}
;;;269    				break;
;;;270    			}
;;;271    			/* Get Product String Descriptor */
;;;272    			else if (gUsbCtrl.UsbSetupBuf[2] == 2)
;;;273    			{
;;;274    				gUsbCtrl.ReqLen = Minimum (gUsbCtrl.ReqLen, USB_ProductStringDesc[0]);
;;;275    				if (gUsbCtrl.ReqLen >= CtrlMaxPacketSize)
;;;276    				{
;;;277    					my_memcpy(pCtrl, (void *)USB_ProductStringDesc, CtrlMaxPacketSize);
;;;278    					gUsbCtrl.pDesc = (uint8_t *)&USB_ProductStringDesc[CtrlMaxPacketSize];
;;;279    					gUsbCtrl.EP0_Toggle = 1;
;;;280    					USBD->MXPLD0 = CtrlMaxPacketSize;
;;;281    					gUsbCtrl.ReqLen -= CtrlMaxPacketSize;
;;;282    					gUsbCtrl.StateFlag = FLAG_EP0_DATA_IN;
;;;283    				}
;;;284    				else
;;;285    				{
;;;286    					my_memcpy(pCtrl, (void *)USB_ProductStringDesc, gUsbCtrl.ReqLen);
;;;287    					USBD->MXPLD0 = gUsbCtrl.ReqLen;
;;;288    					gUsbCtrl.StateFlag = FLAG_OUT_ACK;
;;;289    				}
;;;290    				break;
;;;291    			}
;;;292    		}
;;;293    		/* Get HID Report Descriptor */
;;;294    		case DESC_HID_RPT:
;;;295    		{
;;;296    			gUsbCtrl.ReqLen = Minimum (gUsbCtrl.ReqLen, HID_REPORT_DESCRIPTOR_SIZE);
;;;297    			if (gUsbCtrl.ReqLen >= CtrlMaxPacketSize)
;;;298    			{
;;;299    				my_memcpy(pCtrl, (void *)HID_MouseReportDescriptor, CtrlMaxPacketSize);
;;;300    				gUsbCtrl.pDesc = (uint8_t *)&HID_MouseReportDescriptor[CtrlMaxPacketSize];
;;;301    				gUsbCtrl.EP0_Toggle = 1;
;;;302    				USBD->MXPLD0 = CtrlMaxPacketSize;
;;;303    				gUsbCtrl.ReqLen -= CtrlMaxPacketSize;
;;;304    				gUsbCtrl.StateFlag = FLAG_EP0_DATA_IN;
;;;305    			}
;;;306    			else
;;;307    			{
;;;308    				my_memcpy(pCtrl, (void *)HID_MouseReportDescriptor, gUsbCtrl.ReqLen);
;;;309    				USBD->MXPLD0 = gUsbCtrl.ReqLen;
;;;310    				gUsbCtrl.StateFlag = FLAG_OUT_ACK;
;;;311    			}
;;;312    			break;
;;;313    		}
;;;314    		default:
;;;315    			return FALSE;
000032  2000              MOVS     r0,#0
;;;316    	}
;;;317    	return TRUE;
;;;318    }
000034  bdf8              POP      {r3-r7,pc}
                  |L10.54|
000036  2a12              CMP      r2,#0x12              ;197
000038  d300              BCC      |L10.60|
00003a  2212              MOVS     r2,#0x12              ;197
                  |L10.60|
00003c  4846              LDR      r0,|L10.344|
00003e  42a2              CMP      r2,r4                 ;199
000040  6142              STR      r2,[r0,#0x14]         ;199  ; gUsbCtrl
000042  d30f              BCC      |L10.100|
000044  4622              MOV      r2,r4                 ;201
000046  4946              LDR      r1,|L10.352|
000048  4618              MOV      r0,r3                 ;201
00004a  f7fffffe          BL       my_memcpy
00004e  4844              LDR      r0,|L10.352|
000050  1901              ADDS     r1,r0,r4              ;202
000052  4841              LDR      r0,|L10.344|
000054  6101              STR      r1,[r0,#0x10]         ;203  ; gUsbCtrl
000056  70c6              STRB     r6,[r0,#3]            ;203
000058  626c              STR      r4,[r5,#0x24]         ;204
00005a  6941              LDR      r1,[r0,#0x14]         ;205  ; gUsbCtrl
00005c  6047              STR      r7,[r0,#4]            ;206  ; gUsbCtrl
00005e  1b09              SUBS     r1,r1,r4              ;205
000060  6141              STR      r1,[r0,#0x14]         ;206  ; gUsbCtrl
000062  e007              B        |L10.116|
                  |L10.100|
000064  4c3c              LDR      r4,|L10.344|
000066  493e              LDR      r1,|L10.352|
000068  4618              MOV      r0,r3                 ;210
00006a  f7fffffe          BL       my_memcpy
00006e  6960              LDR      r0,[r4,#0x14]         ;211  ; gUsbCtrl
000070  6268              STR      r0,[r5,#0x24]         ;211
000072  6066              STR      r6,[r4,#4]            ;212  ; gUsbCtrl
                  |L10.116|
000074  2000              MOVS     r0,#0                 ;214
000076  6368              STR      r0,[r5,#0x34]         ;214
000078  e06c              B        |L10.340|
                  |L10.122|
00007a  2a22              CMP      r2,#0x22              ;220
00007c  d300              BCC      |L10.128|
00007e  2222              MOVS     r2,#0x22              ;220
                  |L10.128|
000080  4835              LDR      r0,|L10.344|
000082  42a2              CMP      r2,r4                 ;221
000084  6142              STR      r2,[r0,#0x14]         ;221  ; gUsbCtrl
000086  d308              BCC      |L10.154|
000088  4935              LDR      r1,|L10.352|
00008a  4622              MOV      r2,r4                 ;223
00008c  3112              ADDS     r1,r1,#0x12           ;223
00008e  4618              MOV      r0,r3                 ;223
000090  f7fffffe          BL       my_memcpy
000094  4832              LDR      r0,|L10.352|
000096  3012              ADDS     r0,r0,#0x12           ;224
000098  e019              B        |L10.206|
                  |L10.154|
00009a  4931              LDR      r1,|L10.352|
00009c  4c2e              LDR      r4,|L10.344|
00009e  3112              ADDS     r1,r1,#0x12           ;232
0000a0  e052              B        |L10.328|
                  |L10.162|
0000a2  7a81              LDRB     r1,[r0,#0xa]          ;242  ; gUsbCtrl
0000a4  2900              CMP      r1,#0                 ;242
0000a6  d01c              BEQ      |L10.226|
0000a8  2901              CMP      r1,#1                 ;251
0000aa  d022              BEQ      |L10.242|
0000ac  2902              CMP      r1,#2                 ;272
0000ae  d034              BEQ      |L10.282|
                  |L10.176|
0000b0  2a34              CMP      r2,#0x34              ;296
0000b2  d300              BCC      |L10.182|
0000b4  2234              MOVS     r2,#0x34              ;296
                  |L10.182|
0000b6  4828              LDR      r0,|L10.344|
0000b8  42a2              CMP      r2,r4                 ;297
0000ba  6142              STR      r2,[r0,#0x14]         ;297  ; gUsbCtrl
0000bc  d341              BCC      |L10.322|
0000be  4928              LDR      r1,|L10.352|
0000c0  4622              MOV      r2,r4                 ;299
0000c2  3934              SUBS     r1,r1,#0x34           ;299
0000c4  4618              MOV      r0,r3                 ;299
0000c6  f7fffffe          BL       my_memcpy
0000ca  4825              LDR      r0,|L10.352|
0000cc  3834              SUBS     r0,r0,#0x34           ;300
                  |L10.206|
0000ce  1901              ADDS     r1,r0,r4              ;300
0000d0  4821              LDR      r0,|L10.344|
0000d2  6101              STR      r1,[r0,#0x10]         ;301  ; gUsbCtrl
0000d4  70c6              STRB     r6,[r0,#3]            ;301
0000d6  626c              STR      r4,[r5,#0x24]         ;302
0000d8  6941              LDR      r1,[r0,#0x14]         ;303  ; gUsbCtrl
0000da  6047              STR      r7,[r0,#4]            ;304  ; gUsbCtrl
0000dc  1b09              SUBS     r1,r1,r4              ;303
0000de  6141              STR      r1,[r0,#0x14]         ;304  ; gUsbCtrl
0000e0  e038              B        |L10.340|
                  |L10.226|
0000e2  2a04              CMP      r2,#4                 ;244
0000e4  d300              BCC      |L10.232|
0000e6  2204              MOVS     r2,#4                 ;244
                  |L10.232|
0000e8  491d              LDR      r1,|L10.352|
0000ea  4604              MOV      r4,r0                 ;244
0000ec  3938              SUBS     r1,r1,#0x38           ;245
0000ee  6142              STR      r2,[r0,#0x14]         ;248  ; gUsbCtrl
0000f0  e02a              B        |L10.328|
                  |L10.242|
0000f2  2a10              CMP      r2,#0x10              ;253
0000f4  d300              BCC      |L10.248|
0000f6  2210              MOVS     r2,#0x10              ;253
                  |L10.248|
0000f8  4817              LDR      r0,|L10.344|
0000fa  42a2              CMP      r2,r4                 ;254
0000fc  6142              STR      r2,[r0,#0x14]         ;254  ; gUsbCtrl
0000fe  d308              BCC      |L10.274|
000100  4917              LDR      r1,|L10.352|
000102  4622              MOV      r2,r4                 ;256
000104  3134              ADDS     r1,r1,#0x34           ;256
000106  4618              MOV      r0,r3                 ;256
000108  f7fffffe          BL       my_memcpy
00010c  4814              LDR      r0,|L10.352|
00010e  3034              ADDS     r0,r0,#0x34           ;257
000110  e7dd              B        |L10.206|
                  |L10.274|
000112  4913              LDR      r1,|L10.352|
000114  4c10              LDR      r4,|L10.344|
000116  3134              ADDS     r1,r1,#0x34           ;265
000118  e016              B        |L10.328|
                  |L10.282|
00011a  2a14              CMP      r2,#0x14              ;274
00011c  d300              BCC      |L10.288|
00011e  2214              MOVS     r2,#0x14              ;274
                  |L10.288|
000120  480d              LDR      r0,|L10.344|
000122  42a2              CMP      r2,r4                 ;275
000124  6142              STR      r2,[r0,#0x14]         ;275  ; gUsbCtrl
000126  d308              BCC      |L10.314|
000128  490d              LDR      r1,|L10.352|
00012a  4622              MOV      r2,r4                 ;277
00012c  3144              ADDS     r1,r1,#0x44           ;277
00012e  4618              MOV      r0,r3                 ;277
000130  f7fffffe          BL       my_memcpy
000134  480a              LDR      r0,|L10.352|
000136  3044              ADDS     r0,r0,#0x44           ;278
000138  e7c9              B        |L10.206|
                  |L10.314|
00013a  4909              LDR      r1,|L10.352|
00013c  4c06              LDR      r4,|L10.344|
00013e  3144              ADDS     r1,r1,#0x44           ;286
000140  e002              B        |L10.328|
                  |L10.322|
000142  4907              LDR      r1,|L10.352|
000144  4c04              LDR      r4,|L10.344|
000146  3934              SUBS     r1,r1,#0x34           ;308
                  |L10.328|
000148  4618              MOV      r0,r3                 ;308
00014a  f7fffffe          BL       my_memcpy
00014e  6960              LDR      r0,[r4,#0x14]         ;309  ; gUsbCtrl
000150  6268              STR      r0,[r5,#0x24]         ;309
000152  6066              STR      r6,[r4,#4]            ;310  ; gUsbCtrl
                  |L10.340|
000154  2001              MOVS     r0,#1                 ;317
000156  bdf8              POP      {r3-r7,pc}
;;;319    
                          ENDP

                  |L10.344|
                          DCD      gUsbCtrl
                  |L10.348|
                          DCD      0x40060000
                  |L10.352|
                          DCD      ||.constdata||+0x38

                          AREA ||.constdata||, DATA, READONLY, ALIGN=0

                  USB_StringLang
000000  04030904          DCB      0x04,0x03,0x09,0x04
                  HID_MouseReportDescriptor
000004  05010902          DCB      0x05,0x01,0x09,0x02
000008  a1010901          DCB      0xa1,0x01,0x09,0x01
00000c  a1000509          DCB      0xa1,0x00,0x05,0x09
000010  19012903          DCB      0x19,0x01,0x29,0x03
000014  15002501          DCB      0x15,0x00,0x25,0x01
000018  75019503          DCB      0x75,0x01,0x95,0x03
00001c  81027505          DCB      0x81,0x02,0x75,0x05
000020  95018101          DCB      0x95,0x01,0x81,0x01
000024  05010930          DCB      0x05,0x01,0x09,0x30
000028  09310938          DCB      0x09,0x31,0x09,0x38
00002c  1581257f          DCB      0x15,0x81,0x25,0x7f
000030  75089503          DCB      0x75,0x08,0x95,0x03
000034  8106c0c0          DCB      0x81,0x06,0xc0,0xc0
                  USB_DeviceDescriptor
000038  12011001          DCB      0x12,0x01,0x10,0x01
00003c  00000008          DCB      0x00,0x00,0x00,0x08
000040  16044082          DCB      0x16,0x04,0x40,0x82
000044  00000102          DCB      0x00,0x00,0x01,0x02
000048  0001              DCB      0x00,0x01
                  USB_ConfigDescriptor
00004a  0902              DCB      0x09,0x02
00004c  22000101          DCB      0x22,0x00,0x01,0x01
000050  00803209          DCB      0x00,0x80,0x32,0x09
000054  04000001          DCB      0x04,0x00,0x00,0x01
000058  03010200          DCB      0x03,0x01,0x02,0x00
00005c  09211001          DCB      0x09,0x21,0x10,0x01
000060  00012234          DCB      0x00,0x01,0x22,0x34
000064  00070581          DCB      0x00,0x07,0x05,0x81
000068  03080014          DCB      0x03,0x08,0x00,0x14
                  USB_VendorStringDesc
00006c  10034e00          DCB      0x10,0x03,0x4e,0x00
000070  75007600          DCB      0x75,0x00,0x76,0x00
000074  6f007400          DCB      0x6f,0x00,0x74,0x00
000078  6f006e00          DCB      0x6f,0x00,0x6e,0x00
                  USB_ProductStringDesc
00007c  14034800          DCB      0x14,0x03,0x48,0x00
000080  49004400          DCB      0x49,0x00,0x44,0x00
000084  20004d00          DCB      0x20,0x00,0x4d,0x00
000088  6f007500          DCB      0x6f,0x00,0x75,0x00
00008c  73006500          DCB      0x73,0x00,0x65,0x00

;*** Start embedded assembler ***

#line 1 "..\\bsp\\USB\\HID_Class.c"
	AREA ||.rev16_text||, CODE, READONLY
	THUMB
	EXPORT |__asm___11_HID_Class_c_888178cd____REV16|
#line 115 "C:\\Keil\\ARM\\CMSIS\\Include\\core_cmInstr.h"
|__asm___11_HID_Class_c_888178cd____REV16| PROC
#line 116

 rev16 r0, r0
 bx lr
	ENDP
	AREA ||.revsh_text||, CODE, READONLY
	THUMB
	EXPORT |__asm___11_HID_Class_c_888178cd____REVSH|
#line 130
|__asm___11_HID_Class_c_888178cd____REVSH| PROC
#line 131

 revsh r0, r0
 bx lr
	ENDP

;*** End   embedded assembler ***
