ARM GAS  X:\TMP\USER_T~1\cceEGoYd.s 			page 1


   1              		.cpu cortex-m3
   2              		.eabi_attribute 20, 1
   3              		.eabi_attribute 21, 1
   4              		.eabi_attribute 23, 3
   5              		.eabi_attribute 24, 1
   6              		.eabi_attribute 25, 1
   7              		.eabi_attribute 26, 1
   8              		.eabi_attribute 30, 1
   9              		.eabi_attribute 34, 1
  10              		.eabi_attribute 18, 4
  11              		.file	"usbd_cdc_if.c"
  12              		.text
  13              	.Ltext0:
  14              		.cfi_sections	.debug_frame
  15              		.section	.text.CDC_DeInit_FS,"ax",%progbits
  16              		.align	1
  17              		.syntax unified
  18              		.thumb
  19              		.thumb_func
  20              		.fpu softvfp
  22              	CDC_DeInit_FS:
  23              	.LFB69:
  24              		.file 1 "Src/usbd_cdc_if.c"
   1:Src/usbd_cdc_if.c **** /* USER CODE BEGIN Header */
   2:Src/usbd_cdc_if.c **** /**
   3:Src/usbd_cdc_if.c ****   ******************************************************************************
   4:Src/usbd_cdc_if.c ****   * @file           : usbd_cdc_if.c
   5:Src/usbd_cdc_if.c ****   * @version        : v2.0_Cube
   6:Src/usbd_cdc_if.c ****   * @brief          : Usb device for Virtual Com Port.
   7:Src/usbd_cdc_if.c ****   ******************************************************************************
   8:Src/usbd_cdc_if.c ****   * @attention
   9:Src/usbd_cdc_if.c ****   *
  10:Src/usbd_cdc_if.c ****   * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
  11:Src/usbd_cdc_if.c ****   * All rights reserved.</center></h2>
  12:Src/usbd_cdc_if.c ****   *
  13:Src/usbd_cdc_if.c ****   * This software component is licensed by ST under Ultimate Liberty license
  14:Src/usbd_cdc_if.c ****   * SLA0044, the "License"; You may not use this file except in compliance with
  15:Src/usbd_cdc_if.c ****   * the License. You may obtain a copy of the License at:
  16:Src/usbd_cdc_if.c ****   *                             www.st.com/SLA0044
  17:Src/usbd_cdc_if.c ****   *
  18:Src/usbd_cdc_if.c ****   ******************************************************************************
  19:Src/usbd_cdc_if.c ****   */
  20:Src/usbd_cdc_if.c **** /* USER CODE END Header */
  21:Src/usbd_cdc_if.c **** 
  22:Src/usbd_cdc_if.c **** /* Includes ------------------------------------------------------------------*/
  23:Src/usbd_cdc_if.c **** #include "usbd_cdc_if.h"
  24:Src/usbd_cdc_if.c **** 
  25:Src/usbd_cdc_if.c **** /* USER CODE BEGIN INCLUDE */
  26:Src/usbd_cdc_if.c **** 
  27:Src/usbd_cdc_if.c **** /* USER CODE END INCLUDE */
  28:Src/usbd_cdc_if.c **** 
  29:Src/usbd_cdc_if.c **** /* Private typedef -----------------------------------------------------------*/
  30:Src/usbd_cdc_if.c **** /* Private define ------------------------------------------------------------*/
  31:Src/usbd_cdc_if.c **** /* Private macro -------------------------------------------------------------*/
  32:Src/usbd_cdc_if.c **** 
  33:Src/usbd_cdc_if.c **** /* USER CODE BEGIN PV */
  34:Src/usbd_cdc_if.c **** /* Private variables ---------------------------------------------------------*/
ARM GAS  X:\TMP\USER_T~1\cceEGoYd.s 			page 2


  35:Src/usbd_cdc_if.c **** 
  36:Src/usbd_cdc_if.c **** /* USER CODE END PV */
  37:Src/usbd_cdc_if.c **** 
  38:Src/usbd_cdc_if.c **** /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
  39:Src/usbd_cdc_if.c ****   * @brief Usb device library.
  40:Src/usbd_cdc_if.c ****   * @{
  41:Src/usbd_cdc_if.c ****   */
  42:Src/usbd_cdc_if.c **** 
  43:Src/usbd_cdc_if.c **** /** @addtogroup USBD_CDC_IF
  44:Src/usbd_cdc_if.c ****   * @{
  45:Src/usbd_cdc_if.c ****   */
  46:Src/usbd_cdc_if.c **** 
  47:Src/usbd_cdc_if.c **** /** @defgroup USBD_CDC_IF_Private_TypesDefinitions USBD_CDC_IF_Private_TypesDefinitions
  48:Src/usbd_cdc_if.c ****   * @brief Private types.
  49:Src/usbd_cdc_if.c ****   * @{
  50:Src/usbd_cdc_if.c ****   */
  51:Src/usbd_cdc_if.c **** 
  52:Src/usbd_cdc_if.c **** /* USER CODE BEGIN PRIVATE_TYPES */
  53:Src/usbd_cdc_if.c **** 
  54:Src/usbd_cdc_if.c **** /* USER CODE END PRIVATE_TYPES */
  55:Src/usbd_cdc_if.c **** 
  56:Src/usbd_cdc_if.c **** /**
  57:Src/usbd_cdc_if.c ****   * @}
  58:Src/usbd_cdc_if.c ****   */
  59:Src/usbd_cdc_if.c **** 
  60:Src/usbd_cdc_if.c **** /** @defgroup USBD_CDC_IF_Private_Defines USBD_CDC_IF_Private_Defines
  61:Src/usbd_cdc_if.c ****   * @brief Private defines.
  62:Src/usbd_cdc_if.c ****   * @{
  63:Src/usbd_cdc_if.c ****   */
  64:Src/usbd_cdc_if.c **** 
  65:Src/usbd_cdc_if.c **** /* USER CODE BEGIN PRIVATE_DEFINES */
  66:Src/usbd_cdc_if.c **** /* Define size for the receive and transmit buffer over CDC */
  67:Src/usbd_cdc_if.c **** /* It's up to user to redefine and/or remove those define */
  68:Src/usbd_cdc_if.c **** #define APP_RX_DATA_SIZE  1000
  69:Src/usbd_cdc_if.c **** #define APP_TX_DATA_SIZE  1000
  70:Src/usbd_cdc_if.c **** /* USER CODE END PRIVATE_DEFINES */
  71:Src/usbd_cdc_if.c **** 
  72:Src/usbd_cdc_if.c **** /**
  73:Src/usbd_cdc_if.c ****   * @}
  74:Src/usbd_cdc_if.c ****   */
  75:Src/usbd_cdc_if.c **** 
  76:Src/usbd_cdc_if.c **** /** @defgroup USBD_CDC_IF_Private_Macros USBD_CDC_IF_Private_Macros
  77:Src/usbd_cdc_if.c ****   * @brief Private macros.
  78:Src/usbd_cdc_if.c ****   * @{
  79:Src/usbd_cdc_if.c ****   */
  80:Src/usbd_cdc_if.c **** 
  81:Src/usbd_cdc_if.c **** /* USER CODE BEGIN PRIVATE_MACRO */
  82:Src/usbd_cdc_if.c **** 
  83:Src/usbd_cdc_if.c **** /* USER CODE END PRIVATE_MACRO */
  84:Src/usbd_cdc_if.c **** 
  85:Src/usbd_cdc_if.c **** /**
  86:Src/usbd_cdc_if.c ****   * @}
  87:Src/usbd_cdc_if.c ****   */
  88:Src/usbd_cdc_if.c **** 
  89:Src/usbd_cdc_if.c **** /** @defgroup USBD_CDC_IF_Private_Variables USBD_CDC_IF_Private_Variables
  90:Src/usbd_cdc_if.c ****   * @brief Private variables.
  91:Src/usbd_cdc_if.c ****   * @{
ARM GAS  X:\TMP\USER_T~1\cceEGoYd.s 			page 3


  92:Src/usbd_cdc_if.c ****   */
  93:Src/usbd_cdc_if.c **** /* Create buffer for reception and transmission           */
  94:Src/usbd_cdc_if.c **** /* It's up to user to redefine and/or remove those define */
  95:Src/usbd_cdc_if.c **** /** Received data over USB are stored in this buffer      */
  96:Src/usbd_cdc_if.c **** uint8_t UserRxBufferFS[APP_RX_DATA_SIZE];
  97:Src/usbd_cdc_if.c **** 
  98:Src/usbd_cdc_if.c **** /** Data to send over USB CDC are stored in this buffer   */
  99:Src/usbd_cdc_if.c **** uint8_t UserTxBufferFS[APP_TX_DATA_SIZE];
 100:Src/usbd_cdc_if.c **** 
 101:Src/usbd_cdc_if.c **** /* USER CODE BEGIN PRIVATE_VARIABLES */
 102:Src/usbd_cdc_if.c **** USBD_CDC_LineCodingTypeDef linecoding = 
 103:Src/usbd_cdc_if.c ****   { 
 104:Src/usbd_cdc_if.c ****     115200, /* baud rate*/ 
 105:Src/usbd_cdc_if.c ****      0x00,   /* stop bits-1*/ 
 106:Src/usbd_cdc_if.c ****      0x00,   /* parity - none*/ 
 107:Src/usbd_cdc_if.c ****     0x08    /* nb. of bits 8*/ 
 108:Src/usbd_cdc_if.c ****    }; 
 109:Src/usbd_cdc_if.c **** /* USER CODE END PRIVATE_VARIABLES */
 110:Src/usbd_cdc_if.c **** 
 111:Src/usbd_cdc_if.c **** /**
 112:Src/usbd_cdc_if.c ****   * @}
 113:Src/usbd_cdc_if.c ****   */
 114:Src/usbd_cdc_if.c **** 
 115:Src/usbd_cdc_if.c **** /** @defgroup USBD_CDC_IF_Exported_Variables USBD_CDC_IF_Exported_Variables
 116:Src/usbd_cdc_if.c ****   * @brief Public variables.
 117:Src/usbd_cdc_if.c ****   * @{
 118:Src/usbd_cdc_if.c ****   */
 119:Src/usbd_cdc_if.c **** 
 120:Src/usbd_cdc_if.c **** extern USBD_HandleTypeDef hUsbDeviceFS;
 121:Src/usbd_cdc_if.c **** 
 122:Src/usbd_cdc_if.c **** /* USER CODE BEGIN EXPORTED_VARIABLES */
 123:Src/usbd_cdc_if.c **** 
 124:Src/usbd_cdc_if.c **** /* USER CODE END EXPORTED_VARIABLES */
 125:Src/usbd_cdc_if.c **** 
 126:Src/usbd_cdc_if.c **** /**
 127:Src/usbd_cdc_if.c ****   * @}
 128:Src/usbd_cdc_if.c ****   */
 129:Src/usbd_cdc_if.c **** 
 130:Src/usbd_cdc_if.c **** /** @defgroup USBD_CDC_IF_Private_FunctionPrototypes USBD_CDC_IF_Private_FunctionPrototypes
 131:Src/usbd_cdc_if.c ****   * @brief Private functions declaration.
 132:Src/usbd_cdc_if.c ****   * @{
 133:Src/usbd_cdc_if.c ****   */
 134:Src/usbd_cdc_if.c **** 
 135:Src/usbd_cdc_if.c **** static int8_t CDC_Init_FS(void);
 136:Src/usbd_cdc_if.c **** static int8_t CDC_DeInit_FS(void);
 137:Src/usbd_cdc_if.c **** static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length);
 138:Src/usbd_cdc_if.c **** static int8_t CDC_Receive_FS(uint8_t* pbuf, uint32_t *Len);
 139:Src/usbd_cdc_if.c **** 
 140:Src/usbd_cdc_if.c **** /* USER CODE BEGIN PRIVATE_FUNCTIONS_DECLARATION */
 141:Src/usbd_cdc_if.c **** 
 142:Src/usbd_cdc_if.c **** /* USER CODE END PRIVATE_FUNCTIONS_DECLARATION */
 143:Src/usbd_cdc_if.c **** 
 144:Src/usbd_cdc_if.c **** /**
 145:Src/usbd_cdc_if.c ****   * @}
 146:Src/usbd_cdc_if.c ****   */
 147:Src/usbd_cdc_if.c **** 
 148:Src/usbd_cdc_if.c **** USBD_CDC_ItfTypeDef USBD_Interface_fops_FS =
ARM GAS  X:\TMP\USER_T~1\cceEGoYd.s 			page 4


 149:Src/usbd_cdc_if.c **** {
 150:Src/usbd_cdc_if.c ****   CDC_Init_FS,
 151:Src/usbd_cdc_if.c ****   CDC_DeInit_FS,
 152:Src/usbd_cdc_if.c ****   CDC_Control_FS,
 153:Src/usbd_cdc_if.c ****   CDC_Receive_FS
 154:Src/usbd_cdc_if.c **** };
 155:Src/usbd_cdc_if.c **** 
 156:Src/usbd_cdc_if.c **** /* Private functions ---------------------------------------------------------*/
 157:Src/usbd_cdc_if.c **** /**
 158:Src/usbd_cdc_if.c ****   * @brief  Initializes the CDC media low layer over the FS USB IP
 159:Src/usbd_cdc_if.c ****   * @retval USBD_OK if all operations are OK else USBD_FAIL
 160:Src/usbd_cdc_if.c ****   */
 161:Src/usbd_cdc_if.c **** static int8_t CDC_Init_FS(void)
 162:Src/usbd_cdc_if.c **** {
 163:Src/usbd_cdc_if.c ****   /* USER CODE BEGIN 3 */
 164:Src/usbd_cdc_if.c ****   /* Set Application Buffers */
 165:Src/usbd_cdc_if.c ****   USBD_CDC_SetTxBuffer(&hUsbDeviceFS, UserTxBufferFS, 0);
 166:Src/usbd_cdc_if.c ****   USBD_CDC_SetRxBuffer(&hUsbDeviceFS, UserRxBufferFS);
 167:Src/usbd_cdc_if.c ****   return (USBD_OK);
 168:Src/usbd_cdc_if.c ****   /* USER CODE END 3 */
 169:Src/usbd_cdc_if.c **** }
 170:Src/usbd_cdc_if.c **** 
 171:Src/usbd_cdc_if.c **** /**
 172:Src/usbd_cdc_if.c ****   * @brief  DeInitializes the CDC media low layer
 173:Src/usbd_cdc_if.c ****   * @retval USBD_OK if all operations are OK else USBD_FAIL
 174:Src/usbd_cdc_if.c ****   */
 175:Src/usbd_cdc_if.c **** static int8_t CDC_DeInit_FS(void)
 176:Src/usbd_cdc_if.c **** {
  25              		.loc 1 176 0
  26              		.cfi_startproc
  27              		@ args = 0, pretend = 0, frame = 0
  28              		@ frame_needed = 0, uses_anonymous_args = 0
  29              		@ link register save eliminated.
 177:Src/usbd_cdc_if.c ****   /* USER CODE BEGIN 4 */
 178:Src/usbd_cdc_if.c ****   return (USBD_OK);
 179:Src/usbd_cdc_if.c ****   /* USER CODE END 4 */
 180:Src/usbd_cdc_if.c **** }
  30              		.loc 1 180 0
  31 0000 0020     		movs	r0, #0
  32 0002 7047     		bx	lr
  33              		.cfi_endproc
  34              	.LFE69:
  36              		.section	.text.CDC_Control_FS,"ax",%progbits
  37              		.align	1
  38              		.syntax unified
  39              		.thumb
  40              		.thumb_func
  41              		.fpu softvfp
  43              	CDC_Control_FS:
  44              	.LFB70:
 181:Src/usbd_cdc_if.c **** 
 182:Src/usbd_cdc_if.c **** /**
 183:Src/usbd_cdc_if.c ****   * @brief  Manage the CDC class requests
 184:Src/usbd_cdc_if.c ****   * @param  cmd: Command code
 185:Src/usbd_cdc_if.c ****   * @param  pbuf: Buffer containing command data (request parameters)
 186:Src/usbd_cdc_if.c ****   * @param  length: Number of data to be sent (in bytes)
 187:Src/usbd_cdc_if.c ****   * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL
ARM GAS  X:\TMP\USER_T~1\cceEGoYd.s 			page 5


 188:Src/usbd_cdc_if.c ****   */
 189:Src/usbd_cdc_if.c **** static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length)
 190:Src/usbd_cdc_if.c **** {
  45              		.loc 1 190 0
  46              		.cfi_startproc
  47              		@ args = 0, pretend = 0, frame = 0
  48              		@ frame_needed = 0, uses_anonymous_args = 0
  49              		@ link register save eliminated.
  50              	.LVL0:
 191:Src/usbd_cdc_if.c ****   /* USER CODE BEGIN 5 */
 192:Src/usbd_cdc_if.c ****   switch(cmd)
  51              		.loc 1 192 0
  52 0000 2028     		cmp	r0, #32
  53 0002 03D0     		beq	.L4
  54 0004 2128     		cmp	r0, #33
  55 0006 14D0     		beq	.L5
  56              	.LVL1:
  57              	.L3:
 193:Src/usbd_cdc_if.c ****   {
 194:Src/usbd_cdc_if.c ****     case CDC_SEND_ENCAPSULATED_COMMAND:
 195:Src/usbd_cdc_if.c **** 
 196:Src/usbd_cdc_if.c ****     break;
 197:Src/usbd_cdc_if.c **** 
 198:Src/usbd_cdc_if.c ****     case CDC_GET_ENCAPSULATED_RESPONSE:
 199:Src/usbd_cdc_if.c **** 
 200:Src/usbd_cdc_if.c ****     break;
 201:Src/usbd_cdc_if.c **** 
 202:Src/usbd_cdc_if.c ****     case CDC_SET_COMM_FEATURE:
 203:Src/usbd_cdc_if.c **** 
 204:Src/usbd_cdc_if.c ****     break;
 205:Src/usbd_cdc_if.c **** 
 206:Src/usbd_cdc_if.c ****     case CDC_GET_COMM_FEATURE:
 207:Src/usbd_cdc_if.c **** 
 208:Src/usbd_cdc_if.c ****     break;
 209:Src/usbd_cdc_if.c **** 
 210:Src/usbd_cdc_if.c ****     case CDC_CLEAR_COMM_FEATURE:
 211:Src/usbd_cdc_if.c **** 
 212:Src/usbd_cdc_if.c ****     break;
 213:Src/usbd_cdc_if.c **** 
 214:Src/usbd_cdc_if.c ****   /*******************************************************************************/
 215:Src/usbd_cdc_if.c ****   /* Line Coding Structure                                                       */
 216:Src/usbd_cdc_if.c ****   /*-----------------------------------------------------------------------------*/
 217:Src/usbd_cdc_if.c ****   /* Offset | Field       | Size | Value  | Description                          */
 218:Src/usbd_cdc_if.c ****   /* 0      | dwDTERate   |   4  | Number |Data terminal rate, in bits per second*/
 219:Src/usbd_cdc_if.c ****   /* 4      | bCharFormat |   1  | Number | Stop bits                            */
 220:Src/usbd_cdc_if.c ****   /*                                        0 - 1 Stop bit                       */
 221:Src/usbd_cdc_if.c ****   /*                                        1 - 1.5 Stop bits                    */
 222:Src/usbd_cdc_if.c ****   /*                                        2 - 2 Stop bits                      */
 223:Src/usbd_cdc_if.c ****   /* 5      | bParityType |  1   | Number | Parity                               */
 224:Src/usbd_cdc_if.c ****   /*                                        0 - None                             */
 225:Src/usbd_cdc_if.c ****   /*                                        1 - Odd                              */
 226:Src/usbd_cdc_if.c ****   /*                                        2 - Even                             */
 227:Src/usbd_cdc_if.c ****   /*                                        3 - Mark                             */
 228:Src/usbd_cdc_if.c ****   /*                                        4 - Space                            */
 229:Src/usbd_cdc_if.c ****   /* 6      | bDataBits  |   1   | Number Data bits (5, 6, 7, 8 or 16).          */
 230:Src/usbd_cdc_if.c ****   /*******************************************************************************/
 231:Src/usbd_cdc_if.c ****     case CDC_SET_LINE_CODING:
ARM GAS  X:\TMP\USER_T~1\cceEGoYd.s 			page 6


 232:Src/usbd_cdc_if.c ****     linecoding.bitrate    = (uint32_t)(pbuf[0] | (pbuf[1] << 8) |(pbuf[2] << 16) | (pbuf[3] << 24))
 233:Src/usbd_cdc_if.c ****     linecoding.format     = pbuf[4]; 
 234:Src/usbd_cdc_if.c ****     linecoding.paritytype = pbuf[5]; 
 235:Src/usbd_cdc_if.c ****     linecoding.datatype   = pbuf[6]; 
 236:Src/usbd_cdc_if.c ****     break;
 237:Src/usbd_cdc_if.c **** 
 238:Src/usbd_cdc_if.c ****     case CDC_GET_LINE_CODING:
 239:Src/usbd_cdc_if.c **** 	pbuf[0] = (uint8_t)(linecoding.bitrate); 
 240:Src/usbd_cdc_if.c ****     pbuf[1] = (uint8_t)(linecoding.bitrate >> 8); 
 241:Src/usbd_cdc_if.c **** 	pbuf[2] = (uint8_t)(linecoding.bitrate >> 16); 
 242:Src/usbd_cdc_if.c **** 	pbuf[3] = (uint8_t)(linecoding.bitrate >> 24); 
 243:Src/usbd_cdc_if.c **** 	pbuf[4] = linecoding.format; 
 244:Src/usbd_cdc_if.c ****     pbuf[5] = linecoding.paritytype; 
 245:Src/usbd_cdc_if.c ****     pbuf[6] = linecoding.datatype;  
 246:Src/usbd_cdc_if.c ****     break;
 247:Src/usbd_cdc_if.c **** 
 248:Src/usbd_cdc_if.c ****     case CDC_SET_CONTROL_LINE_STATE:
 249:Src/usbd_cdc_if.c **** 
 250:Src/usbd_cdc_if.c ****     break;
 251:Src/usbd_cdc_if.c **** 
 252:Src/usbd_cdc_if.c ****     case CDC_SEND_BREAK:
 253:Src/usbd_cdc_if.c **** 
 254:Src/usbd_cdc_if.c ****     break;
 255:Src/usbd_cdc_if.c **** 
 256:Src/usbd_cdc_if.c ****   default:
 257:Src/usbd_cdc_if.c ****     break;
 258:Src/usbd_cdc_if.c ****   }
 259:Src/usbd_cdc_if.c **** 
 260:Src/usbd_cdc_if.c ****   return (USBD_OK);
 261:Src/usbd_cdc_if.c ****   /* USER CODE END 5 */
 262:Src/usbd_cdc_if.c **** }
  58              		.loc 1 262 0
  59 0008 0020     		movs	r0, #0
  60              	.LVL2:
  61 000a 7047     		bx	lr
  62              	.LVL3:
  63              	.L4:
 232:Src/usbd_cdc_if.c ****     linecoding.format     = pbuf[4]; 
  64              		.loc 1 232 0
  65 000c 0B78     		ldrb	r3, [r1]	@ zero_extendqisi2
  66 000e 4A78     		ldrb	r2, [r1, #1]	@ zero_extendqisi2
  67              	.LVL4:
  68 0010 43EA0223 		orr	r3, r3, r2, lsl #8
  69 0014 8A78     		ldrb	r2, [r1, #2]	@ zero_extendqisi2
  70 0016 43EA0243 		orr	r3, r3, r2, lsl #16
  71 001a CA78     		ldrb	r2, [r1, #3]	@ zero_extendqisi2
  72 001c 43EA0263 		orr	r3, r3, r2, lsl #24
  73 0020 0C4A     		ldr	r2, .L6
  74 0022 1360     		str	r3, [r2]
 233:Src/usbd_cdc_if.c ****     linecoding.paritytype = pbuf[5]; 
  75              		.loc 1 233 0
  76 0024 0B79     		ldrb	r3, [r1, #4]	@ zero_extendqisi2
  77 0026 1371     		strb	r3, [r2, #4]
 234:Src/usbd_cdc_if.c ****     linecoding.datatype   = pbuf[6]; 
  78              		.loc 1 234 0
  79 0028 4B79     		ldrb	r3, [r1, #5]	@ zero_extendqisi2
  80 002a 5371     		strb	r3, [r2, #5]
ARM GAS  X:\TMP\USER_T~1\cceEGoYd.s 			page 7


 235:Src/usbd_cdc_if.c ****     break;
  81              		.loc 1 235 0
  82 002c 8B79     		ldrb	r3, [r1, #6]	@ zero_extendqisi2
  83 002e 9371     		strb	r3, [r2, #6]
 236:Src/usbd_cdc_if.c **** 
  84              		.loc 1 236 0
  85 0030 EAE7     		b	.L3
  86              	.LVL5:
  87              	.L5:
 239:Src/usbd_cdc_if.c ****     pbuf[1] = (uint8_t)(linecoding.bitrate >> 8); 
  88              		.loc 1 239 0
  89 0032 084B     		ldr	r3, .L6
  90 0034 1A78     		ldrb	r2, [r3]	@ zero_extendqisi2
  91              	.LVL6:
  92 0036 0A70     		strb	r2, [r1]
 240:Src/usbd_cdc_if.c **** 	pbuf[2] = (uint8_t)(linecoding.bitrate >> 16); 
  93              		.loc 1 240 0
  94 0038 5A78     		ldrb	r2, [r3, #1]	@ zero_extendqisi2
  95 003a 4A70     		strb	r2, [r1, #1]
 241:Src/usbd_cdc_if.c **** 	pbuf[3] = (uint8_t)(linecoding.bitrate >> 24); 
  96              		.loc 1 241 0
  97 003c 9A78     		ldrb	r2, [r3, #2]	@ zero_extendqisi2
  98 003e 8A70     		strb	r2, [r1, #2]
 242:Src/usbd_cdc_if.c **** 	pbuf[4] = linecoding.format; 
  99              		.loc 1 242 0
 100 0040 DA78     		ldrb	r2, [r3, #3]	@ zero_extendqisi2
 101 0042 CA70     		strb	r2, [r1, #3]
 243:Src/usbd_cdc_if.c ****     pbuf[5] = linecoding.paritytype; 
 102              		.loc 1 243 0
 103 0044 1A79     		ldrb	r2, [r3, #4]	@ zero_extendqisi2
 104 0046 0A71     		strb	r2, [r1, #4]
 244:Src/usbd_cdc_if.c ****     pbuf[6] = linecoding.datatype;  
 105              		.loc 1 244 0
 106 0048 5A79     		ldrb	r2, [r3, #5]	@ zero_extendqisi2
 107 004a 4A71     		strb	r2, [r1, #5]
 245:Src/usbd_cdc_if.c ****     break;
 108              		.loc 1 245 0
 109 004c 9B79     		ldrb	r3, [r3, #6]	@ zero_extendqisi2
 110 004e 8B71     		strb	r3, [r1, #6]
 246:Src/usbd_cdc_if.c **** 
 111              		.loc 1 246 0
 112 0050 DAE7     		b	.L3
 113              	.L7:
 114 0052 00BF     		.align	2
 115              	.L6:
 116 0054 00000000 		.word	.LANCHOR0
 117              		.cfi_endproc
 118              	.LFE70:
 120              		.section	.text.CDC_Receive_FS,"ax",%progbits
 121              		.align	1
 122              		.syntax unified
 123              		.thumb
 124              		.thumb_func
 125              		.fpu softvfp
 127              	CDC_Receive_FS:
 128              	.LFB71:
 263:Src/usbd_cdc_if.c **** 
ARM GAS  X:\TMP\USER_T~1\cceEGoYd.s 			page 8


 264:Src/usbd_cdc_if.c **** /**
 265:Src/usbd_cdc_if.c ****   * @brief  Data received over USB OUT endpoint are sent over CDC interface
 266:Src/usbd_cdc_if.c ****   *         through this function.
 267:Src/usbd_cdc_if.c ****   *
 268:Src/usbd_cdc_if.c ****   *         @note
 269:Src/usbd_cdc_if.c ****   *         This function will block any OUT packet reception on USB endpoint
 270:Src/usbd_cdc_if.c ****   *         untill exiting this function. If you exit this function before transfer
 271:Src/usbd_cdc_if.c ****   *         is complete on CDC interface (ie. using DMA controller) it will result
 272:Src/usbd_cdc_if.c ****   *         in receiving more data while previous ones are still not sent.
 273:Src/usbd_cdc_if.c ****   *
 274:Src/usbd_cdc_if.c ****   * @param  Buf: Buffer of data to be received
 275:Src/usbd_cdc_if.c ****   * @param  Len: Number of data received (in bytes)
 276:Src/usbd_cdc_if.c ****   * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL
 277:Src/usbd_cdc_if.c ****   */
 278:Src/usbd_cdc_if.c **** static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len)
 279:Src/usbd_cdc_if.c **** {
 129              		.loc 1 279 0
 130              		.cfi_startproc
 131              		@ args = 0, pretend = 0, frame = 0
 132              		@ frame_needed = 0, uses_anonymous_args = 0
 133              	.LVL7:
 134 0000 10B5     		push	{r4, lr}
 135              	.LCFI0:
 136              		.cfi_def_cfa_offset 8
 137              		.cfi_offset 4, -8
 138              		.cfi_offset 14, -4
 280:Src/usbd_cdc_if.c ****   /* USER CODE BEGIN 6 */
 281:Src/usbd_cdc_if.c ****   USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]);
 139              		.loc 1 281 0
 140 0002 054C     		ldr	r4, .L10
 141 0004 0146     		mov	r1, r0
 142              	.LVL8:
 143 0006 2046     		mov	r0, r4
 144              	.LVL9:
 145 0008 FFF7FEFF 		bl	USBD_CDC_SetRxBuffer
 146              	.LVL10:
 282:Src/usbd_cdc_if.c ****   USBD_CDC_ReceivePacket(&hUsbDeviceFS);
 147              		.loc 1 282 0
 148 000c 2046     		mov	r0, r4
 149 000e FFF7FEFF 		bl	USBD_CDC_ReceivePacket
 150              	.LVL11:
 283:Src/usbd_cdc_if.c ****   return (USBD_OK);
 284:Src/usbd_cdc_if.c ****   /* USER CODE END 6 */
 285:Src/usbd_cdc_if.c **** }
 151              		.loc 1 285 0
 152 0012 0020     		movs	r0, #0
 153 0014 10BD     		pop	{r4, pc}
 154              	.L11:
 155 0016 00BF     		.align	2
 156              	.L10:
 157 0018 00000000 		.word	hUsbDeviceFS
 158              		.cfi_endproc
 159              	.LFE71:
 161              		.section	.text.CDC_Init_FS,"ax",%progbits
 162              		.align	1
 163              		.syntax unified
 164              		.thumb
ARM GAS  X:\TMP\USER_T~1\cceEGoYd.s 			page 9


 165              		.thumb_func
 166              		.fpu softvfp
 168              	CDC_Init_FS:
 169              	.LFB68:
 162:Src/usbd_cdc_if.c ****   /* USER CODE BEGIN 3 */
 170              		.loc 1 162 0
 171              		.cfi_startproc
 172              		@ args = 0, pretend = 0, frame = 0
 173              		@ frame_needed = 0, uses_anonymous_args = 0
 174 0000 10B5     		push	{r4, lr}
 175              	.LCFI1:
 176              		.cfi_def_cfa_offset 8
 177              		.cfi_offset 4, -8
 178              		.cfi_offset 14, -4
 165:Src/usbd_cdc_if.c ****   USBD_CDC_SetRxBuffer(&hUsbDeviceFS, UserRxBufferFS);
 179              		.loc 1 165 0
 180 0002 064C     		ldr	r4, .L14
 181 0004 0022     		movs	r2, #0
 182 0006 0649     		ldr	r1, .L14+4
 183 0008 2046     		mov	r0, r4
 184 000a FFF7FEFF 		bl	USBD_CDC_SetTxBuffer
 185              	.LVL12:
 166:Src/usbd_cdc_if.c ****   return (USBD_OK);
 186              		.loc 1 166 0
 187 000e 0549     		ldr	r1, .L14+8
 188 0010 2046     		mov	r0, r4
 189 0012 FFF7FEFF 		bl	USBD_CDC_SetRxBuffer
 190              	.LVL13:
 169:Src/usbd_cdc_if.c **** 
 191              		.loc 1 169 0
 192 0016 0020     		movs	r0, #0
 193 0018 10BD     		pop	{r4, pc}
 194              	.L15:
 195 001a 00BF     		.align	2
 196              	.L14:
 197 001c 00000000 		.word	hUsbDeviceFS
 198 0020 00000000 		.word	UserTxBufferFS
 199 0024 00000000 		.word	UserRxBufferFS
 200              		.cfi_endproc
 201              	.LFE68:
 203              		.section	.text.CDC_Transmit_FS,"ax",%progbits
 204              		.align	1
 205              		.global	CDC_Transmit_FS
 206              		.syntax unified
 207              		.thumb
 208              		.thumb_func
 209              		.fpu softvfp
 211              	CDC_Transmit_FS:
 212              	.LFB72:
 286:Src/usbd_cdc_if.c **** 
 287:Src/usbd_cdc_if.c **** /**
 288:Src/usbd_cdc_if.c ****   * @brief  CDC_Transmit_FS
 289:Src/usbd_cdc_if.c ****   *         Data to send over USB IN endpoint are sent over CDC interface
 290:Src/usbd_cdc_if.c ****   *         through this function.
 291:Src/usbd_cdc_if.c ****   *         @note
 292:Src/usbd_cdc_if.c ****   *
 293:Src/usbd_cdc_if.c ****   *
ARM GAS  X:\TMP\USER_T~1\cceEGoYd.s 			page 10


 294:Src/usbd_cdc_if.c ****   * @param  Buf: Buffer of data to be sent
 295:Src/usbd_cdc_if.c ****   * @param  Len: Number of data to be sent (in bytes)
 296:Src/usbd_cdc_if.c ****   * @retval USBD_OK if all operations are OK else USBD_FAIL or USBD_BUSY
 297:Src/usbd_cdc_if.c ****   */
 298:Src/usbd_cdc_if.c **** uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len)
 299:Src/usbd_cdc_if.c **** {
 213              		.loc 1 299 0
 214              		.cfi_startproc
 215              		@ args = 0, pretend = 0, frame = 0
 216              		@ frame_needed = 0, uses_anonymous_args = 0
 217              	.LVL14:
 300:Src/usbd_cdc_if.c ****   uint8_t result = USBD_OK;
 301:Src/usbd_cdc_if.c ****   /* USER CODE BEGIN 7 */
 302:Src/usbd_cdc_if.c ****   USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*)hUsbDeviceFS.pClassData;
 218              		.loc 1 302 0
 219 0000 094B     		ldr	r3, .L24
 220 0002 D3F8B832 		ldr	r3, [r3, #696]
 221              	.LVL15:
 303:Src/usbd_cdc_if.c ****   if (hcdc->TxState != 0){
 222              		.loc 1 303 0
 223 0006 D3F81432 		ldr	r3, [r3, #532]
 224              	.LVL16:
 225 000a 0BB1     		cbz	r3, .L23
 304:Src/usbd_cdc_if.c ****     return USBD_BUSY;
 226              		.loc 1 304 0
 227 000c 0120     		movs	r0, #1
 228              	.LVL17:
 305:Src/usbd_cdc_if.c ****   }
 306:Src/usbd_cdc_if.c ****   USBD_CDC_SetTxBuffer(&hUsbDeviceFS, Buf, Len);
 307:Src/usbd_cdc_if.c ****   result = USBD_CDC_TransmitPacket(&hUsbDeviceFS);
 308:Src/usbd_cdc_if.c ****   /* USER CODE END 7 */
 309:Src/usbd_cdc_if.c ****   return result;
 310:Src/usbd_cdc_if.c **** }
 229              		.loc 1 310 0
 230 000e 7047     		bx	lr
 231              	.LVL18:
 232              	.L23:
 299:Src/usbd_cdc_if.c ****   uint8_t result = USBD_OK;
 233              		.loc 1 299 0
 234 0010 10B5     		push	{r4, lr}
 235              	.LCFI2:
 236              		.cfi_def_cfa_offset 8
 237              		.cfi_offset 4, -8
 238              		.cfi_offset 14, -4
 239 0012 0A46     		mov	r2, r1
 240 0014 0146     		mov	r1, r0
 241              	.LVL19:
 306:Src/usbd_cdc_if.c ****   result = USBD_CDC_TransmitPacket(&hUsbDeviceFS);
 242              		.loc 1 306 0
 243 0016 044C     		ldr	r4, .L24
 244              	.LVL20:
 245 0018 2046     		mov	r0, r4
 246              	.LVL21:
 247 001a FFF7FEFF 		bl	USBD_CDC_SetTxBuffer
 248              	.LVL22:
 307:Src/usbd_cdc_if.c ****   /* USER CODE END 7 */
 249              		.loc 1 307 0
ARM GAS  X:\TMP\USER_T~1\cceEGoYd.s 			page 11


 250 001e 2046     		mov	r0, r4
 251 0020 FFF7FEFF 		bl	USBD_CDC_TransmitPacket
 252              	.LVL23:
 253              		.loc 1 310 0
 254 0024 10BD     		pop	{r4, pc}
 255              	.L25:
 256 0026 00BF     		.align	2
 257              	.L24:
 258 0028 00000000 		.word	hUsbDeviceFS
 259              		.cfi_endproc
 260              	.LFE72:
 262              		.global	USBD_Interface_fops_FS
 263              		.global	linecoding
 264              		.comm	UserTxBufferFS,1000,4
 265              		.comm	UserRxBufferFS,1000,4
 266              		.section	.data.USBD_Interface_fops_FS,"aw",%progbits
 267              		.align	2
 270              	USBD_Interface_fops_FS:
 271 0000 00000000 		.word	CDC_Init_FS
 272 0004 00000000 		.word	CDC_DeInit_FS
 273 0008 00000000 		.word	CDC_Control_FS
 274 000c 00000000 		.word	CDC_Receive_FS
 275              		.section	.data.linecoding,"aw",%progbits
 276              		.align	2
 277              		.set	.LANCHOR0,. + 0
 280              	linecoding:
 281 0000 00C20100 		.word	115200
 282 0004 00       		.byte	0
 283 0005 00       		.byte	0
 284 0006 08       		.byte	8
 285 0007 00       		.space	1
 286              		.text
 287              	.Letext0:
 288              		.file 2 "c:\\program files (x86)\\gnu tools arm embedded\\7 2017-q4-major\\arm-none-eabi\\include\
 289              		.file 3 "c:\\program files (x86)\\gnu tools arm embedded\\7 2017-q4-major\\arm-none-eabi\\include\
 290              		.file 4 "c:\\program files (x86)\\gnu tools arm embedded\\7 2017-q4-major\\arm-none-eabi\\include\
 291              		.file 5 "c:\\program files (x86)\\gnu tools arm embedded\\7 2017-q4-major\\lib\\gcc\\arm-none-eabi
 292              		.file 6 "c:\\program files (x86)\\gnu tools arm embedded\\7 2017-q4-major\\arm-none-eabi\\include\
 293              		.file 7 "c:\\program files (x86)\\gnu tools arm embedded\\7 2017-q4-major\\arm-none-eabi\\include\
 294              		.file 8 "c:\\program files (x86)\\gnu tools arm embedded\\7 2017-q4-major\\arm-none-eabi\\include\
 295              		.file 9 "Drivers/CMSIS/Include/core_cm3.h"
 296              		.file 10 "Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h"
 297              		.file 11 "Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h"
 298              		.file 12 "Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h"
 299              		.file 13 "Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h"
 300              		.file 14 "Inc/usbd_cdc_if.h"
ARM GAS  X:\TMP\USER_T~1\cceEGoYd.s 			page 12


DEFINED SYMBOLS
                            *ABS*:00000000 usbd_cdc_if.c
X:\TMP\USER_T~1\cceEGoYd.s:16     .text.CDC_DeInit_FS:00000000 $t
X:\TMP\USER_T~1\cceEGoYd.s:22     .text.CDC_DeInit_FS:00000000 CDC_DeInit_FS
X:\TMP\USER_T~1\cceEGoYd.s:37     .text.CDC_Control_FS:00000000 $t
X:\TMP\USER_T~1\cceEGoYd.s:43     .text.CDC_Control_FS:00000000 CDC_Control_FS
X:\TMP\USER_T~1\cceEGoYd.s:116    .text.CDC_Control_FS:00000054 $d
X:\TMP\USER_T~1\cceEGoYd.s:121    .text.CDC_Receive_FS:00000000 $t
X:\TMP\USER_T~1\cceEGoYd.s:127    .text.CDC_Receive_FS:00000000 CDC_Receive_FS
X:\TMP\USER_T~1\cceEGoYd.s:157    .text.CDC_Receive_FS:00000018 $d
X:\TMP\USER_T~1\cceEGoYd.s:162    .text.CDC_Init_FS:00000000 $t
X:\TMP\USER_T~1\cceEGoYd.s:168    .text.CDC_Init_FS:00000000 CDC_Init_FS
X:\TMP\USER_T~1\cceEGoYd.s:197    .text.CDC_Init_FS:0000001c $d
                            *COM*:000003e8 UserTxBufferFS
                            *COM*:000003e8 UserRxBufferFS
X:\TMP\USER_T~1\cceEGoYd.s:204    .text.CDC_Transmit_FS:00000000 $t
X:\TMP\USER_T~1\cceEGoYd.s:211    .text.CDC_Transmit_FS:00000000 CDC_Transmit_FS
X:\TMP\USER_T~1\cceEGoYd.s:258    .text.CDC_Transmit_FS:00000028 $d
X:\TMP\USER_T~1\cceEGoYd.s:270    .data.USBD_Interface_fops_FS:00000000 USBD_Interface_fops_FS
X:\TMP\USER_T~1\cceEGoYd.s:280    .data.linecoding:00000000 linecoding
X:\TMP\USER_T~1\cceEGoYd.s:267    .data.USBD_Interface_fops_FS:00000000 $d
X:\TMP\USER_T~1\cceEGoYd.s:276    .data.linecoding:00000000 $d

UNDEFINED SYMBOLS
USBD_CDC_SetRxBuffer
USBD_CDC_ReceivePacket
hUsbDeviceFS
USBD_CDC_SetTxBuffer
USBD_CDC_TransmitPacket
