diff --git a/.cproject b/.cproject
new file mode 100644
index 0000000..ed0a92a
--- /dev/null
+++ b/.cproject
@@ -0,0 +1,240 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.mxproject b/.mxproject
new file mode 100644
index 0000000..687b48f
--- /dev/null
+++ b/.mxproject
@@ -0,0 +1,14 @@
+[PreviousGenFiles]
+HeaderPath=/home/vladimir/Desktop/STM32Display/Inc
+HeaderFiles=FreeRTOSConfig.h;usb_device.h;usbd_conf.h;usbd_desc.h;usbd_cdc_if.h;stm32f1xx_it.h;stm32f1xx_hal_conf.h;main.h;
+SourcePath=/home/vladimir/Desktop/STM32Display/Src
+SourceFiles=freertos.c;usb_device.c;usbd_conf.c;usbd_desc.c;usbd_cdc_if.c;stm32f1xx_it.c;stm32f1xx_hal_msp.c;main.c;
+
+[PreviousLibFiles]
+LibFiles=Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rtc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rtc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h;Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h;Middlewares/Third_Party/FreeRTOS/Source/include/croutine.h;Middlewares/Third_Party/FreeRTOS/Source/include/deprecated_definitions.h;Middlewares/Third_Party/FreeRTOS/Source/include/event_groups.h;Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h;Middlewares/Third_Party/FreeRTOS/Source/include/list.h;Middlewares/Third_Party/FreeRTOS/Source/include/message_buffer.h;Middlewares/Third_Party/FreeRTOS/Source/include/mpu_prototypes.h;Middlewares/Third_Party/FreeRTOS/Source/include/mpu_wrappers.h;Middlewares/Third_Party/FreeRTOS/Source/include/portable.h;Middlewares/Third_Party/FreeRTOS/Source/include/projdefs.h;Middlewares/Third_Party/FreeRTOS/Source/include/queue.h;Middlewares/Third_Party/FreeRTOS/Source/include/semphr.h;Middlewares/Third_Party/FreeRTOS/Source/include/stack_macros.h;Middlewares/Third_Party/FreeRTOS/Source/include/StackMacros.h;Middlewares/Third_Party/FreeRTOS/Source/include/stream_buffer.h;Middlewares/Third_Party/FreeRTOS/Source/include/task.h;Middlewares/Third_Party/FreeRTOS/Source/include/timers.h;Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.h;Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3/portmacro.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h;Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c;Middlewares/Third_Party/FreeRTOS/Source/croutine.c;Middlewares/Third_Party/FreeRTOS/Source/event_groups.c;Middlewares/Third_Party/FreeRTOS/Source/list.c;Middlewares/Third_Party/FreeRTOS/Source/queue.c;Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c;Middlewares/Third_Party/FreeRTOS/Source/tasks.c;Middlewares/Third_Party/FreeRTOS/Source/timers.c;Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.c;Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c;Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3/port.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rtc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rtc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h;Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h;Middlewares/Third_Party/FreeRTOS/Source/include/croutine.h;Middlewares/Third_Party/FreeRTOS/Source/include/deprecated_definitions.h;Middlewares/Third_Party/FreeRTOS/Source/include/event_groups.h;Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h;Middlewares/Third_Party/FreeRTOS/Source/include/list.h;Middlewares/Third_Party/FreeRTOS/Source/include/message_buffer.h;Middlewares/Third_Party/FreeRTOS/Source/include/mpu_prototypes.h;Middlewares/Third_Party/FreeRTOS/Source/include/mpu_wrappers.h;Middlewares/Third_Party/FreeRTOS/Source/include/portable.h;Middlewares/Third_Party/FreeRTOS/Source/include/projdefs.h;Middlewares/Third_Party/FreeRTOS/Source/include/queue.h;Middlewares/Third_Party/FreeRTOS/Source/include/semphr.h;Middlewares/Third_Party/FreeRTOS/Source/include/stack_macros.h;Middlewares/Third_Party/FreeRTOS/Source/include/StackMacros.h;Middlewares/Third_Party/FreeRTOS/Source/include/stream_buffer.h;Middlewares/Third_Party/FreeRTOS/Source/include/task.h;Middlewares/Third_Party/FreeRTOS/Source/include/timers.h;Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.h;Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3/portmacro.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h;Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h;Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/system_stm32f1xx.c;Drivers/CMSIS/Include/mpu_armv8.h;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/cmsis_version.h;Drivers/CMSIS/Include/core_cm1.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/cmsis_iccarm.h;Drivers/CMSIS/Include/mpu_armv7.h;Drivers/CMSIS/Include/core_cm33.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/core_armv8mbl.h;Drivers/CMSIS/Include/tz_context.h;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/core_cm23.h;Drivers/CMSIS/Include/cmsis_compiler.h;Drivers/CMSIS/Include/cmsis_armclang.h;Drivers/CMSIS/Include/core_armv8mml.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/core_sc300.h;Drivers/CMSIS/Include/core_cm7.h;
+
+[PreviousUsedCubeIDEFiles]
+SourceFiles=Src/main.c;Src/freertos.c;Src/usb_device.c;Src/usbd_conf.c;Src/usbd_desc.c;Src/usbd_cdc_if.c;Src/stm32f1xx_it.c;Src/stm32f1xx_hal_msp.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c;Middlewares/Third_Party/FreeRTOS/Source/croutine.c;Middlewares/Third_Party/FreeRTOS/Source/event_groups.c;Middlewares/Third_Party/FreeRTOS/Source/list.c;Middlewares/Third_Party/FreeRTOS/Source/queue.c;Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c;Middlewares/Third_Party/FreeRTOS/Source/tasks.c;Middlewares/Third_Party/FreeRTOS/Source/timers.c;Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.c;Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c;Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3/port.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;Src/system_stm32f1xx.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c;Middlewares/Third_Party/FreeRTOS/Source/croutine.c;Middlewares/Third_Party/FreeRTOS/Source/event_groups.c;Middlewares/Third_Party/FreeRTOS/Source/list.c;Middlewares/Third_Party/FreeRTOS/Source/queue.c;Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c;Middlewares/Third_Party/FreeRTOS/Source/tasks.c;Middlewares/Third_Party/FreeRTOS/Source/timers.c;Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.c;Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c;Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3/port.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;Src/system_stm32f1xx.c;Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/system_stm32f1xx.c;null;Middlewares/Third_Party/FreeRTOS/Source/croutine.c;Middlewares/Third_Party/FreeRTOS/Source/event_groups.c;Middlewares/Third_Party/FreeRTOS/Source/list.c;Middlewares/Third_Party/FreeRTOS/Source/queue.c;Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c;Middlewares/Third_Party/FreeRTOS/Source/tasks.c;Middlewares/Third_Party/FreeRTOS/Source/timers.c;Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.c;Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c;Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3/port.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c;
+HeaderPath=Drivers/STM32F1xx_HAL_Driver/Inc;Drivers/STM32F1xx_HAL_Driver/Inc/Legacy;Middlewares/Third_Party/FreeRTOS/Source/include;Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS;Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3;Middlewares/ST/STM32_USB_Device_Library/Core/Inc;Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc;Drivers/CMSIS/Device/ST/STM32F1xx/Include;Drivers/CMSIS/Include;Inc;
+CDefines=USE_HAL_DRIVER;STM32F103xB;USE_HAL_DRIVER;STM32F103xB;
+
diff --git a/.project b/.project
new file mode 100644
index 0000000..972ae3a
--- /dev/null
+++ b/.project
@@ -0,0 +1,30 @@
+
+
+ STM32Display
+
+
+
+
+
+ org.eclipse.cdt.managedbuilder.core.genmakebuilder
+ clean,full,incremental,
+
+
+
+
+ org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder
+ full,incremental,
+
+
+
+
+
+ com.st.stm32cube.ide.mcu.MCUProjectNature
+ org.eclipse.cdt.core.cnature
+ com.st.stm32cube.ide.mcu.MCUCubeIdeServicesRevAProjectNature
+ com.st.stm32cube.ide.mcu.MCUCubeProjectNature
+ com.st.stm32cube.ide.mcu.MCUSingleCpuProjectNature
+ org.eclipse.cdt.managedbuilder.core.managedBuildNature
+ org.eclipse.cdt.managedbuilder.core.ScannerConfigNature
+
+
diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml
new file mode 100644
index 0000000..343c349
--- /dev/null
+++ b/.settings/language.settings.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Debug/Drivers/STM32F1xx_HAL_Driver/Src/subdir.mk b/Debug/Drivers/STM32F1xx_HAL_Driver/Src/subdir.mk
new file mode 100644
index 0000000..bc7e097
--- /dev/null
+++ b/Debug/Drivers/STM32F1xx_HAL_Driver/Src/subdir.mk
@@ -0,0 +1,119 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc_ex.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c
+
+OBJS += \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc_ex.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o
+
+C_DEPS += \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc_ex.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o: ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o: ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o: ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o: ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o: ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o: ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o: ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o: ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o: ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o: ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc.o: ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc_ex.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc_ex.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi.o: ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o: ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o: ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o: ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+
diff --git a/Debug/Drivers/ili9341/subdir.mk b/Debug/Drivers/ili9341/subdir.mk
new file mode 100644
index 0000000..f06e852
--- /dev/null
+++ b/Debug/Drivers/ili9341/subdir.mk
@@ -0,0 +1,29 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../Drivers/ili9341/fonts.c \
+../Drivers/ili9341/ili9341.c \
+../Drivers/ili9341/ili9341_touch.c
+
+OBJS += \
+./Drivers/ili9341/fonts.o \
+./Drivers/ili9341/ili9341.o \
+./Drivers/ili9341/ili9341_touch.o
+
+C_DEPS += \
+./Drivers/ili9341/fonts.d \
+./Drivers/ili9341/ili9341.d \
+./Drivers/ili9341/ili9341_touch.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+Drivers/ili9341/fonts.o: ../Drivers/ili9341/fonts.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -I../Drivers/ili9341 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/ili9341/fonts.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+Drivers/ili9341/ili9341.o: ../Drivers/ili9341/ili9341.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -I../Drivers/ili9341 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/ili9341/ili9341.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+Drivers/ili9341/ili9341_touch.o: ../Drivers/ili9341/ili9341_touch.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -I../Drivers/ili9341 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/ili9341/ili9341_touch.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+
diff --git a/Debug/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/subdir.mk b/Debug/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/subdir.mk
new file mode 100644
index 0000000..424cd4e
--- /dev/null
+++ b/Debug/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/subdir.mk
@@ -0,0 +1,19 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c
+
+OBJS += \
+./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o
+
+C_DEPS += \
+./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o: ../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+
diff --git a/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/subdir.mk b/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/subdir.mk
new file mode 100644
index 0000000..24b5075
--- /dev/null
+++ b/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/subdir.mk
@@ -0,0 +1,29 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c \
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c \
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c
+
+OBJS += \
+./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o \
+./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o \
+./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+
+C_DEPS += \
+./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.d \
+./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.d \
+./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o: ../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o: ../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o: ../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+
diff --git a/Debug/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/subdir.mk b/Debug/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/subdir.mk
new file mode 100644
index 0000000..848d2a1
--- /dev/null
+++ b/Debug/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/subdir.mk
@@ -0,0 +1,19 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.c
+
+OBJS += \
+./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o
+
+C_DEPS += \
+./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o: ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+
diff --git a/Debug/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3/subdir.mk b/Debug/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3/subdir.mk
new file mode 100644
index 0000000..f5975c2
--- /dev/null
+++ b/Debug/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3/subdir.mk
@@ -0,0 +1,19 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3/port.c
+
+OBJS += \
+./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3/port.o
+
+C_DEPS += \
+./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3/port.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3/port.o: ../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3/port.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3/port.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+
diff --git a/Debug/Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/subdir.mk b/Debug/Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/subdir.mk
new file mode 100644
index 0000000..435e93f
--- /dev/null
+++ b/Debug/Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/subdir.mk
@@ -0,0 +1,19 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c
+
+OBJS += \
+./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o
+
+C_DEPS += \
+./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o: ../Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+
diff --git a/Debug/Middlewares/Third_Party/FreeRTOS/Source/subdir.mk b/Debug/Middlewares/Third_Party/FreeRTOS/Source/subdir.mk
new file mode 100644
index 0000000..075341f
--- /dev/null
+++ b/Debug/Middlewares/Third_Party/FreeRTOS/Source/subdir.mk
@@ -0,0 +1,49 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../Middlewares/Third_Party/FreeRTOS/Source/croutine.c \
+../Middlewares/Third_Party/FreeRTOS/Source/event_groups.c \
+../Middlewares/Third_Party/FreeRTOS/Source/list.c \
+../Middlewares/Third_Party/FreeRTOS/Source/queue.c \
+../Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c \
+../Middlewares/Third_Party/FreeRTOS/Source/tasks.c \
+../Middlewares/Third_Party/FreeRTOS/Source/timers.c
+
+OBJS += \
+./Middlewares/Third_Party/FreeRTOS/Source/croutine.o \
+./Middlewares/Third_Party/FreeRTOS/Source/event_groups.o \
+./Middlewares/Third_Party/FreeRTOS/Source/list.o \
+./Middlewares/Third_Party/FreeRTOS/Source/queue.o \
+./Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.o \
+./Middlewares/Third_Party/FreeRTOS/Source/tasks.o \
+./Middlewares/Third_Party/FreeRTOS/Source/timers.o
+
+C_DEPS += \
+./Middlewares/Third_Party/FreeRTOS/Source/croutine.d \
+./Middlewares/Third_Party/FreeRTOS/Source/event_groups.d \
+./Middlewares/Third_Party/FreeRTOS/Source/list.d \
+./Middlewares/Third_Party/FreeRTOS/Source/queue.d \
+./Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.d \
+./Middlewares/Third_Party/FreeRTOS/Source/tasks.d \
+./Middlewares/Third_Party/FreeRTOS/Source/timers.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+Middlewares/Third_Party/FreeRTOS/Source/croutine.o: ../Middlewares/Third_Party/FreeRTOS/Source/croutine.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Middlewares/Third_Party/FreeRTOS/Source/croutine.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+Middlewares/Third_Party/FreeRTOS/Source/event_groups.o: ../Middlewares/Third_Party/FreeRTOS/Source/event_groups.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Middlewares/Third_Party/FreeRTOS/Source/event_groups.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+Middlewares/Third_Party/FreeRTOS/Source/list.o: ../Middlewares/Third_Party/FreeRTOS/Source/list.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Middlewares/Third_Party/FreeRTOS/Source/list.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+Middlewares/Third_Party/FreeRTOS/Source/queue.o: ../Middlewares/Third_Party/FreeRTOS/Source/queue.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Middlewares/Third_Party/FreeRTOS/Source/queue.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.o: ../Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+Middlewares/Third_Party/FreeRTOS/Source/tasks.o: ../Middlewares/Third_Party/FreeRTOS/Source/tasks.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Middlewares/Third_Party/FreeRTOS/Source/tasks.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+Middlewares/Third_Party/FreeRTOS/Source/timers.o: ../Middlewares/Third_Party/FreeRTOS/Source/timers.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/ili9341 -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Middlewares/Third_Party/FreeRTOS/Source/timers.d" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+
diff --git a/Debug/STM32Display.list b/Debug/STM32Display.list
new file mode 100644
index 0000000..046fe1d
--- /dev/null
+++ b/Debug/STM32Display.list
@@ -0,0 +1,30363 @@
+
+STM32Display.elf: file format elf32-littlearm
+
+Sections:
+Idx Name Size VMA LMA File off Algn
+ 0 .isr_vector 0000010c 08000000 08000000 00010000 2**0
+ CONTENTS, ALLOC, LOAD, READONLY, DATA
+ 1 .text 0000c530 08000110 08000110 00010110 2**4
+ CONTENTS, ALLOC, LOAD, READONLY, CODE
+ 2 .rodata 00002bf0 0800c640 0800c640 0001c640 2**3
+ CONTENTS, ALLOC, LOAD, READONLY, DATA
+ 3 .ARM.extab 00000000 0800f230 0800f230 00020208 2**0
+ CONTENTS
+ 4 .ARM 00000000 0800f230 0800f230 00020208 2**0
+ CONTENTS
+ 5 .preinit_array 00000000 0800f230 0800f230 00020208 2**0
+ CONTENTS, ALLOC, LOAD, DATA
+ 6 .init_array 00000004 0800f230 0800f230 0001f230 2**2
+ CONTENTS, ALLOC, LOAD, DATA
+ 7 .fini_array 00000004 0800f234 0800f234 0001f234 2**2
+ CONTENTS, ALLOC, LOAD, DATA
+ 8 .data 00000208 20000000 0800f238 00020000 2**2
+ CONTENTS, ALLOC, LOAD, DATA
+ 9 .bss 0000203c 20000208 0800f440 00020208 2**2
+ ALLOC
+ 10 ._user_heap_stack 00000604 20002244 0800f440 00022244 2**0
+ ALLOC
+ 11 .ARM.attributes 00000029 00000000 00000000 00020208 2**0
+ CONTENTS, READONLY
+ 12 .debug_info 00023c66 00000000 00000000 00020231 2**0
+ CONTENTS, READONLY, DEBUGGING
+ 13 .debug_abbrev 00004e05 00000000 00000000 00043e97 2**0
+ CONTENTS, READONLY, DEBUGGING
+ 14 .debug_aranges 00001da0 00000000 00000000 00048ca0 2**3
+ CONTENTS, READONLY, DEBUGGING
+ 15 .debug_ranges 00001b88 00000000 00000000 0004aa40 2**3
+ CONTENTS, READONLY, DEBUGGING
+ 16 .debug_macro 0001aea4 00000000 00000000 0004c5c8 2**0
+ CONTENTS, READONLY, DEBUGGING
+ 17 .debug_line 00018337 00000000 00000000 0006746c 2**0
+ CONTENTS, READONLY, DEBUGGING
+ 18 .debug_str 00085fd5 00000000 00000000 0007f7a3 2**0
+ CONTENTS, READONLY, DEBUGGING
+ 19 .comment 0000007b 00000000 00000000 00105778 2**0
+ CONTENTS, READONLY
+ 20 .debug_frame 000084e8 00000000 00000000 001057f4 2**2
+ CONTENTS, READONLY, DEBUGGING
+
+Disassembly of section .text:
+
+08000110 <__do_global_dtors_aux>:
+ 8000110: b510 push {r4, lr}
+ 8000112: 4c05 ldr r4, [pc, #20] ; (8000128 <__do_global_dtors_aux+0x18>)
+ 8000114: 7823 ldrb r3, [r4, #0]
+ 8000116: b933 cbnz r3, 8000126 <__do_global_dtors_aux+0x16>
+ 8000118: 4b04 ldr r3, [pc, #16] ; (800012c <__do_global_dtors_aux+0x1c>)
+ 800011a: b113 cbz r3, 8000122 <__do_global_dtors_aux+0x12>
+ 800011c: 4804 ldr r0, [pc, #16] ; (8000130 <__do_global_dtors_aux+0x20>)
+ 800011e: f3af 8000 nop.w
+ 8000122: 2301 movs r3, #1
+ 8000124: 7023 strb r3, [r4, #0]
+ 8000126: bd10 pop {r4, pc}
+ 8000128: 20000208 .word 0x20000208
+ 800012c: 00000000 .word 0x00000000
+ 8000130: 0800c628 .word 0x0800c628
+
+08000134 :
+ 8000134: b508 push {r3, lr}
+ 8000136: 4b03 ldr r3, [pc, #12] ; (8000144 )
+ 8000138: b11b cbz r3, 8000142
+ 800013a: 4903 ldr r1, [pc, #12] ; (8000148 )
+ 800013c: 4803 ldr r0, [pc, #12] ; (800014c )
+ 800013e: f3af 8000 nop.w
+ 8000142: bd08 pop {r3, pc}
+ 8000144: 00000000 .word 0x00000000
+ 8000148: 2000020c .word 0x2000020c
+ 800014c: 0800c628 .word 0x0800c628
+
+08000150 <__aeabi_drsub>:
+ 8000150: f081 4100 eor.w r1, r1, #2147483648 ; 0x80000000
+ 8000154: e002 b.n 800015c <__adddf3>
+ 8000156: bf00 nop
+
+08000158 <__aeabi_dsub>:
+ 8000158: f083 4300 eor.w r3, r3, #2147483648 ; 0x80000000
+
+0800015c <__adddf3>:
+ 800015c: b530 push {r4, r5, lr}
+ 800015e: ea4f 0441 mov.w r4, r1, lsl #1
+ 8000162: ea4f 0543 mov.w r5, r3, lsl #1
+ 8000166: ea94 0f05 teq r4, r5
+ 800016a: bf08 it eq
+ 800016c: ea90 0f02 teqeq r0, r2
+ 8000170: bf1f itttt ne
+ 8000172: ea54 0c00 orrsne.w ip, r4, r0
+ 8000176: ea55 0c02 orrsne.w ip, r5, r2
+ 800017a: ea7f 5c64 mvnsne.w ip, r4, asr #21
+ 800017e: ea7f 5c65 mvnsne.w ip, r5, asr #21
+ 8000182: f000 80e2 beq.w 800034a <__adddf3+0x1ee>
+ 8000186: ea4f 5454 mov.w r4, r4, lsr #21
+ 800018a: ebd4 5555 rsbs r5, r4, r5, lsr #21
+ 800018e: bfb8 it lt
+ 8000190: 426d neglt r5, r5
+ 8000192: dd0c ble.n 80001ae <__adddf3+0x52>
+ 8000194: 442c add r4, r5
+ 8000196: ea80 0202 eor.w r2, r0, r2
+ 800019a: ea81 0303 eor.w r3, r1, r3
+ 800019e: ea82 0000 eor.w r0, r2, r0
+ 80001a2: ea83 0101 eor.w r1, r3, r1
+ 80001a6: ea80 0202 eor.w r2, r0, r2
+ 80001aa: ea81 0303 eor.w r3, r1, r3
+ 80001ae: 2d36 cmp r5, #54 ; 0x36
+ 80001b0: bf88 it hi
+ 80001b2: bd30 pophi {r4, r5, pc}
+ 80001b4: f011 4f00 tst.w r1, #2147483648 ; 0x80000000
+ 80001b8: ea4f 3101 mov.w r1, r1, lsl #12
+ 80001bc: f44f 1c80 mov.w ip, #1048576 ; 0x100000
+ 80001c0: ea4c 3111 orr.w r1, ip, r1, lsr #12
+ 80001c4: d002 beq.n 80001cc <__adddf3+0x70>
+ 80001c6: 4240 negs r0, r0
+ 80001c8: eb61 0141 sbc.w r1, r1, r1, lsl #1
+ 80001cc: f013 4f00 tst.w r3, #2147483648 ; 0x80000000
+ 80001d0: ea4f 3303 mov.w r3, r3, lsl #12
+ 80001d4: ea4c 3313 orr.w r3, ip, r3, lsr #12
+ 80001d8: d002 beq.n 80001e0 <__adddf3+0x84>
+ 80001da: 4252 negs r2, r2
+ 80001dc: eb63 0343 sbc.w r3, r3, r3, lsl #1
+ 80001e0: ea94 0f05 teq r4, r5
+ 80001e4: f000 80a7 beq.w 8000336 <__adddf3+0x1da>
+ 80001e8: f1a4 0401 sub.w r4, r4, #1
+ 80001ec: f1d5 0e20 rsbs lr, r5, #32
+ 80001f0: db0d blt.n 800020e <__adddf3+0xb2>
+ 80001f2: fa02 fc0e lsl.w ip, r2, lr
+ 80001f6: fa22 f205 lsr.w r2, r2, r5
+ 80001fa: 1880 adds r0, r0, r2
+ 80001fc: f141 0100 adc.w r1, r1, #0
+ 8000200: fa03 f20e lsl.w r2, r3, lr
+ 8000204: 1880 adds r0, r0, r2
+ 8000206: fa43 f305 asr.w r3, r3, r5
+ 800020a: 4159 adcs r1, r3
+ 800020c: e00e b.n 800022c <__adddf3+0xd0>
+ 800020e: f1a5 0520 sub.w r5, r5, #32
+ 8000212: f10e 0e20 add.w lr, lr, #32
+ 8000216: 2a01 cmp r2, #1
+ 8000218: fa03 fc0e lsl.w ip, r3, lr
+ 800021c: bf28 it cs
+ 800021e: f04c 0c02 orrcs.w ip, ip, #2
+ 8000222: fa43 f305 asr.w r3, r3, r5
+ 8000226: 18c0 adds r0, r0, r3
+ 8000228: eb51 71e3 adcs.w r1, r1, r3, asr #31
+ 800022c: f001 4500 and.w r5, r1, #2147483648 ; 0x80000000
+ 8000230: d507 bpl.n 8000242 <__adddf3+0xe6>
+ 8000232: f04f 0e00 mov.w lr, #0
+ 8000236: f1dc 0c00 rsbs ip, ip, #0
+ 800023a: eb7e 0000 sbcs.w r0, lr, r0
+ 800023e: eb6e 0101 sbc.w r1, lr, r1
+ 8000242: f5b1 1f80 cmp.w r1, #1048576 ; 0x100000
+ 8000246: d31b bcc.n 8000280 <__adddf3+0x124>
+ 8000248: f5b1 1f00 cmp.w r1, #2097152 ; 0x200000
+ 800024c: d30c bcc.n 8000268 <__adddf3+0x10c>
+ 800024e: 0849 lsrs r1, r1, #1
+ 8000250: ea5f 0030 movs.w r0, r0, rrx
+ 8000254: ea4f 0c3c mov.w ip, ip, rrx
+ 8000258: f104 0401 add.w r4, r4, #1
+ 800025c: ea4f 5244 mov.w r2, r4, lsl #21
+ 8000260: f512 0f80 cmn.w r2, #4194304 ; 0x400000
+ 8000264: f080 809a bcs.w 800039c <__adddf3+0x240>
+ 8000268: f1bc 4f00 cmp.w ip, #2147483648 ; 0x80000000
+ 800026c: bf08 it eq
+ 800026e: ea5f 0c50 movseq.w ip, r0, lsr #1
+ 8000272: f150 0000 adcs.w r0, r0, #0
+ 8000276: eb41 5104 adc.w r1, r1, r4, lsl #20
+ 800027a: ea41 0105 orr.w r1, r1, r5
+ 800027e: bd30 pop {r4, r5, pc}
+ 8000280: ea5f 0c4c movs.w ip, ip, lsl #1
+ 8000284: 4140 adcs r0, r0
+ 8000286: eb41 0101 adc.w r1, r1, r1
+ 800028a: f411 1f80 tst.w r1, #1048576 ; 0x100000
+ 800028e: f1a4 0401 sub.w r4, r4, #1
+ 8000292: d1e9 bne.n 8000268 <__adddf3+0x10c>
+ 8000294: f091 0f00 teq r1, #0
+ 8000298: bf04 itt eq
+ 800029a: 4601 moveq r1, r0
+ 800029c: 2000 moveq r0, #0
+ 800029e: fab1 f381 clz r3, r1
+ 80002a2: bf08 it eq
+ 80002a4: 3320 addeq r3, #32
+ 80002a6: f1a3 030b sub.w r3, r3, #11
+ 80002aa: f1b3 0220 subs.w r2, r3, #32
+ 80002ae: da0c bge.n 80002ca <__adddf3+0x16e>
+ 80002b0: 320c adds r2, #12
+ 80002b2: dd08 ble.n 80002c6 <__adddf3+0x16a>
+ 80002b4: f102 0c14 add.w ip, r2, #20
+ 80002b8: f1c2 020c rsb r2, r2, #12
+ 80002bc: fa01 f00c lsl.w r0, r1, ip
+ 80002c0: fa21 f102 lsr.w r1, r1, r2
+ 80002c4: e00c b.n 80002e0 <__adddf3+0x184>
+ 80002c6: f102 0214 add.w r2, r2, #20
+ 80002ca: bfd8 it le
+ 80002cc: f1c2 0c20 rsble ip, r2, #32
+ 80002d0: fa01 f102 lsl.w r1, r1, r2
+ 80002d4: fa20 fc0c lsr.w ip, r0, ip
+ 80002d8: bfdc itt le
+ 80002da: ea41 010c orrle.w r1, r1, ip
+ 80002de: 4090 lslle r0, r2
+ 80002e0: 1ae4 subs r4, r4, r3
+ 80002e2: bfa2 ittt ge
+ 80002e4: eb01 5104 addge.w r1, r1, r4, lsl #20
+ 80002e8: 4329 orrge r1, r5
+ 80002ea: bd30 popge {r4, r5, pc}
+ 80002ec: ea6f 0404 mvn.w r4, r4
+ 80002f0: 3c1f subs r4, #31
+ 80002f2: da1c bge.n 800032e <__adddf3+0x1d2>
+ 80002f4: 340c adds r4, #12
+ 80002f6: dc0e bgt.n 8000316 <__adddf3+0x1ba>
+ 80002f8: f104 0414 add.w r4, r4, #20
+ 80002fc: f1c4 0220 rsb r2, r4, #32
+ 8000300: fa20 f004 lsr.w r0, r0, r4
+ 8000304: fa01 f302 lsl.w r3, r1, r2
+ 8000308: ea40 0003 orr.w r0, r0, r3
+ 800030c: fa21 f304 lsr.w r3, r1, r4
+ 8000310: ea45 0103 orr.w r1, r5, r3
+ 8000314: bd30 pop {r4, r5, pc}
+ 8000316: f1c4 040c rsb r4, r4, #12
+ 800031a: f1c4 0220 rsb r2, r4, #32
+ 800031e: fa20 f002 lsr.w r0, r0, r2
+ 8000322: fa01 f304 lsl.w r3, r1, r4
+ 8000326: ea40 0003 orr.w r0, r0, r3
+ 800032a: 4629 mov r1, r5
+ 800032c: bd30 pop {r4, r5, pc}
+ 800032e: fa21 f004 lsr.w r0, r1, r4
+ 8000332: 4629 mov r1, r5
+ 8000334: bd30 pop {r4, r5, pc}
+ 8000336: f094 0f00 teq r4, #0
+ 800033a: f483 1380 eor.w r3, r3, #1048576 ; 0x100000
+ 800033e: bf06 itte eq
+ 8000340: f481 1180 eoreq.w r1, r1, #1048576 ; 0x100000
+ 8000344: 3401 addeq r4, #1
+ 8000346: 3d01 subne r5, #1
+ 8000348: e74e b.n 80001e8 <__adddf3+0x8c>
+ 800034a: ea7f 5c64 mvns.w ip, r4, asr #21
+ 800034e: bf18 it ne
+ 8000350: ea7f 5c65 mvnsne.w ip, r5, asr #21
+ 8000354: d029 beq.n 80003aa <__adddf3+0x24e>
+ 8000356: ea94 0f05 teq r4, r5
+ 800035a: bf08 it eq
+ 800035c: ea90 0f02 teqeq r0, r2
+ 8000360: d005 beq.n 800036e <__adddf3+0x212>
+ 8000362: ea54 0c00 orrs.w ip, r4, r0
+ 8000366: bf04 itt eq
+ 8000368: 4619 moveq r1, r3
+ 800036a: 4610 moveq r0, r2
+ 800036c: bd30 pop {r4, r5, pc}
+ 800036e: ea91 0f03 teq r1, r3
+ 8000372: bf1e ittt ne
+ 8000374: 2100 movne r1, #0
+ 8000376: 2000 movne r0, #0
+ 8000378: bd30 popne {r4, r5, pc}
+ 800037a: ea5f 5c54 movs.w ip, r4, lsr #21
+ 800037e: d105 bne.n 800038c <__adddf3+0x230>
+ 8000380: 0040 lsls r0, r0, #1
+ 8000382: 4149 adcs r1, r1
+ 8000384: bf28 it cs
+ 8000386: f041 4100 orrcs.w r1, r1, #2147483648 ; 0x80000000
+ 800038a: bd30 pop {r4, r5, pc}
+ 800038c: f514 0480 adds.w r4, r4, #4194304 ; 0x400000
+ 8000390: bf3c itt cc
+ 8000392: f501 1180 addcc.w r1, r1, #1048576 ; 0x100000
+ 8000396: bd30 popcc {r4, r5, pc}
+ 8000398: f001 4500 and.w r5, r1, #2147483648 ; 0x80000000
+ 800039c: f045 41fe orr.w r1, r5, #2130706432 ; 0x7f000000
+ 80003a0: f441 0170 orr.w r1, r1, #15728640 ; 0xf00000
+ 80003a4: f04f 0000 mov.w r0, #0
+ 80003a8: bd30 pop {r4, r5, pc}
+ 80003aa: ea7f 5c64 mvns.w ip, r4, asr #21
+ 80003ae: bf1a itte ne
+ 80003b0: 4619 movne r1, r3
+ 80003b2: 4610 movne r0, r2
+ 80003b4: ea7f 5c65 mvnseq.w ip, r5, asr #21
+ 80003b8: bf1c itt ne
+ 80003ba: 460b movne r3, r1
+ 80003bc: 4602 movne r2, r0
+ 80003be: ea50 3401 orrs.w r4, r0, r1, lsl #12
+ 80003c2: bf06 itte eq
+ 80003c4: ea52 3503 orrseq.w r5, r2, r3, lsl #12
+ 80003c8: ea91 0f03 teqeq r1, r3
+ 80003cc: f441 2100 orrne.w r1, r1, #524288 ; 0x80000
+ 80003d0: bd30 pop {r4, r5, pc}
+ 80003d2: bf00 nop
+
+080003d4 <__aeabi_ui2d>:
+ 80003d4: f090 0f00 teq r0, #0
+ 80003d8: bf04 itt eq
+ 80003da: 2100 moveq r1, #0
+ 80003dc: 4770 bxeq lr
+ 80003de: b530 push {r4, r5, lr}
+ 80003e0: f44f 6480 mov.w r4, #1024 ; 0x400
+ 80003e4: f104 0432 add.w r4, r4, #50 ; 0x32
+ 80003e8: f04f 0500 mov.w r5, #0
+ 80003ec: f04f 0100 mov.w r1, #0
+ 80003f0: e750 b.n 8000294 <__adddf3+0x138>
+ 80003f2: bf00 nop
+
+080003f4 <__aeabi_i2d>:
+ 80003f4: f090 0f00 teq r0, #0
+ 80003f8: bf04 itt eq
+ 80003fa: 2100 moveq r1, #0
+ 80003fc: 4770 bxeq lr
+ 80003fe: b530 push {r4, r5, lr}
+ 8000400: f44f 6480 mov.w r4, #1024 ; 0x400
+ 8000404: f104 0432 add.w r4, r4, #50 ; 0x32
+ 8000408: f010 4500 ands.w r5, r0, #2147483648 ; 0x80000000
+ 800040c: bf48 it mi
+ 800040e: 4240 negmi r0, r0
+ 8000410: f04f 0100 mov.w r1, #0
+ 8000414: e73e b.n 8000294 <__adddf3+0x138>
+ 8000416: bf00 nop
+
+08000418 <__aeabi_f2d>:
+ 8000418: 0042 lsls r2, r0, #1
+ 800041a: ea4f 01e2 mov.w r1, r2, asr #3
+ 800041e: ea4f 0131 mov.w r1, r1, rrx
+ 8000422: ea4f 7002 mov.w r0, r2, lsl #28
+ 8000426: bf1f itttt ne
+ 8000428: f012 437f andsne.w r3, r2, #4278190080 ; 0xff000000
+ 800042c: f093 4f7f teqne r3, #4278190080 ; 0xff000000
+ 8000430: f081 5160 eorne.w r1, r1, #939524096 ; 0x38000000
+ 8000434: 4770 bxne lr
+ 8000436: f032 427f bics.w r2, r2, #4278190080 ; 0xff000000
+ 800043a: bf08 it eq
+ 800043c: 4770 bxeq lr
+ 800043e: f093 4f7f teq r3, #4278190080 ; 0xff000000
+ 8000442: bf04 itt eq
+ 8000444: f441 2100 orreq.w r1, r1, #524288 ; 0x80000
+ 8000448: 4770 bxeq lr
+ 800044a: b530 push {r4, r5, lr}
+ 800044c: f44f 7460 mov.w r4, #896 ; 0x380
+ 8000450: f001 4500 and.w r5, r1, #2147483648 ; 0x80000000
+ 8000454: f021 4100 bic.w r1, r1, #2147483648 ; 0x80000000
+ 8000458: e71c b.n 8000294 <__adddf3+0x138>
+ 800045a: bf00 nop
+
+0800045c <__aeabi_ul2d>:
+ 800045c: ea50 0201 orrs.w r2, r0, r1
+ 8000460: bf08 it eq
+ 8000462: 4770 bxeq lr
+ 8000464: b530 push {r4, r5, lr}
+ 8000466: f04f 0500 mov.w r5, #0
+ 800046a: e00a b.n 8000482 <__aeabi_l2d+0x16>
+
+0800046c <__aeabi_l2d>:
+ 800046c: ea50 0201 orrs.w r2, r0, r1
+ 8000470: bf08 it eq
+ 8000472: 4770 bxeq lr
+ 8000474: b530 push {r4, r5, lr}
+ 8000476: f011 4500 ands.w r5, r1, #2147483648 ; 0x80000000
+ 800047a: d502 bpl.n 8000482 <__aeabi_l2d+0x16>
+ 800047c: 4240 negs r0, r0
+ 800047e: eb61 0141 sbc.w r1, r1, r1, lsl #1
+ 8000482: f44f 6480 mov.w r4, #1024 ; 0x400
+ 8000486: f104 0432 add.w r4, r4, #50 ; 0x32
+ 800048a: ea5f 5c91 movs.w ip, r1, lsr #22
+ 800048e: f43f aed8 beq.w 8000242 <__adddf3+0xe6>
+ 8000492: f04f 0203 mov.w r2, #3
+ 8000496: ea5f 0cdc movs.w ip, ip, lsr #3
+ 800049a: bf18 it ne
+ 800049c: 3203 addne r2, #3
+ 800049e: ea5f 0cdc movs.w ip, ip, lsr #3
+ 80004a2: bf18 it ne
+ 80004a4: 3203 addne r2, #3
+ 80004a6: eb02 02dc add.w r2, r2, ip, lsr #3
+ 80004aa: f1c2 0320 rsb r3, r2, #32
+ 80004ae: fa00 fc03 lsl.w ip, r0, r3
+ 80004b2: fa20 f002 lsr.w r0, r0, r2
+ 80004b6: fa01 fe03 lsl.w lr, r1, r3
+ 80004ba: ea40 000e orr.w r0, r0, lr
+ 80004be: fa21 f102 lsr.w r1, r1, r2
+ 80004c2: 4414 add r4, r2
+ 80004c4: e6bd b.n 8000242 <__adddf3+0xe6>
+ 80004c6: bf00 nop
+
+080004c8 <__aeabi_dmul>:
+ 80004c8: b570 push {r4, r5, r6, lr}
+ 80004ca: f04f 0cff mov.w ip, #255 ; 0xff
+ 80004ce: f44c 6ce0 orr.w ip, ip, #1792 ; 0x700
+ 80004d2: ea1c 5411 ands.w r4, ip, r1, lsr #20
+ 80004d6: bf1d ittte ne
+ 80004d8: ea1c 5513 andsne.w r5, ip, r3, lsr #20
+ 80004dc: ea94 0f0c teqne r4, ip
+ 80004e0: ea95 0f0c teqne r5, ip
+ 80004e4: f000 f8de bleq 80006a4 <__aeabi_dmul+0x1dc>
+ 80004e8: 442c add r4, r5
+ 80004ea: ea81 0603 eor.w r6, r1, r3
+ 80004ee: ea21 514c bic.w r1, r1, ip, lsl #21
+ 80004f2: ea23 534c bic.w r3, r3, ip, lsl #21
+ 80004f6: ea50 3501 orrs.w r5, r0, r1, lsl #12
+ 80004fa: bf18 it ne
+ 80004fc: ea52 3503 orrsne.w r5, r2, r3, lsl #12
+ 8000500: f441 1180 orr.w r1, r1, #1048576 ; 0x100000
+ 8000504: f443 1380 orr.w r3, r3, #1048576 ; 0x100000
+ 8000508: d038 beq.n 800057c <__aeabi_dmul+0xb4>
+ 800050a: fba0 ce02 umull ip, lr, r0, r2
+ 800050e: f04f 0500 mov.w r5, #0
+ 8000512: fbe1 e502 umlal lr, r5, r1, r2
+ 8000516: f006 4200 and.w r2, r6, #2147483648 ; 0x80000000
+ 800051a: fbe0 e503 umlal lr, r5, r0, r3
+ 800051e: f04f 0600 mov.w r6, #0
+ 8000522: fbe1 5603 umlal r5, r6, r1, r3
+ 8000526: f09c 0f00 teq ip, #0
+ 800052a: bf18 it ne
+ 800052c: f04e 0e01 orrne.w lr, lr, #1
+ 8000530: f1a4 04ff sub.w r4, r4, #255 ; 0xff
+ 8000534: f5b6 7f00 cmp.w r6, #512 ; 0x200
+ 8000538: f564 7440 sbc.w r4, r4, #768 ; 0x300
+ 800053c: d204 bcs.n 8000548 <__aeabi_dmul+0x80>
+ 800053e: ea5f 0e4e movs.w lr, lr, lsl #1
+ 8000542: 416d adcs r5, r5
+ 8000544: eb46 0606 adc.w r6, r6, r6
+ 8000548: ea42 21c6 orr.w r1, r2, r6, lsl #11
+ 800054c: ea41 5155 orr.w r1, r1, r5, lsr #21
+ 8000550: ea4f 20c5 mov.w r0, r5, lsl #11
+ 8000554: ea40 505e orr.w r0, r0, lr, lsr #21
+ 8000558: ea4f 2ece mov.w lr, lr, lsl #11
+ 800055c: f1b4 0cfd subs.w ip, r4, #253 ; 0xfd
+ 8000560: bf88 it hi
+ 8000562: f5bc 6fe0 cmphi.w ip, #1792 ; 0x700
+ 8000566: d81e bhi.n 80005a6 <__aeabi_dmul+0xde>
+ 8000568: f1be 4f00 cmp.w lr, #2147483648 ; 0x80000000
+ 800056c: bf08 it eq
+ 800056e: ea5f 0e50 movseq.w lr, r0, lsr #1
+ 8000572: f150 0000 adcs.w r0, r0, #0
+ 8000576: eb41 5104 adc.w r1, r1, r4, lsl #20
+ 800057a: bd70 pop {r4, r5, r6, pc}
+ 800057c: f006 4600 and.w r6, r6, #2147483648 ; 0x80000000
+ 8000580: ea46 0101 orr.w r1, r6, r1
+ 8000584: ea40 0002 orr.w r0, r0, r2
+ 8000588: ea81 0103 eor.w r1, r1, r3
+ 800058c: ebb4 045c subs.w r4, r4, ip, lsr #1
+ 8000590: bfc2 ittt gt
+ 8000592: ebd4 050c rsbsgt r5, r4, ip
+ 8000596: ea41 5104 orrgt.w r1, r1, r4, lsl #20
+ 800059a: bd70 popgt {r4, r5, r6, pc}
+ 800059c: f441 1180 orr.w r1, r1, #1048576 ; 0x100000
+ 80005a0: f04f 0e00 mov.w lr, #0
+ 80005a4: 3c01 subs r4, #1
+ 80005a6: f300 80ab bgt.w 8000700 <__aeabi_dmul+0x238>
+ 80005aa: f114 0f36 cmn.w r4, #54 ; 0x36
+ 80005ae: bfde ittt le
+ 80005b0: 2000 movle r0, #0
+ 80005b2: f001 4100 andle.w r1, r1, #2147483648 ; 0x80000000
+ 80005b6: bd70 pople {r4, r5, r6, pc}
+ 80005b8: f1c4 0400 rsb r4, r4, #0
+ 80005bc: 3c20 subs r4, #32
+ 80005be: da35 bge.n 800062c <__aeabi_dmul+0x164>
+ 80005c0: 340c adds r4, #12
+ 80005c2: dc1b bgt.n 80005fc <__aeabi_dmul+0x134>
+ 80005c4: f104 0414 add.w r4, r4, #20
+ 80005c8: f1c4 0520 rsb r5, r4, #32
+ 80005cc: fa00 f305 lsl.w r3, r0, r5
+ 80005d0: fa20 f004 lsr.w r0, r0, r4
+ 80005d4: fa01 f205 lsl.w r2, r1, r5
+ 80005d8: ea40 0002 orr.w r0, r0, r2
+ 80005dc: f001 4200 and.w r2, r1, #2147483648 ; 0x80000000
+ 80005e0: f021 4100 bic.w r1, r1, #2147483648 ; 0x80000000
+ 80005e4: eb10 70d3 adds.w r0, r0, r3, lsr #31
+ 80005e8: fa21 f604 lsr.w r6, r1, r4
+ 80005ec: eb42 0106 adc.w r1, r2, r6
+ 80005f0: ea5e 0e43 orrs.w lr, lr, r3, lsl #1
+ 80005f4: bf08 it eq
+ 80005f6: ea20 70d3 biceq.w r0, r0, r3, lsr #31
+ 80005fa: bd70 pop {r4, r5, r6, pc}
+ 80005fc: f1c4 040c rsb r4, r4, #12
+ 8000600: f1c4 0520 rsb r5, r4, #32
+ 8000604: fa00 f304 lsl.w r3, r0, r4
+ 8000608: fa20 f005 lsr.w r0, r0, r5
+ 800060c: fa01 f204 lsl.w r2, r1, r4
+ 8000610: ea40 0002 orr.w r0, r0, r2
+ 8000614: f001 4100 and.w r1, r1, #2147483648 ; 0x80000000
+ 8000618: eb10 70d3 adds.w r0, r0, r3, lsr #31
+ 800061c: f141 0100 adc.w r1, r1, #0
+ 8000620: ea5e 0e43 orrs.w lr, lr, r3, lsl #1
+ 8000624: bf08 it eq
+ 8000626: ea20 70d3 biceq.w r0, r0, r3, lsr #31
+ 800062a: bd70 pop {r4, r5, r6, pc}
+ 800062c: f1c4 0520 rsb r5, r4, #32
+ 8000630: fa00 f205 lsl.w r2, r0, r5
+ 8000634: ea4e 0e02 orr.w lr, lr, r2
+ 8000638: fa20 f304 lsr.w r3, r0, r4
+ 800063c: fa01 f205 lsl.w r2, r1, r5
+ 8000640: ea43 0302 orr.w r3, r3, r2
+ 8000644: fa21 f004 lsr.w r0, r1, r4
+ 8000648: f001 4100 and.w r1, r1, #2147483648 ; 0x80000000
+ 800064c: fa21 f204 lsr.w r2, r1, r4
+ 8000650: ea20 0002 bic.w r0, r0, r2
+ 8000654: eb00 70d3 add.w r0, r0, r3, lsr #31
+ 8000658: ea5e 0e43 orrs.w lr, lr, r3, lsl #1
+ 800065c: bf08 it eq
+ 800065e: ea20 70d3 biceq.w r0, r0, r3, lsr #31
+ 8000662: bd70 pop {r4, r5, r6, pc}
+ 8000664: f094 0f00 teq r4, #0
+ 8000668: d10f bne.n 800068a <__aeabi_dmul+0x1c2>
+ 800066a: f001 4600 and.w r6, r1, #2147483648 ; 0x80000000
+ 800066e: 0040 lsls r0, r0, #1
+ 8000670: eb41 0101 adc.w r1, r1, r1
+ 8000674: f411 1f80 tst.w r1, #1048576 ; 0x100000
+ 8000678: bf08 it eq
+ 800067a: 3c01 subeq r4, #1
+ 800067c: d0f7 beq.n 800066e <__aeabi_dmul+0x1a6>
+ 800067e: ea41 0106 orr.w r1, r1, r6
+ 8000682: f095 0f00 teq r5, #0
+ 8000686: bf18 it ne
+ 8000688: 4770 bxne lr
+ 800068a: f003 4600 and.w r6, r3, #2147483648 ; 0x80000000
+ 800068e: 0052 lsls r2, r2, #1
+ 8000690: eb43 0303 adc.w r3, r3, r3
+ 8000694: f413 1f80 tst.w r3, #1048576 ; 0x100000
+ 8000698: bf08 it eq
+ 800069a: 3d01 subeq r5, #1
+ 800069c: d0f7 beq.n 800068e <__aeabi_dmul+0x1c6>
+ 800069e: ea43 0306 orr.w r3, r3, r6
+ 80006a2: 4770 bx lr
+ 80006a4: ea94 0f0c teq r4, ip
+ 80006a8: ea0c 5513 and.w r5, ip, r3, lsr #20
+ 80006ac: bf18 it ne
+ 80006ae: ea95 0f0c teqne r5, ip
+ 80006b2: d00c beq.n 80006ce <__aeabi_dmul+0x206>
+ 80006b4: ea50 0641 orrs.w r6, r0, r1, lsl #1
+ 80006b8: bf18 it ne
+ 80006ba: ea52 0643 orrsne.w r6, r2, r3, lsl #1
+ 80006be: d1d1 bne.n 8000664 <__aeabi_dmul+0x19c>
+ 80006c0: ea81 0103 eor.w r1, r1, r3
+ 80006c4: f001 4100 and.w r1, r1, #2147483648 ; 0x80000000
+ 80006c8: f04f 0000 mov.w r0, #0
+ 80006cc: bd70 pop {r4, r5, r6, pc}
+ 80006ce: ea50 0641 orrs.w r6, r0, r1, lsl #1
+ 80006d2: bf06 itte eq
+ 80006d4: 4610 moveq r0, r2
+ 80006d6: 4619 moveq r1, r3
+ 80006d8: ea52 0643 orrsne.w r6, r2, r3, lsl #1
+ 80006dc: d019 beq.n 8000712 <__aeabi_dmul+0x24a>
+ 80006de: ea94 0f0c teq r4, ip
+ 80006e2: d102 bne.n 80006ea <__aeabi_dmul+0x222>
+ 80006e4: ea50 3601 orrs.w r6, r0, r1, lsl #12
+ 80006e8: d113 bne.n 8000712 <__aeabi_dmul+0x24a>
+ 80006ea: ea95 0f0c teq r5, ip
+ 80006ee: d105 bne.n 80006fc <__aeabi_dmul+0x234>
+ 80006f0: ea52 3603 orrs.w r6, r2, r3, lsl #12
+ 80006f4: bf1c itt ne
+ 80006f6: 4610 movne r0, r2
+ 80006f8: 4619 movne r1, r3
+ 80006fa: d10a bne.n 8000712 <__aeabi_dmul+0x24a>
+ 80006fc: ea81 0103 eor.w r1, r1, r3
+ 8000700: f001 4100 and.w r1, r1, #2147483648 ; 0x80000000
+ 8000704: f041 41fe orr.w r1, r1, #2130706432 ; 0x7f000000
+ 8000708: f441 0170 orr.w r1, r1, #15728640 ; 0xf00000
+ 800070c: f04f 0000 mov.w r0, #0
+ 8000710: bd70 pop {r4, r5, r6, pc}
+ 8000712: f041 41fe orr.w r1, r1, #2130706432 ; 0x7f000000
+ 8000716: f441 0178 orr.w r1, r1, #16252928 ; 0xf80000
+ 800071a: bd70 pop {r4, r5, r6, pc}
+
+0800071c <__aeabi_ddiv>:
+ 800071c: b570 push {r4, r5, r6, lr}
+ 800071e: f04f 0cff mov.w ip, #255 ; 0xff
+ 8000722: f44c 6ce0 orr.w ip, ip, #1792 ; 0x700
+ 8000726: ea1c 5411 ands.w r4, ip, r1, lsr #20
+ 800072a: bf1d ittte ne
+ 800072c: ea1c 5513 andsne.w r5, ip, r3, lsr #20
+ 8000730: ea94 0f0c teqne r4, ip
+ 8000734: ea95 0f0c teqne r5, ip
+ 8000738: f000 f8a7 bleq 800088a <__aeabi_ddiv+0x16e>
+ 800073c: eba4 0405 sub.w r4, r4, r5
+ 8000740: ea81 0e03 eor.w lr, r1, r3
+ 8000744: ea52 3503 orrs.w r5, r2, r3, lsl #12
+ 8000748: ea4f 3101 mov.w r1, r1, lsl #12
+ 800074c: f000 8088 beq.w 8000860 <__aeabi_ddiv+0x144>
+ 8000750: ea4f 3303 mov.w r3, r3, lsl #12
+ 8000754: f04f 5580 mov.w r5, #268435456 ; 0x10000000
+ 8000758: ea45 1313 orr.w r3, r5, r3, lsr #4
+ 800075c: ea43 6312 orr.w r3, r3, r2, lsr #24
+ 8000760: ea4f 2202 mov.w r2, r2, lsl #8
+ 8000764: ea45 1511 orr.w r5, r5, r1, lsr #4
+ 8000768: ea45 6510 orr.w r5, r5, r0, lsr #24
+ 800076c: ea4f 2600 mov.w r6, r0, lsl #8
+ 8000770: f00e 4100 and.w r1, lr, #2147483648 ; 0x80000000
+ 8000774: 429d cmp r5, r3
+ 8000776: bf08 it eq
+ 8000778: 4296 cmpeq r6, r2
+ 800077a: f144 04fd adc.w r4, r4, #253 ; 0xfd
+ 800077e: f504 7440 add.w r4, r4, #768 ; 0x300
+ 8000782: d202 bcs.n 800078a <__aeabi_ddiv+0x6e>
+ 8000784: 085b lsrs r3, r3, #1
+ 8000786: ea4f 0232 mov.w r2, r2, rrx
+ 800078a: 1ab6 subs r6, r6, r2
+ 800078c: eb65 0503 sbc.w r5, r5, r3
+ 8000790: 085b lsrs r3, r3, #1
+ 8000792: ea4f 0232 mov.w r2, r2, rrx
+ 8000796: f44f 1080 mov.w r0, #1048576 ; 0x100000
+ 800079a: f44f 2c00 mov.w ip, #524288 ; 0x80000
+ 800079e: ebb6 0e02 subs.w lr, r6, r2
+ 80007a2: eb75 0e03 sbcs.w lr, r5, r3
+ 80007a6: bf22 ittt cs
+ 80007a8: 1ab6 subcs r6, r6, r2
+ 80007aa: 4675 movcs r5, lr
+ 80007ac: ea40 000c orrcs.w r0, r0, ip
+ 80007b0: 085b lsrs r3, r3, #1
+ 80007b2: ea4f 0232 mov.w r2, r2, rrx
+ 80007b6: ebb6 0e02 subs.w lr, r6, r2
+ 80007ba: eb75 0e03 sbcs.w lr, r5, r3
+ 80007be: bf22 ittt cs
+ 80007c0: 1ab6 subcs r6, r6, r2
+ 80007c2: 4675 movcs r5, lr
+ 80007c4: ea40 005c orrcs.w r0, r0, ip, lsr #1
+ 80007c8: 085b lsrs r3, r3, #1
+ 80007ca: ea4f 0232 mov.w r2, r2, rrx
+ 80007ce: ebb6 0e02 subs.w lr, r6, r2
+ 80007d2: eb75 0e03 sbcs.w lr, r5, r3
+ 80007d6: bf22 ittt cs
+ 80007d8: 1ab6 subcs r6, r6, r2
+ 80007da: 4675 movcs r5, lr
+ 80007dc: ea40 009c orrcs.w r0, r0, ip, lsr #2
+ 80007e0: 085b lsrs r3, r3, #1
+ 80007e2: ea4f 0232 mov.w r2, r2, rrx
+ 80007e6: ebb6 0e02 subs.w lr, r6, r2
+ 80007ea: eb75 0e03 sbcs.w lr, r5, r3
+ 80007ee: bf22 ittt cs
+ 80007f0: 1ab6 subcs r6, r6, r2
+ 80007f2: 4675 movcs r5, lr
+ 80007f4: ea40 00dc orrcs.w r0, r0, ip, lsr #3
+ 80007f8: ea55 0e06 orrs.w lr, r5, r6
+ 80007fc: d018 beq.n 8000830 <__aeabi_ddiv+0x114>
+ 80007fe: ea4f 1505 mov.w r5, r5, lsl #4
+ 8000802: ea45 7516 orr.w r5, r5, r6, lsr #28
+ 8000806: ea4f 1606 mov.w r6, r6, lsl #4
+ 800080a: ea4f 03c3 mov.w r3, r3, lsl #3
+ 800080e: ea43 7352 orr.w r3, r3, r2, lsr #29
+ 8000812: ea4f 02c2 mov.w r2, r2, lsl #3
+ 8000816: ea5f 1c1c movs.w ip, ip, lsr #4
+ 800081a: d1c0 bne.n 800079e <__aeabi_ddiv+0x82>
+ 800081c: f411 1f80 tst.w r1, #1048576 ; 0x100000
+ 8000820: d10b bne.n 800083a <__aeabi_ddiv+0x11e>
+ 8000822: ea41 0100 orr.w r1, r1, r0
+ 8000826: f04f 0000 mov.w r0, #0
+ 800082a: f04f 4c00 mov.w ip, #2147483648 ; 0x80000000
+ 800082e: e7b6 b.n 800079e <__aeabi_ddiv+0x82>
+ 8000830: f411 1f80 tst.w r1, #1048576 ; 0x100000
+ 8000834: bf04 itt eq
+ 8000836: 4301 orreq r1, r0
+ 8000838: 2000 moveq r0, #0
+ 800083a: f1b4 0cfd subs.w ip, r4, #253 ; 0xfd
+ 800083e: bf88 it hi
+ 8000840: f5bc 6fe0 cmphi.w ip, #1792 ; 0x700
+ 8000844: f63f aeaf bhi.w 80005a6 <__aeabi_dmul+0xde>
+ 8000848: ebb5 0c03 subs.w ip, r5, r3
+ 800084c: bf04 itt eq
+ 800084e: ebb6 0c02 subseq.w ip, r6, r2
+ 8000852: ea5f 0c50 movseq.w ip, r0, lsr #1
+ 8000856: f150 0000 adcs.w r0, r0, #0
+ 800085a: eb41 5104 adc.w r1, r1, r4, lsl #20
+ 800085e: bd70 pop {r4, r5, r6, pc}
+ 8000860: f00e 4e00 and.w lr, lr, #2147483648 ; 0x80000000
+ 8000864: ea4e 3111 orr.w r1, lr, r1, lsr #12
+ 8000868: eb14 045c adds.w r4, r4, ip, lsr #1
+ 800086c: bfc2 ittt gt
+ 800086e: ebd4 050c rsbsgt r5, r4, ip
+ 8000872: ea41 5104 orrgt.w r1, r1, r4, lsl #20
+ 8000876: bd70 popgt {r4, r5, r6, pc}
+ 8000878: f441 1180 orr.w r1, r1, #1048576 ; 0x100000
+ 800087c: f04f 0e00 mov.w lr, #0
+ 8000880: 3c01 subs r4, #1
+ 8000882: e690 b.n 80005a6 <__aeabi_dmul+0xde>
+ 8000884: ea45 0e06 orr.w lr, r5, r6
+ 8000888: e68d b.n 80005a6 <__aeabi_dmul+0xde>
+ 800088a: ea0c 5513 and.w r5, ip, r3, lsr #20
+ 800088e: ea94 0f0c teq r4, ip
+ 8000892: bf08 it eq
+ 8000894: ea95 0f0c teqeq r5, ip
+ 8000898: f43f af3b beq.w 8000712 <__aeabi_dmul+0x24a>
+ 800089c: ea94 0f0c teq r4, ip
+ 80008a0: d10a bne.n 80008b8 <__aeabi_ddiv+0x19c>
+ 80008a2: ea50 3401 orrs.w r4, r0, r1, lsl #12
+ 80008a6: f47f af34 bne.w 8000712 <__aeabi_dmul+0x24a>
+ 80008aa: ea95 0f0c teq r5, ip
+ 80008ae: f47f af25 bne.w 80006fc <__aeabi_dmul+0x234>
+ 80008b2: 4610 mov r0, r2
+ 80008b4: 4619 mov r1, r3
+ 80008b6: e72c b.n 8000712 <__aeabi_dmul+0x24a>
+ 80008b8: ea95 0f0c teq r5, ip
+ 80008bc: d106 bne.n 80008cc <__aeabi_ddiv+0x1b0>
+ 80008be: ea52 3503 orrs.w r5, r2, r3, lsl #12
+ 80008c2: f43f aefd beq.w 80006c0 <__aeabi_dmul+0x1f8>
+ 80008c6: 4610 mov r0, r2
+ 80008c8: 4619 mov r1, r3
+ 80008ca: e722 b.n 8000712 <__aeabi_dmul+0x24a>
+ 80008cc: ea50 0641 orrs.w r6, r0, r1, lsl #1
+ 80008d0: bf18 it ne
+ 80008d2: ea52 0643 orrsne.w r6, r2, r3, lsl #1
+ 80008d6: f47f aec5 bne.w 8000664 <__aeabi_dmul+0x19c>
+ 80008da: ea50 0441 orrs.w r4, r0, r1, lsl #1
+ 80008de: f47f af0d bne.w 80006fc <__aeabi_dmul+0x234>
+ 80008e2: ea52 0543 orrs.w r5, r2, r3, lsl #1
+ 80008e6: f47f aeeb bne.w 80006c0 <__aeabi_dmul+0x1f8>
+ 80008ea: e712 b.n 8000712 <__aeabi_dmul+0x24a>
+
+080008ec <__gedf2>:
+ 80008ec: f04f 3cff mov.w ip, #4294967295 ; 0xffffffff
+ 80008f0: e006 b.n 8000900 <__cmpdf2+0x4>
+ 80008f2: bf00 nop
+
+080008f4 <__ledf2>:
+ 80008f4: f04f 0c01 mov.w ip, #1
+ 80008f8: e002 b.n 8000900 <__cmpdf2+0x4>
+ 80008fa: bf00 nop
+
+080008fc <__cmpdf2>:
+ 80008fc: f04f 0c01 mov.w ip, #1
+ 8000900: f84d cd04 str.w ip, [sp, #-4]!
+ 8000904: ea4f 0c41 mov.w ip, r1, lsl #1
+ 8000908: ea7f 5c6c mvns.w ip, ip, asr #21
+ 800090c: ea4f 0c43 mov.w ip, r3, lsl #1
+ 8000910: bf18 it ne
+ 8000912: ea7f 5c6c mvnsne.w ip, ip, asr #21
+ 8000916: d01b beq.n 8000950 <__cmpdf2+0x54>
+ 8000918: b001 add sp, #4
+ 800091a: ea50 0c41 orrs.w ip, r0, r1, lsl #1
+ 800091e: bf0c ite eq
+ 8000920: ea52 0c43 orrseq.w ip, r2, r3, lsl #1
+ 8000924: ea91 0f03 teqne r1, r3
+ 8000928: bf02 ittt eq
+ 800092a: ea90 0f02 teqeq r0, r2
+ 800092e: 2000 moveq r0, #0
+ 8000930: 4770 bxeq lr
+ 8000932: f110 0f00 cmn.w r0, #0
+ 8000936: ea91 0f03 teq r1, r3
+ 800093a: bf58 it pl
+ 800093c: 4299 cmppl r1, r3
+ 800093e: bf08 it eq
+ 8000940: 4290 cmpeq r0, r2
+ 8000942: bf2c ite cs
+ 8000944: 17d8 asrcs r0, r3, #31
+ 8000946: ea6f 70e3 mvncc.w r0, r3, asr #31
+ 800094a: f040 0001 orr.w r0, r0, #1
+ 800094e: 4770 bx lr
+ 8000950: ea4f 0c41 mov.w ip, r1, lsl #1
+ 8000954: ea7f 5c6c mvns.w ip, ip, asr #21
+ 8000958: d102 bne.n 8000960 <__cmpdf2+0x64>
+ 800095a: ea50 3c01 orrs.w ip, r0, r1, lsl #12
+ 800095e: d107 bne.n 8000970 <__cmpdf2+0x74>
+ 8000960: ea4f 0c43 mov.w ip, r3, lsl #1
+ 8000964: ea7f 5c6c mvns.w ip, ip, asr #21
+ 8000968: d1d6 bne.n 8000918 <__cmpdf2+0x1c>
+ 800096a: ea52 3c03 orrs.w ip, r2, r3, lsl #12
+ 800096e: d0d3 beq.n 8000918 <__cmpdf2+0x1c>
+ 8000970: f85d 0b04 ldr.w r0, [sp], #4
+ 8000974: 4770 bx lr
+ 8000976: bf00 nop
+
+08000978 <__aeabi_cdrcmple>:
+ 8000978: 4684 mov ip, r0
+ 800097a: 4610 mov r0, r2
+ 800097c: 4662 mov r2, ip
+ 800097e: 468c mov ip, r1
+ 8000980: 4619 mov r1, r3
+ 8000982: 4663 mov r3, ip
+ 8000984: e000 b.n 8000988 <__aeabi_cdcmpeq>
+ 8000986: bf00 nop
+
+08000988 <__aeabi_cdcmpeq>:
+ 8000988: b501 push {r0, lr}
+ 800098a: f7ff ffb7 bl 80008fc <__cmpdf2>
+ 800098e: 2800 cmp r0, #0
+ 8000990: bf48 it mi
+ 8000992: f110 0f00 cmnmi.w r0, #0
+ 8000996: bd01 pop {r0, pc}
+
+08000998 <__aeabi_dcmpeq>:
+ 8000998: f84d ed08 str.w lr, [sp, #-8]!
+ 800099c: f7ff fff4 bl 8000988 <__aeabi_cdcmpeq>
+ 80009a0: bf0c ite eq
+ 80009a2: 2001 moveq r0, #1
+ 80009a4: 2000 movne r0, #0
+ 80009a6: f85d fb08 ldr.w pc, [sp], #8
+ 80009aa: bf00 nop
+
+080009ac <__aeabi_dcmplt>:
+ 80009ac: f84d ed08 str.w lr, [sp, #-8]!
+ 80009b0: f7ff ffea bl 8000988 <__aeabi_cdcmpeq>
+ 80009b4: bf34 ite cc
+ 80009b6: 2001 movcc r0, #1
+ 80009b8: 2000 movcs r0, #0
+ 80009ba: f85d fb08 ldr.w pc, [sp], #8
+ 80009be: bf00 nop
+
+080009c0 <__aeabi_dcmple>:
+ 80009c0: f84d ed08 str.w lr, [sp, #-8]!
+ 80009c4: f7ff ffe0 bl 8000988 <__aeabi_cdcmpeq>
+ 80009c8: bf94 ite ls
+ 80009ca: 2001 movls r0, #1
+ 80009cc: 2000 movhi r0, #0
+ 80009ce: f85d fb08 ldr.w pc, [sp], #8
+ 80009d2: bf00 nop
+
+080009d4 <__aeabi_dcmpge>:
+ 80009d4: f84d ed08 str.w lr, [sp, #-8]!
+ 80009d8: f7ff ffce bl 8000978 <__aeabi_cdrcmple>
+ 80009dc: bf94 ite ls
+ 80009de: 2001 movls r0, #1
+ 80009e0: 2000 movhi r0, #0
+ 80009e2: f85d fb08 ldr.w pc, [sp], #8
+ 80009e6: bf00 nop
+
+080009e8 <__aeabi_dcmpgt>:
+ 80009e8: f84d ed08 str.w lr, [sp, #-8]!
+ 80009ec: f7ff ffc4 bl 8000978 <__aeabi_cdrcmple>
+ 80009f0: bf34 ite cc
+ 80009f2: 2001 movcc r0, #1
+ 80009f4: 2000 movcs r0, #0
+ 80009f6: f85d fb08 ldr.w pc, [sp], #8
+ 80009fa: bf00 nop
+
+080009fc <__aeabi_d2iz>:
+ 80009fc: ea4f 0241 mov.w r2, r1, lsl #1
+ 8000a00: f512 1200 adds.w r2, r2, #2097152 ; 0x200000
+ 8000a04: d215 bcs.n 8000a32 <__aeabi_d2iz+0x36>
+ 8000a06: d511 bpl.n 8000a2c <__aeabi_d2iz+0x30>
+ 8000a08: f46f 7378 mvn.w r3, #992 ; 0x3e0
+ 8000a0c: ebb3 5262 subs.w r2, r3, r2, asr #21
+ 8000a10: d912 bls.n 8000a38 <__aeabi_d2iz+0x3c>
+ 8000a12: ea4f 23c1 mov.w r3, r1, lsl #11
+ 8000a16: f043 4300 orr.w r3, r3, #2147483648 ; 0x80000000
+ 8000a1a: ea43 5350 orr.w r3, r3, r0, lsr #21
+ 8000a1e: f011 4f00 tst.w r1, #2147483648 ; 0x80000000
+ 8000a22: fa23 f002 lsr.w r0, r3, r2
+ 8000a26: bf18 it ne
+ 8000a28: 4240 negne r0, r0
+ 8000a2a: 4770 bx lr
+ 8000a2c: f04f 0000 mov.w r0, #0
+ 8000a30: 4770 bx lr
+ 8000a32: ea50 3001 orrs.w r0, r0, r1, lsl #12
+ 8000a36: d105 bne.n 8000a44 <__aeabi_d2iz+0x48>
+ 8000a38: f011 4000 ands.w r0, r1, #2147483648 ; 0x80000000
+ 8000a3c: bf08 it eq
+ 8000a3e: f06f 4000 mvneq.w r0, #2147483648 ; 0x80000000
+ 8000a42: 4770 bx lr
+ 8000a44: f04f 0000 mov.w r0, #0
+ 8000a48: 4770 bx lr
+ 8000a4a: bf00 nop
+
+08000a4c <__aeabi_frsub>:
+ 8000a4c: f080 4000 eor.w r0, r0, #2147483648 ; 0x80000000
+ 8000a50: e002 b.n 8000a58 <__addsf3>
+ 8000a52: bf00 nop
+
+08000a54 <__aeabi_fsub>:
+ 8000a54: f081 4100 eor.w r1, r1, #2147483648 ; 0x80000000
+
+08000a58 <__addsf3>:
+ 8000a58: 0042 lsls r2, r0, #1
+ 8000a5a: bf1f itttt ne
+ 8000a5c: ea5f 0341 movsne.w r3, r1, lsl #1
+ 8000a60: ea92 0f03 teqne r2, r3
+ 8000a64: ea7f 6c22 mvnsne.w ip, r2, asr #24
+ 8000a68: ea7f 6c23 mvnsne.w ip, r3, asr #24
+ 8000a6c: d06a beq.n 8000b44 <__addsf3+0xec>
+ 8000a6e: ea4f 6212 mov.w r2, r2, lsr #24
+ 8000a72: ebd2 6313 rsbs r3, r2, r3, lsr #24
+ 8000a76: bfc1 itttt gt
+ 8000a78: 18d2 addgt r2, r2, r3
+ 8000a7a: 4041 eorgt r1, r0
+ 8000a7c: 4048 eorgt r0, r1
+ 8000a7e: 4041 eorgt r1, r0
+ 8000a80: bfb8 it lt
+ 8000a82: 425b neglt r3, r3
+ 8000a84: 2b19 cmp r3, #25
+ 8000a86: bf88 it hi
+ 8000a88: 4770 bxhi lr
+ 8000a8a: f010 4f00 tst.w r0, #2147483648 ; 0x80000000
+ 8000a8e: f440 0000 orr.w r0, r0, #8388608 ; 0x800000
+ 8000a92: f020 407f bic.w r0, r0, #4278190080 ; 0xff000000
+ 8000a96: bf18 it ne
+ 8000a98: 4240 negne r0, r0
+ 8000a9a: f011 4f00 tst.w r1, #2147483648 ; 0x80000000
+ 8000a9e: f441 0100 orr.w r1, r1, #8388608 ; 0x800000
+ 8000aa2: f021 417f bic.w r1, r1, #4278190080 ; 0xff000000
+ 8000aa6: bf18 it ne
+ 8000aa8: 4249 negne r1, r1
+ 8000aaa: ea92 0f03 teq r2, r3
+ 8000aae: d03f beq.n 8000b30 <__addsf3+0xd8>
+ 8000ab0: f1a2 0201 sub.w r2, r2, #1
+ 8000ab4: fa41 fc03 asr.w ip, r1, r3
+ 8000ab8: eb10 000c adds.w r0, r0, ip
+ 8000abc: f1c3 0320 rsb r3, r3, #32
+ 8000ac0: fa01 f103 lsl.w r1, r1, r3
+ 8000ac4: f000 4300 and.w r3, r0, #2147483648 ; 0x80000000
+ 8000ac8: d502 bpl.n 8000ad0 <__addsf3+0x78>
+ 8000aca: 4249 negs r1, r1
+ 8000acc: eb60 0040 sbc.w r0, r0, r0, lsl #1
+ 8000ad0: f5b0 0f00 cmp.w r0, #8388608 ; 0x800000
+ 8000ad4: d313 bcc.n 8000afe <__addsf3+0xa6>
+ 8000ad6: f1b0 7f80 cmp.w r0, #16777216 ; 0x1000000
+ 8000ada: d306 bcc.n 8000aea <__addsf3+0x92>
+ 8000adc: 0840 lsrs r0, r0, #1
+ 8000ade: ea4f 0131 mov.w r1, r1, rrx
+ 8000ae2: f102 0201 add.w r2, r2, #1
+ 8000ae6: 2afe cmp r2, #254 ; 0xfe
+ 8000ae8: d251 bcs.n 8000b8e <__addsf3+0x136>
+ 8000aea: f1b1 4f00 cmp.w r1, #2147483648 ; 0x80000000
+ 8000aee: eb40 50c2 adc.w r0, r0, r2, lsl #23
+ 8000af2: bf08 it eq
+ 8000af4: f020 0001 biceq.w r0, r0, #1
+ 8000af8: ea40 0003 orr.w r0, r0, r3
+ 8000afc: 4770 bx lr
+ 8000afe: 0049 lsls r1, r1, #1
+ 8000b00: eb40 0000 adc.w r0, r0, r0
+ 8000b04: f410 0f00 tst.w r0, #8388608 ; 0x800000
+ 8000b08: f1a2 0201 sub.w r2, r2, #1
+ 8000b0c: d1ed bne.n 8000aea <__addsf3+0x92>
+ 8000b0e: fab0 fc80 clz ip, r0
+ 8000b12: f1ac 0c08 sub.w ip, ip, #8
+ 8000b16: ebb2 020c subs.w r2, r2, ip
+ 8000b1a: fa00 f00c lsl.w r0, r0, ip
+ 8000b1e: bfaa itet ge
+ 8000b20: eb00 50c2 addge.w r0, r0, r2, lsl #23
+ 8000b24: 4252 neglt r2, r2
+ 8000b26: 4318 orrge r0, r3
+ 8000b28: bfbc itt lt
+ 8000b2a: 40d0 lsrlt r0, r2
+ 8000b2c: 4318 orrlt r0, r3
+ 8000b2e: 4770 bx lr
+ 8000b30: f092 0f00 teq r2, #0
+ 8000b34: f481 0100 eor.w r1, r1, #8388608 ; 0x800000
+ 8000b38: bf06 itte eq
+ 8000b3a: f480 0000 eoreq.w r0, r0, #8388608 ; 0x800000
+ 8000b3e: 3201 addeq r2, #1
+ 8000b40: 3b01 subne r3, #1
+ 8000b42: e7b5 b.n 8000ab0 <__addsf3+0x58>
+ 8000b44: ea4f 0341 mov.w r3, r1, lsl #1
+ 8000b48: ea7f 6c22 mvns.w ip, r2, asr #24
+ 8000b4c: bf18 it ne
+ 8000b4e: ea7f 6c23 mvnsne.w ip, r3, asr #24
+ 8000b52: d021 beq.n 8000b98 <__addsf3+0x140>
+ 8000b54: ea92 0f03 teq r2, r3
+ 8000b58: d004 beq.n 8000b64 <__addsf3+0x10c>
+ 8000b5a: f092 0f00 teq r2, #0
+ 8000b5e: bf08 it eq
+ 8000b60: 4608 moveq r0, r1
+ 8000b62: 4770 bx lr
+ 8000b64: ea90 0f01 teq r0, r1
+ 8000b68: bf1c itt ne
+ 8000b6a: 2000 movne r0, #0
+ 8000b6c: 4770 bxne lr
+ 8000b6e: f012 4f7f tst.w r2, #4278190080 ; 0xff000000
+ 8000b72: d104 bne.n 8000b7e <__addsf3+0x126>
+ 8000b74: 0040 lsls r0, r0, #1
+ 8000b76: bf28 it cs
+ 8000b78: f040 4000 orrcs.w r0, r0, #2147483648 ; 0x80000000
+ 8000b7c: 4770 bx lr
+ 8000b7e: f112 7200 adds.w r2, r2, #33554432 ; 0x2000000
+ 8000b82: bf3c itt cc
+ 8000b84: f500 0000 addcc.w r0, r0, #8388608 ; 0x800000
+ 8000b88: 4770 bxcc lr
+ 8000b8a: f000 4300 and.w r3, r0, #2147483648 ; 0x80000000
+ 8000b8e: f043 40fe orr.w r0, r3, #2130706432 ; 0x7f000000
+ 8000b92: f440 0000 orr.w r0, r0, #8388608 ; 0x800000
+ 8000b96: 4770 bx lr
+ 8000b98: ea7f 6222 mvns.w r2, r2, asr #24
+ 8000b9c: bf16 itet ne
+ 8000b9e: 4608 movne r0, r1
+ 8000ba0: ea7f 6323 mvnseq.w r3, r3, asr #24
+ 8000ba4: 4601 movne r1, r0
+ 8000ba6: 0242 lsls r2, r0, #9
+ 8000ba8: bf06 itte eq
+ 8000baa: ea5f 2341 movseq.w r3, r1, lsl #9
+ 8000bae: ea90 0f01 teqeq r0, r1
+ 8000bb2: f440 0080 orrne.w r0, r0, #4194304 ; 0x400000
+ 8000bb6: 4770 bx lr
+
+08000bb8 <__aeabi_ui2f>:
+ 8000bb8: f04f 0300 mov.w r3, #0
+ 8000bbc: e004 b.n 8000bc8 <__aeabi_i2f+0x8>
+ 8000bbe: bf00 nop
+
+08000bc0 <__aeabi_i2f>:
+ 8000bc0: f010 4300 ands.w r3, r0, #2147483648 ; 0x80000000
+ 8000bc4: bf48 it mi
+ 8000bc6: 4240 negmi r0, r0
+ 8000bc8: ea5f 0c00 movs.w ip, r0
+ 8000bcc: bf08 it eq
+ 8000bce: 4770 bxeq lr
+ 8000bd0: f043 4396 orr.w r3, r3, #1258291200 ; 0x4b000000
+ 8000bd4: 4601 mov r1, r0
+ 8000bd6: f04f 0000 mov.w r0, #0
+ 8000bda: e01c b.n 8000c16 <__aeabi_l2f+0x2a>
+
+08000bdc <__aeabi_ul2f>:
+ 8000bdc: ea50 0201 orrs.w r2, r0, r1
+ 8000be0: bf08 it eq
+ 8000be2: 4770 bxeq lr
+ 8000be4: f04f 0300 mov.w r3, #0
+ 8000be8: e00a b.n 8000c00 <__aeabi_l2f+0x14>
+ 8000bea: bf00 nop
+
+08000bec <__aeabi_l2f>:
+ 8000bec: ea50 0201 orrs.w r2, r0, r1
+ 8000bf0: bf08 it eq
+ 8000bf2: 4770 bxeq lr
+ 8000bf4: f011 4300 ands.w r3, r1, #2147483648 ; 0x80000000
+ 8000bf8: d502 bpl.n 8000c00 <__aeabi_l2f+0x14>
+ 8000bfa: 4240 negs r0, r0
+ 8000bfc: eb61 0141 sbc.w r1, r1, r1, lsl #1
+ 8000c00: ea5f 0c01 movs.w ip, r1
+ 8000c04: bf02 ittt eq
+ 8000c06: 4684 moveq ip, r0
+ 8000c08: 4601 moveq r1, r0
+ 8000c0a: 2000 moveq r0, #0
+ 8000c0c: f043 43b6 orr.w r3, r3, #1526726656 ; 0x5b000000
+ 8000c10: bf08 it eq
+ 8000c12: f1a3 5380 subeq.w r3, r3, #268435456 ; 0x10000000
+ 8000c16: f5a3 0300 sub.w r3, r3, #8388608 ; 0x800000
+ 8000c1a: fabc f28c clz r2, ip
+ 8000c1e: 3a08 subs r2, #8
+ 8000c20: eba3 53c2 sub.w r3, r3, r2, lsl #23
+ 8000c24: db10 blt.n 8000c48 <__aeabi_l2f+0x5c>
+ 8000c26: fa01 fc02 lsl.w ip, r1, r2
+ 8000c2a: 4463 add r3, ip
+ 8000c2c: fa00 fc02 lsl.w ip, r0, r2
+ 8000c30: f1c2 0220 rsb r2, r2, #32
+ 8000c34: f1bc 4f00 cmp.w ip, #2147483648 ; 0x80000000
+ 8000c38: fa20 f202 lsr.w r2, r0, r2
+ 8000c3c: eb43 0002 adc.w r0, r3, r2
+ 8000c40: bf08 it eq
+ 8000c42: f020 0001 biceq.w r0, r0, #1
+ 8000c46: 4770 bx lr
+ 8000c48: f102 0220 add.w r2, r2, #32
+ 8000c4c: fa01 fc02 lsl.w ip, r1, r2
+ 8000c50: f1c2 0220 rsb r2, r2, #32
+ 8000c54: ea50 004c orrs.w r0, r0, ip, lsl #1
+ 8000c58: fa21 f202 lsr.w r2, r1, r2
+ 8000c5c: eb43 0002 adc.w r0, r3, r2
+ 8000c60: bf08 it eq
+ 8000c62: ea20 70dc biceq.w r0, r0, ip, lsr #31
+ 8000c66: 4770 bx lr
+
+08000c68 <__aeabi_fmul>:
+ 8000c68: f04f 0cff mov.w ip, #255 ; 0xff
+ 8000c6c: ea1c 52d0 ands.w r2, ip, r0, lsr #23
+ 8000c70: bf1e ittt ne
+ 8000c72: ea1c 53d1 andsne.w r3, ip, r1, lsr #23
+ 8000c76: ea92 0f0c teqne r2, ip
+ 8000c7a: ea93 0f0c teqne r3, ip
+ 8000c7e: d06f beq.n 8000d60 <__aeabi_fmul+0xf8>
+ 8000c80: 441a add r2, r3
+ 8000c82: ea80 0c01 eor.w ip, r0, r1
+ 8000c86: 0240 lsls r0, r0, #9
+ 8000c88: bf18 it ne
+ 8000c8a: ea5f 2141 movsne.w r1, r1, lsl #9
+ 8000c8e: d01e beq.n 8000cce <__aeabi_fmul+0x66>
+ 8000c90: f04f 6300 mov.w r3, #134217728 ; 0x8000000
+ 8000c94: ea43 1050 orr.w r0, r3, r0, lsr #5
+ 8000c98: ea43 1151 orr.w r1, r3, r1, lsr #5
+ 8000c9c: fba0 3101 umull r3, r1, r0, r1
+ 8000ca0: f00c 4000 and.w r0, ip, #2147483648 ; 0x80000000
+ 8000ca4: f5b1 0f00 cmp.w r1, #8388608 ; 0x800000
+ 8000ca8: bf3e ittt cc
+ 8000caa: 0049 lslcc r1, r1, #1
+ 8000cac: ea41 71d3 orrcc.w r1, r1, r3, lsr #31
+ 8000cb0: 005b lslcc r3, r3, #1
+ 8000cb2: ea40 0001 orr.w r0, r0, r1
+ 8000cb6: f162 027f sbc.w r2, r2, #127 ; 0x7f
+ 8000cba: 2afd cmp r2, #253 ; 0xfd
+ 8000cbc: d81d bhi.n 8000cfa <__aeabi_fmul+0x92>
+ 8000cbe: f1b3 4f00 cmp.w r3, #2147483648 ; 0x80000000
+ 8000cc2: eb40 50c2 adc.w r0, r0, r2, lsl #23
+ 8000cc6: bf08 it eq
+ 8000cc8: f020 0001 biceq.w r0, r0, #1
+ 8000ccc: 4770 bx lr
+ 8000cce: f090 0f00 teq r0, #0
+ 8000cd2: f00c 4c00 and.w ip, ip, #2147483648 ; 0x80000000
+ 8000cd6: bf08 it eq
+ 8000cd8: 0249 lsleq r1, r1, #9
+ 8000cda: ea4c 2050 orr.w r0, ip, r0, lsr #9
+ 8000cde: ea40 2051 orr.w r0, r0, r1, lsr #9
+ 8000ce2: 3a7f subs r2, #127 ; 0x7f
+ 8000ce4: bfc2 ittt gt
+ 8000ce6: f1d2 03ff rsbsgt r3, r2, #255 ; 0xff
+ 8000cea: ea40 50c2 orrgt.w r0, r0, r2, lsl #23
+ 8000cee: 4770 bxgt lr
+ 8000cf0: f440 0000 orr.w r0, r0, #8388608 ; 0x800000
+ 8000cf4: f04f 0300 mov.w r3, #0
+ 8000cf8: 3a01 subs r2, #1
+ 8000cfa: dc5d bgt.n 8000db8 <__aeabi_fmul+0x150>
+ 8000cfc: f112 0f19 cmn.w r2, #25
+ 8000d00: bfdc itt le
+ 8000d02: f000 4000 andle.w r0, r0, #2147483648 ; 0x80000000
+ 8000d06: 4770 bxle lr
+ 8000d08: f1c2 0200 rsb r2, r2, #0
+ 8000d0c: 0041 lsls r1, r0, #1
+ 8000d0e: fa21 f102 lsr.w r1, r1, r2
+ 8000d12: f1c2 0220 rsb r2, r2, #32
+ 8000d16: fa00 fc02 lsl.w ip, r0, r2
+ 8000d1a: ea5f 0031 movs.w r0, r1, rrx
+ 8000d1e: f140 0000 adc.w r0, r0, #0
+ 8000d22: ea53 034c orrs.w r3, r3, ip, lsl #1
+ 8000d26: bf08 it eq
+ 8000d28: ea20 70dc biceq.w r0, r0, ip, lsr #31
+ 8000d2c: 4770 bx lr
+ 8000d2e: f092 0f00 teq r2, #0
+ 8000d32: f000 4c00 and.w ip, r0, #2147483648 ; 0x80000000
+ 8000d36: bf02 ittt eq
+ 8000d38: 0040 lsleq r0, r0, #1
+ 8000d3a: f410 0f00 tsteq.w r0, #8388608 ; 0x800000
+ 8000d3e: 3a01 subeq r2, #1
+ 8000d40: d0f9 beq.n 8000d36 <__aeabi_fmul+0xce>
+ 8000d42: ea40 000c orr.w r0, r0, ip
+ 8000d46: f093 0f00 teq r3, #0
+ 8000d4a: f001 4c00 and.w ip, r1, #2147483648 ; 0x80000000
+ 8000d4e: bf02 ittt eq
+ 8000d50: 0049 lsleq r1, r1, #1
+ 8000d52: f411 0f00 tsteq.w r1, #8388608 ; 0x800000
+ 8000d56: 3b01 subeq r3, #1
+ 8000d58: d0f9 beq.n 8000d4e <__aeabi_fmul+0xe6>
+ 8000d5a: ea41 010c orr.w r1, r1, ip
+ 8000d5e: e78f b.n 8000c80 <__aeabi_fmul+0x18>
+ 8000d60: ea0c 53d1 and.w r3, ip, r1, lsr #23
+ 8000d64: ea92 0f0c teq r2, ip
+ 8000d68: bf18 it ne
+ 8000d6a: ea93 0f0c teqne r3, ip
+ 8000d6e: d00a beq.n 8000d86 <__aeabi_fmul+0x11e>
+ 8000d70: f030 4c00 bics.w ip, r0, #2147483648 ; 0x80000000
+ 8000d74: bf18 it ne
+ 8000d76: f031 4c00 bicsne.w ip, r1, #2147483648 ; 0x80000000
+ 8000d7a: d1d8 bne.n 8000d2e <__aeabi_fmul+0xc6>
+ 8000d7c: ea80 0001 eor.w r0, r0, r1
+ 8000d80: f000 4000 and.w r0, r0, #2147483648 ; 0x80000000
+ 8000d84: 4770 bx lr
+ 8000d86: f090 0f00 teq r0, #0
+ 8000d8a: bf17 itett ne
+ 8000d8c: f090 4f00 teqne r0, #2147483648 ; 0x80000000
+ 8000d90: 4608 moveq r0, r1
+ 8000d92: f091 0f00 teqne r1, #0
+ 8000d96: f091 4f00 teqne r1, #2147483648 ; 0x80000000
+ 8000d9a: d014 beq.n 8000dc6 <__aeabi_fmul+0x15e>
+ 8000d9c: ea92 0f0c teq r2, ip
+ 8000da0: d101 bne.n 8000da6 <__aeabi_fmul+0x13e>
+ 8000da2: 0242 lsls r2, r0, #9
+ 8000da4: d10f bne.n 8000dc6 <__aeabi_fmul+0x15e>
+ 8000da6: ea93 0f0c teq r3, ip
+ 8000daa: d103 bne.n 8000db4 <__aeabi_fmul+0x14c>
+ 8000dac: 024b lsls r3, r1, #9
+ 8000dae: bf18 it ne
+ 8000db0: 4608 movne r0, r1
+ 8000db2: d108 bne.n 8000dc6 <__aeabi_fmul+0x15e>
+ 8000db4: ea80 0001 eor.w r0, r0, r1
+ 8000db8: f000 4000 and.w r0, r0, #2147483648 ; 0x80000000
+ 8000dbc: f040 40fe orr.w r0, r0, #2130706432 ; 0x7f000000
+ 8000dc0: f440 0000 orr.w r0, r0, #8388608 ; 0x800000
+ 8000dc4: 4770 bx lr
+ 8000dc6: f040 40fe orr.w r0, r0, #2130706432 ; 0x7f000000
+ 8000dca: f440 0040 orr.w r0, r0, #12582912 ; 0xc00000
+ 8000dce: 4770 bx lr
+
+08000dd0 <__aeabi_fdiv>:
+ 8000dd0: f04f 0cff mov.w ip, #255 ; 0xff
+ 8000dd4: ea1c 52d0 ands.w r2, ip, r0, lsr #23
+ 8000dd8: bf1e ittt ne
+ 8000dda: ea1c 53d1 andsne.w r3, ip, r1, lsr #23
+ 8000dde: ea92 0f0c teqne r2, ip
+ 8000de2: ea93 0f0c teqne r3, ip
+ 8000de6: d069 beq.n 8000ebc <__aeabi_fdiv+0xec>
+ 8000de8: eba2 0203 sub.w r2, r2, r3
+ 8000dec: ea80 0c01 eor.w ip, r0, r1
+ 8000df0: 0249 lsls r1, r1, #9
+ 8000df2: ea4f 2040 mov.w r0, r0, lsl #9
+ 8000df6: d037 beq.n 8000e68 <__aeabi_fdiv+0x98>
+ 8000df8: f04f 5380 mov.w r3, #268435456 ; 0x10000000
+ 8000dfc: ea43 1111 orr.w r1, r3, r1, lsr #4
+ 8000e00: ea43 1310 orr.w r3, r3, r0, lsr #4
+ 8000e04: f00c 4000 and.w r0, ip, #2147483648 ; 0x80000000
+ 8000e08: 428b cmp r3, r1
+ 8000e0a: bf38 it cc
+ 8000e0c: 005b lslcc r3, r3, #1
+ 8000e0e: f142 027d adc.w r2, r2, #125 ; 0x7d
+ 8000e12: f44f 0c00 mov.w ip, #8388608 ; 0x800000
+ 8000e16: 428b cmp r3, r1
+ 8000e18: bf24 itt cs
+ 8000e1a: 1a5b subcs r3, r3, r1
+ 8000e1c: ea40 000c orrcs.w r0, r0, ip
+ 8000e20: ebb3 0f51 cmp.w r3, r1, lsr #1
+ 8000e24: bf24 itt cs
+ 8000e26: eba3 0351 subcs.w r3, r3, r1, lsr #1
+ 8000e2a: ea40 005c orrcs.w r0, r0, ip, lsr #1
+ 8000e2e: ebb3 0f91 cmp.w r3, r1, lsr #2
+ 8000e32: bf24 itt cs
+ 8000e34: eba3 0391 subcs.w r3, r3, r1, lsr #2
+ 8000e38: ea40 009c orrcs.w r0, r0, ip, lsr #2
+ 8000e3c: ebb3 0fd1 cmp.w r3, r1, lsr #3
+ 8000e40: bf24 itt cs
+ 8000e42: eba3 03d1 subcs.w r3, r3, r1, lsr #3
+ 8000e46: ea40 00dc orrcs.w r0, r0, ip, lsr #3
+ 8000e4a: 011b lsls r3, r3, #4
+ 8000e4c: bf18 it ne
+ 8000e4e: ea5f 1c1c movsne.w ip, ip, lsr #4
+ 8000e52: d1e0 bne.n 8000e16 <__aeabi_fdiv+0x46>
+ 8000e54: 2afd cmp r2, #253 ; 0xfd
+ 8000e56: f63f af50 bhi.w 8000cfa <__aeabi_fmul+0x92>
+ 8000e5a: 428b cmp r3, r1
+ 8000e5c: eb40 50c2 adc.w r0, r0, r2, lsl #23
+ 8000e60: bf08 it eq
+ 8000e62: f020 0001 biceq.w r0, r0, #1
+ 8000e66: 4770 bx lr
+ 8000e68: f00c 4c00 and.w ip, ip, #2147483648 ; 0x80000000
+ 8000e6c: ea4c 2050 orr.w r0, ip, r0, lsr #9
+ 8000e70: 327f adds r2, #127 ; 0x7f
+ 8000e72: bfc2 ittt gt
+ 8000e74: f1d2 03ff rsbsgt r3, r2, #255 ; 0xff
+ 8000e78: ea40 50c2 orrgt.w r0, r0, r2, lsl #23
+ 8000e7c: 4770 bxgt lr
+ 8000e7e: f440 0000 orr.w r0, r0, #8388608 ; 0x800000
+ 8000e82: f04f 0300 mov.w r3, #0
+ 8000e86: 3a01 subs r2, #1
+ 8000e88: e737 b.n 8000cfa <__aeabi_fmul+0x92>
+ 8000e8a: f092 0f00 teq r2, #0
+ 8000e8e: f000 4c00 and.w ip, r0, #2147483648 ; 0x80000000
+ 8000e92: bf02 ittt eq
+ 8000e94: 0040 lsleq r0, r0, #1
+ 8000e96: f410 0f00 tsteq.w r0, #8388608 ; 0x800000
+ 8000e9a: 3a01 subeq r2, #1
+ 8000e9c: d0f9 beq.n 8000e92 <__aeabi_fdiv+0xc2>
+ 8000e9e: ea40 000c orr.w r0, r0, ip
+ 8000ea2: f093 0f00 teq r3, #0
+ 8000ea6: f001 4c00 and.w ip, r1, #2147483648 ; 0x80000000
+ 8000eaa: bf02 ittt eq
+ 8000eac: 0049 lsleq r1, r1, #1
+ 8000eae: f411 0f00 tsteq.w r1, #8388608 ; 0x800000
+ 8000eb2: 3b01 subeq r3, #1
+ 8000eb4: d0f9 beq.n 8000eaa <__aeabi_fdiv+0xda>
+ 8000eb6: ea41 010c orr.w r1, r1, ip
+ 8000eba: e795 b.n 8000de8 <__aeabi_fdiv+0x18>
+ 8000ebc: ea0c 53d1 and.w r3, ip, r1, lsr #23
+ 8000ec0: ea92 0f0c teq r2, ip
+ 8000ec4: d108 bne.n 8000ed8 <__aeabi_fdiv+0x108>
+ 8000ec6: 0242 lsls r2, r0, #9
+ 8000ec8: f47f af7d bne.w 8000dc6 <__aeabi_fmul+0x15e>
+ 8000ecc: ea93 0f0c teq r3, ip
+ 8000ed0: f47f af70 bne.w 8000db4 <__aeabi_fmul+0x14c>
+ 8000ed4: 4608 mov r0, r1
+ 8000ed6: e776 b.n 8000dc6 <__aeabi_fmul+0x15e>
+ 8000ed8: ea93 0f0c teq r3, ip
+ 8000edc: d104 bne.n 8000ee8 <__aeabi_fdiv+0x118>
+ 8000ede: 024b lsls r3, r1, #9
+ 8000ee0: f43f af4c beq.w 8000d7c <__aeabi_fmul+0x114>
+ 8000ee4: 4608 mov r0, r1
+ 8000ee6: e76e b.n 8000dc6 <__aeabi_fmul+0x15e>
+ 8000ee8: f030 4c00 bics.w ip, r0, #2147483648 ; 0x80000000
+ 8000eec: bf18 it ne
+ 8000eee: f031 4c00 bicsne.w ip, r1, #2147483648 ; 0x80000000
+ 8000ef2: d1ca bne.n 8000e8a <__aeabi_fdiv+0xba>
+ 8000ef4: f030 4200 bics.w r2, r0, #2147483648 ; 0x80000000
+ 8000ef8: f47f af5c bne.w 8000db4 <__aeabi_fmul+0x14c>
+ 8000efc: f031 4300 bics.w r3, r1, #2147483648 ; 0x80000000
+ 8000f00: f47f af3c bne.w 8000d7c <__aeabi_fmul+0x114>
+ 8000f04: e75f b.n 8000dc6 <__aeabi_fmul+0x15e>
+ 8000f06: bf00 nop
+
+08000f08 <__gesf2>:
+ 8000f08: f04f 3cff mov.w ip, #4294967295 ; 0xffffffff
+ 8000f0c: e006 b.n 8000f1c <__cmpsf2+0x4>
+ 8000f0e: bf00 nop
+
+08000f10 <__lesf2>:
+ 8000f10: f04f 0c01 mov.w ip, #1
+ 8000f14: e002 b.n 8000f1c <__cmpsf2+0x4>
+ 8000f16: bf00 nop
+
+08000f18 <__cmpsf2>:
+ 8000f18: f04f 0c01 mov.w ip, #1
+ 8000f1c: f84d cd04 str.w ip, [sp, #-4]!
+ 8000f20: ea4f 0240 mov.w r2, r0, lsl #1
+ 8000f24: ea4f 0341 mov.w r3, r1, lsl #1
+ 8000f28: ea7f 6c22 mvns.w ip, r2, asr #24
+ 8000f2c: bf18 it ne
+ 8000f2e: ea7f 6c23 mvnsne.w ip, r3, asr #24
+ 8000f32: d011 beq.n 8000f58 <__cmpsf2+0x40>
+ 8000f34: b001 add sp, #4
+ 8000f36: ea52 0c53 orrs.w ip, r2, r3, lsr #1
+ 8000f3a: bf18 it ne
+ 8000f3c: ea90 0f01 teqne r0, r1
+ 8000f40: bf58 it pl
+ 8000f42: ebb2 0003 subspl.w r0, r2, r3
+ 8000f46: bf88 it hi
+ 8000f48: 17c8 asrhi r0, r1, #31
+ 8000f4a: bf38 it cc
+ 8000f4c: ea6f 70e1 mvncc.w r0, r1, asr #31
+ 8000f50: bf18 it ne
+ 8000f52: f040 0001 orrne.w r0, r0, #1
+ 8000f56: 4770 bx lr
+ 8000f58: ea7f 6c22 mvns.w ip, r2, asr #24
+ 8000f5c: d102 bne.n 8000f64 <__cmpsf2+0x4c>
+ 8000f5e: ea5f 2c40 movs.w ip, r0, lsl #9
+ 8000f62: d105 bne.n 8000f70 <__cmpsf2+0x58>
+ 8000f64: ea7f 6c23 mvns.w ip, r3, asr #24
+ 8000f68: d1e4 bne.n 8000f34 <__cmpsf2+0x1c>
+ 8000f6a: ea5f 2c41 movs.w ip, r1, lsl #9
+ 8000f6e: d0e1 beq.n 8000f34 <__cmpsf2+0x1c>
+ 8000f70: f85d 0b04 ldr.w r0, [sp], #4
+ 8000f74: 4770 bx lr
+ 8000f76: bf00 nop
+
+08000f78 <__aeabi_cfrcmple>:
+ 8000f78: 4684 mov ip, r0
+ 8000f7a: 4608 mov r0, r1
+ 8000f7c: 4661 mov r1, ip
+ 8000f7e: e7ff b.n 8000f80 <__aeabi_cfcmpeq>
+
+08000f80 <__aeabi_cfcmpeq>:
+ 8000f80: b50f push {r0, r1, r2, r3, lr}
+ 8000f82: f7ff ffc9 bl 8000f18 <__cmpsf2>
+ 8000f86: 2800 cmp r0, #0
+ 8000f88: bf48 it mi
+ 8000f8a: f110 0f00 cmnmi.w r0, #0
+ 8000f8e: bd0f pop {r0, r1, r2, r3, pc}
+
+08000f90 <__aeabi_fcmpeq>:
+ 8000f90: f84d ed08 str.w lr, [sp, #-8]!
+ 8000f94: f7ff fff4 bl 8000f80 <__aeabi_cfcmpeq>
+ 8000f98: bf0c ite eq
+ 8000f9a: 2001 moveq r0, #1
+ 8000f9c: 2000 movne r0, #0
+ 8000f9e: f85d fb08 ldr.w pc, [sp], #8
+ 8000fa2: bf00 nop
+
+08000fa4 <__aeabi_fcmplt>:
+ 8000fa4: f84d ed08 str.w lr, [sp, #-8]!
+ 8000fa8: f7ff ffea bl 8000f80 <__aeabi_cfcmpeq>
+ 8000fac: bf34 ite cc
+ 8000fae: 2001 movcc r0, #1
+ 8000fb0: 2000 movcs r0, #0
+ 8000fb2: f85d fb08 ldr.w pc, [sp], #8
+ 8000fb6: bf00 nop
+
+08000fb8 <__aeabi_fcmple>:
+ 8000fb8: f84d ed08 str.w lr, [sp, #-8]!
+ 8000fbc: f7ff ffe0 bl 8000f80 <__aeabi_cfcmpeq>
+ 8000fc0: bf94 ite ls
+ 8000fc2: 2001 movls r0, #1
+ 8000fc4: 2000 movhi r0, #0
+ 8000fc6: f85d fb08 ldr.w pc, [sp], #8
+ 8000fca: bf00 nop
+
+08000fcc <__aeabi_fcmpge>:
+ 8000fcc: f84d ed08 str.w lr, [sp, #-8]!
+ 8000fd0: f7ff ffd2 bl 8000f78 <__aeabi_cfrcmple>
+ 8000fd4: bf94 ite ls
+ 8000fd6: 2001 movls r0, #1
+ 8000fd8: 2000 movhi r0, #0
+ 8000fda: f85d fb08 ldr.w pc, [sp], #8
+ 8000fde: bf00 nop
+
+08000fe0 <__aeabi_fcmpgt>:
+ 8000fe0: f84d ed08 str.w lr, [sp, #-8]!
+ 8000fe4: f7ff ffc8 bl 8000f78 <__aeabi_cfrcmple>
+ 8000fe8: bf34 ite cc
+ 8000fea: 2001 movcc r0, #1
+ 8000fec: 2000 movcs r0, #0
+ 8000fee: f85d fb08 ldr.w pc, [sp], #8
+ 8000ff2: bf00 nop
+
+08000ff4 :
+ * need to ensure that the SysTick time base is always set to 1 millisecond
+ * to have correct HAL operation.
+ * @retval HAL status
+ */
+HAL_StatusTypeDef HAL_Init(void)
+{
+ 8000ff4: b580 push {r7, lr}
+ 8000ff6: af00 add r7, sp, #0
+ defined(STM32F102x6) || defined(STM32F102xB) || \
+ defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG) || \
+ defined(STM32F105xC) || defined(STM32F107xC)
+
+ /* Prefetch buffer is not available on value line devices */
+ __HAL_FLASH_PREFETCH_BUFFER_ENABLE();
+ 8000ff8: 4b08 ldr r3, [pc, #32] ; (800101c )
+ 8000ffa: 681b ldr r3, [r3, #0]
+ 8000ffc: 4a07 ldr r2, [pc, #28] ; (800101c )
+ 8000ffe: f043 0310 orr.w r3, r3, #16
+ 8001002: 6013 str r3, [r2, #0]
+#endif
+#endif /* PREFETCH_ENABLE */
+
+ /* Set Interrupt Group Priority */
+ HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);
+ 8001004: 2003 movs r0, #3
+ 8001006: f000 f945 bl 8001294
+
+ /* Use systick as time base source and configure 1ms tick (default clock after Reset is HSI) */
+ HAL_InitTick(TICK_INT_PRIORITY);
+ 800100a: 200f movs r0, #15
+ 800100c: f000 f808 bl 8001020
+
+ /* Init the low level hardware */
+ HAL_MspInit();
+ 8001010: f008 ff9c bl 8009f4c
+
+ /* Return function status */
+ return HAL_OK;
+ 8001014: 2300 movs r3, #0
+}
+ 8001016: 4618 mov r0, r3
+ 8001018: bd80 pop {r7, pc}
+ 800101a: bf00 nop
+ 800101c: 40022000 .word 0x40022000
+
+08001020 :
+ * implementation in user file.
+ * @param TickPriority Tick interrupt priority.
+ * @retval HAL status
+ */
+__weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)
+{
+ 8001020: b580 push {r7, lr}
+ 8001022: b082 sub sp, #8
+ 8001024: af00 add r7, sp, #0
+ 8001026: 6078 str r0, [r7, #4]
+ /* Configure the SysTick to have interrupt in 1ms time basis*/
+ if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) > 0U)
+ 8001028: 4b12 ldr r3, [pc, #72] ; (8001074 )
+ 800102a: 681a ldr r2, [r3, #0]
+ 800102c: 4b12 ldr r3, [pc, #72] ; (8001078 )
+ 800102e: 781b ldrb r3, [r3, #0]
+ 8001030: 4619 mov r1, r3
+ 8001032: f44f 737a mov.w r3, #1000 ; 0x3e8
+ 8001036: fbb3 f3f1 udiv r3, r3, r1
+ 800103a: fbb2 f3f3 udiv r3, r2, r3
+ 800103e: 4618 mov r0, r3
+ 8001040: f000 f95d bl 80012fe
+ 8001044: 4603 mov r3, r0
+ 8001046: 2b00 cmp r3, #0
+ 8001048: d001 beq.n 800104e
+ {
+ return HAL_ERROR;
+ 800104a: 2301 movs r3, #1
+ 800104c: e00e b.n 800106c
+ }
+
+ /* Configure the SysTick IRQ priority */
+ if (TickPriority < (1UL << __NVIC_PRIO_BITS))
+ 800104e: 687b ldr r3, [r7, #4]
+ 8001050: 2b0f cmp r3, #15
+ 8001052: d80a bhi.n 800106a
+ {
+ HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U);
+ 8001054: 2200 movs r2, #0
+ 8001056: 6879 ldr r1, [r7, #4]
+ 8001058: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff
+ 800105c: f000 f925 bl 80012aa
+ uwTickPrio = TickPriority;
+ 8001060: 4a06 ldr r2, [pc, #24] ; (800107c )
+ 8001062: 687b ldr r3, [r7, #4]
+ 8001064: 6013 str r3, [r2, #0]
+ {
+ return HAL_ERROR;
+ }
+
+ /* Return function status */
+ return HAL_OK;
+ 8001066: 2300 movs r3, #0
+ 8001068: e000 b.n 800106c
+ return HAL_ERROR;
+ 800106a: 2301 movs r3, #1
+}
+ 800106c: 4618 mov r0, r3
+ 800106e: 3708 adds r7, #8
+ 8001070: 46bd mov sp, r7
+ 8001072: bd80 pop {r7, pc}
+ 8001074: 20000140 .word 0x20000140
+ 8001078: 20000004 .word 0x20000004
+ 800107c: 20000000 .word 0x20000000
+
+08001080 :
+ * @note This function is declared as __weak to be overwritten in case of other
+ * implementations in user file.
+ * @retval None
+ */
+__weak void HAL_IncTick(void)
+{
+ 8001080: b480 push {r7}
+ 8001082: af00 add r7, sp, #0
+ uwTick += uwTickFreq;
+ 8001084: 4b05 ldr r3, [pc, #20] ; (800109c )
+ 8001086: 781b ldrb r3, [r3, #0]
+ 8001088: 461a mov r2, r3
+ 800108a: 4b05 ldr r3, [pc, #20] ; (80010a0 )
+ 800108c: 681b ldr r3, [r3, #0]
+ 800108e: 4413 add r3, r2
+ 8001090: 4a03 ldr r2, [pc, #12] ; (80010a0 )
+ 8001092: 6013 str r3, [r2, #0]
+}
+ 8001094: bf00 nop
+ 8001096: 46bd mov sp, r7
+ 8001098: bc80 pop {r7}
+ 800109a: 4770 bx lr
+ 800109c: 20000004 .word 0x20000004
+ 80010a0: 200011f4 .word 0x200011f4
+
+080010a4 :
+ * @note This function is declared as __weak to be overwritten in case of other
+ * implementations in user file.
+ * @retval tick value
+ */
+__weak uint32_t HAL_GetTick(void)
+{
+ 80010a4: b480 push {r7}
+ 80010a6: af00 add r7, sp, #0
+ return uwTick;
+ 80010a8: 4b02 ldr r3, [pc, #8] ; (80010b4 )
+ 80010aa: 681b ldr r3, [r3, #0]
+}
+ 80010ac: 4618 mov r0, r3
+ 80010ae: 46bd mov sp, r7
+ 80010b0: bc80 pop {r7}
+ 80010b2: 4770 bx lr
+ 80010b4: 200011f4 .word 0x200011f4
+
+080010b8 :
+ * implementations in user file.
+ * @param Delay specifies the delay time length, in milliseconds.
+ * @retval None
+ */
+__weak void HAL_Delay(uint32_t Delay)
+{
+ 80010b8: b580 push {r7, lr}
+ 80010ba: b084 sub sp, #16
+ 80010bc: af00 add r7, sp, #0
+ 80010be: 6078 str r0, [r7, #4]
+ uint32_t tickstart = HAL_GetTick();
+ 80010c0: f7ff fff0 bl 80010a4
+ 80010c4: 60b8 str r0, [r7, #8]
+ uint32_t wait = Delay;
+ 80010c6: 687b ldr r3, [r7, #4]
+ 80010c8: 60fb str r3, [r7, #12]
+
+ /* Add a freq to guarantee minimum wait */
+ if (wait < HAL_MAX_DELAY)
+ 80010ca: 68fb ldr r3, [r7, #12]
+ 80010cc: f1b3 3fff cmp.w r3, #4294967295 ; 0xffffffff
+ 80010d0: d005 beq.n 80010de
+ {
+ wait += (uint32_t)(uwTickFreq);
+ 80010d2: 4b09 ldr r3, [pc, #36] ; (80010f8 )
+ 80010d4: 781b ldrb r3, [r3, #0]
+ 80010d6: 461a mov r2, r3
+ 80010d8: 68fb ldr r3, [r7, #12]
+ 80010da: 4413 add r3, r2
+ 80010dc: 60fb str r3, [r7, #12]
+ }
+
+ while ((HAL_GetTick() - tickstart) < wait)
+ 80010de: bf00 nop
+ 80010e0: f7ff ffe0 bl 80010a4
+ 80010e4: 4602 mov r2, r0
+ 80010e6: 68bb ldr r3, [r7, #8]
+ 80010e8: 1ad3 subs r3, r2, r3
+ 80010ea: 68fa ldr r2, [r7, #12]
+ 80010ec: 429a cmp r2, r3
+ 80010ee: d8f7 bhi.n 80010e0
+ {
+ }
+}
+ 80010f0: bf00 nop
+ 80010f2: 3710 adds r7, #16
+ 80010f4: 46bd mov sp, r7
+ 80010f6: bd80 pop {r7, pc}
+ 80010f8: 20000004 .word 0x20000004
+
+080010fc <__NVIC_SetPriorityGrouping>:
+ In case of a conflict between priority grouping and available
+ priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.
+ \param [in] PriorityGroup Priority grouping field.
+ */
+__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
+{
+ 80010fc: b480 push {r7}
+ 80010fe: b085 sub sp, #20
+ 8001100: af00 add r7, sp, #0
+ 8001102: 6078 str r0, [r7, #4]
+ uint32_t reg_value;
+ uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */
+ 8001104: 687b ldr r3, [r7, #4]
+ 8001106: f003 0307 and.w r3, r3, #7
+ 800110a: 60fb str r3, [r7, #12]
+
+ reg_value = SCB->AIRCR; /* read old register configuration */
+ 800110c: 4b0c ldr r3, [pc, #48] ; (8001140 <__NVIC_SetPriorityGrouping+0x44>)
+ 800110e: 68db ldr r3, [r3, #12]
+ 8001110: 60bb str r3, [r7, #8]
+ reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */
+ 8001112: 68ba ldr r2, [r7, #8]
+ 8001114: f64f 03ff movw r3, #63743 ; 0xf8ff
+ 8001118: 4013 ands r3, r2
+ 800111a: 60bb str r3, [r7, #8]
+ reg_value = (reg_value |
+ ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
+ (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */
+ 800111c: 68fb ldr r3, [r7, #12]
+ 800111e: 021a lsls r2, r3, #8
+ ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
+ 8001120: 68bb ldr r3, [r7, #8]
+ 8001122: 4313 orrs r3, r2
+ reg_value = (reg_value |
+ 8001124: f043 63bf orr.w r3, r3, #100139008 ; 0x5f80000
+ 8001128: f443 3300 orr.w r3, r3, #131072 ; 0x20000
+ 800112c: 60bb str r3, [r7, #8]
+ SCB->AIRCR = reg_value;
+ 800112e: 4a04 ldr r2, [pc, #16] ; (8001140 <__NVIC_SetPriorityGrouping+0x44>)
+ 8001130: 68bb ldr r3, [r7, #8]
+ 8001132: 60d3 str r3, [r2, #12]
+}
+ 8001134: bf00 nop
+ 8001136: 3714 adds r7, #20
+ 8001138: 46bd mov sp, r7
+ 800113a: bc80 pop {r7}
+ 800113c: 4770 bx lr
+ 800113e: bf00 nop
+ 8001140: e000ed00 .word 0xe000ed00
+
+08001144 <__NVIC_GetPriorityGrouping>:
+ \brief Get Priority Grouping
+ \details Reads the priority grouping field from the NVIC Interrupt Controller.
+ \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).
+ */
+__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)
+{
+ 8001144: b480 push {r7}
+ 8001146: af00 add r7, sp, #0
+ return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));
+ 8001148: 4b04 ldr r3, [pc, #16] ; (800115c <__NVIC_GetPriorityGrouping+0x18>)
+ 800114a: 68db ldr r3, [r3, #12]
+ 800114c: 0a1b lsrs r3, r3, #8
+ 800114e: f003 0307 and.w r3, r3, #7
+}
+ 8001152: 4618 mov r0, r3
+ 8001154: 46bd mov sp, r7
+ 8001156: bc80 pop {r7}
+ 8001158: 4770 bx lr
+ 800115a: bf00 nop
+ 800115c: e000ed00 .word 0xe000ed00
+
+08001160 <__NVIC_EnableIRQ>:
+ \details Enables a device specific interrupt in the NVIC interrupt controller.
+ \param [in] IRQn Device specific interrupt number.
+ \note IRQn must not be negative.
+ */
+__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)
+{
+ 8001160: b480 push {r7}
+ 8001162: b083 sub sp, #12
+ 8001164: af00 add r7, sp, #0
+ 8001166: 4603 mov r3, r0
+ 8001168: 71fb strb r3, [r7, #7]
+ if ((int32_t)(IRQn) >= 0)
+ 800116a: f997 3007 ldrsb.w r3, [r7, #7]
+ 800116e: 2b00 cmp r3, #0
+ 8001170: db0b blt.n 800118a <__NVIC_EnableIRQ+0x2a>
+ {
+ NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
+ 8001172: 79fb ldrb r3, [r7, #7]
+ 8001174: f003 021f and.w r2, r3, #31
+ 8001178: 4906 ldr r1, [pc, #24] ; (8001194 <__NVIC_EnableIRQ+0x34>)
+ 800117a: f997 3007 ldrsb.w r3, [r7, #7]
+ 800117e: 095b lsrs r3, r3, #5
+ 8001180: 2001 movs r0, #1
+ 8001182: fa00 f202 lsl.w r2, r0, r2
+ 8001186: f841 2023 str.w r2, [r1, r3, lsl #2]
+ }
+}
+ 800118a: bf00 nop
+ 800118c: 370c adds r7, #12
+ 800118e: 46bd mov sp, r7
+ 8001190: bc80 pop {r7}
+ 8001192: 4770 bx lr
+ 8001194: e000e100 .word 0xe000e100
+
+08001198 <__NVIC_SetPriority>:
+ \param [in] IRQn Interrupt number.
+ \param [in] priority Priority to set.
+ \note The priority cannot be set for every processor exception.
+ */
+__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
+{
+ 8001198: b480 push {r7}
+ 800119a: b083 sub sp, #12
+ 800119c: af00 add r7, sp, #0
+ 800119e: 4603 mov r3, r0
+ 80011a0: 6039 str r1, [r7, #0]
+ 80011a2: 71fb strb r3, [r7, #7]
+ if ((int32_t)(IRQn) >= 0)
+ 80011a4: f997 3007 ldrsb.w r3, [r7, #7]
+ 80011a8: 2b00 cmp r3, #0
+ 80011aa: db0a blt.n 80011c2 <__NVIC_SetPriority+0x2a>
+ {
+ NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
+ 80011ac: 683b ldr r3, [r7, #0]
+ 80011ae: b2da uxtb r2, r3
+ 80011b0: 490c ldr r1, [pc, #48] ; (80011e4 <__NVIC_SetPriority+0x4c>)
+ 80011b2: f997 3007 ldrsb.w r3, [r7, #7]
+ 80011b6: 0112 lsls r2, r2, #4
+ 80011b8: b2d2 uxtb r2, r2
+ 80011ba: 440b add r3, r1
+ 80011bc: f883 2300 strb.w r2, [r3, #768] ; 0x300
+ }
+ else
+ {
+ SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
+ }
+}
+ 80011c0: e00a b.n 80011d8 <__NVIC_SetPriority+0x40>
+ SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
+ 80011c2: 683b ldr r3, [r7, #0]
+ 80011c4: b2da uxtb r2, r3
+ 80011c6: 4908 ldr r1, [pc, #32] ; (80011e8 <__NVIC_SetPriority+0x50>)
+ 80011c8: 79fb ldrb r3, [r7, #7]
+ 80011ca: f003 030f and.w r3, r3, #15
+ 80011ce: 3b04 subs r3, #4
+ 80011d0: 0112 lsls r2, r2, #4
+ 80011d2: b2d2 uxtb r2, r2
+ 80011d4: 440b add r3, r1
+ 80011d6: 761a strb r2, [r3, #24]
+}
+ 80011d8: bf00 nop
+ 80011da: 370c adds r7, #12
+ 80011dc: 46bd mov sp, r7
+ 80011de: bc80 pop {r7}
+ 80011e0: 4770 bx lr
+ 80011e2: bf00 nop
+ 80011e4: e000e100 .word 0xe000e100
+ 80011e8: e000ed00 .word 0xe000ed00
+
+080011ec :
+ \param [in] PreemptPriority Preemptive priority value (starting from 0).
+ \param [in] SubPriority Subpriority value (starting from 0).
+ \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority().
+ */
+__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)
+{
+ 80011ec: b480 push {r7}
+ 80011ee: b089 sub sp, #36 ; 0x24
+ 80011f0: af00 add r7, sp, #0
+ 80011f2: 60f8 str r0, [r7, #12]
+ 80011f4: 60b9 str r1, [r7, #8]
+ 80011f6: 607a str r2, [r7, #4]
+ uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */
+ 80011f8: 68fb ldr r3, [r7, #12]
+ 80011fa: f003 0307 and.w r3, r3, #7
+ 80011fe: 61fb str r3, [r7, #28]
+ uint32_t PreemptPriorityBits;
+ uint32_t SubPriorityBits;
+
+ PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);
+ 8001200: 69fb ldr r3, [r7, #28]
+ 8001202: f1c3 0307 rsb r3, r3, #7
+ 8001206: 2b04 cmp r3, #4
+ 8001208: bf28 it cs
+ 800120a: 2304 movcs r3, #4
+ 800120c: 61bb str r3, [r7, #24]
+ SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));
+ 800120e: 69fb ldr r3, [r7, #28]
+ 8001210: 3304 adds r3, #4
+ 8001212: 2b06 cmp r3, #6
+ 8001214: d902 bls.n 800121c
+ 8001216: 69fb ldr r3, [r7, #28]
+ 8001218: 3b03 subs r3, #3
+ 800121a: e000 b.n 800121e
+ 800121c: 2300 movs r3, #0
+ 800121e: 617b str r3, [r7, #20]
+
+ return (
+ ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |
+ 8001220: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff
+ 8001224: 69bb ldr r3, [r7, #24]
+ 8001226: fa02 f303 lsl.w r3, r2, r3
+ 800122a: 43da mvns r2, r3
+ 800122c: 68bb ldr r3, [r7, #8]
+ 800122e: 401a ands r2, r3
+ 8001230: 697b ldr r3, [r7, #20]
+ 8001232: 409a lsls r2, r3
+ ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL)))
+ 8001234: f04f 31ff mov.w r1, #4294967295 ; 0xffffffff
+ 8001238: 697b ldr r3, [r7, #20]
+ 800123a: fa01 f303 lsl.w r3, r1, r3
+ 800123e: 43d9 mvns r1, r3
+ 8001240: 687b ldr r3, [r7, #4]
+ 8001242: 400b ands r3, r1
+ ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |
+ 8001244: 4313 orrs r3, r2
+ );
+}
+ 8001246: 4618 mov r0, r3
+ 8001248: 3724 adds r7, #36 ; 0x24
+ 800124a: 46bd mov sp, r7
+ 800124c: bc80 pop {r7}
+ 800124e: 4770 bx lr
+
+08001250 :
+ \note When the variable __Vendor_SysTickConfig is set to 1, then the
+ function SysTick_Config is not included. In this case, the file device.h
+ must contain a vendor-specific implementation of this function.
+ */
+__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
+{
+ 8001250: b580 push {r7, lr}
+ 8001252: b082 sub sp, #8
+ 8001254: af00 add r7, sp, #0
+ 8001256: 6078 str r0, [r7, #4]
+ if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)
+ 8001258: 687b ldr r3, [r7, #4]
+ 800125a: 3b01 subs r3, #1
+ 800125c: f1b3 7f80 cmp.w r3, #16777216 ; 0x1000000
+ 8001260: d301 bcc.n 8001266
+ {
+ return (1UL); /* Reload value impossible */
+ 8001262: 2301 movs r3, #1
+ 8001264: e00f b.n 8001286
+ }
+
+ SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */
+ 8001266: 4a0a ldr r2, [pc, #40] ; (8001290 )
+ 8001268: 687b ldr r3, [r7, #4]
+ 800126a: 3b01 subs r3, #1
+ 800126c: 6053 str r3, [r2, #4]
+ NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */
+ 800126e: 210f movs r1, #15
+ 8001270: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff
+ 8001274: f7ff ff90 bl 8001198 <__NVIC_SetPriority>
+ SysTick->VAL = 0UL; /* Load the SysTick Counter Value */
+ 8001278: 4b05 ldr r3, [pc, #20] ; (8001290 )
+ 800127a: 2200 movs r2, #0
+ 800127c: 609a str r2, [r3, #8]
+ SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
+ 800127e: 4b04 ldr r3, [pc, #16] ; (8001290 )
+ 8001280: 2207 movs r2, #7
+ 8001282: 601a str r2, [r3, #0]
+ SysTick_CTRL_TICKINT_Msk |
+ SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */
+ return (0UL); /* Function successful */
+ 8001284: 2300 movs r3, #0
+}
+ 8001286: 4618 mov r0, r3
+ 8001288: 3708 adds r7, #8
+ 800128a: 46bd mov sp, r7
+ 800128c: bd80 pop {r7, pc}
+ 800128e: bf00 nop
+ 8001290: e000e010 .word 0xe000e010
+
+08001294 :
+ * @note When the NVIC_PriorityGroup_0 is selected, IRQ preemption is no more possible.
+ * The pending IRQ priority will be managed only by the subpriority.
+ * @retval None
+ */
+void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
+{
+ 8001294: b580 push {r7, lr}
+ 8001296: b082 sub sp, #8
+ 8001298: af00 add r7, sp, #0
+ 800129a: 6078 str r0, [r7, #4]
+ /* Check the parameters */
+ assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup));
+
+ /* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */
+ NVIC_SetPriorityGrouping(PriorityGroup);
+ 800129c: 6878 ldr r0, [r7, #4]
+ 800129e: f7ff ff2d bl 80010fc <__NVIC_SetPriorityGrouping>
+}
+ 80012a2: bf00 nop
+ 80012a4: 3708 adds r7, #8
+ 80012a6: 46bd mov sp, r7
+ 80012a8: bd80 pop {r7, pc}
+
+080012aa :
+ * This parameter can be a value between 0 and 15
+ * A lower priority value indicates a higher priority.
+ * @retval None
+ */
+void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)
+{
+ 80012aa: b580 push {r7, lr}
+ 80012ac: b086 sub sp, #24
+ 80012ae: af00 add r7, sp, #0
+ 80012b0: 4603 mov r3, r0
+ 80012b2: 60b9 str r1, [r7, #8]
+ 80012b4: 607a str r2, [r7, #4]
+ 80012b6: 73fb strb r3, [r7, #15]
+ uint32_t prioritygroup = 0x00U;
+ 80012b8: 2300 movs r3, #0
+ 80012ba: 617b str r3, [r7, #20]
+
+ /* Check the parameters */
+ assert_param(IS_NVIC_SUB_PRIORITY(SubPriority));
+ assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority));
+
+ prioritygroup = NVIC_GetPriorityGrouping();
+ 80012bc: f7ff ff42 bl 8001144 <__NVIC_GetPriorityGrouping>
+ 80012c0: 6178 str r0, [r7, #20]
+
+ NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority));
+ 80012c2: 687a ldr r2, [r7, #4]
+ 80012c4: 68b9 ldr r1, [r7, #8]
+ 80012c6: 6978 ldr r0, [r7, #20]
+ 80012c8: f7ff ff90 bl 80011ec
+ 80012cc: 4602 mov r2, r0
+ 80012ce: f997 300f ldrsb.w r3, [r7, #15]
+ 80012d2: 4611 mov r1, r2
+ 80012d4: 4618 mov r0, r3
+ 80012d6: f7ff ff5f bl 8001198 <__NVIC_SetPriority>
+}
+ 80012da: bf00 nop
+ 80012dc: 3718 adds r7, #24
+ 80012de: 46bd mov sp, r7
+ 80012e0: bd80 pop {r7, pc}
+
+080012e2 :
+ * This parameter can be an enumerator of IRQn_Type enumeration
+ * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f10xxx.h))
+ * @retval None
+ */
+void HAL_NVIC_EnableIRQ(IRQn_Type IRQn)
+{
+ 80012e2: b580 push {r7, lr}
+ 80012e4: b082 sub sp, #8
+ 80012e6: af00 add r7, sp, #0
+ 80012e8: 4603 mov r3, r0
+ 80012ea: 71fb strb r3, [r7, #7]
+ /* Check the parameters */
+ assert_param(IS_NVIC_DEVICE_IRQ(IRQn));
+
+ /* Enable interrupt */
+ NVIC_EnableIRQ(IRQn);
+ 80012ec: f997 3007 ldrsb.w r3, [r7, #7]
+ 80012f0: 4618 mov r0, r3
+ 80012f2: f7ff ff35 bl 8001160 <__NVIC_EnableIRQ>
+}
+ 80012f6: bf00 nop
+ 80012f8: 3708 adds r7, #8
+ 80012fa: 46bd mov sp, r7
+ 80012fc: bd80 pop {r7, pc}
+
+080012fe :
+ * @param TicksNumb: Specifies the ticks Number of ticks between two interrupts.
+ * @retval status: - 0 Function succeeded.
+ * - 1 Function failed.
+ */
+uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb)
+{
+ 80012fe: b580 push {r7, lr}
+ 8001300: b082 sub sp, #8
+ 8001302: af00 add r7, sp, #0
+ 8001304: 6078 str r0, [r7, #4]
+ return SysTick_Config(TicksNumb);
+ 8001306: 6878 ldr r0, [r7, #4]
+ 8001308: f7ff ffa2 bl 8001250
+ 800130c: 4603 mov r3, r0
+}
+ 800130e: 4618 mov r0, r3
+ 8001310: 3708 adds r7, #8
+ 8001312: 46bd mov sp, r7
+ 8001314: bd80 pop {r7, pc}
+ ...
+
+08001318 :
+ * @param GPIO_Init: pointer to a GPIO_InitTypeDef structure that contains
+ * the configuration information for the specified GPIO peripheral.
+ * @retval None
+ */
+void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init)
+{
+ 8001318: b480 push {r7}
+ 800131a: b08b sub sp, #44 ; 0x2c
+ 800131c: af00 add r7, sp, #0
+ 800131e: 6078 str r0, [r7, #4]
+ 8001320: 6039 str r1, [r7, #0]
+ uint32_t position = 0x00u;
+ 8001322: 2300 movs r3, #0
+ 8001324: 627b str r3, [r7, #36] ; 0x24
+ uint32_t ioposition;
+ uint32_t iocurrent;
+ uint32_t temp;
+ uint32_t config = 0x00u;
+ 8001326: 2300 movs r3, #0
+ 8001328: 623b str r3, [r7, #32]
+ assert_param(IS_GPIO_ALL_INSTANCE(GPIOx));
+ assert_param(IS_GPIO_PIN(GPIO_Init->Pin));
+ assert_param(IS_GPIO_MODE(GPIO_Init->Mode));
+
+ /* Configure the port pins */
+ while (((GPIO_Init->Pin) >> position) != 0x00u)
+ 800132a: e127 b.n 800157c
+ {
+ /* Get the IO position */
+ ioposition = (0x01uL << position);
+ 800132c: 2201 movs r2, #1
+ 800132e: 6a7b ldr r3, [r7, #36] ; 0x24
+ 8001330: fa02 f303 lsl.w r3, r2, r3
+ 8001334: 61fb str r3, [r7, #28]
+
+ /* Get the current IO position */
+ iocurrent = (uint32_t)(GPIO_Init->Pin) & ioposition;
+ 8001336: 683b ldr r3, [r7, #0]
+ 8001338: 681b ldr r3, [r3, #0]
+ 800133a: 69fa ldr r2, [r7, #28]
+ 800133c: 4013 ands r3, r2
+ 800133e: 61bb str r3, [r7, #24]
+
+ if (iocurrent == ioposition)
+ 8001340: 69ba ldr r2, [r7, #24]
+ 8001342: 69fb ldr r3, [r7, #28]
+ 8001344: 429a cmp r2, r3
+ 8001346: f040 8116 bne.w 8001576
+ {
+ /* Check the Alternate function parameters */
+ assert_param(IS_GPIO_AF_INSTANCE(GPIOx));
+
+ /* Based on the required mode, filling config variable with MODEy[1:0] and CNFy[3:2] corresponding bits */
+ switch (GPIO_Init->Mode)
+ 800134a: 683b ldr r3, [r7, #0]
+ 800134c: 685b ldr r3, [r3, #4]
+ 800134e: 2b12 cmp r3, #18
+ 8001350: d034 beq.n 80013bc
+ 8001352: 2b12 cmp r3, #18
+ 8001354: d80d bhi.n 8001372
+ 8001356: 2b02 cmp r3, #2
+ 8001358: d02b beq.n 80013b2
+ 800135a: 2b02 cmp r3, #2
+ 800135c: d804 bhi.n 8001368
+ 800135e: 2b00 cmp r3, #0
+ 8001360: d031 beq.n 80013c6
+ 8001362: 2b01 cmp r3, #1
+ 8001364: d01c beq.n 80013a0
+ config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_ANALOG;
+ break;
+
+ /* Parameters are checked with assert_param */
+ default:
+ break;
+ 8001366: e048 b.n 80013fa
+ switch (GPIO_Init->Mode)
+ 8001368: 2b03 cmp r3, #3
+ 800136a: d043 beq.n 80013f4
+ 800136c: 2b11 cmp r3, #17
+ 800136e: d01b beq.n 80013a8
+ break;
+ 8001370: e043 b.n 80013fa
+ switch (GPIO_Init->Mode)
+ 8001372: 4a89 ldr r2, [pc, #548] ; (8001598 )
+ 8001374: 4293 cmp r3, r2
+ 8001376: d026 beq.n 80013c6
+ 8001378: 4a87 ldr r2, [pc, #540] ; (8001598 )
+ 800137a: 4293 cmp r3, r2
+ 800137c: d806 bhi.n 800138c
+ 800137e: 4a87 ldr r2, [pc, #540] ; (800159c )
+ 8001380: 4293 cmp r3, r2
+ 8001382: d020 beq.n 80013c6
+ 8001384: 4a86 ldr r2, [pc, #536] ; (80015a0 )
+ 8001386: 4293 cmp r3, r2
+ 8001388: d01d beq.n 80013c6
+ break;
+ 800138a: e036 b.n 80013fa
+ switch (GPIO_Init->Mode)
+ 800138c: 4a85 ldr r2, [pc, #532] ; (80015a4 )
+ 800138e: 4293 cmp r3, r2
+ 8001390: d019 beq.n 80013c6
+ 8001392: 4a85 ldr r2, [pc, #532] ; (80015a8 )
+ 8001394: 4293 cmp r3, r2
+ 8001396: d016 beq.n 80013c6
+ 8001398: 4a84 ldr r2, [pc, #528] ; (80015ac )
+ 800139a: 4293 cmp r3, r2
+ 800139c: d013 beq.n 80013c6
+ break;
+ 800139e: e02c b.n 80013fa
+ config = GPIO_Init->Speed + GPIO_CR_CNF_GP_OUTPUT_PP;
+ 80013a0: 683b ldr r3, [r7, #0]
+ 80013a2: 68db ldr r3, [r3, #12]
+ 80013a4: 623b str r3, [r7, #32]
+ break;
+ 80013a6: e028 b.n 80013fa
+ config = GPIO_Init->Speed + GPIO_CR_CNF_GP_OUTPUT_OD;
+ 80013a8: 683b ldr r3, [r7, #0]
+ 80013aa: 68db ldr r3, [r3, #12]
+ 80013ac: 3304 adds r3, #4
+ 80013ae: 623b str r3, [r7, #32]
+ break;
+ 80013b0: e023 b.n 80013fa
+ config = GPIO_Init->Speed + GPIO_CR_CNF_AF_OUTPUT_PP;
+ 80013b2: 683b ldr r3, [r7, #0]
+ 80013b4: 68db ldr r3, [r3, #12]
+ 80013b6: 3308 adds r3, #8
+ 80013b8: 623b str r3, [r7, #32]
+ break;
+ 80013ba: e01e b.n 80013fa
+ config = GPIO_Init->Speed + GPIO_CR_CNF_AF_OUTPUT_OD;
+ 80013bc: 683b ldr r3, [r7, #0]
+ 80013be: 68db ldr r3, [r3, #12]
+ 80013c0: 330c adds r3, #12
+ 80013c2: 623b str r3, [r7, #32]
+ break;
+ 80013c4: e019 b.n 80013fa
+ if (GPIO_Init->Pull == GPIO_NOPULL)
+ 80013c6: 683b ldr r3, [r7, #0]
+ 80013c8: 689b ldr r3, [r3, #8]
+ 80013ca: 2b00 cmp r3, #0
+ 80013cc: d102 bne.n 80013d4
+ config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_INPUT_FLOATING;
+ 80013ce: 2304 movs r3, #4
+ 80013d0: 623b str r3, [r7, #32]
+ break;
+ 80013d2: e012 b.n 80013fa
+ else if (GPIO_Init->Pull == GPIO_PULLUP)
+ 80013d4: 683b ldr r3, [r7, #0]
+ 80013d6: 689b ldr r3, [r3, #8]
+ 80013d8: 2b01 cmp r3, #1
+ 80013da: d105 bne.n 80013e8
+ config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_INPUT_PU_PD;
+ 80013dc: 2308 movs r3, #8
+ 80013de: 623b str r3, [r7, #32]
+ GPIOx->BSRR = ioposition;
+ 80013e0: 687b ldr r3, [r7, #4]
+ 80013e2: 69fa ldr r2, [r7, #28]
+ 80013e4: 611a str r2, [r3, #16]
+ break;
+ 80013e6: e008 b.n 80013fa
+ config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_INPUT_PU_PD;
+ 80013e8: 2308 movs r3, #8
+ 80013ea: 623b str r3, [r7, #32]
+ GPIOx->BRR = ioposition;
+ 80013ec: 687b ldr r3, [r7, #4]
+ 80013ee: 69fa ldr r2, [r7, #28]
+ 80013f0: 615a str r2, [r3, #20]
+ break;
+ 80013f2: e002 b.n 80013fa
+ config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_ANALOG;
+ 80013f4: 2300 movs r3, #0
+ 80013f6: 623b str r3, [r7, #32]
+ break;
+ 80013f8: bf00 nop
+ }
+
+ /* Check if the current bit belongs to first half or last half of the pin count number
+ in order to address CRH or CRL register*/
+ configregister = (iocurrent < GPIO_PIN_8) ? &GPIOx->CRL : &GPIOx->CRH;
+ 80013fa: 69bb ldr r3, [r7, #24]
+ 80013fc: 2bff cmp r3, #255 ; 0xff
+ 80013fe: d801 bhi.n 8001404
+ 8001400: 687b ldr r3, [r7, #4]
+ 8001402: e001 b.n 8001408
+ 8001404: 687b ldr r3, [r7, #4]
+ 8001406: 3304 adds r3, #4
+ 8001408: 617b str r3, [r7, #20]
+ registeroffset = (iocurrent < GPIO_PIN_8) ? (position << 2u) : ((position - 8u) << 2u);
+ 800140a: 69bb ldr r3, [r7, #24]
+ 800140c: 2bff cmp r3, #255 ; 0xff
+ 800140e: d802 bhi.n 8001416
+ 8001410: 6a7b ldr r3, [r7, #36] ; 0x24
+ 8001412: 009b lsls r3, r3, #2
+ 8001414: e002 b.n 800141c
+ 8001416: 6a7b ldr r3, [r7, #36] ; 0x24
+ 8001418: 3b08 subs r3, #8
+ 800141a: 009b lsls r3, r3, #2
+ 800141c: 613b str r3, [r7, #16]
+
+ /* Apply the new configuration of the pin to the register */
+ MODIFY_REG((*configregister), ((GPIO_CRL_MODE0 | GPIO_CRL_CNF0) << registeroffset), (config << registeroffset));
+ 800141e: 697b ldr r3, [r7, #20]
+ 8001420: 681a ldr r2, [r3, #0]
+ 8001422: 210f movs r1, #15
+ 8001424: 693b ldr r3, [r7, #16]
+ 8001426: fa01 f303 lsl.w r3, r1, r3
+ 800142a: 43db mvns r3, r3
+ 800142c: 401a ands r2, r3
+ 800142e: 6a39 ldr r1, [r7, #32]
+ 8001430: 693b ldr r3, [r7, #16]
+ 8001432: fa01 f303 lsl.w r3, r1, r3
+ 8001436: 431a orrs r2, r3
+ 8001438: 697b ldr r3, [r7, #20]
+ 800143a: 601a str r2, [r3, #0]
+
+ /*--------------------- EXTI Mode Configuration ------------------------*/
+ /* Configure the External Interrupt or event for the current IO */
+ if ((GPIO_Init->Mode & EXTI_MODE) == EXTI_MODE)
+ 800143c: 683b ldr r3, [r7, #0]
+ 800143e: 685b ldr r3, [r3, #4]
+ 8001440: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
+ 8001444: 2b00 cmp r3, #0
+ 8001446: f000 8096 beq.w 8001576
+ {
+ /* Enable AFIO Clock */
+ __HAL_RCC_AFIO_CLK_ENABLE();
+ 800144a: 4b59 ldr r3, [pc, #356] ; (80015b0 )
+ 800144c: 699b ldr r3, [r3, #24]
+ 800144e: 4a58 ldr r2, [pc, #352] ; (80015b0 )
+ 8001450: f043 0301 orr.w r3, r3, #1
+ 8001454: 6193 str r3, [r2, #24]
+ 8001456: 4b56 ldr r3, [pc, #344] ; (80015b0 )
+ 8001458: 699b ldr r3, [r3, #24]
+ 800145a: f003 0301 and.w r3, r3, #1
+ 800145e: 60bb str r3, [r7, #8]
+ 8001460: 68bb ldr r3, [r7, #8]
+ temp = AFIO->EXTICR[position >> 2u];
+ 8001462: 4a54 ldr r2, [pc, #336] ; (80015b4 )
+ 8001464: 6a7b ldr r3, [r7, #36] ; 0x24
+ 8001466: 089b lsrs r3, r3, #2
+ 8001468: 3302 adds r3, #2
+ 800146a: f852 3023 ldr.w r3, [r2, r3, lsl #2]
+ 800146e: 60fb str r3, [r7, #12]
+ CLEAR_BIT(temp, (0x0Fu) << (4u * (position & 0x03u)));
+ 8001470: 6a7b ldr r3, [r7, #36] ; 0x24
+ 8001472: f003 0303 and.w r3, r3, #3
+ 8001476: 009b lsls r3, r3, #2
+ 8001478: 220f movs r2, #15
+ 800147a: fa02 f303 lsl.w r3, r2, r3
+ 800147e: 43db mvns r3, r3
+ 8001480: 68fa ldr r2, [r7, #12]
+ 8001482: 4013 ands r3, r2
+ 8001484: 60fb str r3, [r7, #12]
+ SET_BIT(temp, (GPIO_GET_INDEX(GPIOx)) << (4u * (position & 0x03u)));
+ 8001486: 687b ldr r3, [r7, #4]
+ 8001488: 4a4b ldr r2, [pc, #300] ; (80015b8 )
+ 800148a: 4293 cmp r3, r2
+ 800148c: d013 beq.n 80014b6
+ 800148e: 687b ldr r3, [r7, #4]
+ 8001490: 4a4a ldr r2, [pc, #296] ; (80015bc )
+ 8001492: 4293 cmp r3, r2
+ 8001494: d00d beq.n 80014b2
+ 8001496: 687b ldr r3, [r7, #4]
+ 8001498: 4a49 ldr r2, [pc, #292] ; (80015c0 )
+ 800149a: 4293 cmp r3, r2
+ 800149c: d007 beq.n 80014ae
+ 800149e: 687b ldr r3, [r7, #4]
+ 80014a0: 4a48 ldr r2, [pc, #288] ; (80015c4 )
+ 80014a2: 4293 cmp r3, r2
+ 80014a4: d101 bne.n 80014aa
+ 80014a6: 2303 movs r3, #3
+ 80014a8: e006 b.n 80014b8
+ 80014aa: 2304 movs r3, #4
+ 80014ac: e004 b.n 80014b8
+ 80014ae: 2302 movs r3, #2
+ 80014b0: e002 b.n 80014b8
+ 80014b2: 2301 movs r3, #1
+ 80014b4: e000 b.n 80014b8
+ 80014b6: 2300 movs r3, #0
+ 80014b8: 6a7a ldr r2, [r7, #36] ; 0x24
+ 80014ba: f002 0203 and.w r2, r2, #3
+ 80014be: 0092 lsls r2, r2, #2
+ 80014c0: 4093 lsls r3, r2
+ 80014c2: 68fa ldr r2, [r7, #12]
+ 80014c4: 4313 orrs r3, r2
+ 80014c6: 60fb str r3, [r7, #12]
+ AFIO->EXTICR[position >> 2u] = temp;
+ 80014c8: 493a ldr r1, [pc, #232] ; (80015b4 )
+ 80014ca: 6a7b ldr r3, [r7, #36] ; 0x24
+ 80014cc: 089b lsrs r3, r3, #2
+ 80014ce: 3302 adds r3, #2
+ 80014d0: 68fa ldr r2, [r7, #12]
+ 80014d2: f841 2023 str.w r2, [r1, r3, lsl #2]
+
+
+ /* Configure the interrupt mask */
+ if ((GPIO_Init->Mode & GPIO_MODE_IT) == GPIO_MODE_IT)
+ 80014d6: 683b ldr r3, [r7, #0]
+ 80014d8: 685b ldr r3, [r3, #4]
+ 80014da: f403 3380 and.w r3, r3, #65536 ; 0x10000
+ 80014de: 2b00 cmp r3, #0
+ 80014e0: d006 beq.n 80014f0
+ {
+ SET_BIT(EXTI->IMR, iocurrent);
+ 80014e2: 4b39 ldr r3, [pc, #228] ; (80015c8 )
+ 80014e4: 681a ldr r2, [r3, #0]
+ 80014e6: 4938 ldr r1, [pc, #224] ; (80015c8 )
+ 80014e8: 69bb ldr r3, [r7, #24]
+ 80014ea: 4313 orrs r3, r2
+ 80014ec: 600b str r3, [r1, #0]
+ 80014ee: e006 b.n 80014fe
+ }
+ else
+ {
+ CLEAR_BIT(EXTI->IMR, iocurrent);
+ 80014f0: 4b35 ldr r3, [pc, #212] ; (80015c8 )
+ 80014f2: 681a ldr r2, [r3, #0]
+ 80014f4: 69bb ldr r3, [r7, #24]
+ 80014f6: 43db mvns r3, r3
+ 80014f8: 4933 ldr r1, [pc, #204] ; (80015c8 )
+ 80014fa: 4013 ands r3, r2
+ 80014fc: 600b str r3, [r1, #0]
+ }
+
+ /* Configure the event mask */
+ if ((GPIO_Init->Mode & GPIO_MODE_EVT) == GPIO_MODE_EVT)
+ 80014fe: 683b ldr r3, [r7, #0]
+ 8001500: 685b ldr r3, [r3, #4]
+ 8001502: f403 3300 and.w r3, r3, #131072 ; 0x20000
+ 8001506: 2b00 cmp r3, #0
+ 8001508: d006 beq.n 8001518
+ {
+ SET_BIT(EXTI->EMR, iocurrent);
+ 800150a: 4b2f ldr r3, [pc, #188] ; (80015c8 )
+ 800150c: 685a ldr r2, [r3, #4]
+ 800150e: 492e ldr r1, [pc, #184] ; (80015c8 )
+ 8001510: 69bb ldr r3, [r7, #24]
+ 8001512: 4313 orrs r3, r2
+ 8001514: 604b str r3, [r1, #4]
+ 8001516: e006 b.n 8001526
+ }
+ else
+ {
+ CLEAR_BIT(EXTI->EMR, iocurrent);
+ 8001518: 4b2b ldr r3, [pc, #172] ; (80015c8 )
+ 800151a: 685a ldr r2, [r3, #4]
+ 800151c: 69bb ldr r3, [r7, #24]
+ 800151e: 43db mvns r3, r3
+ 8001520: 4929 ldr r1, [pc, #164] ; (80015c8 )
+ 8001522: 4013 ands r3, r2
+ 8001524: 604b str r3, [r1, #4]
+ }
+
+ /* Enable or disable the rising trigger */
+ if ((GPIO_Init->Mode & RISING_EDGE) == RISING_EDGE)
+ 8001526: 683b ldr r3, [r7, #0]
+ 8001528: 685b ldr r3, [r3, #4]
+ 800152a: f403 1380 and.w r3, r3, #1048576 ; 0x100000
+ 800152e: 2b00 cmp r3, #0
+ 8001530: d006 beq.n 8001540
+ {
+ SET_BIT(EXTI->RTSR, iocurrent);
+ 8001532: 4b25 ldr r3, [pc, #148] ; (80015c8 )
+ 8001534: 689a ldr r2, [r3, #8]
+ 8001536: 4924 ldr r1, [pc, #144] ; (80015c8 )
+ 8001538: 69bb ldr r3, [r7, #24]
+ 800153a: 4313 orrs r3, r2
+ 800153c: 608b str r3, [r1, #8]
+ 800153e: e006 b.n 800154e
+ }
+ else
+ {
+ CLEAR_BIT(EXTI->RTSR, iocurrent);
+ 8001540: 4b21 ldr r3, [pc, #132] ; (80015c8 )
+ 8001542: 689a ldr r2, [r3, #8]
+ 8001544: 69bb ldr r3, [r7, #24]
+ 8001546: 43db mvns r3, r3
+ 8001548: 491f ldr r1, [pc, #124] ; (80015c8 )
+ 800154a: 4013 ands r3, r2
+ 800154c: 608b str r3, [r1, #8]
+ }
+
+ /* Enable or disable the falling trigger */
+ if ((GPIO_Init->Mode & FALLING_EDGE) == FALLING_EDGE)
+ 800154e: 683b ldr r3, [r7, #0]
+ 8001550: 685b ldr r3, [r3, #4]
+ 8001552: f403 1300 and.w r3, r3, #2097152 ; 0x200000
+ 8001556: 2b00 cmp r3, #0
+ 8001558: d006 beq.n 8001568
+ {
+ SET_BIT(EXTI->FTSR, iocurrent);
+ 800155a: 4b1b ldr r3, [pc, #108] ; (80015c8 )
+ 800155c: 68da ldr r2, [r3, #12]
+ 800155e: 491a ldr r1, [pc, #104] ; (80015c8 )
+ 8001560: 69bb ldr r3, [r7, #24]
+ 8001562: 4313 orrs r3, r2
+ 8001564: 60cb str r3, [r1, #12]
+ 8001566: e006 b.n 8001576
+ }
+ else
+ {
+ CLEAR_BIT(EXTI->FTSR, iocurrent);
+ 8001568: 4b17 ldr r3, [pc, #92] ; (80015c8 )
+ 800156a: 68da ldr r2, [r3, #12]
+ 800156c: 69bb ldr r3, [r7, #24]
+ 800156e: 43db mvns r3, r3
+ 8001570: 4915 ldr r1, [pc, #84] ; (80015c8 )
+ 8001572: 4013 ands r3, r2
+ 8001574: 60cb str r3, [r1, #12]
+ }
+ }
+ }
+
+ position++;
+ 8001576: 6a7b ldr r3, [r7, #36] ; 0x24
+ 8001578: 3301 adds r3, #1
+ 800157a: 627b str r3, [r7, #36] ; 0x24
+ while (((GPIO_Init->Pin) >> position) != 0x00u)
+ 800157c: 683b ldr r3, [r7, #0]
+ 800157e: 681a ldr r2, [r3, #0]
+ 8001580: 6a7b ldr r3, [r7, #36] ; 0x24
+ 8001582: fa22 f303 lsr.w r3, r2, r3
+ 8001586: 2b00 cmp r3, #0
+ 8001588: f47f aed0 bne.w 800132c
+ }
+}
+ 800158c: bf00 nop
+ 800158e: 372c adds r7, #44 ; 0x2c
+ 8001590: 46bd mov sp, r7
+ 8001592: bc80 pop {r7}
+ 8001594: 4770 bx lr
+ 8001596: bf00 nop
+ 8001598: 10210000 .word 0x10210000
+ 800159c: 10110000 .word 0x10110000
+ 80015a0: 10120000 .word 0x10120000
+ 80015a4: 10310000 .word 0x10310000
+ 80015a8: 10320000 .word 0x10320000
+ 80015ac: 10220000 .word 0x10220000
+ 80015b0: 40021000 .word 0x40021000
+ 80015b4: 40010000 .word 0x40010000
+ 80015b8: 40010800 .word 0x40010800
+ 80015bc: 40010c00 .word 0x40010c00
+ 80015c0: 40011000 .word 0x40011000
+ 80015c4: 40011400 .word 0x40011400
+ 80015c8: 40010400 .word 0x40010400
+
+080015cc :
+ * @param GPIO_Pin: specifies the port bit to read.
+ * This parameter can be GPIO_PIN_x where x can be (0..15).
+ * @retval The input port pin value.
+ */
+GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
+{
+ 80015cc: b480 push {r7}
+ 80015ce: b085 sub sp, #20
+ 80015d0: af00 add r7, sp, #0
+ 80015d2: 6078 str r0, [r7, #4]
+ 80015d4: 460b mov r3, r1
+ 80015d6: 807b strh r3, [r7, #2]
+ GPIO_PinState bitstatus;
+
+ /* Check the parameters */
+ assert_param(IS_GPIO_PIN(GPIO_Pin));
+
+ if ((GPIOx->IDR & GPIO_Pin) != (uint32_t)GPIO_PIN_RESET)
+ 80015d8: 687b ldr r3, [r7, #4]
+ 80015da: 689a ldr r2, [r3, #8]
+ 80015dc: 887b ldrh r3, [r7, #2]
+ 80015de: 4013 ands r3, r2
+ 80015e0: 2b00 cmp r3, #0
+ 80015e2: d002 beq.n 80015ea
+ {
+ bitstatus = GPIO_PIN_SET;
+ 80015e4: 2301 movs r3, #1
+ 80015e6: 73fb strb r3, [r7, #15]
+ 80015e8: e001 b.n 80015ee
+ }
+ else
+ {
+ bitstatus = GPIO_PIN_RESET;
+ 80015ea: 2300 movs r3, #0
+ 80015ec: 73fb strb r3, [r7, #15]
+ }
+ return bitstatus;
+ 80015ee: 7bfb ldrb r3, [r7, #15]
+}
+ 80015f0: 4618 mov r0, r3
+ 80015f2: 3714 adds r7, #20
+ 80015f4: 46bd mov sp, r7
+ 80015f6: bc80 pop {r7}
+ 80015f8: 4770 bx lr
+
+080015fa :
+ * @arg GPIO_PIN_RESET: to clear the port pin
+ * @arg GPIO_PIN_SET: to set the port pin
+ * @retval None
+ */
+void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
+{
+ 80015fa: b480 push {r7}
+ 80015fc: b083 sub sp, #12
+ 80015fe: af00 add r7, sp, #0
+ 8001600: 6078 str r0, [r7, #4]
+ 8001602: 460b mov r3, r1
+ 8001604: 807b strh r3, [r7, #2]
+ 8001606: 4613 mov r3, r2
+ 8001608: 707b strb r3, [r7, #1]
+ /* Check the parameters */
+ assert_param(IS_GPIO_PIN(GPIO_Pin));
+ assert_param(IS_GPIO_PIN_ACTION(PinState));
+
+ if (PinState != GPIO_PIN_RESET)
+ 800160a: 787b ldrb r3, [r7, #1]
+ 800160c: 2b00 cmp r3, #0
+ 800160e: d003 beq.n 8001618
+ {
+ GPIOx->BSRR = GPIO_Pin;
+ 8001610: 887a ldrh r2, [r7, #2]
+ 8001612: 687b ldr r3, [r7, #4]
+ 8001614: 611a str r2, [r3, #16]
+ }
+ else
+ {
+ GPIOx->BSRR = (uint32_t)GPIO_Pin << 16u;
+ }
+}
+ 8001616: e003 b.n 8001620
+ GPIOx->BSRR = (uint32_t)GPIO_Pin << 16u;
+ 8001618: 887b ldrh r3, [r7, #2]
+ 800161a: 041a lsls r2, r3, #16
+ 800161c: 687b ldr r3, [r7, #4]
+ 800161e: 611a str r2, [r3, #16]
+}
+ 8001620: bf00 nop
+ 8001622: 370c adds r7, #12
+ 8001624: 46bd mov sp, r7
+ 8001626: bc80 pop {r7}
+ 8001628: 4770 bx lr
+ ...
+
+0800162c :
+ * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
+ * the configuration information for the specified I2C.
+ * @retval HAL status
+ */
+HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c)
+{
+ 800162c: b580 push {r7, lr}
+ 800162e: b084 sub sp, #16
+ 8001630: af00 add r7, sp, #0
+ 8001632: 6078 str r0, [r7, #4]
+ uint32_t freqrange;
+ uint32_t pclk1;
+
+ /* Check the I2C handle allocation */
+ if (hi2c == NULL)
+ 8001634: 687b ldr r3, [r7, #4]
+ 8001636: 2b00 cmp r3, #0
+ 8001638: d101 bne.n 800163e
+ {
+ return HAL_ERROR;
+ 800163a: 2301 movs r3, #1
+ 800163c: e10f b.n 800185e
+ assert_param(IS_I2C_DUAL_ADDRESS(hi2c->Init.DualAddressMode));
+ assert_param(IS_I2C_OWN_ADDRESS2(hi2c->Init.OwnAddress2));
+ assert_param(IS_I2C_GENERAL_CALL(hi2c->Init.GeneralCallMode));
+ assert_param(IS_I2C_NO_STRETCH(hi2c->Init.NoStretchMode));
+
+ if (hi2c->State == HAL_I2C_STATE_RESET)
+ 800163e: 687b ldr r3, [r7, #4]
+ 8001640: f893 303d ldrb.w r3, [r3, #61] ; 0x3d
+ 8001644: b2db uxtb r3, r3
+ 8001646: 2b00 cmp r3, #0
+ 8001648: d106 bne.n 8001658
+ {
+ /* Allocate lock resource and initialize it */
+ hi2c->Lock = HAL_UNLOCKED;
+ 800164a: 687b ldr r3, [r7, #4]
+ 800164c: 2200 movs r2, #0
+ 800164e: f883 203c strb.w r2, [r3, #60] ; 0x3c
+
+ /* Init the low level hardware : GPIO, CLOCK, NVIC */
+ hi2c->MspInitCallback(hi2c);
+#else
+ /* Init the low level hardware : GPIO, CLOCK, NVIC */
+ HAL_I2C_MspInit(hi2c);
+ 8001652: 6878 ldr r0, [r7, #4]
+ 8001654: f008 fcb2 bl 8009fbc
+#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
+ }
+
+ hi2c->State = HAL_I2C_STATE_BUSY;
+ 8001658: 687b ldr r3, [r7, #4]
+ 800165a: 2224 movs r2, #36 ; 0x24
+ 800165c: f883 203d strb.w r2, [r3, #61] ; 0x3d
+
+ /* Disable the selected I2C peripheral */
+ __HAL_I2C_DISABLE(hi2c);
+ 8001660: 687b ldr r3, [r7, #4]
+ 8001662: 681b ldr r3, [r3, #0]
+ 8001664: 681a ldr r2, [r3, #0]
+ 8001666: 687b ldr r3, [r7, #4]
+ 8001668: 681b ldr r3, [r3, #0]
+ 800166a: f022 0201 bic.w r2, r2, #1
+ 800166e: 601a str r2, [r3, #0]
+
+ /* Get PCLK1 frequency */
+ pclk1 = HAL_RCC_GetPCLK1Freq();
+ 8001670: f001 fbc8 bl 8002e04
+ 8001674: 60f8 str r0, [r7, #12]
+
+ /* Check the minimum allowed PCLK1 frequency */
+ if (I2C_MIN_PCLK_FREQ(pclk1, hi2c->Init.ClockSpeed) == 1U)
+ 8001676: 687b ldr r3, [r7, #4]
+ 8001678: 685b ldr r3, [r3, #4]
+ 800167a: 4a7b ldr r2, [pc, #492] ; (8001868 )
+ 800167c: 4293 cmp r3, r2
+ 800167e: d807 bhi.n 8001690
+ 8001680: 68fb ldr r3, [r7, #12]
+ 8001682: 4a7a ldr r2, [pc, #488] ; (800186c )
+ 8001684: 4293 cmp r3, r2
+ 8001686: bf94 ite ls
+ 8001688: 2301 movls r3, #1
+ 800168a: 2300 movhi r3, #0
+ 800168c: b2db uxtb r3, r3
+ 800168e: e006 b.n 800169e
+ 8001690: 68fb ldr r3, [r7, #12]
+ 8001692: 4a77 ldr r2, [pc, #476] ; (8001870 )
+ 8001694: 4293 cmp r3, r2
+ 8001696: bf94 ite ls
+ 8001698: 2301 movls r3, #1
+ 800169a: 2300 movhi r3, #0
+ 800169c: b2db uxtb r3, r3
+ 800169e: 2b00 cmp r3, #0
+ 80016a0: d001 beq.n 80016a6
+ {
+ return HAL_ERROR;
+ 80016a2: 2301 movs r3, #1
+ 80016a4: e0db b.n 800185e
+ }
+
+ /* Calculate frequency range */
+ freqrange = I2C_FREQRANGE(pclk1);
+ 80016a6: 68fb ldr r3, [r7, #12]
+ 80016a8: 4a72 ldr r2, [pc, #456] ; (8001874 )
+ 80016aa: fba2 2303 umull r2, r3, r2, r3
+ 80016ae: 0c9b lsrs r3, r3, #18
+ 80016b0: 60bb str r3, [r7, #8]
+
+ /*---------------------------- I2Cx CR2 Configuration ----------------------*/
+ /* Configure I2Cx: Frequency range */
+ MODIFY_REG(hi2c->Instance->CR2, I2C_CR2_FREQ, freqrange);
+ 80016b2: 687b ldr r3, [r7, #4]
+ 80016b4: 681b ldr r3, [r3, #0]
+ 80016b6: 685b ldr r3, [r3, #4]
+ 80016b8: f023 013f bic.w r1, r3, #63 ; 0x3f
+ 80016bc: 687b ldr r3, [r7, #4]
+ 80016be: 681b ldr r3, [r3, #0]
+ 80016c0: 68ba ldr r2, [r7, #8]
+ 80016c2: 430a orrs r2, r1
+ 80016c4: 605a str r2, [r3, #4]
+
+ /*---------------------------- I2Cx TRISE Configuration --------------------*/
+ /* Configure I2Cx: Rise Time */
+ MODIFY_REG(hi2c->Instance->TRISE, I2C_TRISE_TRISE, I2C_RISE_TIME(freqrange, hi2c->Init.ClockSpeed));
+ 80016c6: 687b ldr r3, [r7, #4]
+ 80016c8: 681b ldr r3, [r3, #0]
+ 80016ca: 6a1b ldr r3, [r3, #32]
+ 80016cc: f023 013f bic.w r1, r3, #63 ; 0x3f
+ 80016d0: 687b ldr r3, [r7, #4]
+ 80016d2: 685b ldr r3, [r3, #4]
+ 80016d4: 4a64 ldr r2, [pc, #400] ; (8001868 )
+ 80016d6: 4293 cmp r3, r2
+ 80016d8: d802 bhi.n 80016e0
+ 80016da: 68bb ldr r3, [r7, #8]
+ 80016dc: 3301 adds r3, #1
+ 80016de: e009 b.n 80016f4
+ 80016e0: 68bb ldr r3, [r7, #8]
+ 80016e2: f44f 7296 mov.w r2, #300 ; 0x12c
+ 80016e6: fb02 f303 mul.w r3, r2, r3
+ 80016ea: 4a63 ldr r2, [pc, #396] ; (8001878 )
+ 80016ec: fba2 2303 umull r2, r3, r2, r3
+ 80016f0: 099b lsrs r3, r3, #6
+ 80016f2: 3301 adds r3, #1
+ 80016f4: 687a ldr r2, [r7, #4]
+ 80016f6: 6812 ldr r2, [r2, #0]
+ 80016f8: 430b orrs r3, r1
+ 80016fa: 6213 str r3, [r2, #32]
+
+ /*---------------------------- I2Cx CCR Configuration ----------------------*/
+ /* Configure I2Cx: Speed */
+ MODIFY_REG(hi2c->Instance->CCR, (I2C_CCR_FS | I2C_CCR_DUTY | I2C_CCR_CCR), I2C_SPEED(pclk1, hi2c->Init.ClockSpeed, hi2c->Init.DutyCycle));
+ 80016fc: 687b ldr r3, [r7, #4]
+ 80016fe: 681b ldr r3, [r3, #0]
+ 8001700: 69db ldr r3, [r3, #28]
+ 8001702: f423 424f bic.w r2, r3, #52992 ; 0xcf00
+ 8001706: f022 02ff bic.w r2, r2, #255 ; 0xff
+ 800170a: 687b ldr r3, [r7, #4]
+ 800170c: 685b ldr r3, [r3, #4]
+ 800170e: 4956 ldr r1, [pc, #344] ; (8001868 )
+ 8001710: 428b cmp r3, r1
+ 8001712: d80d bhi.n 8001730
+ 8001714: 68fb ldr r3, [r7, #12]
+ 8001716: 1e59 subs r1, r3, #1
+ 8001718: 687b ldr r3, [r7, #4]
+ 800171a: 685b ldr r3, [r3, #4]
+ 800171c: 005b lsls r3, r3, #1
+ 800171e: fbb1 f3f3 udiv r3, r1, r3
+ 8001722: 3301 adds r3, #1
+ 8001724: f3c3 030b ubfx r3, r3, #0, #12
+ 8001728: 2b04 cmp r3, #4
+ 800172a: bf38 it cc
+ 800172c: 2304 movcc r3, #4
+ 800172e: e04f b.n 80017d0
+ 8001730: 687b ldr r3, [r7, #4]
+ 8001732: 689b ldr r3, [r3, #8]
+ 8001734: 2b00 cmp r3, #0
+ 8001736: d111 bne.n 800175c
+ 8001738: 68fb ldr r3, [r7, #12]
+ 800173a: 1e58 subs r0, r3, #1
+ 800173c: 687b ldr r3, [r7, #4]
+ 800173e: 6859 ldr r1, [r3, #4]
+ 8001740: 460b mov r3, r1
+ 8001742: 005b lsls r3, r3, #1
+ 8001744: 440b add r3, r1
+ 8001746: fbb0 f3f3 udiv r3, r0, r3
+ 800174a: 3301 adds r3, #1
+ 800174c: f3c3 030b ubfx r3, r3, #0, #12
+ 8001750: 2b00 cmp r3, #0
+ 8001752: bf0c ite eq
+ 8001754: 2301 moveq r3, #1
+ 8001756: 2300 movne r3, #0
+ 8001758: b2db uxtb r3, r3
+ 800175a: e012 b.n 8001782
+ 800175c: 68fb ldr r3, [r7, #12]
+ 800175e: 1e58 subs r0, r3, #1
+ 8001760: 687b ldr r3, [r7, #4]
+ 8001762: 6859 ldr r1, [r3, #4]
+ 8001764: 460b mov r3, r1
+ 8001766: 009b lsls r3, r3, #2
+ 8001768: 440b add r3, r1
+ 800176a: 0099 lsls r1, r3, #2
+ 800176c: 440b add r3, r1
+ 800176e: fbb0 f3f3 udiv r3, r0, r3
+ 8001772: 3301 adds r3, #1
+ 8001774: f3c3 030b ubfx r3, r3, #0, #12
+ 8001778: 2b00 cmp r3, #0
+ 800177a: bf0c ite eq
+ 800177c: 2301 moveq r3, #1
+ 800177e: 2300 movne r3, #0
+ 8001780: b2db uxtb r3, r3
+ 8001782: 2b00 cmp r3, #0
+ 8001784: d001 beq.n 800178a
+ 8001786: 2301 movs r3, #1
+ 8001788: e022 b.n 80017d0
+ 800178a: 687b ldr r3, [r7, #4]
+ 800178c: 689b ldr r3, [r3, #8]
+ 800178e: 2b00 cmp r3, #0
+ 8001790: d10e bne.n 80017b0
+ 8001792: 68fb ldr r3, [r7, #12]
+ 8001794: 1e58 subs r0, r3, #1
+ 8001796: 687b ldr r3, [r7, #4]
+ 8001798: 6859 ldr r1, [r3, #4]
+ 800179a: 460b mov r3, r1
+ 800179c: 005b lsls r3, r3, #1
+ 800179e: 440b add r3, r1
+ 80017a0: fbb0 f3f3 udiv r3, r0, r3
+ 80017a4: 3301 adds r3, #1
+ 80017a6: f3c3 030b ubfx r3, r3, #0, #12
+ 80017aa: f443 4300 orr.w r3, r3, #32768 ; 0x8000
+ 80017ae: e00f b.n 80017d0
+ 80017b0: 68fb ldr r3, [r7, #12]
+ 80017b2: 1e58 subs r0, r3, #1
+ 80017b4: 687b ldr r3, [r7, #4]
+ 80017b6: 6859 ldr r1, [r3, #4]
+ 80017b8: 460b mov r3, r1
+ 80017ba: 009b lsls r3, r3, #2
+ 80017bc: 440b add r3, r1
+ 80017be: 0099 lsls r1, r3, #2
+ 80017c0: 440b add r3, r1
+ 80017c2: fbb0 f3f3 udiv r3, r0, r3
+ 80017c6: 3301 adds r3, #1
+ 80017c8: f3c3 030b ubfx r3, r3, #0, #12
+ 80017cc: f443 4340 orr.w r3, r3, #49152 ; 0xc000
+ 80017d0: 6879 ldr r1, [r7, #4]
+ 80017d2: 6809 ldr r1, [r1, #0]
+ 80017d4: 4313 orrs r3, r2
+ 80017d6: 61cb str r3, [r1, #28]
+
+ /*---------------------------- I2Cx CR1 Configuration ----------------------*/
+ /* Configure I2Cx: Generalcall and NoStretch mode */
+ MODIFY_REG(hi2c->Instance->CR1, (I2C_CR1_ENGC | I2C_CR1_NOSTRETCH), (hi2c->Init.GeneralCallMode | hi2c->Init.NoStretchMode));
+ 80017d8: 687b ldr r3, [r7, #4]
+ 80017da: 681b ldr r3, [r3, #0]
+ 80017dc: 681b ldr r3, [r3, #0]
+ 80017de: f023 01c0 bic.w r1, r3, #192 ; 0xc0
+ 80017e2: 687b ldr r3, [r7, #4]
+ 80017e4: 69da ldr r2, [r3, #28]
+ 80017e6: 687b ldr r3, [r7, #4]
+ 80017e8: 6a1b ldr r3, [r3, #32]
+ 80017ea: 431a orrs r2, r3
+ 80017ec: 687b ldr r3, [r7, #4]
+ 80017ee: 681b ldr r3, [r3, #0]
+ 80017f0: 430a orrs r2, r1
+ 80017f2: 601a str r2, [r3, #0]
+
+ /*---------------------------- I2Cx OAR1 Configuration ---------------------*/
+ /* Configure I2Cx: Own Address1 and addressing mode */
+ MODIFY_REG(hi2c->Instance->OAR1, (I2C_OAR1_ADDMODE | I2C_OAR1_ADD8_9 | I2C_OAR1_ADD1_7 | I2C_OAR1_ADD0), (hi2c->Init.AddressingMode | hi2c->Init.OwnAddress1));
+ 80017f4: 687b ldr r3, [r7, #4]
+ 80017f6: 681b ldr r3, [r3, #0]
+ 80017f8: 689b ldr r3, [r3, #8]
+ 80017fa: f423 4303 bic.w r3, r3, #33536 ; 0x8300
+ 80017fe: f023 03ff bic.w r3, r3, #255 ; 0xff
+ 8001802: 687a ldr r2, [r7, #4]
+ 8001804: 6911 ldr r1, [r2, #16]
+ 8001806: 687a ldr r2, [r7, #4]
+ 8001808: 68d2 ldr r2, [r2, #12]
+ 800180a: 4311 orrs r1, r2
+ 800180c: 687a ldr r2, [r7, #4]
+ 800180e: 6812 ldr r2, [r2, #0]
+ 8001810: 430b orrs r3, r1
+ 8001812: 6093 str r3, [r2, #8]
+
+ /*---------------------------- I2Cx OAR2 Configuration ---------------------*/
+ /* Configure I2Cx: Dual mode and Own Address2 */
+ MODIFY_REG(hi2c->Instance->OAR2, (I2C_OAR2_ENDUAL | I2C_OAR2_ADD2), (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2));
+ 8001814: 687b ldr r3, [r7, #4]
+ 8001816: 681b ldr r3, [r3, #0]
+ 8001818: 68db ldr r3, [r3, #12]
+ 800181a: f023 01ff bic.w r1, r3, #255 ; 0xff
+ 800181e: 687b ldr r3, [r7, #4]
+ 8001820: 695a ldr r2, [r3, #20]
+ 8001822: 687b ldr r3, [r7, #4]
+ 8001824: 699b ldr r3, [r3, #24]
+ 8001826: 431a orrs r2, r3
+ 8001828: 687b ldr r3, [r7, #4]
+ 800182a: 681b ldr r3, [r3, #0]
+ 800182c: 430a orrs r2, r1
+ 800182e: 60da str r2, [r3, #12]
+
+ /* Enable the selected I2C peripheral */
+ __HAL_I2C_ENABLE(hi2c);
+ 8001830: 687b ldr r3, [r7, #4]
+ 8001832: 681b ldr r3, [r3, #0]
+ 8001834: 681a ldr r2, [r3, #0]
+ 8001836: 687b ldr r3, [r7, #4]
+ 8001838: 681b ldr r3, [r3, #0]
+ 800183a: f042 0201 orr.w r2, r2, #1
+ 800183e: 601a str r2, [r3, #0]
+
+ hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
+ 8001840: 687b ldr r3, [r7, #4]
+ 8001842: 2200 movs r2, #0
+ 8001844: 641a str r2, [r3, #64] ; 0x40
+ hi2c->State = HAL_I2C_STATE_READY;
+ 8001846: 687b ldr r3, [r7, #4]
+ 8001848: 2220 movs r2, #32
+ 800184a: f883 203d strb.w r2, [r3, #61] ; 0x3d
+ hi2c->PreviousState = I2C_STATE_NONE;
+ 800184e: 687b ldr r3, [r7, #4]
+ 8001850: 2200 movs r2, #0
+ 8001852: 631a str r2, [r3, #48] ; 0x30
+ hi2c->Mode = HAL_I2C_MODE_NONE;
+ 8001854: 687b ldr r3, [r7, #4]
+ 8001856: 2200 movs r2, #0
+ 8001858: f883 203e strb.w r2, [r3, #62] ; 0x3e
+
+ return HAL_OK;
+ 800185c: 2300 movs r3, #0
+}
+ 800185e: 4618 mov r0, r3
+ 8001860: 3710 adds r7, #16
+ 8001862: 46bd mov sp, r7
+ 8001864: bd80 pop {r7, pc}
+ 8001866: bf00 nop
+ 8001868: 000186a0 .word 0x000186a0
+ 800186c: 001e847f .word 0x001e847f
+ 8001870: 003d08ff .word 0x003d08ff
+ 8001874: 431bde83 .word 0x431bde83
+ 8001878: 10624dd3 .word 0x10624dd3
+
+0800187c :
+ * parameters in the PCD_InitTypeDef and initialize the associated handle.
+ * @param hpcd PCD handle
+ * @retval HAL status
+ */
+HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd)
+{
+ 800187c: b5f0 push {r4, r5, r6, r7, lr}
+ 800187e: b08b sub sp, #44 ; 0x2c
+ 8001880: af06 add r7, sp, #24
+ 8001882: 6078 str r0, [r7, #4]
+ USB_OTG_GlobalTypeDef *USBx;
+#endif /* defined (USB_OTG_FS) */
+ uint8_t i;
+
+ /* Check the PCD handle allocation */
+ if (hpcd == NULL)
+ 8001884: 687b ldr r3, [r7, #4]
+ 8001886: 2b00 cmp r3, #0
+ 8001888: d101 bne.n 800188e
+ {
+ return HAL_ERROR;
+ 800188a: 2301 movs r3, #1
+ 800188c: e0d3 b.n 8001a36
+
+#if defined (USB_OTG_FS)
+ USBx = hpcd->Instance;
+#endif /* defined (USB_OTG_FS) */
+
+ if (hpcd->State == HAL_PCD_STATE_RESET)
+ 800188e: 687b ldr r3, [r7, #4]
+ 8001890: f893 3229 ldrb.w r3, [r3, #553] ; 0x229
+ 8001894: b2db uxtb r3, r3
+ 8001896: 2b00 cmp r3, #0
+ 8001898: d106 bne.n 80018a8
+ {
+ /* Allocate lock resource and initialize it */
+ hpcd->Lock = HAL_UNLOCKED;
+ 800189a: 687b ldr r3, [r7, #4]
+ 800189c: 2200 movs r2, #0
+ 800189e: f883 2228 strb.w r2, [r3, #552] ; 0x228
+
+ /* Init the low level hardware */
+ hpcd->MspInitCallback(hpcd);
+#else
+ /* Init the low level hardware : GPIO, CLOCK, NVIC... */
+ HAL_PCD_MspInit(hpcd);
+ 80018a2: 6878 ldr r0, [r7, #4]
+ 80018a4: f008 fe0c bl 800a4c0
+#endif /* (USE_HAL_PCD_REGISTER_CALLBACKS) */
+ }
+
+ hpcd->State = HAL_PCD_STATE_BUSY;
+ 80018a8: 687b ldr r3, [r7, #4]
+ 80018aa: 2203 movs r2, #3
+ 80018ac: f883 2229 strb.w r2, [r3, #553] ; 0x229
+ hpcd->Init.dma_enable = 0U;
+ }
+#endif /* defined (USB_OTG_FS) */
+
+ /* Disable the Interrupts */
+ __HAL_PCD_DISABLE(hpcd);
+ 80018b0: 687b ldr r3, [r7, #4]
+ 80018b2: 681b ldr r3, [r3, #0]
+ 80018b4: 4618 mov r0, r3
+ 80018b6: f002 feb6 bl 8004626
+
+ /*Init the Core (common init.) */
+ if (USB_CoreInit(hpcd->Instance, hpcd->Init) != HAL_OK)
+ 80018ba: 687b ldr r3, [r7, #4]
+ 80018bc: 681b ldr r3, [r3, #0]
+ 80018be: 603b str r3, [r7, #0]
+ 80018c0: 687e ldr r6, [r7, #4]
+ 80018c2: 466d mov r5, sp
+ 80018c4: f106 0410 add.w r4, r6, #16
+ 80018c8: cc0f ldmia r4!, {r0, r1, r2, r3}
+ 80018ca: c50f stmia r5!, {r0, r1, r2, r3}
+ 80018cc: 6823 ldr r3, [r4, #0]
+ 80018ce: 602b str r3, [r5, #0]
+ 80018d0: 1d33 adds r3, r6, #4
+ 80018d2: cb0e ldmia r3, {r1, r2, r3}
+ 80018d4: 6838 ldr r0, [r7, #0]
+ 80018d6: f002 fe7f bl 80045d8
+ 80018da: 4603 mov r3, r0
+ 80018dc: 2b00 cmp r3, #0
+ 80018de: d005 beq.n 80018ec
+ {
+ hpcd->State = HAL_PCD_STATE_ERROR;
+ 80018e0: 687b ldr r3, [r7, #4]
+ 80018e2: 2202 movs r2, #2
+ 80018e4: f883 2229 strb.w r2, [r3, #553] ; 0x229
+ return HAL_ERROR;
+ 80018e8: 2301 movs r3, #1
+ 80018ea: e0a4 b.n 8001a36
+ }
+
+ /* Force Device Mode*/
+ (void)USB_SetCurrentMode(hpcd->Instance, USB_DEVICE_MODE);
+ 80018ec: 687b ldr r3, [r7, #4]
+ 80018ee: 681b ldr r3, [r3, #0]
+ 80018f0: 2100 movs r1, #0
+ 80018f2: 4618 mov r0, r3
+ 80018f4: f002 feb3 bl 800465e
+
+ /* Init endpoints structures */
+ for (i = 0U; i < hpcd->Init.dev_endpoints; i++)
+ 80018f8: 2300 movs r3, #0
+ 80018fa: 73fb strb r3, [r7, #15]
+ 80018fc: e035 b.n 800196a
+ {
+ /* Init ep structure */
+ hpcd->IN_ep[i].is_in = 1U;
+ 80018fe: 7bfb ldrb r3, [r7, #15]
+ 8001900: 687a ldr r2, [r7, #4]
+ 8001902: 015b lsls r3, r3, #5
+ 8001904: 4413 add r3, r2
+ 8001906: 3329 adds r3, #41 ; 0x29
+ 8001908: 2201 movs r2, #1
+ 800190a: 701a strb r2, [r3, #0]
+ hpcd->IN_ep[i].num = i;
+ 800190c: 7bfb ldrb r3, [r7, #15]
+ 800190e: 687a ldr r2, [r7, #4]
+ 8001910: 015b lsls r3, r3, #5
+ 8001912: 4413 add r3, r2
+ 8001914: 3328 adds r3, #40 ; 0x28
+ 8001916: 7bfa ldrb r2, [r7, #15]
+ 8001918: 701a strb r2, [r3, #0]
+ hpcd->IN_ep[i].tx_fifo_num = i;
+ 800191a: 7bfb ldrb r3, [r7, #15]
+ 800191c: 7bfa ldrb r2, [r7, #15]
+ 800191e: b291 uxth r1, r2
+ 8001920: 687a ldr r2, [r7, #4]
+ 8001922: 015b lsls r3, r3, #5
+ 8001924: 4413 add r3, r2
+ 8001926: 3336 adds r3, #54 ; 0x36
+ 8001928: 460a mov r2, r1
+ 800192a: 801a strh r2, [r3, #0]
+ /* Control until ep is activated */
+ hpcd->IN_ep[i].type = EP_TYPE_CTRL;
+ 800192c: 7bfb ldrb r3, [r7, #15]
+ 800192e: 687a ldr r2, [r7, #4]
+ 8001930: 015b lsls r3, r3, #5
+ 8001932: 4413 add r3, r2
+ 8001934: 332b adds r3, #43 ; 0x2b
+ 8001936: 2200 movs r2, #0
+ 8001938: 701a strb r2, [r3, #0]
+ hpcd->IN_ep[i].maxpacket = 0U;
+ 800193a: 7bfb ldrb r3, [r7, #15]
+ 800193c: 687a ldr r2, [r7, #4]
+ 800193e: 015b lsls r3, r3, #5
+ 8001940: 4413 add r3, r2
+ 8001942: 3338 adds r3, #56 ; 0x38
+ 8001944: 2200 movs r2, #0
+ 8001946: 601a str r2, [r3, #0]
+ hpcd->IN_ep[i].xfer_buff = 0U;
+ 8001948: 7bfb ldrb r3, [r7, #15]
+ 800194a: 687a ldr r2, [r7, #4]
+ 800194c: 015b lsls r3, r3, #5
+ 800194e: 4413 add r3, r2
+ 8001950: 333c adds r3, #60 ; 0x3c
+ 8001952: 2200 movs r2, #0
+ 8001954: 601a str r2, [r3, #0]
+ hpcd->IN_ep[i].xfer_len = 0U;
+ 8001956: 7bfb ldrb r3, [r7, #15]
+ 8001958: 687a ldr r2, [r7, #4]
+ 800195a: 3302 adds r3, #2
+ 800195c: 015b lsls r3, r3, #5
+ 800195e: 4413 add r3, r2
+ 8001960: 2200 movs r2, #0
+ 8001962: 601a str r2, [r3, #0]
+ for (i = 0U; i < hpcd->Init.dev_endpoints; i++)
+ 8001964: 7bfb ldrb r3, [r7, #15]
+ 8001966: 3301 adds r3, #1
+ 8001968: 73fb strb r3, [r7, #15]
+ 800196a: 7bfa ldrb r2, [r7, #15]
+ 800196c: 687b ldr r3, [r7, #4]
+ 800196e: 685b ldr r3, [r3, #4]
+ 8001970: 429a cmp r2, r3
+ 8001972: d3c4 bcc.n 80018fe
+ }
+
+ for (i = 0U; i < hpcd->Init.dev_endpoints; i++)
+ 8001974: 2300 movs r3, #0
+ 8001976: 73fb strb r3, [r7, #15]
+ 8001978: e031 b.n 80019de
+ {
+ hpcd->OUT_ep[i].is_in = 0U;
+ 800197a: 7bfb ldrb r3, [r7, #15]
+ 800197c: 687a ldr r2, [r7, #4]
+ 800197e: 015b lsls r3, r3, #5
+ 8001980: 4413 add r3, r2
+ 8001982: f203 1329 addw r3, r3, #297 ; 0x129
+ 8001986: 2200 movs r2, #0
+ 8001988: 701a strb r2, [r3, #0]
+ hpcd->OUT_ep[i].num = i;
+ 800198a: 7bfb ldrb r3, [r7, #15]
+ 800198c: 687a ldr r2, [r7, #4]
+ 800198e: 015b lsls r3, r3, #5
+ 8001990: 4413 add r3, r2
+ 8001992: f503 7394 add.w r3, r3, #296 ; 0x128
+ 8001996: 7bfa ldrb r2, [r7, #15]
+ 8001998: 701a strb r2, [r3, #0]
+ /* Control until ep is activated */
+ hpcd->OUT_ep[i].type = EP_TYPE_CTRL;
+ 800199a: 7bfb ldrb r3, [r7, #15]
+ 800199c: 687a ldr r2, [r7, #4]
+ 800199e: 015b lsls r3, r3, #5
+ 80019a0: 4413 add r3, r2
+ 80019a2: f203 132b addw r3, r3, #299 ; 0x12b
+ 80019a6: 2200 movs r2, #0
+ 80019a8: 701a strb r2, [r3, #0]
+ hpcd->OUT_ep[i].maxpacket = 0U;
+ 80019aa: 7bfb ldrb r3, [r7, #15]
+ 80019ac: 687a ldr r2, [r7, #4]
+ 80019ae: 015b lsls r3, r3, #5
+ 80019b0: 4413 add r3, r2
+ 80019b2: f503 739c add.w r3, r3, #312 ; 0x138
+ 80019b6: 2200 movs r2, #0
+ 80019b8: 601a str r2, [r3, #0]
+ hpcd->OUT_ep[i].xfer_buff = 0U;
+ 80019ba: 7bfb ldrb r3, [r7, #15]
+ 80019bc: 687a ldr r2, [r7, #4]
+ 80019be: 015b lsls r3, r3, #5
+ 80019c0: 4413 add r3, r2
+ 80019c2: f503 739e add.w r3, r3, #316 ; 0x13c
+ 80019c6: 2200 movs r2, #0
+ 80019c8: 601a str r2, [r3, #0]
+ hpcd->OUT_ep[i].xfer_len = 0U;
+ 80019ca: 7bfb ldrb r3, [r7, #15]
+ 80019cc: 687a ldr r2, [r7, #4]
+ 80019ce: 330a adds r3, #10
+ 80019d0: 015b lsls r3, r3, #5
+ 80019d2: 4413 add r3, r2
+ 80019d4: 2200 movs r2, #0
+ 80019d6: 601a str r2, [r3, #0]
+ for (i = 0U; i < hpcd->Init.dev_endpoints; i++)
+ 80019d8: 7bfb ldrb r3, [r7, #15]
+ 80019da: 3301 adds r3, #1
+ 80019dc: 73fb strb r3, [r7, #15]
+ 80019de: 7bfa ldrb r2, [r7, #15]
+ 80019e0: 687b ldr r3, [r7, #4]
+ 80019e2: 685b ldr r3, [r3, #4]
+ 80019e4: 429a cmp r2, r3
+ 80019e6: d3c8 bcc.n 800197a
+ }
+
+ /* Init Device */
+ if (USB_DevInit(hpcd->Instance, hpcd->Init) != HAL_OK)
+ 80019e8: 687b ldr r3, [r7, #4]
+ 80019ea: 681b ldr r3, [r3, #0]
+ 80019ec: 603b str r3, [r7, #0]
+ 80019ee: 687e ldr r6, [r7, #4]
+ 80019f0: 466d mov r5, sp
+ 80019f2: f106 0410 add.w r4, r6, #16
+ 80019f6: cc0f ldmia r4!, {r0, r1, r2, r3}
+ 80019f8: c50f stmia r5!, {r0, r1, r2, r3}
+ 80019fa: 6823 ldr r3, [r4, #0]
+ 80019fc: 602b str r3, [r5, #0]
+ 80019fe: 1d33 adds r3, r6, #4
+ 8001a00: cb0e ldmia r3, {r1, r2, r3}
+ 8001a02: 6838 ldr r0, [r7, #0]
+ 8001a04: f002 fe37 bl 8004676
+ 8001a08: 4603 mov r3, r0
+ 8001a0a: 2b00 cmp r3, #0
+ 8001a0c: d005 beq.n 8001a1a
+ {
+ hpcd->State = HAL_PCD_STATE_ERROR;
+ 8001a0e: 687b ldr r3, [r7, #4]
+ 8001a10: 2202 movs r2, #2
+ 8001a12: f883 2229 strb.w r2, [r3, #553] ; 0x229
+ return HAL_ERROR;
+ 8001a16: 2301 movs r3, #1
+ 8001a18: e00d b.n 8001a36
+ }
+
+ hpcd->USB_Address = 0U;
+ 8001a1a: 687b ldr r3, [r7, #4]
+ 8001a1c: 2200 movs r2, #0
+ 8001a1e: f883 2024 strb.w r2, [r3, #36] ; 0x24
+ hpcd->State = HAL_PCD_STATE_READY;
+ 8001a22: 687b ldr r3, [r7, #4]
+ 8001a24: 2201 movs r2, #1
+ 8001a26: f883 2229 strb.w r2, [r3, #553] ; 0x229
+ (void)USB_DevDisconnect(hpcd->Instance);
+ 8001a2a: 687b ldr r3, [r7, #4]
+ 8001a2c: 681b ldr r3, [r3, #0]
+ 8001a2e: 4618 mov r0, r3
+ 8001a30: f003 fe75 bl 800571e
+
+ return HAL_OK;
+ 8001a34: 2300 movs r3, #0
+}
+ 8001a36: 4618 mov r0, r3
+ 8001a38: 3714 adds r7, #20
+ 8001a3a: 46bd mov sp, r7
+ 8001a3c: bdf0 pop {r4, r5, r6, r7, pc}
+
+08001a3e :
+ * @brief Start the USB device
+ * @param hpcd PCD handle
+ * @retval HAL status
+ */
+HAL_StatusTypeDef HAL_PCD_Start(PCD_HandleTypeDef *hpcd)
+{
+ 8001a3e: b580 push {r7, lr}
+ 8001a40: b082 sub sp, #8
+ 8001a42: af00 add r7, sp, #0
+ 8001a44: 6078 str r0, [r7, #4]
+ __HAL_LOCK(hpcd);
+ 8001a46: 687b ldr r3, [r7, #4]
+ 8001a48: f893 3228 ldrb.w r3, [r3, #552] ; 0x228
+ 8001a4c: 2b01 cmp r3, #1
+ 8001a4e: d101 bne.n 8001a54
+ 8001a50: 2302 movs r3, #2
+ 8001a52: e016 b.n 8001a82
+ 8001a54: 687b ldr r3, [r7, #4]
+ 8001a56: 2201 movs r2, #1
+ 8001a58: f883 2228 strb.w r2, [r3, #552] ; 0x228
+#if defined (USB)
+ HAL_PCDEx_SetConnectionState(hpcd, 1U);
+ 8001a5c: 2101 movs r1, #1
+ 8001a5e: 6878 ldr r0, [r7, #4]
+ 8001a60: f008 ff95 bl 800a98e
+#endif /* defined (USB) */
+ (void)USB_DevConnect(hpcd->Instance);
+ 8001a64: 687b ldr r3, [r7, #4]
+ 8001a66: 681b ldr r3, [r3, #0]
+ 8001a68: 4618 mov r0, r3
+ 8001a6a: f003 fe4e bl 800570a
+ __HAL_PCD_ENABLE(hpcd);
+ 8001a6e: 687b ldr r3, [r7, #4]
+ 8001a70: 681b ldr r3, [r3, #0]
+ 8001a72: 4618 mov r0, r3
+ 8001a74: f002 fdc0 bl 80045f8
+ __HAL_UNLOCK(hpcd);
+ 8001a78: 687b ldr r3, [r7, #4]
+ 8001a7a: 2200 movs r2, #0
+ 8001a7c: f883 2228 strb.w r2, [r3, #552] ; 0x228
+ return HAL_OK;
+ 8001a80: 2300 movs r3, #0
+}
+ 8001a82: 4618 mov r0, r3
+ 8001a84: 3708 adds r7, #8
+ 8001a86: 46bd mov sp, r7
+ 8001a88: bd80 pop {r7, pc}
+
+08001a8a :
+ * @brief This function handles PCD interrupt request.
+ * @param hpcd PCD handle
+ * @retval HAL status
+ */
+void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd)
+{
+ 8001a8a: b580 push {r7, lr}
+ 8001a8c: b082 sub sp, #8
+ 8001a8e: af00 add r7, sp, #0
+ 8001a90: 6078 str r0, [r7, #4]
+ if (__HAL_PCD_GET_FLAG(hpcd, USB_ISTR_CTR))
+ 8001a92: 687b ldr r3, [r7, #4]
+ 8001a94: 681b ldr r3, [r3, #0]
+ 8001a96: 4618 mov r0, r3
+ 8001a98: f003 fe4b bl 8005732
+ 8001a9c: 4603 mov r3, r0
+ 8001a9e: f403 4300 and.w r3, r3, #32768 ; 0x8000
+ 8001aa2: f5b3 4f00 cmp.w r3, #32768 ; 0x8000
+ 8001aa6: d102 bne.n 8001aae
+ {
+ /* servicing of the endpoint correct transfer interrupt */
+ /* clear of the CTR flag into the sub */
+ (void)PCD_EP_ISR_Handler(hpcd);
+ 8001aa8: 6878 ldr r0, [r7, #4]
+ 8001aaa: f000 faf3 bl 8002094
+ }
+
+ if (__HAL_PCD_GET_FLAG(hpcd, USB_ISTR_RESET))
+ 8001aae: 687b ldr r3, [r7, #4]
+ 8001ab0: 681b ldr r3, [r3, #0]
+ 8001ab2: 4618 mov r0, r3
+ 8001ab4: f003 fe3d bl 8005732
+ 8001ab8: 4603 mov r3, r0
+ 8001aba: f403 6380 and.w r3, r3, #1024 ; 0x400
+ 8001abe: f5b3 6f80 cmp.w r3, #1024 ; 0x400
+ 8001ac2: d112 bne.n 8001aea
+ {
+ __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_RESET);
+ 8001ac4: 687b ldr r3, [r7, #4]
+ 8001ac6: 681b ldr r3, [r3, #0]
+ 8001ac8: f8b3 3044 ldrh.w r3, [r3, #68] ; 0x44
+ 8001acc: b29a uxth r2, r3
+ 8001ace: 687b ldr r3, [r7, #4]
+ 8001ad0: 681b ldr r3, [r3, #0]
+ 8001ad2: f422 6280 bic.w r2, r2, #1024 ; 0x400
+ 8001ad6: b292 uxth r2, r2
+ 8001ad8: f8a3 2044 strh.w r2, [r3, #68] ; 0x44
+
+#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
+ hpcd->ResetCallback(hpcd);
+#else
+ HAL_PCD_ResetCallback(hpcd);
+ 8001adc: 6878 ldr r0, [r7, #4]
+ 8001ade: f008 fd64 bl 800a5aa
+#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
+
+ (void)HAL_PCD_SetAddress(hpcd, 0U);
+ 8001ae2: 2100 movs r1, #0
+ 8001ae4: 6878 ldr r0, [r7, #4]
+ 8001ae6: f000 f8de bl 8001ca6
+ }
+
+ if (__HAL_PCD_GET_FLAG(hpcd, USB_ISTR_PMAOVR))
+ 8001aea: 687b ldr r3, [r7, #4]
+ 8001aec: 681b ldr r3, [r3, #0]
+ 8001aee: 4618 mov r0, r3
+ 8001af0: f003 fe1f bl 8005732
+ 8001af4: 4603 mov r3, r0
+ 8001af6: f403 4380 and.w r3, r3, #16384 ; 0x4000
+ 8001afa: f5b3 4f80 cmp.w r3, #16384 ; 0x4000
+ 8001afe: d10b bne.n 8001b18
+ {
+ __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_PMAOVR);
+ 8001b00: 687b ldr r3, [r7, #4]
+ 8001b02: 681b ldr r3, [r3, #0]
+ 8001b04: f8b3 3044 ldrh.w r3, [r3, #68] ; 0x44
+ 8001b08: b29a uxth r2, r3
+ 8001b0a: 687b ldr r3, [r7, #4]
+ 8001b0c: 681b ldr r3, [r3, #0]
+ 8001b0e: f422 4280 bic.w r2, r2, #16384 ; 0x4000
+ 8001b12: b292 uxth r2, r2
+ 8001b14: f8a3 2044 strh.w r2, [r3, #68] ; 0x44
+ }
+
+ if (__HAL_PCD_GET_FLAG(hpcd, USB_ISTR_ERR))
+ 8001b18: 687b ldr r3, [r7, #4]
+ 8001b1a: 681b ldr r3, [r3, #0]
+ 8001b1c: 4618 mov r0, r3
+ 8001b1e: f003 fe08 bl 8005732
+ 8001b22: 4603 mov r3, r0
+ 8001b24: f403 5300 and.w r3, r3, #8192 ; 0x2000
+ 8001b28: f5b3 5f00 cmp.w r3, #8192 ; 0x2000
+ 8001b2c: d10b bne.n 8001b46
+ {
+ __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_ERR);
+ 8001b2e: 687b ldr r3, [r7, #4]
+ 8001b30: 681b ldr r3, [r3, #0]
+ 8001b32: f8b3 3044 ldrh.w r3, [r3, #68] ; 0x44
+ 8001b36: b29a uxth r2, r3
+ 8001b38: 687b ldr r3, [r7, #4]
+ 8001b3a: 681b ldr r3, [r3, #0]
+ 8001b3c: f422 5200 bic.w r2, r2, #8192 ; 0x2000
+ 8001b40: b292 uxth r2, r2
+ 8001b42: f8a3 2044 strh.w r2, [r3, #68] ; 0x44
+ }
+
+ if (__HAL_PCD_GET_FLAG(hpcd, USB_ISTR_WKUP))
+ 8001b46: 687b ldr r3, [r7, #4]
+ 8001b48: 681b ldr r3, [r3, #0]
+ 8001b4a: 4618 mov r0, r3
+ 8001b4c: f003 fdf1 bl 8005732
+ 8001b50: 4603 mov r3, r0
+ 8001b52: f403 5380 and.w r3, r3, #4096 ; 0x1000
+ 8001b56: f5b3 5f80 cmp.w r3, #4096 ; 0x1000
+ 8001b5a: d126 bne.n 8001baa
+ {
+ hpcd->Instance->CNTR &= (uint16_t) ~(USB_CNTR_LP_MODE);
+ 8001b5c: 687b ldr r3, [r7, #4]
+ 8001b5e: 681b ldr r3, [r3, #0]
+ 8001b60: f8b3 3040 ldrh.w r3, [r3, #64] ; 0x40
+ 8001b64: b29a uxth r2, r3
+ 8001b66: 687b ldr r3, [r7, #4]
+ 8001b68: 681b ldr r3, [r3, #0]
+ 8001b6a: f022 0204 bic.w r2, r2, #4
+ 8001b6e: b292 uxth r2, r2
+ 8001b70: f8a3 2040 strh.w r2, [r3, #64] ; 0x40
+ hpcd->Instance->CNTR &= (uint16_t) ~(USB_CNTR_FSUSP);
+ 8001b74: 687b ldr r3, [r7, #4]
+ 8001b76: 681b ldr r3, [r3, #0]
+ 8001b78: f8b3 3040 ldrh.w r3, [r3, #64] ; 0x40
+ 8001b7c: b29a uxth r2, r3
+ 8001b7e: 687b ldr r3, [r7, #4]
+ 8001b80: 681b ldr r3, [r3, #0]
+ 8001b82: f022 0208 bic.w r2, r2, #8
+ 8001b86: b292 uxth r2, r2
+ 8001b88: f8a3 2040 strh.w r2, [r3, #64] ; 0x40
+
+#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
+ hpcd->ResumeCallback(hpcd);
+#else
+ HAL_PCD_ResumeCallback(hpcd);
+ 8001b8c: 6878 ldr r0, [r7, #4]
+ 8001b8e: f008 fd45 bl 800a61c
+#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
+
+ __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_WKUP);
+ 8001b92: 687b ldr r3, [r7, #4]
+ 8001b94: 681b ldr r3, [r3, #0]
+ 8001b96: f8b3 3044 ldrh.w r3, [r3, #68] ; 0x44
+ 8001b9a: b29a uxth r2, r3
+ 8001b9c: 687b ldr r3, [r7, #4]
+ 8001b9e: 681b ldr r3, [r3, #0]
+ 8001ba0: f422 5280 bic.w r2, r2, #4096 ; 0x1000
+ 8001ba4: b292 uxth r2, r2
+ 8001ba6: f8a3 2044 strh.w r2, [r3, #68] ; 0x44
+ }
+
+ if (__HAL_PCD_GET_FLAG(hpcd, USB_ISTR_SUSP))
+ 8001baa: 687b ldr r3, [r7, #4]
+ 8001bac: 681b ldr r3, [r3, #0]
+ 8001bae: 4618 mov r0, r3
+ 8001bb0: f003 fdbf bl 8005732
+ 8001bb4: 4603 mov r3, r0
+ 8001bb6: f403 6300 and.w r3, r3, #2048 ; 0x800
+ 8001bba: f5b3 6f00 cmp.w r3, #2048 ; 0x800
+ 8001bbe: d13d bne.n 8001c3c
+ {
+ /* Force low-power mode in the macrocell */
+ hpcd->Instance->CNTR |= USB_CNTR_FSUSP;
+ 8001bc0: 687b ldr r3, [r7, #4]
+ 8001bc2: 681b ldr r3, [r3, #0]
+ 8001bc4: f8b3 3040 ldrh.w r3, [r3, #64] ; 0x40
+ 8001bc8: b29a uxth r2, r3
+ 8001bca: 687b ldr r3, [r7, #4]
+ 8001bcc: 681b ldr r3, [r3, #0]
+ 8001bce: f042 0208 orr.w r2, r2, #8
+ 8001bd2: b292 uxth r2, r2
+ 8001bd4: f8a3 2040 strh.w r2, [r3, #64] ; 0x40
+
+ /* clear of the ISTR bit must be done after setting of CNTR_FSUSP */
+ __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_SUSP);
+ 8001bd8: 687b ldr r3, [r7, #4]
+ 8001bda: 681b ldr r3, [r3, #0]
+ 8001bdc: f8b3 3044 ldrh.w r3, [r3, #68] ; 0x44
+ 8001be0: b29a uxth r2, r3
+ 8001be2: 687b ldr r3, [r7, #4]
+ 8001be4: 681b ldr r3, [r3, #0]
+ 8001be6: f422 6200 bic.w r2, r2, #2048 ; 0x800
+ 8001bea: b292 uxth r2, r2
+ 8001bec: f8a3 2044 strh.w r2, [r3, #68] ; 0x44
+
+ hpcd->Instance->CNTR |= USB_CNTR_LP_MODE;
+ 8001bf0: 687b ldr r3, [r7, #4]
+ 8001bf2: 681b ldr r3, [r3, #0]
+ 8001bf4: f8b3 3040 ldrh.w r3, [r3, #64] ; 0x40
+ 8001bf8: b29a uxth r2, r3
+ 8001bfa: 687b ldr r3, [r7, #4]
+ 8001bfc: 681b ldr r3, [r3, #0]
+ 8001bfe: f042 0204 orr.w r2, r2, #4
+ 8001c02: b292 uxth r2, r2
+ 8001c04: f8a3 2040 strh.w r2, [r3, #64] ; 0x40
+
+ /* WA: Clear Wakeup flag if raised with suspend signal */
+ if (__HAL_PCD_GET_FLAG(hpcd, USB_ISTR_WKUP))
+ 8001c08: 687b ldr r3, [r7, #4]
+ 8001c0a: 681b ldr r3, [r3, #0]
+ 8001c0c: 4618 mov r0, r3
+ 8001c0e: f003 fd90 bl 8005732
+ 8001c12: 4603 mov r3, r0
+ 8001c14: f403 5380 and.w r3, r3, #4096 ; 0x1000
+ 8001c18: f5b3 5f80 cmp.w r3, #4096 ; 0x1000
+ 8001c1c: d10b bne.n 8001c36
+ {
+ __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_WKUP);
+ 8001c1e: 687b ldr r3, [r7, #4]
+ 8001c20: 681b ldr r3, [r3, #0]
+ 8001c22: f8b3 3044 ldrh.w r3, [r3, #68] ; 0x44
+ 8001c26: b29a uxth r2, r3
+ 8001c28: 687b ldr r3, [r7, #4]
+ 8001c2a: 681b ldr r3, [r3, #0]
+ 8001c2c: f422 5280 bic.w r2, r2, #4096 ; 0x1000
+ 8001c30: b292 uxth r2, r2
+ 8001c32: f8a3 2044 strh.w r2, [r3, #68] ; 0x44
+ }
+
+#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
+ hpcd->SuspendCallback(hpcd);
+#else
+ HAL_PCD_SuspendCallback(hpcd);
+ 8001c36: 6878 ldr r0, [r7, #4]
+ 8001c38: f008 fcd6 bl 800a5e8
+#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
+ }
+
+ if (__HAL_PCD_GET_FLAG(hpcd, USB_ISTR_SOF))
+ 8001c3c: 687b ldr r3, [r7, #4]
+ 8001c3e: 681b ldr r3, [r3, #0]
+ 8001c40: 4618 mov r0, r3
+ 8001c42: f003 fd76 bl 8005732
+ 8001c46: 4603 mov r3, r0
+ 8001c48: f403 7300 and.w r3, r3, #512 ; 0x200
+ 8001c4c: f5b3 7f00 cmp.w r3, #512 ; 0x200
+ 8001c50: d10e bne.n 8001c70
+ {
+ __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_SOF);
+ 8001c52: 687b ldr r3, [r7, #4]
+ 8001c54: 681b ldr r3, [r3, #0]
+ 8001c56: f8b3 3044 ldrh.w r3, [r3, #68] ; 0x44
+ 8001c5a: b29a uxth r2, r3
+ 8001c5c: 687b ldr r3, [r7, #4]
+ 8001c5e: 681b ldr r3, [r3, #0]
+ 8001c60: f422 7200 bic.w r2, r2, #512 ; 0x200
+ 8001c64: b292 uxth r2, r2
+ 8001c66: f8a3 2044 strh.w r2, [r3, #68] ; 0x44
+
+#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
+ hpcd->SOFCallback(hpcd);
+#else
+ HAL_PCD_SOFCallback(hpcd);
+ 8001c6a: 6878 ldr r0, [r7, #4]
+ 8001c6c: f008 fc8f bl 800a58e
+#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
+ }
+
+ if (__HAL_PCD_GET_FLAG(hpcd, USB_ISTR_ESOF))
+ 8001c70: 687b ldr r3, [r7, #4]
+ 8001c72: 681b ldr r3, [r3, #0]
+ 8001c74: 4618 mov r0, r3
+ 8001c76: f003 fd5c bl 8005732
+ 8001c7a: 4603 mov r3, r0
+ 8001c7c: f403 7380 and.w r3, r3, #256 ; 0x100
+ 8001c80: f5b3 7f80 cmp.w r3, #256 ; 0x100
+ 8001c84: d10b bne.n 8001c9e
+ {
+ /* clear ESOF flag in ISTR */
+ __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_ESOF);
+ 8001c86: 687b ldr r3, [r7, #4]
+ 8001c88: 681b ldr r3, [r3, #0]
+ 8001c8a: f8b3 3044 ldrh.w r3, [r3, #68] ; 0x44
+ 8001c8e: b29a uxth r2, r3
+ 8001c90: 687b ldr r3, [r7, #4]
+ 8001c92: 681b ldr r3, [r3, #0]
+ 8001c94: f422 7280 bic.w r2, r2, #256 ; 0x100
+ 8001c98: b292 uxth r2, r2
+ 8001c9a: f8a3 2044 strh.w r2, [r3, #68] ; 0x44
+ }
+}
+ 8001c9e: bf00 nop
+ 8001ca0: 3708 adds r7, #8
+ 8001ca2: 46bd mov sp, r7
+ 8001ca4: bd80 pop {r7, pc}
+
+08001ca6 :
+ * @param hpcd PCD handle
+ * @param address new device address
+ * @retval HAL status
+ */
+HAL_StatusTypeDef HAL_PCD_SetAddress(PCD_HandleTypeDef *hpcd, uint8_t address)
+{
+ 8001ca6: b580 push {r7, lr}
+ 8001ca8: b082 sub sp, #8
+ 8001caa: af00 add r7, sp, #0
+ 8001cac: 6078 str r0, [r7, #4]
+ 8001cae: 460b mov r3, r1
+ 8001cb0: 70fb strb r3, [r7, #3]
+ __HAL_LOCK(hpcd);
+ 8001cb2: 687b ldr r3, [r7, #4]
+ 8001cb4: f893 3228 ldrb.w r3, [r3, #552] ; 0x228
+ 8001cb8: 2b01 cmp r3, #1
+ 8001cba: d101 bne.n 8001cc0
+ 8001cbc: 2302 movs r3, #2
+ 8001cbe: e013 b.n 8001ce8
+ 8001cc0: 687b ldr r3, [r7, #4]
+ 8001cc2: 2201 movs r2, #1
+ 8001cc4: f883 2228 strb.w r2, [r3, #552] ; 0x228
+ hpcd->USB_Address = address;
+ 8001cc8: 687b ldr r3, [r7, #4]
+ 8001cca: 78fa ldrb r2, [r7, #3]
+ 8001ccc: f883 2024 strb.w r2, [r3, #36] ; 0x24
+ (void)USB_SetDevAddress(hpcd->Instance, address);
+ 8001cd0: 687b ldr r3, [r7, #4]
+ 8001cd2: 681b ldr r3, [r3, #0]
+ 8001cd4: 78fa ldrb r2, [r7, #3]
+ 8001cd6: 4611 mov r1, r2
+ 8001cd8: 4618 mov r0, r3
+ 8001cda: f003 fd03 bl 80056e4
+ __HAL_UNLOCK(hpcd);
+ 8001cde: 687b ldr r3, [r7, #4]
+ 8001ce0: 2200 movs r2, #0
+ 8001ce2: f883 2228 strb.w r2, [r3, #552] ; 0x228
+ return HAL_OK;
+ 8001ce6: 2300 movs r3, #0
+}
+ 8001ce8: 4618 mov r0, r3
+ 8001cea: 3708 adds r7, #8
+ 8001cec: 46bd mov sp, r7
+ 8001cee: bd80 pop {r7, pc}
+
+08001cf0 :
+ * @param ep_mps endpoint max packet size
+ * @param ep_type endpoint type
+ * @retval HAL status
+ */
+HAL_StatusTypeDef HAL_PCD_EP_Open(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint16_t ep_mps, uint8_t ep_type)
+{
+ 8001cf0: b580 push {r7, lr}
+ 8001cf2: b084 sub sp, #16
+ 8001cf4: af00 add r7, sp, #0
+ 8001cf6: 6078 str r0, [r7, #4]
+ 8001cf8: 4608 mov r0, r1
+ 8001cfa: 4611 mov r1, r2
+ 8001cfc: 461a mov r2, r3
+ 8001cfe: 4603 mov r3, r0
+ 8001d00: 70fb strb r3, [r7, #3]
+ 8001d02: 460b mov r3, r1
+ 8001d04: 803b strh r3, [r7, #0]
+ 8001d06: 4613 mov r3, r2
+ 8001d08: 70bb strb r3, [r7, #2]
+ HAL_StatusTypeDef ret = HAL_OK;
+ 8001d0a: 2300 movs r3, #0
+ 8001d0c: 72fb strb r3, [r7, #11]
+ PCD_EPTypeDef *ep;
+
+ if ((ep_addr & 0x80U) == 0x80U)
+ 8001d0e: f997 3003 ldrsb.w r3, [r7, #3]
+ 8001d12: 2b00 cmp r3, #0
+ 8001d14: da0b bge.n 8001d2e
+ {
+ ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK];
+ 8001d16: 78fb ldrb r3, [r7, #3]
+ 8001d18: f003 0307 and.w r3, r3, #7
+ 8001d1c: 015b lsls r3, r3, #5
+ 8001d1e: 3328 adds r3, #40 ; 0x28
+ 8001d20: 687a ldr r2, [r7, #4]
+ 8001d22: 4413 add r3, r2
+ 8001d24: 60fb str r3, [r7, #12]
+ ep->is_in = 1U;
+ 8001d26: 68fb ldr r3, [r7, #12]
+ 8001d28: 2201 movs r2, #1
+ 8001d2a: 705a strb r2, [r3, #1]
+ 8001d2c: e00b b.n 8001d46
+ }
+ else
+ {
+ ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK];
+ 8001d2e: 78fb ldrb r3, [r7, #3]
+ 8001d30: f003 0307 and.w r3, r3, #7
+ 8001d34: 015b lsls r3, r3, #5
+ 8001d36: f503 7394 add.w r3, r3, #296 ; 0x128
+ 8001d3a: 687a ldr r2, [r7, #4]
+ 8001d3c: 4413 add r3, r2
+ 8001d3e: 60fb str r3, [r7, #12]
+ ep->is_in = 0U;
+ 8001d40: 68fb ldr r3, [r7, #12]
+ 8001d42: 2200 movs r2, #0
+ 8001d44: 705a strb r2, [r3, #1]
+ }
+
+ ep->num = ep_addr & EP_ADDR_MSK;
+ 8001d46: 78fb ldrb r3, [r7, #3]
+ 8001d48: f003 0307 and.w r3, r3, #7
+ 8001d4c: b2da uxtb r2, r3
+ 8001d4e: 68fb ldr r3, [r7, #12]
+ 8001d50: 701a strb r2, [r3, #0]
+ ep->maxpacket = ep_mps;
+ 8001d52: 883a ldrh r2, [r7, #0]
+ 8001d54: 68fb ldr r3, [r7, #12]
+ 8001d56: 611a str r2, [r3, #16]
+ ep->type = ep_type;
+ 8001d58: 68fb ldr r3, [r7, #12]
+ 8001d5a: 78ba ldrb r2, [r7, #2]
+ 8001d5c: 70da strb r2, [r3, #3]
+
+ if (ep->is_in != 0U)
+ 8001d5e: 68fb ldr r3, [r7, #12]
+ 8001d60: 785b ldrb r3, [r3, #1]
+ 8001d62: 2b00 cmp r3, #0
+ 8001d64: d004 beq.n 8001d70
+ {
+ /* Assign a Tx FIFO */
+ ep->tx_fifo_num = ep->num;
+ 8001d66: 68fb ldr r3, [r7, #12]
+ 8001d68: 781b ldrb r3, [r3, #0]
+ 8001d6a: b29a uxth r2, r3
+ 8001d6c: 68fb ldr r3, [r7, #12]
+ 8001d6e: 81da strh r2, [r3, #14]
+ }
+ /* Set initial data PID. */
+ if (ep_type == EP_TYPE_BULK)
+ 8001d70: 78bb ldrb r3, [r7, #2]
+ 8001d72: 2b02 cmp r3, #2
+ 8001d74: d102 bne.n 8001d7c
+ {
+ ep->data_pid_start = 0U;
+ 8001d76: 68fb ldr r3, [r7, #12]
+ 8001d78: 2200 movs r2, #0
+ 8001d7a: 711a strb r2, [r3, #4]
+ }
+
+ __HAL_LOCK(hpcd);
+ 8001d7c: 687b ldr r3, [r7, #4]
+ 8001d7e: f893 3228 ldrb.w r3, [r3, #552] ; 0x228
+ 8001d82: 2b01 cmp r3, #1
+ 8001d84: d101 bne.n 8001d8a
+ 8001d86: 2302 movs r3, #2
+ 8001d88: e00e b.n 8001da8
+ 8001d8a: 687b ldr r3, [r7, #4]
+ 8001d8c: 2201 movs r2, #1
+ 8001d8e: f883 2228 strb.w r2, [r3, #552] ; 0x228
+ (void)USB_ActivateEndpoint(hpcd->Instance, ep);
+ 8001d92: 687b ldr r3, [r7, #4]
+ 8001d94: 681b ldr r3, [r3, #0]
+ 8001d96: 68f9 ldr r1, [r7, #12]
+ 8001d98: 4618 mov r0, r3
+ 8001d9a: f002 fc91 bl 80046c0
+ __HAL_UNLOCK(hpcd);
+ 8001d9e: 687b ldr r3, [r7, #4]
+ 8001da0: 2200 movs r2, #0
+ 8001da2: f883 2228 strb.w r2, [r3, #552] ; 0x228
+
+ return ret;
+ 8001da6: 7afb ldrb r3, [r7, #11]
+}
+ 8001da8: 4618 mov r0, r3
+ 8001daa: 3710 adds r7, #16
+ 8001dac: 46bd mov sp, r7
+ 8001dae: bd80 pop {r7, pc}
+
+08001db0 :
+ * @param hpcd PCD handle
+ * @param ep_addr endpoint address
+ * @retval HAL status
+ */
+HAL_StatusTypeDef HAL_PCD_EP_Close(PCD_HandleTypeDef *hpcd, uint8_t ep_addr)
+{
+ 8001db0: b580 push {r7, lr}
+ 8001db2: b084 sub sp, #16
+ 8001db4: af00 add r7, sp, #0
+ 8001db6: 6078 str r0, [r7, #4]
+ 8001db8: 460b mov r3, r1
+ 8001dba: 70fb strb r3, [r7, #3]
+ PCD_EPTypeDef *ep;
+
+ if ((ep_addr & 0x80U) == 0x80U)
+ 8001dbc: f997 3003 ldrsb.w r3, [r7, #3]
+ 8001dc0: 2b00 cmp r3, #0
+ 8001dc2: da0b bge.n 8001ddc
+ {
+ ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK];
+ 8001dc4: 78fb ldrb r3, [r7, #3]
+ 8001dc6: f003 0307 and.w r3, r3, #7
+ 8001dca: 015b lsls r3, r3, #5
+ 8001dcc: 3328 adds r3, #40 ; 0x28
+ 8001dce: 687a ldr r2, [r7, #4]
+ 8001dd0: 4413 add r3, r2
+ 8001dd2: 60fb str r3, [r7, #12]
+ ep->is_in = 1U;
+ 8001dd4: 68fb ldr r3, [r7, #12]
+ 8001dd6: 2201 movs r2, #1
+ 8001dd8: 705a strb r2, [r3, #1]
+ 8001dda: e00b b.n 8001df4
+ }
+ else
+ {
+ ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK];
+ 8001ddc: 78fb ldrb r3, [r7, #3]
+ 8001dde: f003 0307 and.w r3, r3, #7
+ 8001de2: 015b lsls r3, r3, #5
+ 8001de4: f503 7394 add.w r3, r3, #296 ; 0x128
+ 8001de8: 687a ldr r2, [r7, #4]
+ 8001dea: 4413 add r3, r2
+ 8001dec: 60fb str r3, [r7, #12]
+ ep->is_in = 0U;
+ 8001dee: 68fb ldr r3, [r7, #12]
+ 8001df0: 2200 movs r2, #0
+ 8001df2: 705a strb r2, [r3, #1]
+ }
+ ep->num = ep_addr & EP_ADDR_MSK;
+ 8001df4: 78fb ldrb r3, [r7, #3]
+ 8001df6: f003 0307 and.w r3, r3, #7
+ 8001dfa: b2da uxtb r2, r3
+ 8001dfc: 68fb ldr r3, [r7, #12]
+ 8001dfe: 701a strb r2, [r3, #0]
+
+ __HAL_LOCK(hpcd);
+ 8001e00: 687b ldr r3, [r7, #4]
+ 8001e02: f893 3228 ldrb.w r3, [r3, #552] ; 0x228
+ 8001e06: 2b01 cmp r3, #1
+ 8001e08: d101 bne.n 8001e0e
+ 8001e0a: 2302 movs r3, #2
+ 8001e0c: e00e b.n 8001e2c
+ 8001e0e: 687b ldr r3, [r7, #4]
+ 8001e10: 2201 movs r2, #1
+ 8001e12: f883 2228 strb.w r2, [r3, #552] ; 0x228
+ (void)USB_DeactivateEndpoint(hpcd->Instance, ep);
+ 8001e16: 687b ldr r3, [r7, #4]
+ 8001e18: 681b ldr r3, [r3, #0]
+ 8001e1a: 68f9 ldr r1, [r7, #12]
+ 8001e1c: 4618 mov r0, r3
+ 8001e1e: f002 ff3d bl 8004c9c
+ __HAL_UNLOCK(hpcd);
+ 8001e22: 687b ldr r3, [r7, #4]
+ 8001e24: 2200 movs r2, #0
+ 8001e26: f883 2228 strb.w r2, [r3, #552] ; 0x228
+ return HAL_OK;
+ 8001e2a: 2300 movs r3, #0
+}
+ 8001e2c: 4618 mov r0, r3
+ 8001e2e: 3710 adds r7, #16
+ 8001e30: 46bd mov sp, r7
+ 8001e32: bd80 pop {r7, pc}
+
+08001e34 :
+ * @param pBuf pointer to the reception buffer
+ * @param len amount of data to be received
+ * @retval HAL status
+ */
+HAL_StatusTypeDef HAL_PCD_EP_Receive(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len)
+{
+ 8001e34: b580 push {r7, lr}
+ 8001e36: b086 sub sp, #24
+ 8001e38: af00 add r7, sp, #0
+ 8001e3a: 60f8 str r0, [r7, #12]
+ 8001e3c: 607a str r2, [r7, #4]
+ 8001e3e: 603b str r3, [r7, #0]
+ 8001e40: 460b mov r3, r1
+ 8001e42: 72fb strb r3, [r7, #11]
+ PCD_EPTypeDef *ep;
+
+ ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK];
+ 8001e44: 7afb ldrb r3, [r7, #11]
+ 8001e46: f003 0307 and.w r3, r3, #7
+ 8001e4a: 015b lsls r3, r3, #5
+ 8001e4c: f503 7394 add.w r3, r3, #296 ; 0x128
+ 8001e50: 68fa ldr r2, [r7, #12]
+ 8001e52: 4413 add r3, r2
+ 8001e54: 617b str r3, [r7, #20]
+
+ /*setup and start the Xfer */
+ ep->xfer_buff = pBuf;
+ 8001e56: 697b ldr r3, [r7, #20]
+ 8001e58: 687a ldr r2, [r7, #4]
+ 8001e5a: 615a str r2, [r3, #20]
+ ep->xfer_len = len;
+ 8001e5c: 697b ldr r3, [r7, #20]
+ 8001e5e: 683a ldr r2, [r7, #0]
+ 8001e60: 619a str r2, [r3, #24]
+ ep->xfer_count = 0U;
+ 8001e62: 697b ldr r3, [r7, #20]
+ 8001e64: 2200 movs r2, #0
+ 8001e66: 61da str r2, [r3, #28]
+ ep->is_in = 0U;
+ 8001e68: 697b ldr r3, [r7, #20]
+ 8001e6a: 2200 movs r2, #0
+ 8001e6c: 705a strb r2, [r3, #1]
+ ep->num = ep_addr & EP_ADDR_MSK;
+ 8001e6e: 7afb ldrb r3, [r7, #11]
+ 8001e70: f003 0307 and.w r3, r3, #7
+ 8001e74: b2da uxtb r2, r3
+ 8001e76: 697b ldr r3, [r7, #20]
+ 8001e78: 701a strb r2, [r3, #0]
+
+ if ((ep_addr & EP_ADDR_MSK) == 0U)
+ 8001e7a: 7afb ldrb r3, [r7, #11]
+ 8001e7c: f003 0307 and.w r3, r3, #7
+ 8001e80: 2b00 cmp r3, #0
+ 8001e82: d106 bne.n 8001e92
+ {
+ (void)USB_EP0StartXfer(hpcd->Instance, ep);
+ 8001e84: 68fb ldr r3, [r7, #12]
+ 8001e86: 681b ldr r3, [r3, #0]
+ 8001e88: 6979 ldr r1, [r7, #20]
+ 8001e8a: 4618 mov r0, r3
+ 8001e8c: f003 f89c bl 8004fc8
+ 8001e90: e005 b.n 8001e9e
+ }
+ else
+ {
+ (void)USB_EPStartXfer(hpcd->Instance, ep);
+ 8001e92: 68fb ldr r3, [r7, #12]
+ 8001e94: 681b ldr r3, [r3, #0]
+ 8001e96: 6979 ldr r1, [r7, #20]
+ 8001e98: 4618 mov r0, r3
+ 8001e9a: f003 f895 bl 8004fc8
+ }
+
+ return HAL_OK;
+ 8001e9e: 2300 movs r3, #0
+}
+ 8001ea0: 4618 mov r0, r3
+ 8001ea2: 3718 adds r7, #24
+ 8001ea4: 46bd mov sp, r7
+ 8001ea6: bd80 pop {r7, pc}
+
+08001ea8 :
+ * @param hpcd PCD handle
+ * @param ep_addr endpoint address
+ * @retval Data Size
+ */
+uint32_t HAL_PCD_EP_GetRxCount(PCD_HandleTypeDef *hpcd, uint8_t ep_addr)
+{
+ 8001ea8: b480 push {r7}
+ 8001eaa: b083 sub sp, #12
+ 8001eac: af00 add r7, sp, #0
+ 8001eae: 6078 str r0, [r7, #4]
+ 8001eb0: 460b mov r3, r1
+ 8001eb2: 70fb strb r3, [r7, #3]
+ return hpcd->OUT_ep[ep_addr & EP_ADDR_MSK].xfer_count;
+ 8001eb4: 78fb ldrb r3, [r7, #3]
+ 8001eb6: f003 0307 and.w r3, r3, #7
+ 8001eba: 687a ldr r2, [r7, #4]
+ 8001ebc: 330a adds r3, #10
+ 8001ebe: 015b lsls r3, r3, #5
+ 8001ec0: 4413 add r3, r2
+ 8001ec2: 3304 adds r3, #4
+ 8001ec4: 681b ldr r3, [r3, #0]
+}
+ 8001ec6: 4618 mov r0, r3
+ 8001ec8: 370c adds r7, #12
+ 8001eca: 46bd mov sp, r7
+ 8001ecc: bc80 pop {r7}
+ 8001ece: 4770 bx lr
+
+08001ed0 :
+ * @param pBuf pointer to the transmission buffer
+ * @param len amount of data to be sent
+ * @retval HAL status
+ */
+HAL_StatusTypeDef HAL_PCD_EP_Transmit(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len)
+{
+ 8001ed0: b580 push {r7, lr}
+ 8001ed2: b086 sub sp, #24
+ 8001ed4: af00 add r7, sp, #0
+ 8001ed6: 60f8 str r0, [r7, #12]
+ 8001ed8: 607a str r2, [r7, #4]
+ 8001eda: 603b str r3, [r7, #0]
+ 8001edc: 460b mov r3, r1
+ 8001ede: 72fb strb r3, [r7, #11]
+ PCD_EPTypeDef *ep;
+
+ ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK];
+ 8001ee0: 7afb ldrb r3, [r7, #11]
+ 8001ee2: f003 0307 and.w r3, r3, #7
+ 8001ee6: 015b lsls r3, r3, #5
+ 8001ee8: 3328 adds r3, #40 ; 0x28
+ 8001eea: 68fa ldr r2, [r7, #12]
+ 8001eec: 4413 add r3, r2
+ 8001eee: 617b str r3, [r7, #20]
+
+ /*setup and start the Xfer */
+ ep->xfer_buff = pBuf;
+ 8001ef0: 697b ldr r3, [r7, #20]
+ 8001ef2: 687a ldr r2, [r7, #4]
+ 8001ef4: 615a str r2, [r3, #20]
+ ep->xfer_len = len;
+ 8001ef6: 697b ldr r3, [r7, #20]
+ 8001ef8: 683a ldr r2, [r7, #0]
+ 8001efa: 619a str r2, [r3, #24]
+ ep->xfer_count = 0U;
+ 8001efc: 697b ldr r3, [r7, #20]
+ 8001efe: 2200 movs r2, #0
+ 8001f00: 61da str r2, [r3, #28]
+ ep->is_in = 1U;
+ 8001f02: 697b ldr r3, [r7, #20]
+ 8001f04: 2201 movs r2, #1
+ 8001f06: 705a strb r2, [r3, #1]
+ ep->num = ep_addr & EP_ADDR_MSK;
+ 8001f08: 7afb ldrb r3, [r7, #11]
+ 8001f0a: f003 0307 and.w r3, r3, #7
+ 8001f0e: b2da uxtb r2, r3
+ 8001f10: 697b ldr r3, [r7, #20]
+ 8001f12: 701a strb r2, [r3, #0]
+
+ if ((ep_addr & EP_ADDR_MSK) == 0U)
+ 8001f14: 7afb ldrb r3, [r7, #11]
+ 8001f16: f003 0307 and.w r3, r3, #7
+ 8001f1a: 2b00 cmp r3, #0
+ 8001f1c: d106 bne.n 8001f2c
+ {
+ (void)USB_EP0StartXfer(hpcd->Instance, ep);
+ 8001f1e: 68fb ldr r3, [r7, #12]
+ 8001f20: 681b ldr r3, [r3, #0]
+ 8001f22: 6979 ldr r1, [r7, #20]
+ 8001f24: 4618 mov r0, r3
+ 8001f26: f003 f84f bl 8004fc8
+ 8001f2a: e005 b.n 8001f38
+ }
+ else
+ {
+ (void)USB_EPStartXfer(hpcd->Instance, ep);
+ 8001f2c: 68fb ldr r3, [r7, #12]
+ 8001f2e: 681b ldr r3, [r3, #0]
+ 8001f30: 6979 ldr r1, [r7, #20]
+ 8001f32: 4618 mov r0, r3
+ 8001f34: f003 f848 bl 8004fc8
+ }
+
+ return HAL_OK;
+ 8001f38: 2300 movs r3, #0
+}
+ 8001f3a: 4618 mov r0, r3
+ 8001f3c: 3718 adds r7, #24
+ 8001f3e: 46bd mov sp, r7
+ 8001f40: bd80 pop {r7, pc}
+
+08001f42 :
+ * @param hpcd PCD handle
+ * @param ep_addr endpoint address
+ * @retval HAL status
+ */
+HAL_StatusTypeDef HAL_PCD_EP_SetStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr)
+{
+ 8001f42: b580 push {r7, lr}
+ 8001f44: b084 sub sp, #16
+ 8001f46: af00 add r7, sp, #0
+ 8001f48: 6078 str r0, [r7, #4]
+ 8001f4a: 460b mov r3, r1
+ 8001f4c: 70fb strb r3, [r7, #3]
+ PCD_EPTypeDef *ep;
+
+ if (((uint32_t)ep_addr & EP_ADDR_MSK) > hpcd->Init.dev_endpoints)
+ 8001f4e: 78fb ldrb r3, [r7, #3]
+ 8001f50: f003 0207 and.w r2, r3, #7
+ 8001f54: 687b ldr r3, [r7, #4]
+ 8001f56: 685b ldr r3, [r3, #4]
+ 8001f58: 429a cmp r2, r3
+ 8001f5a: d901 bls.n 8001f60
+ {
+ return HAL_ERROR;
+ 8001f5c: 2301 movs r3, #1
+ 8001f5e: e046 b.n 8001fee
+ }
+
+ if ((0x80U & ep_addr) == 0x80U)
+ 8001f60: f997 3003 ldrsb.w r3, [r7, #3]
+ 8001f64: 2b00 cmp r3, #0
+ 8001f66: da0b bge.n 8001f80
+ {
+ ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK];
+ 8001f68: 78fb ldrb r3, [r7, #3]
+ 8001f6a: f003 0307 and.w r3, r3, #7
+ 8001f6e: 015b lsls r3, r3, #5
+ 8001f70: 3328 adds r3, #40 ; 0x28
+ 8001f72: 687a ldr r2, [r7, #4]
+ 8001f74: 4413 add r3, r2
+ 8001f76: 60fb str r3, [r7, #12]
+ ep->is_in = 1U;
+ 8001f78: 68fb ldr r3, [r7, #12]
+ 8001f7a: 2201 movs r2, #1
+ 8001f7c: 705a strb r2, [r3, #1]
+ 8001f7e: e009 b.n 8001f94
+ }
+ else
+ {
+ ep = &hpcd->OUT_ep[ep_addr];
+ 8001f80: 78fb ldrb r3, [r7, #3]
+ 8001f82: 015b lsls r3, r3, #5
+ 8001f84: f503 7394 add.w r3, r3, #296 ; 0x128
+ 8001f88: 687a ldr r2, [r7, #4]
+ 8001f8a: 4413 add r3, r2
+ 8001f8c: 60fb str r3, [r7, #12]
+ ep->is_in = 0U;
+ 8001f8e: 68fb ldr r3, [r7, #12]
+ 8001f90: 2200 movs r2, #0
+ 8001f92: 705a strb r2, [r3, #1]
+ }
+
+ ep->is_stall = 1U;
+ 8001f94: 68fb ldr r3, [r7, #12]
+ 8001f96: 2201 movs r2, #1
+ 8001f98: 709a strb r2, [r3, #2]
+ ep->num = ep_addr & EP_ADDR_MSK;
+ 8001f9a: 78fb ldrb r3, [r7, #3]
+ 8001f9c: f003 0307 and.w r3, r3, #7
+ 8001fa0: b2da uxtb r2, r3
+ 8001fa2: 68fb ldr r3, [r7, #12]
+ 8001fa4: 701a strb r2, [r3, #0]
+
+ __HAL_LOCK(hpcd);
+ 8001fa6: 687b ldr r3, [r7, #4]
+ 8001fa8: f893 3228 ldrb.w r3, [r3, #552] ; 0x228
+ 8001fac: 2b01 cmp r3, #1
+ 8001fae: d101 bne.n 8001fb4
+ 8001fb0: 2302 movs r3, #2
+ 8001fb2: e01c b.n 8001fee
+ 8001fb4: 687b ldr r3, [r7, #4]
+ 8001fb6: 2201 movs r2, #1
+ 8001fb8: f883 2228 strb.w r2, [r3, #552] ; 0x228
+
+ (void)USB_EPSetStall(hpcd->Instance, ep);
+ 8001fbc: 687b ldr r3, [r7, #4]
+ 8001fbe: 681b ldr r3, [r3, #0]
+ 8001fc0: 68f9 ldr r1, [r7, #12]
+ 8001fc2: 4618 mov r0, r3
+ 8001fc4: f003 fab8 bl 8005538
+ if ((ep_addr & EP_ADDR_MSK) == 0U)
+ 8001fc8: 78fb ldrb r3, [r7, #3]
+ 8001fca: f003 0307 and.w r3, r3, #7
+ 8001fce: 2b00 cmp r3, #0
+ 8001fd0: d108 bne.n 8001fe4
+ {
+ (void)USB_EP0_OutStart(hpcd->Instance, (uint8_t *)hpcd->Setup);
+ 8001fd2: 687b ldr r3, [r7, #4]
+ 8001fd4: 681a ldr r2, [r3, #0]
+ 8001fd6: 687b ldr r3, [r7, #4]
+ 8001fd8: f503 730c add.w r3, r3, #560 ; 0x230
+ 8001fdc: 4619 mov r1, r3
+ 8001fde: 4610 mov r0, r2
+ 8001fe0: f003 fbb6 bl 8005750
+ }
+ __HAL_UNLOCK(hpcd);
+ 8001fe4: 687b ldr r3, [r7, #4]
+ 8001fe6: 2200 movs r2, #0
+ 8001fe8: f883 2228 strb.w r2, [r3, #552] ; 0x228
+
+ return HAL_OK;
+ 8001fec: 2300 movs r3, #0
+}
+ 8001fee: 4618 mov r0, r3
+ 8001ff0: 3710 adds r7, #16
+ 8001ff2: 46bd mov sp, r7
+ 8001ff4: bd80 pop {r7, pc}
+
+08001ff6