ARM GAS  /tmp/ccDO9gP0.s 			page 1


   1              		.cpu cortex-m4
   2              		.arch armv7e-m
   3              		.fpu fpv4-sp-d16
   4              		.eabi_attribute 27, 1
   5              		.eabi_attribute 28, 1
   6              		.eabi_attribute 20, 1
   7              		.eabi_attribute 21, 1
   8              		.eabi_attribute 23, 3
   9              		.eabi_attribute 24, 1
  10              		.eabi_attribute 25, 1
  11              		.eabi_attribute 26, 1
  12              		.eabi_attribute 30, 1
  13              		.eabi_attribute 34, 1
  14              		.eabi_attribute 18, 4
  15              		.file	"usbd_desc.c"
  16              		.text
  17              	.Ltext0:
  18              		.cfi_sections	.debug_frame
  19              		.file 1 "Src/usbd_desc.c"
  20              		.section	.text.USBD_AUDIO_DeviceDescriptor,"ax",%progbits
  21              		.align	1
  22              		.global	USBD_AUDIO_DeviceDescriptor
  23              		.syntax unified
  24              		.thumb
  25              		.thumb_func
  27              	USBD_AUDIO_DeviceDescriptor:
  28              	.LVL0:
  29              	.LFB333:
   1:Src/usbd_desc.c **** /* USER CODE BEGIN Header */
   2:Src/usbd_desc.c **** /**
   3:Src/usbd_desc.c ****   ******************************************************************************
   4:Src/usbd_desc.c ****   * @file           : usbd_desc.c
   5:Src/usbd_desc.c ****   * @version        : v3.0_Cube
   6:Src/usbd_desc.c ****   * @brief          : This file implements the USB device descriptors.
   7:Src/usbd_desc.c ****   ******************************************************************************
   8:Src/usbd_desc.c ****   * @attention
   9:Src/usbd_desc.c ****   *
  10:Src/usbd_desc.c ****   * Copyright (c) 2022 STMicroelectronics.
  11:Src/usbd_desc.c ****   * All rights reserved.
  12:Src/usbd_desc.c ****   *
  13:Src/usbd_desc.c ****   * This software is licensed under terms that can be found in the LICENSE file
  14:Src/usbd_desc.c ****   * in the root directory of this software component.
  15:Src/usbd_desc.c ****   * If no LICENSE file comes with this software, it is provided AS-IS.
  16:Src/usbd_desc.c ****   *
  17:Src/usbd_desc.c ****   ******************************************************************************
  18:Src/usbd_desc.c ****   */
  19:Src/usbd_desc.c **** /* USER CODE END Header */
  20:Src/usbd_desc.c **** 
  21:Src/usbd_desc.c **** /* Includes ------------------------------------------------------------------*/
  22:Src/usbd_desc.c **** #include "usbd_core.h"
  23:Src/usbd_desc.c **** #include "usbd_desc.h"
  24:Src/usbd_desc.c **** #include "usbd_conf.h"
  25:Src/usbd_desc.c **** 
  26:Src/usbd_desc.c **** /* USER CODE BEGIN INCLUDE */
  27:Src/usbd_desc.c **** 
  28:Src/usbd_desc.c **** /* USER CODE END INCLUDE */
  29:Src/usbd_desc.c **** 
ARM GAS  /tmp/ccDO9gP0.s 			page 2


  30:Src/usbd_desc.c **** /* Private typedef -----------------------------------------------------------*/
  31:Src/usbd_desc.c **** /* Private define ------------------------------------------------------------*/
  32:Src/usbd_desc.c **** /* Private macro -------------------------------------------------------------*/
  33:Src/usbd_desc.c **** 
  34:Src/usbd_desc.c **** /* USER CODE BEGIN PV */
  35:Src/usbd_desc.c **** /* Private variables ---------------------------------------------------------*/
  36:Src/usbd_desc.c **** 
  37:Src/usbd_desc.c **** /* USER CODE END PV */
  38:Src/usbd_desc.c **** 
  39:Src/usbd_desc.c **** /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
  40:Src/usbd_desc.c ****   * @{
  41:Src/usbd_desc.c ****   */
  42:Src/usbd_desc.c **** 
  43:Src/usbd_desc.c **** /** @addtogroup USBD_DESC
  44:Src/usbd_desc.c ****   * @{
  45:Src/usbd_desc.c ****   */
  46:Src/usbd_desc.c **** 
  47:Src/usbd_desc.c **** /** @defgroup USBD_DESC_Private_TypesDefinitions USBD_DESC_Private_TypesDefinitions
  48:Src/usbd_desc.c ****   * @brief Private types.
  49:Src/usbd_desc.c ****   * @{
  50:Src/usbd_desc.c ****   */
  51:Src/usbd_desc.c **** 
  52:Src/usbd_desc.c **** /* USER CODE BEGIN PRIVATE_TYPES */
  53:Src/usbd_desc.c **** 
  54:Src/usbd_desc.c **** /* USER CODE END PRIVATE_TYPES */
  55:Src/usbd_desc.c **** 
  56:Src/usbd_desc.c **** /**
  57:Src/usbd_desc.c ****   * @}
  58:Src/usbd_desc.c ****   */
  59:Src/usbd_desc.c **** 
  60:Src/usbd_desc.c **** /** @defgroup USBD_DESC_Private_Defines USBD_DESC_Private_Defines
  61:Src/usbd_desc.c ****   * @brief Private defines.
  62:Src/usbd_desc.c ****   * @{
  63:Src/usbd_desc.c ****   */
  64:Src/usbd_desc.c **** 
  65:Src/usbd_desc.c **** #define USBD_VID     1155
  66:Src/usbd_desc.c **** #define USBD_LANGID_STRING     1033
  67:Src/usbd_desc.c **** #define USBD_MANUFACTURER_STRING     "STMicroelectronics"
  68:Src/usbd_desc.c **** #define USBD_PID     22336
  69:Src/usbd_desc.c **** #define USBD_PRODUCT_STRING     "STM32 Audio Class"
  70:Src/usbd_desc.c **** #define USBD_CONFIGURATION_STRING     "AUDIO Config"
  71:Src/usbd_desc.c **** #define USBD_INTERFACE_STRING     "AUDIO Interface"
  72:Src/usbd_desc.c **** 
  73:Src/usbd_desc.c **** /* USER CODE BEGIN PRIVATE_DEFINES */
  74:Src/usbd_desc.c **** 
  75:Src/usbd_desc.c **** /* USER CODE END PRIVATE_DEFINES */
  76:Src/usbd_desc.c **** 
  77:Src/usbd_desc.c **** /**
  78:Src/usbd_desc.c ****   * @}
  79:Src/usbd_desc.c ****   */
  80:Src/usbd_desc.c **** 
  81:Src/usbd_desc.c **** /* USER CODE BEGIN 0 */
  82:Src/usbd_desc.c **** 
  83:Src/usbd_desc.c **** /* USER CODE END 0 */
  84:Src/usbd_desc.c **** 
  85:Src/usbd_desc.c **** /** @defgroup USBD_DESC_Private_Macros USBD_DESC_Private_Macros
  86:Src/usbd_desc.c ****   * @brief Private macros.
ARM GAS  /tmp/ccDO9gP0.s 			page 3


  87:Src/usbd_desc.c ****   * @{
  88:Src/usbd_desc.c ****   */
  89:Src/usbd_desc.c **** 
  90:Src/usbd_desc.c **** /* USER CODE BEGIN PRIVATE_MACRO */
  91:Src/usbd_desc.c **** 
  92:Src/usbd_desc.c **** /* USER CODE END PRIVATE_MACRO */
  93:Src/usbd_desc.c **** 
  94:Src/usbd_desc.c **** /**
  95:Src/usbd_desc.c ****   * @}
  96:Src/usbd_desc.c ****   */
  97:Src/usbd_desc.c **** 
  98:Src/usbd_desc.c **** /** @defgroup USBD_DESC_Private_FunctionPrototypes USBD_DESC_Private_FunctionPrototypes
  99:Src/usbd_desc.c ****   * @brief Private functions declaration.
 100:Src/usbd_desc.c ****   * @{
 101:Src/usbd_desc.c ****   */
 102:Src/usbd_desc.c **** 
 103:Src/usbd_desc.c **** static void Get_SerialNum(void);
 104:Src/usbd_desc.c **** static void IntToUnicode(uint32_t value, uint8_t * pbuf, uint8_t len);
 105:Src/usbd_desc.c **** 
 106:Src/usbd_desc.c **** /**
 107:Src/usbd_desc.c ****   * @}
 108:Src/usbd_desc.c ****   */
 109:Src/usbd_desc.c **** 
 110:Src/usbd_desc.c **** /** @defgroup USBD_DESC_Private_FunctionPrototypes USBD_DESC_Private_FunctionPrototypes
 111:Src/usbd_desc.c ****   * @brief Private functions declaration.
 112:Src/usbd_desc.c ****   * @{
 113:Src/usbd_desc.c ****   */
 114:Src/usbd_desc.c **** 
 115:Src/usbd_desc.c **** uint8_t * USBD_AUDIO_DeviceDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
 116:Src/usbd_desc.c **** uint8_t * USBD_AUDIO_LangIDStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
 117:Src/usbd_desc.c **** uint8_t * USBD_AUDIO_ManufacturerStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
 118:Src/usbd_desc.c **** uint8_t * USBD_AUDIO_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
 119:Src/usbd_desc.c **** uint8_t * USBD_AUDIO_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
 120:Src/usbd_desc.c **** uint8_t * USBD_AUDIO_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
 121:Src/usbd_desc.c **** uint8_t * USBD_AUDIO_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
 122:Src/usbd_desc.c **** 
 123:Src/usbd_desc.c **** /**
 124:Src/usbd_desc.c ****   * @}
 125:Src/usbd_desc.c ****   */
 126:Src/usbd_desc.c **** 
 127:Src/usbd_desc.c **** /** @defgroup USBD_DESC_Private_Variables USBD_DESC_Private_Variables
 128:Src/usbd_desc.c ****   * @brief Private variables.
 129:Src/usbd_desc.c ****   * @{
 130:Src/usbd_desc.c ****   */
 131:Src/usbd_desc.c **** 
 132:Src/usbd_desc.c **** USBD_DescriptorsTypeDef AUDIO_Desc =
 133:Src/usbd_desc.c **** {
 134:Src/usbd_desc.c ****   USBD_AUDIO_DeviceDescriptor,
 135:Src/usbd_desc.c ****   USBD_AUDIO_LangIDStrDescriptor,
 136:Src/usbd_desc.c ****   USBD_AUDIO_ManufacturerStrDescriptor,
 137:Src/usbd_desc.c ****   USBD_AUDIO_ProductStrDescriptor,
 138:Src/usbd_desc.c ****   USBD_AUDIO_SerialStrDescriptor,
 139:Src/usbd_desc.c ****   USBD_AUDIO_ConfigStrDescriptor,
 140:Src/usbd_desc.c ****   USBD_AUDIO_InterfaceStrDescriptor
 141:Src/usbd_desc.c **** };
 142:Src/usbd_desc.c **** 
 143:Src/usbd_desc.c **** #if defined ( __ICCARM__ ) /* IAR Compiler */
ARM GAS  /tmp/ccDO9gP0.s 			page 4


 144:Src/usbd_desc.c ****   #pragma data_alignment=4
 145:Src/usbd_desc.c **** #endif /* defined ( __ICCARM__ ) */
 146:Src/usbd_desc.c **** /** USB standard device descriptor. */
 147:Src/usbd_desc.c **** __ALIGN_BEGIN uint8_t USBD_AUDIO_DeviceDesc[USB_LEN_DEV_DESC] __ALIGN_END =
 148:Src/usbd_desc.c **** {
 149:Src/usbd_desc.c ****   0x12,                       /*bLength */
 150:Src/usbd_desc.c ****   USB_DESC_TYPE_DEVICE,       /*bDescriptorType*/
 151:Src/usbd_desc.c ****   0x00,                       /*bcdUSB */
 152:Src/usbd_desc.c ****   0x02,
 153:Src/usbd_desc.c ****   0x00,                       /*bDeviceClass*/
 154:Src/usbd_desc.c ****   0x00,                       /*bDeviceSubClass*/
 155:Src/usbd_desc.c ****   0x00,                       /*bDeviceProtocol*/
 156:Src/usbd_desc.c ****   USB_MAX_EP0_SIZE,           /*bMaxPacketSize*/
 157:Src/usbd_desc.c ****   LOBYTE(USBD_VID),           /*idVendor*/
 158:Src/usbd_desc.c ****   HIBYTE(USBD_VID),           /*idVendor*/
 159:Src/usbd_desc.c ****   LOBYTE(USBD_PID),           /*idProduct*/
 160:Src/usbd_desc.c ****   HIBYTE(USBD_PID),           /*idProduct*/
 161:Src/usbd_desc.c ****   0x00,                       /*bcdDevice rel. 2.00*/
 162:Src/usbd_desc.c ****   0x02,
 163:Src/usbd_desc.c ****   USBD_IDX_MFC_STR,           /*Index of manufacturer  string*/
 164:Src/usbd_desc.c ****   USBD_IDX_PRODUCT_STR,       /*Index of product string*/
 165:Src/usbd_desc.c ****   USBD_IDX_SERIAL_STR,        /*Index of serial number string*/
 166:Src/usbd_desc.c ****   USBD_MAX_NUM_CONFIGURATION  /*bNumConfigurations*/
 167:Src/usbd_desc.c **** };
 168:Src/usbd_desc.c **** 
 169:Src/usbd_desc.c **** /* USB_DeviceDescriptor */
 170:Src/usbd_desc.c **** 
 171:Src/usbd_desc.c **** /**
 172:Src/usbd_desc.c ****   * @}
 173:Src/usbd_desc.c ****   */
 174:Src/usbd_desc.c **** 
 175:Src/usbd_desc.c **** /** @defgroup USBD_DESC_Private_Variables USBD_DESC_Private_Variables
 176:Src/usbd_desc.c ****   * @brief Private variables.
 177:Src/usbd_desc.c ****   * @{
 178:Src/usbd_desc.c ****   */
 179:Src/usbd_desc.c **** 
 180:Src/usbd_desc.c **** #if defined ( __ICCARM__ ) /* IAR Compiler */
 181:Src/usbd_desc.c ****   #pragma data_alignment=4
 182:Src/usbd_desc.c **** #endif /* defined ( __ICCARM__ ) */
 183:Src/usbd_desc.c **** 
 184:Src/usbd_desc.c **** /** USB lang identifier descriptor. */
 185:Src/usbd_desc.c **** __ALIGN_BEGIN uint8_t USBD_LangIDDesc[USB_LEN_LANGID_STR_DESC] __ALIGN_END =
 186:Src/usbd_desc.c **** {
 187:Src/usbd_desc.c ****      USB_LEN_LANGID_STR_DESC,
 188:Src/usbd_desc.c ****      USB_DESC_TYPE_STRING,
 189:Src/usbd_desc.c ****      LOBYTE(USBD_LANGID_STRING),
 190:Src/usbd_desc.c ****      HIBYTE(USBD_LANGID_STRING)
 191:Src/usbd_desc.c **** };
 192:Src/usbd_desc.c **** 
 193:Src/usbd_desc.c **** #if defined ( __ICCARM__ ) /* IAR Compiler */
 194:Src/usbd_desc.c ****   #pragma data_alignment=4
 195:Src/usbd_desc.c **** #endif /* defined ( __ICCARM__ ) */
 196:Src/usbd_desc.c **** /* Internal string descriptor. */
 197:Src/usbd_desc.c **** __ALIGN_BEGIN uint8_t USBD_StrDesc[USBD_MAX_STR_DESC_SIZ] __ALIGN_END;
 198:Src/usbd_desc.c **** 
 199:Src/usbd_desc.c **** #if defined ( __ICCARM__ ) /*!< IAR Compiler */
 200:Src/usbd_desc.c ****   #pragma data_alignment=4
ARM GAS  /tmp/ccDO9gP0.s 			page 5


 201:Src/usbd_desc.c **** #endif
 202:Src/usbd_desc.c **** __ALIGN_BEGIN uint8_t USBD_StringSerial[USB_SIZ_STRING_SERIAL] __ALIGN_END = {
 203:Src/usbd_desc.c ****   USB_SIZ_STRING_SERIAL,
 204:Src/usbd_desc.c ****   USB_DESC_TYPE_STRING,
 205:Src/usbd_desc.c **** };
 206:Src/usbd_desc.c **** 
 207:Src/usbd_desc.c **** /**
 208:Src/usbd_desc.c ****   * @}
 209:Src/usbd_desc.c ****   */
 210:Src/usbd_desc.c **** 
 211:Src/usbd_desc.c **** /** @defgroup USBD_DESC_Private_Functions USBD_DESC_Private_Functions
 212:Src/usbd_desc.c ****   * @brief Private functions.
 213:Src/usbd_desc.c ****   * @{
 214:Src/usbd_desc.c ****   */
 215:Src/usbd_desc.c **** 
 216:Src/usbd_desc.c **** /**
 217:Src/usbd_desc.c ****   * @brief  Return the device descriptor
 218:Src/usbd_desc.c ****   * @param  speed : Current device speed
 219:Src/usbd_desc.c ****   * @param  length : Pointer to data length variable
 220:Src/usbd_desc.c ****   * @retval Pointer to descriptor buffer
 221:Src/usbd_desc.c ****   */
 222:Src/usbd_desc.c **** uint8_t * USBD_AUDIO_DeviceDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
 223:Src/usbd_desc.c **** {
  30              		.loc 1 223 1 view -0
  31              		.cfi_startproc
  32              		@ args = 0, pretend = 0, frame = 0
  33              		@ frame_needed = 0, uses_anonymous_args = 0
  34              		@ link register save eliminated.
 224:Src/usbd_desc.c ****   UNUSED(speed);
  35              		.loc 1 224 3 view .LVU1
 225:Src/usbd_desc.c ****   *length = sizeof(USBD_AUDIO_DeviceDesc);
  36              		.loc 1 225 3 view .LVU2
  37              		.loc 1 225 11 is_stmt 0 view .LVU3
  38 0000 1223     		movs	r3, #18
  39 0002 0B80     		strh	r3, [r1]	@ movhi
 226:Src/usbd_desc.c ****   return USBD_AUDIO_DeviceDesc;
  40              		.loc 1 226 3 is_stmt 1 view .LVU4
 227:Src/usbd_desc.c **** }
  41              		.loc 1 227 1 is_stmt 0 view .LVU5
  42 0004 0048     		ldr	r0, .L2
  43              	.LVL1:
  44              		.loc 1 227 1 view .LVU6
  45 0006 7047     		bx	lr
  46              	.L3:
  47              		.align	2
  48              	.L2:
  49 0008 00000000 		.word	USBD_AUDIO_DeviceDesc
  50              		.cfi_endproc
  51              	.LFE333:
  53              		.section	.text.USBD_AUDIO_LangIDStrDescriptor,"ax",%progbits
  54              		.align	1
  55              		.global	USBD_AUDIO_LangIDStrDescriptor
  56              		.syntax unified
  57              		.thumb
  58              		.thumb_func
  60              	USBD_AUDIO_LangIDStrDescriptor:
  61              	.LVL2:
ARM GAS  /tmp/ccDO9gP0.s 			page 6


  62              	.LFB334:
 228:Src/usbd_desc.c **** 
 229:Src/usbd_desc.c **** /**
 230:Src/usbd_desc.c ****   * @brief  Return the LangID string descriptor
 231:Src/usbd_desc.c ****   * @param  speed : Current device speed
 232:Src/usbd_desc.c ****   * @param  length : Pointer to data length variable
 233:Src/usbd_desc.c ****   * @retval Pointer to descriptor buffer
 234:Src/usbd_desc.c ****   */
 235:Src/usbd_desc.c **** uint8_t * USBD_AUDIO_LangIDStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
 236:Src/usbd_desc.c **** {
  63              		.loc 1 236 1 is_stmt 1 view -0
  64              		.cfi_startproc
  65              		@ args = 0, pretend = 0, frame = 0
  66              		@ frame_needed = 0, uses_anonymous_args = 0
  67              		@ link register save eliminated.
 237:Src/usbd_desc.c ****   UNUSED(speed);
  68              		.loc 1 237 3 view .LVU8
 238:Src/usbd_desc.c ****   *length = sizeof(USBD_LangIDDesc);
  69              		.loc 1 238 3 view .LVU9
  70              		.loc 1 238 11 is_stmt 0 view .LVU10
  71 0000 0423     		movs	r3, #4
  72 0002 0B80     		strh	r3, [r1]	@ movhi
 239:Src/usbd_desc.c ****   return USBD_LangIDDesc;
  73              		.loc 1 239 3 is_stmt 1 view .LVU11
 240:Src/usbd_desc.c **** }
  74              		.loc 1 240 1 is_stmt 0 view .LVU12
  75 0004 0048     		ldr	r0, .L5
  76              	.LVL3:
  77              		.loc 1 240 1 view .LVU13
  78 0006 7047     		bx	lr
  79              	.L6:
  80              		.align	2
  81              	.L5:
  82 0008 00000000 		.word	USBD_LangIDDesc
  83              		.cfi_endproc
  84              	.LFE334:
  86              		.section	.text.IntToUnicode,"ax",%progbits
  87              		.align	1
  88              		.syntax unified
  89              		.thumb
  90              		.thumb_func
  92              	IntToUnicode:
  93              	.LVL4:
  94              	.LFB341:
 241:Src/usbd_desc.c **** 
 242:Src/usbd_desc.c **** /**
 243:Src/usbd_desc.c ****   * @brief  Return the product string descriptor
 244:Src/usbd_desc.c ****   * @param  speed : Current device speed
 245:Src/usbd_desc.c ****   * @param  length : Pointer to data length variable
 246:Src/usbd_desc.c ****   * @retval Pointer to descriptor buffer
 247:Src/usbd_desc.c ****   */
 248:Src/usbd_desc.c **** uint8_t * USBD_AUDIO_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
 249:Src/usbd_desc.c **** {
 250:Src/usbd_desc.c ****   if(speed == 0)
 251:Src/usbd_desc.c ****   {
 252:Src/usbd_desc.c ****     USBD_GetString((uint8_t *)USBD_PRODUCT_STRING, USBD_StrDesc, length);
 253:Src/usbd_desc.c ****   }
ARM GAS  /tmp/ccDO9gP0.s 			page 7


 254:Src/usbd_desc.c ****   else
 255:Src/usbd_desc.c ****   {
 256:Src/usbd_desc.c ****     USBD_GetString((uint8_t *)USBD_PRODUCT_STRING, USBD_StrDesc, length);
 257:Src/usbd_desc.c ****   }
 258:Src/usbd_desc.c ****   return USBD_StrDesc;
 259:Src/usbd_desc.c **** }
 260:Src/usbd_desc.c **** 
 261:Src/usbd_desc.c **** /**
 262:Src/usbd_desc.c ****   * @brief  Return the manufacturer string descriptor
 263:Src/usbd_desc.c ****   * @param  speed : Current device speed
 264:Src/usbd_desc.c ****   * @param  length : Pointer to data length variable
 265:Src/usbd_desc.c ****   * @retval Pointer to descriptor buffer
 266:Src/usbd_desc.c ****   */
 267:Src/usbd_desc.c **** uint8_t * USBD_AUDIO_ManufacturerStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
 268:Src/usbd_desc.c **** {
 269:Src/usbd_desc.c ****   UNUSED(speed);
 270:Src/usbd_desc.c ****   USBD_GetString((uint8_t *)USBD_MANUFACTURER_STRING, USBD_StrDesc, length);
 271:Src/usbd_desc.c ****   return USBD_StrDesc;
 272:Src/usbd_desc.c **** }
 273:Src/usbd_desc.c **** 
 274:Src/usbd_desc.c **** /**
 275:Src/usbd_desc.c ****   * @brief  Return the serial number string descriptor
 276:Src/usbd_desc.c ****   * @param  speed : Current device speed
 277:Src/usbd_desc.c ****   * @param  length : Pointer to data length variable
 278:Src/usbd_desc.c ****   * @retval Pointer to descriptor buffer
 279:Src/usbd_desc.c ****   */
 280:Src/usbd_desc.c **** uint8_t * USBD_AUDIO_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
 281:Src/usbd_desc.c **** {
 282:Src/usbd_desc.c ****   UNUSED(speed);
 283:Src/usbd_desc.c ****   *length = USB_SIZ_STRING_SERIAL;
 284:Src/usbd_desc.c **** 
 285:Src/usbd_desc.c ****   /* Update the serial number string descriptor with the data from the unique
 286:Src/usbd_desc.c ****    * ID */
 287:Src/usbd_desc.c ****   Get_SerialNum();
 288:Src/usbd_desc.c **** 
 289:Src/usbd_desc.c ****   /* USER CODE BEGIN USBD_AUDIO_SerialStrDescriptor */
 290:Src/usbd_desc.c **** 
 291:Src/usbd_desc.c ****   /* USER CODE END USBD_AUDIO_SerialStrDescriptor */
 292:Src/usbd_desc.c **** 
 293:Src/usbd_desc.c ****   return (uint8_t *) USBD_StringSerial;
 294:Src/usbd_desc.c **** }
 295:Src/usbd_desc.c **** 
 296:Src/usbd_desc.c **** /**
 297:Src/usbd_desc.c ****   * @brief  Return the configuration string descriptor
 298:Src/usbd_desc.c ****   * @param  speed : Current device speed
 299:Src/usbd_desc.c ****   * @param  length : Pointer to data length variable
 300:Src/usbd_desc.c ****   * @retval Pointer to descriptor buffer
 301:Src/usbd_desc.c ****   */
 302:Src/usbd_desc.c **** uint8_t * USBD_AUDIO_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
 303:Src/usbd_desc.c **** {
 304:Src/usbd_desc.c ****   if(speed == USBD_SPEED_HIGH)
 305:Src/usbd_desc.c ****   {
 306:Src/usbd_desc.c ****     USBD_GetString((uint8_t *)USBD_CONFIGURATION_STRING, USBD_StrDesc, length);
 307:Src/usbd_desc.c ****   }
 308:Src/usbd_desc.c ****   else
 309:Src/usbd_desc.c ****   {
 310:Src/usbd_desc.c ****     USBD_GetString((uint8_t *)USBD_CONFIGURATION_STRING, USBD_StrDesc, length);
ARM GAS  /tmp/ccDO9gP0.s 			page 8


 311:Src/usbd_desc.c ****   }
 312:Src/usbd_desc.c ****   return USBD_StrDesc;
 313:Src/usbd_desc.c **** }
 314:Src/usbd_desc.c **** 
 315:Src/usbd_desc.c **** /**
 316:Src/usbd_desc.c ****   * @brief  Return the interface string descriptor
 317:Src/usbd_desc.c ****   * @param  speed : Current device speed
 318:Src/usbd_desc.c ****   * @param  length : Pointer to data length variable
 319:Src/usbd_desc.c ****   * @retval Pointer to descriptor buffer
 320:Src/usbd_desc.c ****   */
 321:Src/usbd_desc.c **** uint8_t * USBD_AUDIO_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
 322:Src/usbd_desc.c **** {
 323:Src/usbd_desc.c ****   if(speed == 0)
 324:Src/usbd_desc.c ****   {
 325:Src/usbd_desc.c ****     USBD_GetString((uint8_t *)USBD_INTERFACE_STRING, USBD_StrDesc, length);
 326:Src/usbd_desc.c ****   }
 327:Src/usbd_desc.c ****   else
 328:Src/usbd_desc.c ****   {
 329:Src/usbd_desc.c ****     USBD_GetString((uint8_t *)USBD_INTERFACE_STRING, USBD_StrDesc, length);
 330:Src/usbd_desc.c ****   }
 331:Src/usbd_desc.c ****   return USBD_StrDesc;
 332:Src/usbd_desc.c **** }
 333:Src/usbd_desc.c **** 
 334:Src/usbd_desc.c **** /**
 335:Src/usbd_desc.c ****   * @brief  Create the serial number string descriptor
 336:Src/usbd_desc.c ****   * @param  None
 337:Src/usbd_desc.c ****   * @retval None
 338:Src/usbd_desc.c ****   */
 339:Src/usbd_desc.c **** static void Get_SerialNum(void)
 340:Src/usbd_desc.c **** {
 341:Src/usbd_desc.c ****   uint32_t deviceserial0;
 342:Src/usbd_desc.c ****   uint32_t deviceserial1;
 343:Src/usbd_desc.c ****   uint32_t deviceserial2;
 344:Src/usbd_desc.c **** 
 345:Src/usbd_desc.c ****   deviceserial0 = *(uint32_t *) DEVICE_ID1;
 346:Src/usbd_desc.c ****   deviceserial1 = *(uint32_t *) DEVICE_ID2;
 347:Src/usbd_desc.c ****   deviceserial2 = *(uint32_t *) DEVICE_ID3;
 348:Src/usbd_desc.c **** 
 349:Src/usbd_desc.c ****   deviceserial0 += deviceserial2;
 350:Src/usbd_desc.c **** 
 351:Src/usbd_desc.c ****   if (deviceserial0 != 0)
 352:Src/usbd_desc.c ****   {
 353:Src/usbd_desc.c ****     IntToUnicode(deviceserial0, &USBD_StringSerial[2], 8);
 354:Src/usbd_desc.c ****     IntToUnicode(deviceserial1, &USBD_StringSerial[18], 4);
 355:Src/usbd_desc.c ****   }
 356:Src/usbd_desc.c **** }
 357:Src/usbd_desc.c **** 
 358:Src/usbd_desc.c **** /**
 359:Src/usbd_desc.c ****   * @brief  Convert Hex 32Bits value into char
 360:Src/usbd_desc.c ****   * @param  value: value to convert
 361:Src/usbd_desc.c ****   * @param  pbuf: pointer to the buffer
 362:Src/usbd_desc.c ****   * @param  len: buffer length
 363:Src/usbd_desc.c ****   * @retval None
 364:Src/usbd_desc.c ****   */
 365:Src/usbd_desc.c **** static void IntToUnicode(uint32_t value, uint8_t * pbuf, uint8_t len)
 366:Src/usbd_desc.c **** {
  95              		.loc 1 366 1 is_stmt 1 view -0
ARM GAS  /tmp/ccDO9gP0.s 			page 9


  96              		.cfi_startproc
  97              		@ args = 0, pretend = 0, frame = 0
  98              		@ frame_needed = 0, uses_anonymous_args = 0
 367:Src/usbd_desc.c ****   uint8_t idx = 0;
  99              		.loc 1 367 3 view .LVU15
 368:Src/usbd_desc.c **** 
 369:Src/usbd_desc.c ****   for (idx = 0; idx < len; idx++)
 100              		.loc 1 369 3 view .LVU16
 101              		.loc 1 369 12 is_stmt 0 view .LVU17
 102 0000 0023     		movs	r3, #0
 103              	.LVL5:
 104              		.loc 1 369 21 is_stmt 1 view .LVU18
 105 0002 9342     		cmp	r3, r2
 106 0004 1ED2     		bcs	.L15
 366:Src/usbd_desc.c ****   uint8_t idx = 0;
 107              		.loc 1 366 1 is_stmt 0 view .LVU19
 108 0006 00B5     		push	{lr}
 109              	.LCFI0:
 110              		.cfi_def_cfa_offset 4
 111              		.cfi_offset 14, -4
 112 0008 10E0     		b	.L11
 113              	.L9:
 370:Src/usbd_desc.c ****   {
 371:Src/usbd_desc.c ****     if (((value >> 28)) < 0xA)
 372:Src/usbd_desc.c ****     {
 373:Src/usbd_desc.c ****       pbuf[2 * idx] = (value >> 28) + '0';
 374:Src/usbd_desc.c ****     }
 375:Src/usbd_desc.c ****     else
 376:Src/usbd_desc.c ****     {
 377:Src/usbd_desc.c ****       pbuf[2 * idx] = (value >> 28) + 'A' - 10;
 114              		.loc 1 377 7 is_stmt 1 view .LVU20
 115              		.loc 1 377 43 is_stmt 0 view .LVU21
 116 000a 0CF1370C 		add	ip, ip, #55
 117              		.loc 1 377 21 view .LVU22
 118 000e 01F813C0 		strb	ip, [r1, r3, lsl #1]
 119              	.L10:
 378:Src/usbd_desc.c ****     }
 379:Src/usbd_desc.c **** 
 380:Src/usbd_desc.c ****     value = value << 4;
 120              		.loc 1 380 5 is_stmt 1 discriminator 2 view .LVU23
 121              		.loc 1 380 11 is_stmt 0 discriminator 2 view .LVU24
 122 0012 0001     		lsls	r0, r0, #4
 123              	.LVL6:
 381:Src/usbd_desc.c **** 
 382:Src/usbd_desc.c ****     pbuf[2 * idx + 1] = 0;
 124              		.loc 1 382 5 is_stmt 1 discriminator 2 view .LVU25
 125              		.loc 1 382 12 is_stmt 0 discriminator 2 view .LVU26
 126 0014 4FEA430C 		lsl	ip, r3, #1
 127              		.loc 1 382 9 discriminator 2 view .LVU27
 128 0018 0CF1010C 		add	ip, ip, #1
 129              		.loc 1 382 23 discriminator 2 view .LVU28
 130 001c 4FF0000E 		mov	lr, #0
 131 0020 01F80CE0 		strb	lr, [r1, ip]
 369:Src/usbd_desc.c ****   {
 132              		.loc 1 369 31 is_stmt 1 discriminator 2 view .LVU29
 133 0024 0133     		adds	r3, r3, #1
 134              	.LVL7:
ARM GAS  /tmp/ccDO9gP0.s 			page 10


 369:Src/usbd_desc.c ****   {
 135              		.loc 1 369 31 is_stmt 0 discriminator 2 view .LVU30
 136 0026 DBB2     		uxtb	r3, r3
 137              	.LVL8:
 369:Src/usbd_desc.c ****   {
 138              		.loc 1 369 21 is_stmt 1 discriminator 2 view .LVU31
 139 0028 9342     		cmp	r3, r2
 140 002a 09D2     		bcs	.L16
 141              	.L11:
 371:Src/usbd_desc.c ****     {
 142              		.loc 1 371 5 view .LVU32
 371:Src/usbd_desc.c ****     {
 143              		.loc 1 371 17 is_stmt 0 view .LVU33
 144 002c 4FEA107C 		lsr	ip, r0, #28
 371:Src/usbd_desc.c ****     {
 145              		.loc 1 371 8 view .LVU34
 146 0030 B0F1204F 		cmp	r0, #-1610612736
 147 0034 E9D2     		bcs	.L9
 373:Src/usbd_desc.c ****     }
 148              		.loc 1 373 7 is_stmt 1 view .LVU35
 373:Src/usbd_desc.c ****     }
 149              		.loc 1 373 37 is_stmt 0 view .LVU36
 150 0036 0CF1300C 		add	ip, ip, #48
 373:Src/usbd_desc.c ****     }
 151              		.loc 1 373 21 view .LVU37
 152 003a 01F813C0 		strb	ip, [r1, r3, lsl #1]
 153 003e E8E7     		b	.L10
 154              	.L16:
 383:Src/usbd_desc.c ****   }
 384:Src/usbd_desc.c **** }
 155              		.loc 1 384 1 view .LVU38
 156 0040 5DF804FB 		ldr	pc, [sp], #4
 157              	.L15:
 158              	.LCFI1:
 159              		.cfi_def_cfa_offset 0
 160              		.cfi_restore 14
 161              		.loc 1 384 1 view .LVU39
 162 0044 7047     		bx	lr
 163              		.cfi_endproc
 164              	.LFE341:
 166              		.section	.text.Get_SerialNum,"ax",%progbits
 167              		.align	1
 168              		.syntax unified
 169              		.thumb
 170              		.thumb_func
 172              	Get_SerialNum:
 173              	.LFB340:
 340:Src/usbd_desc.c ****   uint32_t deviceserial0;
 174              		.loc 1 340 1 is_stmt 1 view -0
 175              		.cfi_startproc
 176              		@ args = 0, pretend = 0, frame = 0
 177              		@ frame_needed = 0, uses_anonymous_args = 0
 178 0000 38B5     		push	{r3, r4, r5, lr}
 179              	.LCFI2:
 180              		.cfi_def_cfa_offset 16
 181              		.cfi_offset 3, -16
 182              		.cfi_offset 4, -12
ARM GAS  /tmp/ccDO9gP0.s 			page 11


 183              		.cfi_offset 5, -8
 184              		.cfi_offset 14, -4
 341:Src/usbd_desc.c ****   uint32_t deviceserial1;
 185              		.loc 1 341 3 view .LVU41
 342:Src/usbd_desc.c ****   uint32_t deviceserial2;
 186              		.loc 1 342 3 view .LVU42
 343:Src/usbd_desc.c **** 
 187              		.loc 1 343 3 view .LVU43
 345:Src/usbd_desc.c ****   deviceserial1 = *(uint32_t *) DEVICE_ID2;
 188              		.loc 1 345 3 view .LVU44
 345:Src/usbd_desc.c ****   deviceserial1 = *(uint32_t *) DEVICE_ID2;
 189              		.loc 1 345 17 is_stmt 0 view .LVU45
 190 0002 0B4B     		ldr	r3, .L21
 191 0004 D3F89005 		ldr	r0, [r3, #1424]
 192              	.LVL9:
 346:Src/usbd_desc.c ****   deviceserial2 = *(uint32_t *) DEVICE_ID3;
 193              		.loc 1 346 3 is_stmt 1 view .LVU46
 346:Src/usbd_desc.c ****   deviceserial2 = *(uint32_t *) DEVICE_ID3;
 194              		.loc 1 346 17 is_stmt 0 view .LVU47
 195 0008 D3F89445 		ldr	r4, [r3, #1428]
 196              	.LVL10:
 347:Src/usbd_desc.c **** 
 197              		.loc 1 347 3 is_stmt 1 view .LVU48
 347:Src/usbd_desc.c **** 
 198              		.loc 1 347 17 is_stmt 0 view .LVU49
 199 000c D3F89835 		ldr	r3, [r3, #1432]
 200              	.LVL11:
 349:Src/usbd_desc.c **** 
 201              		.loc 1 349 3 is_stmt 1 view .LVU50
 351:Src/usbd_desc.c ****   {
 202              		.loc 1 351 3 view .LVU51
 351:Src/usbd_desc.c ****   {
 203              		.loc 1 351 6 is_stmt 0 view .LVU52
 204 0010 C018     		adds	r0, r0, r3
 205              	.LVL12:
 351:Src/usbd_desc.c ****   {
 206              		.loc 1 351 6 view .LVU53
 207 0012 00D1     		bne	.L20
 208              	.LVL13:
 209              	.L17:
 356:Src/usbd_desc.c **** 
 210              		.loc 1 356 1 view .LVU54
 211 0014 38BD     		pop	{r3, r4, r5, pc}
 212              	.LVL14:
 213              	.L20:
 353:Src/usbd_desc.c ****     IntToUnicode(deviceserial1, &USBD_StringSerial[18], 4);
 214              		.loc 1 353 5 is_stmt 1 view .LVU55
 215 0016 074D     		ldr	r5, .L21+4
 216 0018 0822     		movs	r2, #8
 217 001a 2946     		mov	r1, r5
 218 001c FFF7FEFF 		bl	IntToUnicode
 219              	.LVL15:
 354:Src/usbd_desc.c ****   }
 220              		.loc 1 354 5 view .LVU56
 221 0020 0422     		movs	r2, #4
 222 0022 05F11001 		add	r1, r5, #16
 223 0026 2046     		mov	r0, r4
ARM GAS  /tmp/ccDO9gP0.s 			page 12


 224 0028 FFF7FEFF 		bl	IntToUnicode
 225              	.LVL16:
 356:Src/usbd_desc.c **** 
 226              		.loc 1 356 1 is_stmt 0 view .LVU57
 227 002c F2E7     		b	.L17
 228              	.L22:
 229 002e 00BF     		.align	2
 230              	.L21:
 231 0030 0070FF1F 		.word	536834048
 232 0034 02000000 		.word	USBD_StringSerial+2
 233              		.cfi_endproc
 234              	.LFE340:
 236              		.section	.text.USBD_AUDIO_SerialStrDescriptor,"ax",%progbits
 237              		.align	1
 238              		.global	USBD_AUDIO_SerialStrDescriptor
 239              		.syntax unified
 240              		.thumb
 241              		.thumb_func
 243              	USBD_AUDIO_SerialStrDescriptor:
 244              	.LVL17:
 245              	.LFB337:
 281:Src/usbd_desc.c ****   UNUSED(speed);
 246              		.loc 1 281 1 is_stmt 1 view -0
 247              		.cfi_startproc
 248              		@ args = 0, pretend = 0, frame = 0
 249              		@ frame_needed = 0, uses_anonymous_args = 0
 281:Src/usbd_desc.c ****   UNUSED(speed);
 250              		.loc 1 281 1 is_stmt 0 view .LVU59
 251 0000 08B5     		push	{r3, lr}
 252              	.LCFI3:
 253              		.cfi_def_cfa_offset 8
 254              		.cfi_offset 3, -8
 255              		.cfi_offset 14, -4
 282:Src/usbd_desc.c ****   *length = USB_SIZ_STRING_SERIAL;
 256              		.loc 1 282 3 is_stmt 1 view .LVU60
 283:Src/usbd_desc.c **** 
 257              		.loc 1 283 3 view .LVU61
 283:Src/usbd_desc.c **** 
 258              		.loc 1 283 11 is_stmt 0 view .LVU62
 259 0002 1A23     		movs	r3, #26
 260 0004 0B80     		strh	r3, [r1]	@ movhi
 287:Src/usbd_desc.c **** 
 261              		.loc 1 287 3 is_stmt 1 view .LVU63
 262 0006 FFF7FEFF 		bl	Get_SerialNum
 263              	.LVL18:
 293:Src/usbd_desc.c **** }
 264              		.loc 1 293 3 view .LVU64
 294:Src/usbd_desc.c **** 
 265              		.loc 1 294 1 is_stmt 0 view .LVU65
 266 000a 0148     		ldr	r0, .L25
 267 000c 08BD     		pop	{r3, pc}
 268              	.L26:
 269 000e 00BF     		.align	2
 270              	.L25:
 271 0010 00000000 		.word	USBD_StringSerial
 272              		.cfi_endproc
 273              	.LFE337:
ARM GAS  /tmp/ccDO9gP0.s 			page 13


 275              		.section	.rodata.USBD_AUDIO_ProductStrDescriptor.str1.4,"aMS",%progbits,1
 276              		.align	2
 277              	.LC0:
 278 0000 53544D33 		.ascii	"STM32 Audio Class\000"
 278      32204175 
 278      64696F20 
 278      436C6173 
 278      7300
 279              		.section	.text.USBD_AUDIO_ProductStrDescriptor,"ax",%progbits
 280              		.align	1
 281              		.global	USBD_AUDIO_ProductStrDescriptor
 282              		.syntax unified
 283              		.thumb
 284              		.thumb_func
 286              	USBD_AUDIO_ProductStrDescriptor:
 287              	.LVL19:
 288              	.LFB335:
 249:Src/usbd_desc.c ****   if(speed == 0)
 289              		.loc 1 249 1 is_stmt 1 view -0
 290              		.cfi_startproc
 291              		@ args = 0, pretend = 0, frame = 0
 292              		@ frame_needed = 0, uses_anonymous_args = 0
 249:Src/usbd_desc.c ****   if(speed == 0)
 293              		.loc 1 249 1 is_stmt 0 view .LVU67
 294 0000 08B5     		push	{r3, lr}
 295              	.LCFI4:
 296              		.cfi_def_cfa_offset 8
 297              		.cfi_offset 3, -8
 298              		.cfi_offset 14, -4
 299 0002 0A46     		mov	r2, r1
 250:Src/usbd_desc.c ****   {
 300              		.loc 1 250 3 is_stmt 1 view .LVU68
 250:Src/usbd_desc.c ****   {
 301              		.loc 1 250 5 is_stmt 0 view .LVU69
 302 0004 28B9     		cbnz	r0, .L28
 252:Src/usbd_desc.c ****   }
 303              		.loc 1 252 5 is_stmt 1 view .LVU70
 304 0006 0549     		ldr	r1, .L31
 305              	.LVL20:
 252:Src/usbd_desc.c ****   }
 306              		.loc 1 252 5 is_stmt 0 view .LVU71
 307 0008 0548     		ldr	r0, .L31+4
 308              	.LVL21:
 252:Src/usbd_desc.c ****   }
 309              		.loc 1 252 5 view .LVU72
 310 000a FFF7FEFF 		bl	USBD_GetString
 311              	.LVL22:
 312              	.L29:
 258:Src/usbd_desc.c **** }
 313              		.loc 1 258 3 is_stmt 1 view .LVU73
 259:Src/usbd_desc.c **** 
 314              		.loc 1 259 1 is_stmt 0 view .LVU74
 315 000e 0348     		ldr	r0, .L31
 316 0010 08BD     		pop	{r3, pc}
 317              	.LVL23:
 318              	.L28:
 256:Src/usbd_desc.c ****   }
ARM GAS  /tmp/ccDO9gP0.s 			page 14


 319              		.loc 1 256 5 is_stmt 1 view .LVU75
 320 0012 0249     		ldr	r1, .L31
 321              	.LVL24:
 256:Src/usbd_desc.c ****   }
 322              		.loc 1 256 5 is_stmt 0 view .LVU76
 323 0014 0248     		ldr	r0, .L31+4
 324              	.LVL25:
 256:Src/usbd_desc.c ****   }
 325              		.loc 1 256 5 view .LVU77
 326 0016 FFF7FEFF 		bl	USBD_GetString
 327              	.LVL26:
 256:Src/usbd_desc.c ****   }
 328              		.loc 1 256 5 view .LVU78
 329 001a F8E7     		b	.L29
 330              	.L32:
 331              		.align	2
 332              	.L31:
 333 001c 00000000 		.word	USBD_StrDesc
 334 0020 00000000 		.word	.LC0
 335              		.cfi_endproc
 336              	.LFE335:
 338              		.section	.rodata.USBD_AUDIO_ManufacturerStrDescriptor.str1.4,"aMS",%progbits,1
 339              		.align	2
 340              	.LC1:
 341 0000 53544D69 		.ascii	"STMicroelectronics\000"
 341      63726F65 
 341      6C656374 
 341      726F6E69 
 341      637300
 342              		.section	.text.USBD_AUDIO_ManufacturerStrDescriptor,"ax",%progbits
 343              		.align	1
 344              		.global	USBD_AUDIO_ManufacturerStrDescriptor
 345              		.syntax unified
 346              		.thumb
 347              		.thumb_func
 349              	USBD_AUDIO_ManufacturerStrDescriptor:
 350              	.LVL27:
 351              	.LFB336:
 268:Src/usbd_desc.c ****   UNUSED(speed);
 352              		.loc 1 268 1 is_stmt 1 view -0
 353              		.cfi_startproc
 354              		@ args = 0, pretend = 0, frame = 0
 355              		@ frame_needed = 0, uses_anonymous_args = 0
 268:Src/usbd_desc.c ****   UNUSED(speed);
 356              		.loc 1 268 1 is_stmt 0 view .LVU80
 357 0000 10B5     		push	{r4, lr}
 358              	.LCFI5:
 359              		.cfi_def_cfa_offset 8
 360              		.cfi_offset 4, -8
 361              		.cfi_offset 14, -4
 362 0002 0A46     		mov	r2, r1
 269:Src/usbd_desc.c ****   USBD_GetString((uint8_t *)USBD_MANUFACTURER_STRING, USBD_StrDesc, length);
 363              		.loc 1 269 3 is_stmt 1 view .LVU81
 270:Src/usbd_desc.c ****   return USBD_StrDesc;
 364              		.loc 1 270 3 view .LVU82
 365 0004 034C     		ldr	r4, .L35
 366 0006 2146     		mov	r1, r4
ARM GAS  /tmp/ccDO9gP0.s 			page 15


 367              	.LVL28:
 270:Src/usbd_desc.c ****   return USBD_StrDesc;
 368              		.loc 1 270 3 is_stmt 0 view .LVU83
 369 0008 0348     		ldr	r0, .L35+4
 370              	.LVL29:
 270:Src/usbd_desc.c ****   return USBD_StrDesc;
 371              		.loc 1 270 3 view .LVU84
 372 000a FFF7FEFF 		bl	USBD_GetString
 373              	.LVL30:
 271:Src/usbd_desc.c **** }
 374              		.loc 1 271 3 is_stmt 1 view .LVU85
 272:Src/usbd_desc.c **** 
 375              		.loc 1 272 1 is_stmt 0 view .LVU86
 376 000e 2046     		mov	r0, r4
 377 0010 10BD     		pop	{r4, pc}
 378              	.L36:
 379 0012 00BF     		.align	2
 380              	.L35:
 381 0014 00000000 		.word	USBD_StrDesc
 382 0018 00000000 		.word	.LC1
 383              		.cfi_endproc
 384              	.LFE336:
 386              		.section	.rodata.USBD_AUDIO_ConfigStrDescriptor.str1.4,"aMS",%progbits,1
 387              		.align	2
 388              	.LC2:
 389 0000 41554449 		.ascii	"AUDIO Config\000"
 389      4F20436F 
 389      6E666967 
 389      00
 390              		.section	.text.USBD_AUDIO_ConfigStrDescriptor,"ax",%progbits
 391              		.align	1
 392              		.global	USBD_AUDIO_ConfigStrDescriptor
 393              		.syntax unified
 394              		.thumb
 395              		.thumb_func
 397              	USBD_AUDIO_ConfigStrDescriptor:
 398              	.LVL31:
 399              	.LFB338:
 303:Src/usbd_desc.c ****   if(speed == USBD_SPEED_HIGH)
 400              		.loc 1 303 1 is_stmt 1 view -0
 401              		.cfi_startproc
 402              		@ args = 0, pretend = 0, frame = 0
 403              		@ frame_needed = 0, uses_anonymous_args = 0
 303:Src/usbd_desc.c ****   if(speed == USBD_SPEED_HIGH)
 404              		.loc 1 303 1 is_stmt 0 view .LVU88
 405 0000 08B5     		push	{r3, lr}
 406              	.LCFI6:
 407              		.cfi_def_cfa_offset 8
 408              		.cfi_offset 3, -8
 409              		.cfi_offset 14, -4
 410 0002 0A46     		mov	r2, r1
 304:Src/usbd_desc.c ****   {
 411              		.loc 1 304 3 is_stmt 1 view .LVU89
 304:Src/usbd_desc.c ****   {
 412              		.loc 1 304 5 is_stmt 0 view .LVU90
 413 0004 28B9     		cbnz	r0, .L38
 306:Src/usbd_desc.c ****   }
ARM GAS  /tmp/ccDO9gP0.s 			page 16


 414              		.loc 1 306 5 is_stmt 1 view .LVU91
 415 0006 0549     		ldr	r1, .L41
 416              	.LVL32:
 306:Src/usbd_desc.c ****   }
 417              		.loc 1 306 5 is_stmt 0 view .LVU92
 418 0008 0548     		ldr	r0, .L41+4
 419              	.LVL33:
 306:Src/usbd_desc.c ****   }
 420              		.loc 1 306 5 view .LVU93
 421 000a FFF7FEFF 		bl	USBD_GetString
 422              	.LVL34:
 423              	.L39:
 312:Src/usbd_desc.c **** }
 424              		.loc 1 312 3 is_stmt 1 view .LVU94
 313:Src/usbd_desc.c **** 
 425              		.loc 1 313 1 is_stmt 0 view .LVU95
 426 000e 0348     		ldr	r0, .L41
 427 0010 08BD     		pop	{r3, pc}
 428              	.LVL35:
 429              	.L38:
 310:Src/usbd_desc.c ****   }
 430              		.loc 1 310 5 is_stmt 1 view .LVU96
 431 0012 0249     		ldr	r1, .L41
 432              	.LVL36:
 310:Src/usbd_desc.c ****   }
 433              		.loc 1 310 5 is_stmt 0 view .LVU97
 434 0014 0248     		ldr	r0, .L41+4
 435              	.LVL37:
 310:Src/usbd_desc.c ****   }
 436              		.loc 1 310 5 view .LVU98
 437 0016 FFF7FEFF 		bl	USBD_GetString
 438              	.LVL38:
 310:Src/usbd_desc.c ****   }
 439              		.loc 1 310 5 view .LVU99
 440 001a F8E7     		b	.L39
 441              	.L42:
 442              		.align	2
 443              	.L41:
 444 001c 00000000 		.word	USBD_StrDesc
 445 0020 00000000 		.word	.LC2
 446              		.cfi_endproc
 447              	.LFE338:
 449              		.section	.rodata.USBD_AUDIO_InterfaceStrDescriptor.str1.4,"aMS",%progbits,1
 450              		.align	2
 451              	.LC3:
 452 0000 41554449 		.ascii	"AUDIO Interface\000"
 452      4F20496E 
 452      74657266 
 452      61636500 
 453              		.section	.text.USBD_AUDIO_InterfaceStrDescriptor,"ax",%progbits
 454              		.align	1
 455              		.global	USBD_AUDIO_InterfaceStrDescriptor
 456              		.syntax unified
 457              		.thumb
 458              		.thumb_func
 460              	USBD_AUDIO_InterfaceStrDescriptor:
 461              	.LVL39:
ARM GAS  /tmp/ccDO9gP0.s 			page 17


 462              	.LFB339:
 322:Src/usbd_desc.c ****   if(speed == 0)
 463              		.loc 1 322 1 is_stmt 1 view -0
 464              		.cfi_startproc
 465              		@ args = 0, pretend = 0, frame = 0
 466              		@ frame_needed = 0, uses_anonymous_args = 0
 322:Src/usbd_desc.c ****   if(speed == 0)
 467              		.loc 1 322 1 is_stmt 0 view .LVU101
 468 0000 08B5     		push	{r3, lr}
 469              	.LCFI7:
 470              		.cfi_def_cfa_offset 8
 471              		.cfi_offset 3, -8
 472              		.cfi_offset 14, -4
 473 0002 0A46     		mov	r2, r1
 323:Src/usbd_desc.c ****   {
 474              		.loc 1 323 3 is_stmt 1 view .LVU102
 323:Src/usbd_desc.c ****   {
 475              		.loc 1 323 5 is_stmt 0 view .LVU103
 476 0004 28B9     		cbnz	r0, .L44
 325:Src/usbd_desc.c ****   }
 477              		.loc 1 325 5 is_stmt 1 view .LVU104
 478 0006 0549     		ldr	r1, .L47
 479              	.LVL40:
 325:Src/usbd_desc.c ****   }
 480              		.loc 1 325 5 is_stmt 0 view .LVU105
 481 0008 0548     		ldr	r0, .L47+4
 482              	.LVL41:
 325:Src/usbd_desc.c ****   }
 483              		.loc 1 325 5 view .LVU106
 484 000a FFF7FEFF 		bl	USBD_GetString
 485              	.LVL42:
 486              	.L45:
 331:Src/usbd_desc.c **** }
 487              		.loc 1 331 3 is_stmt 1 view .LVU107
 332:Src/usbd_desc.c **** 
 488              		.loc 1 332 1 is_stmt 0 view .LVU108
 489 000e 0348     		ldr	r0, .L47
 490 0010 08BD     		pop	{r3, pc}
 491              	.LVL43:
 492              	.L44:
 329:Src/usbd_desc.c ****   }
 493              		.loc 1 329 5 is_stmt 1 view .LVU109
 494 0012 0249     		ldr	r1, .L47
 495              	.LVL44:
 329:Src/usbd_desc.c ****   }
 496              		.loc 1 329 5 is_stmt 0 view .LVU110
 497 0014 0248     		ldr	r0, .L47+4
 498              	.LVL45:
 329:Src/usbd_desc.c ****   }
 499              		.loc 1 329 5 view .LVU111
 500 0016 FFF7FEFF 		bl	USBD_GetString
 501              	.LVL46:
 329:Src/usbd_desc.c ****   }
 502              		.loc 1 329 5 view .LVU112
 503 001a F8E7     		b	.L45
 504              	.L48:
 505              		.align	2
ARM GAS  /tmp/ccDO9gP0.s 			page 18


 506              	.L47:
 507 001c 00000000 		.word	USBD_StrDesc
 508 0020 00000000 		.word	.LC3
 509              		.cfi_endproc
 510              	.LFE339:
 512              		.global	USBD_StringSerial
 513              		.section	.data.USBD_StringSerial,"aw"
 514              		.align	2
 517              	USBD_StringSerial:
 518 0000 1A0300   		.ascii	"\032\003\000"
 519 0003 00000000 		.space	23
 519      00000000 
 519      00000000 
 519      00000000 
 519      00000000 
 520              		.global	USBD_StrDesc
 521              		.section	.bss.USBD_StrDesc,"aw",%nobits
 522              		.align	2
 525              	USBD_StrDesc:
 526 0000 00000000 		.space	512
 526      00000000 
 526      00000000 
 526      00000000 
 526      00000000 
 527              		.global	USBD_LangIDDesc
 528              		.section	.data.USBD_LangIDDesc,"aw"
 529              		.align	2
 532              	USBD_LangIDDesc:
 533 0000 04030904 		.ascii	"\004\003\011\004"
 534              		.global	USBD_AUDIO_DeviceDesc
 535              		.section	.data.USBD_AUDIO_DeviceDesc,"aw"
 536              		.align	2
 539              	USBD_AUDIO_DeviceDesc:
 540 0000 12010002 		.ascii	"\022\001\000\002\000\000\000@\203\004@W\000\002\001"
 540      00000040 
 540      83044057 
 540      000201
 541 000f 020301   		.ascii	"\002\003\001"
 542              		.global	AUDIO_Desc
 543              		.section	.data.AUDIO_Desc,"aw"
 544              		.align	2
 547              	AUDIO_Desc:
 548 0000 00000000 		.word	USBD_AUDIO_DeviceDescriptor
 549 0004 00000000 		.word	USBD_AUDIO_LangIDStrDescriptor
 550 0008 00000000 		.word	USBD_AUDIO_ManufacturerStrDescriptor
 551 000c 00000000 		.word	USBD_AUDIO_ProductStrDescriptor
 552 0010 00000000 		.word	USBD_AUDIO_SerialStrDescriptor
 553 0014 00000000 		.word	USBD_AUDIO_ConfigStrDescriptor
 554 0018 00000000 		.word	USBD_AUDIO_InterfaceStrDescriptor
 555 001c 00000000 		.space	4
 556              		.text
 557              	.Letext0:
 558              		.file 2 "/usr/include/newlib/machine/_default_types.h"
 559              		.file 3 "/usr/include/newlib/sys/_stdint.h"
 560              		.file 4 "Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h"
 561              		.file 5 "Inc/usbd_desc.h"
 562              		.file 6 "Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h"
ARM GAS  /tmp/ccDO9gP0.s 			page 19


ARM GAS  /tmp/ccDO9gP0.s 			page 20


DEFINED SYMBOLS
                            *ABS*:00000000 usbd_desc.c
     /tmp/ccDO9gP0.s:21     .text.USBD_AUDIO_DeviceDescriptor:00000000 $t
     /tmp/ccDO9gP0.s:27     .text.USBD_AUDIO_DeviceDescriptor:00000000 USBD_AUDIO_DeviceDescriptor
     /tmp/ccDO9gP0.s:49     .text.USBD_AUDIO_DeviceDescriptor:00000008 $d
     /tmp/ccDO9gP0.s:539    .data.USBD_AUDIO_DeviceDesc:00000000 USBD_AUDIO_DeviceDesc
     /tmp/ccDO9gP0.s:54     .text.USBD_AUDIO_LangIDStrDescriptor:00000000 $t
     /tmp/ccDO9gP0.s:60     .text.USBD_AUDIO_LangIDStrDescriptor:00000000 USBD_AUDIO_LangIDStrDescriptor
     /tmp/ccDO9gP0.s:82     .text.USBD_AUDIO_LangIDStrDescriptor:00000008 $d
     /tmp/ccDO9gP0.s:532    .data.USBD_LangIDDesc:00000000 USBD_LangIDDesc
     /tmp/ccDO9gP0.s:87     .text.IntToUnicode:00000000 $t
     /tmp/ccDO9gP0.s:92     .text.IntToUnicode:00000000 IntToUnicode
     /tmp/ccDO9gP0.s:167    .text.Get_SerialNum:00000000 $t
     /tmp/ccDO9gP0.s:172    .text.Get_SerialNum:00000000 Get_SerialNum
     /tmp/ccDO9gP0.s:231    .text.Get_SerialNum:00000030 $d
     /tmp/ccDO9gP0.s:517    .data.USBD_StringSerial:00000000 USBD_StringSerial
     /tmp/ccDO9gP0.s:237    .text.USBD_AUDIO_SerialStrDescriptor:00000000 $t
     /tmp/ccDO9gP0.s:243    .text.USBD_AUDIO_SerialStrDescriptor:00000000 USBD_AUDIO_SerialStrDescriptor
     /tmp/ccDO9gP0.s:271    .text.USBD_AUDIO_SerialStrDescriptor:00000010 $d
     /tmp/ccDO9gP0.s:276    .rodata.USBD_AUDIO_ProductStrDescriptor.str1.4:00000000 $d
     /tmp/ccDO9gP0.s:280    .text.USBD_AUDIO_ProductStrDescriptor:00000000 $t
     /tmp/ccDO9gP0.s:286    .text.USBD_AUDIO_ProductStrDescriptor:00000000 USBD_AUDIO_ProductStrDescriptor
     /tmp/ccDO9gP0.s:333    .text.USBD_AUDIO_ProductStrDescriptor:0000001c $d
     /tmp/ccDO9gP0.s:525    .bss.USBD_StrDesc:00000000 USBD_StrDesc
     /tmp/ccDO9gP0.s:339    .rodata.USBD_AUDIO_ManufacturerStrDescriptor.str1.4:00000000 $d
     /tmp/ccDO9gP0.s:343    .text.USBD_AUDIO_ManufacturerStrDescriptor:00000000 $t
     /tmp/ccDO9gP0.s:349    .text.USBD_AUDIO_ManufacturerStrDescriptor:00000000 USBD_AUDIO_ManufacturerStrDescriptor
     /tmp/ccDO9gP0.s:381    .text.USBD_AUDIO_ManufacturerStrDescriptor:00000014 $d
     /tmp/ccDO9gP0.s:387    .rodata.USBD_AUDIO_ConfigStrDescriptor.str1.4:00000000 $d
     /tmp/ccDO9gP0.s:391    .text.USBD_AUDIO_ConfigStrDescriptor:00000000 $t
     /tmp/ccDO9gP0.s:397    .text.USBD_AUDIO_ConfigStrDescriptor:00000000 USBD_AUDIO_ConfigStrDescriptor
     /tmp/ccDO9gP0.s:444    .text.USBD_AUDIO_ConfigStrDescriptor:0000001c $d
     /tmp/ccDO9gP0.s:450    .rodata.USBD_AUDIO_InterfaceStrDescriptor.str1.4:00000000 $d
     /tmp/ccDO9gP0.s:454    .text.USBD_AUDIO_InterfaceStrDescriptor:00000000 $t
     /tmp/ccDO9gP0.s:460    .text.USBD_AUDIO_InterfaceStrDescriptor:00000000 USBD_AUDIO_InterfaceStrDescriptor
     /tmp/ccDO9gP0.s:507    .text.USBD_AUDIO_InterfaceStrDescriptor:0000001c $d
     /tmp/ccDO9gP0.s:514    .data.USBD_StringSerial:00000000 $d
     /tmp/ccDO9gP0.s:522    .bss.USBD_StrDesc:00000000 $d
     /tmp/ccDO9gP0.s:529    .data.USBD_LangIDDesc:00000000 $d
     /tmp/ccDO9gP0.s:536    .data.USBD_AUDIO_DeviceDesc:00000000 $d
     /tmp/ccDO9gP0.s:547    .data.AUDIO_Desc:00000000 AUDIO_Desc
     /tmp/ccDO9gP0.s:544    .data.AUDIO_Desc:00000000 $d

UNDEFINED SYMBOLS
USBD_GetString
