From 23708539f202cf21d6226cf5c1458bace0f94761 Mon Sep 17 00:00:00 2001 From: Maxim Date: Thu, 24 Oct 2024 09:12:17 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=A1=D0=9A=D0=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Debug/Core/Src/subdir.mk | 42 - Debug/Core/Startup/subdir.mk | 27 - .../Drivers/BSP/Components/dp83848/subdir.mk | 27 - .../STM32F4xx_HAL_Driver/Src/subdir.mk | 78 - Debug/LWIP/App/subdir.mk | 27 - Debug/LWIP/Target/subdir.mk | 27 - .../Third_Party/LwIP/src/api/subdir.mk | 51 - .../Third_Party/LwIP/src/apps/mqtt/subdir.mk | 27 - .../Third_Party/LwIP/src/core/ipv4/subdir.mk | 48 - .../Third_Party/LwIP/src/core/ipv6/subdir.mk | 51 - .../Third_Party/LwIP/src/core/subdir.mk | 84 - .../Third_Party/LwIP/src/netif/ppp/subdir.mk | 99 - .../Third_Party/LwIP/src/netif/subdir.mk | 48 - Debug/Startup/subdir.mk | 27 - Debug/makefile | 4 +- Debug/objects.list | 108 - Debug/objects.mk | 9 - Debug/sources.mk | 38 - Debug/yau-07b.list | 56320 ---------------- Release/Core/Src/subdir.mk | 42 - Release/Core/Startup/subdir.mk | 27 - .../Drivers/BSP/Components/dp83848/subdir.mk | 27 - .../STM32F4xx_HAL_Driver/Src/subdir.mk | 78 - Release/LWIP/App/subdir.mk | 27 - Release/LWIP/Target/subdir.mk | 27 - .../Third_Party/LwIP/src/api/subdir.mk | 51 - .../Third_Party/LwIP/src/apps/mqtt/subdir.mk | 27 - .../Third_Party/LwIP/src/core/ipv4/subdir.mk | 48 - .../Third_Party/LwIP/src/core/ipv6/subdir.mk | 51 - .../Third_Party/LwIP/src/core/subdir.mk | 84 - .../Third_Party/LwIP/src/netif/ppp/subdir.mk | 99 - .../Third_Party/LwIP/src/netif/subdir.mk | 48 - Release/makefile | 4 +- Release/objects.list | 108 - Release/objects.mk | 9 - Release/sources.mk | 38 - Release/yau-07b.list | 18622 ----- 37 files changed, 4 insertions(+), 76555 deletions(-) delete mode 100644 Debug/Core/Src/subdir.mk delete mode 100644 Debug/Core/Startup/subdir.mk delete mode 100644 Debug/Drivers/BSP/Components/dp83848/subdir.mk delete mode 100644 Debug/Drivers/STM32F4xx_HAL_Driver/Src/subdir.mk delete mode 100644 Debug/LWIP/App/subdir.mk delete mode 100644 Debug/LWIP/Target/subdir.mk delete mode 100644 Debug/Middlewares/Third_Party/LwIP/src/api/subdir.mk delete mode 100644 Debug/Middlewares/Third_Party/LwIP/src/apps/mqtt/subdir.mk delete mode 100644 Debug/Middlewares/Third_Party/LwIP/src/core/ipv4/subdir.mk delete mode 100644 Debug/Middlewares/Third_Party/LwIP/src/core/ipv6/subdir.mk delete mode 100644 Debug/Middlewares/Third_Party/LwIP/src/core/subdir.mk delete mode 100644 Debug/Middlewares/Third_Party/LwIP/src/netif/ppp/subdir.mk delete mode 100644 Debug/Middlewares/Third_Party/LwIP/src/netif/subdir.mk delete mode 100644 Debug/Startup/subdir.mk delete mode 100644 Debug/objects.list delete mode 100644 Debug/objects.mk delete mode 100644 Debug/sources.mk delete mode 100644 Debug/yau-07b.list delete mode 100644 Release/Core/Src/subdir.mk delete mode 100644 Release/Core/Startup/subdir.mk delete mode 100644 Release/Drivers/BSP/Components/dp83848/subdir.mk delete mode 100644 Release/Drivers/STM32F4xx_HAL_Driver/Src/subdir.mk delete mode 100644 Release/LWIP/App/subdir.mk delete mode 100644 Release/LWIP/Target/subdir.mk delete mode 100644 Release/Middlewares/Third_Party/LwIP/src/api/subdir.mk delete mode 100644 Release/Middlewares/Third_Party/LwIP/src/apps/mqtt/subdir.mk delete mode 100644 Release/Middlewares/Third_Party/LwIP/src/core/ipv4/subdir.mk delete mode 100644 Release/Middlewares/Third_Party/LwIP/src/core/ipv6/subdir.mk delete mode 100644 Release/Middlewares/Third_Party/LwIP/src/core/subdir.mk delete mode 100644 Release/Middlewares/Third_Party/LwIP/src/netif/ppp/subdir.mk delete mode 100644 Release/Middlewares/Third_Party/LwIP/src/netif/subdir.mk delete mode 100644 Release/objects.list delete mode 100644 Release/objects.mk delete mode 100644 Release/sources.mk delete mode 100644 Release/yau-07b.list diff --git a/Debug/Core/Src/subdir.mk b/Debug/Core/Src/subdir.mk deleted file mode 100644 index 45cfbc8..0000000 --- a/Debug/Core/Src/subdir.mk +++ /dev/null @@ -1,42 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (12.3.rel1) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../Core/Src/FLASH_SECTOR_F4.c \ -../Core/Src/main.c \ -../Core/Src/pribors.c \ -../Core/Src/stm32f4xx_hal_msp.c \ -../Core/Src/stm32f4xx_it.c \ -../Core/Src/system_stm32f4xx.c - -OBJS += \ -./Core/Src/FLASH_SECTOR_F4.o \ -./Core/Src/main.o \ -./Core/Src/pribors.o \ -./Core/Src/stm32f4xx_hal_msp.o \ -./Core/Src/stm32f4xx_it.o \ -./Core/Src/system_stm32f4xx.o - -C_DEPS += \ -./Core/Src/FLASH_SECTOR_F4.d \ -./Core/Src/main.d \ -./Core/Src/pribors.d \ -./Core/Src/stm32f4xx_hal_msp.d \ -./Core/Src/stm32f4xx_it.d \ -./Core/Src/system_stm32f4xx.d - - -# Each subdirectory must supply rules for building sources it contributes -Core/Src/%.o Core/Src/%.su Core/Src/%.cyclo: ../Core/Src/%.c Core/Src/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F429xx -c -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I../LWIP/App -I../LWIP/Target -I../Middlewares/Third_Party/LwIP/src/include -I../Middlewares/Third_Party/LwIP/system -I../Drivers/BSP/Components/dp83848 -I../Middlewares/Third_Party/LwIP/src/include/netif/ppp -I../Middlewares/Third_Party/LwIP/src/include/lwip -I../Middlewares/Third_Party/LwIP/src/include/lwip/apps -I../Middlewares/Third_Party/LwIP/src/include/lwip/priv -I../Middlewares/Third_Party/LwIP/src/include/lwip/prot -I../Middlewares/Third_Party/LwIP/src/include/netif -I../Middlewares/Third_Party/LwIP/src/include/compat/posix -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/arpa -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/net -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/sys -I../Middlewares/Third_Party/LwIP/src/include/compat/stdc -I../Middlewares/Third_Party/LwIP/system/arch -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" - -clean: clean-Core-2f-Src - -clean-Core-2f-Src: - -$(RM) ./Core/Src/FLASH_SECTOR_F4.cyclo ./Core/Src/FLASH_SECTOR_F4.d ./Core/Src/FLASH_SECTOR_F4.o ./Core/Src/FLASH_SECTOR_F4.su ./Core/Src/main.cyclo ./Core/Src/main.d ./Core/Src/main.o ./Core/Src/main.su ./Core/Src/pribors.cyclo ./Core/Src/pribors.d ./Core/Src/pribors.o ./Core/Src/pribors.su ./Core/Src/stm32f4xx_hal_msp.cyclo ./Core/Src/stm32f4xx_hal_msp.d ./Core/Src/stm32f4xx_hal_msp.o ./Core/Src/stm32f4xx_hal_msp.su ./Core/Src/stm32f4xx_it.cyclo ./Core/Src/stm32f4xx_it.d ./Core/Src/stm32f4xx_it.o ./Core/Src/stm32f4xx_it.su ./Core/Src/system_stm32f4xx.cyclo ./Core/Src/system_stm32f4xx.d ./Core/Src/system_stm32f4xx.o ./Core/Src/system_stm32f4xx.su - -.PHONY: clean-Core-2f-Src - diff --git a/Debug/Core/Startup/subdir.mk b/Debug/Core/Startup/subdir.mk deleted file mode 100644 index 05b7167..0000000 --- a/Debug/Core/Startup/subdir.mk +++ /dev/null @@ -1,27 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (12.3.rel1) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -S_SRCS += \ -../Core/Startup/startup_stm32f429zitx.s - -OBJS += \ -./Core/Startup/startup_stm32f429zitx.o - -S_DEPS += \ -./Core/Startup/startup_stm32f429zitx.d - - -# Each subdirectory must supply rules for building sources it contributes -Core/Startup/%.o: ../Core/Startup/%.s Core/Startup/subdir.mk - arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -DDEBUG '-DMEM_SIZE 65536' -c -x assembler-with-cpp -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" "$<" - -clean: clean-Core-2f-Startup - -clean-Core-2f-Startup: - -$(RM) ./Core/Startup/startup_stm32f429zitx.d ./Core/Startup/startup_stm32f429zitx.o - -.PHONY: clean-Core-2f-Startup - diff --git a/Debug/Drivers/BSP/Components/dp83848/subdir.mk b/Debug/Drivers/BSP/Components/dp83848/subdir.mk deleted file mode 100644 index fc6a441..0000000 --- a/Debug/Drivers/BSP/Components/dp83848/subdir.mk +++ /dev/null @@ -1,27 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (12.3.rel1) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../Drivers/BSP/Components/dp83848/dp83848.c - -OBJS += \ -./Drivers/BSP/Components/dp83848/dp83848.o - -C_DEPS += \ -./Drivers/BSP/Components/dp83848/dp83848.d - - -# Each subdirectory must supply rules for building sources it contributes -Drivers/BSP/Components/dp83848/%.o Drivers/BSP/Components/dp83848/%.su Drivers/BSP/Components/dp83848/%.cyclo: ../Drivers/BSP/Components/dp83848/%.c Drivers/BSP/Components/dp83848/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F429xx -c -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I../LWIP/App -I../LWIP/Target -I../Middlewares/Third_Party/LwIP/src/include -I../Middlewares/Third_Party/LwIP/system -I../Drivers/BSP/Components/dp83848 -I../Middlewares/Third_Party/LwIP/src/include/netif/ppp -I../Middlewares/Third_Party/LwIP/src/include/lwip -I../Middlewares/Third_Party/LwIP/src/include/lwip/apps -I../Middlewares/Third_Party/LwIP/src/include/lwip/priv -I../Middlewares/Third_Party/LwIP/src/include/lwip/prot -I../Middlewares/Third_Party/LwIP/src/include/netif -I../Middlewares/Third_Party/LwIP/src/include/compat/posix -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/arpa -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/net -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/sys -I../Middlewares/Third_Party/LwIP/src/include/compat/stdc -I../Middlewares/Third_Party/LwIP/system/arch -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" - -clean: clean-Drivers-2f-BSP-2f-Components-2f-dp83848 - -clean-Drivers-2f-BSP-2f-Components-2f-dp83848: - -$(RM) ./Drivers/BSP/Components/dp83848/dp83848.cyclo ./Drivers/BSP/Components/dp83848/dp83848.d ./Drivers/BSP/Components/dp83848/dp83848.o ./Drivers/BSP/Components/dp83848/dp83848.su - -.PHONY: clean-Drivers-2f-BSP-2f-Components-2f-dp83848 - diff --git a/Debug/Drivers/STM32F4xx_HAL_Driver/Src/subdir.mk b/Debug/Drivers/STM32F4xx_HAL_Driver/Src/subdir.mk deleted file mode 100644 index 9f931ca..0000000 --- a/Debug/Drivers/STM32F4xx_HAL_Driver/Src/subdir.mk +++ /dev/null @@ -1,78 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (12.3.rel1) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_eth.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sram.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.c - -OBJS += \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_eth.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sram.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.o - -C_DEPS += \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_eth.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sram.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.d - - -# Each subdirectory must supply rules for building sources it contributes -Drivers/STM32F4xx_HAL_Driver/Src/%.o Drivers/STM32F4xx_HAL_Driver/Src/%.su Drivers/STM32F4xx_HAL_Driver/Src/%.cyclo: ../Drivers/STM32F4xx_HAL_Driver/Src/%.c Drivers/STM32F4xx_HAL_Driver/Src/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F429xx -c -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I../LWIP/App -I../LWIP/Target -I../Middlewares/Third_Party/LwIP/src/include -I../Middlewares/Third_Party/LwIP/system -I../Drivers/BSP/Components/dp83848 -I../Middlewares/Third_Party/LwIP/src/include/netif/ppp -I../Middlewares/Third_Party/LwIP/src/include/lwip -I../Middlewares/Third_Party/LwIP/src/include/lwip/apps -I../Middlewares/Third_Party/LwIP/src/include/lwip/priv -I../Middlewares/Third_Party/LwIP/src/include/lwip/prot -I../Middlewares/Third_Party/LwIP/src/include/netif -I../Middlewares/Third_Party/LwIP/src/include/compat/posix -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/arpa -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/net -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/sys -I../Middlewares/Third_Party/LwIP/src/include/compat/stdc -I../Middlewares/Third_Party/LwIP/system/arch -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" - -clean: clean-Drivers-2f-STM32F4xx_HAL_Driver-2f-Src - -clean-Drivers-2f-STM32F4xx_HAL_Driver-2f-Src: - -$(RM) ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_eth.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_eth.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_eth.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_eth.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sram.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sram.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sram.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sram.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.su - -.PHONY: clean-Drivers-2f-STM32F4xx_HAL_Driver-2f-Src - diff --git a/Debug/LWIP/App/subdir.mk b/Debug/LWIP/App/subdir.mk deleted file mode 100644 index 3861238..0000000 --- a/Debug/LWIP/App/subdir.mk +++ /dev/null @@ -1,27 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (12.3.rel1) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../LWIP/App/lwip.c - -OBJS += \ -./LWIP/App/lwip.o - -C_DEPS += \ -./LWIP/App/lwip.d - - -# Each subdirectory must supply rules for building sources it contributes -LWIP/App/%.o LWIP/App/%.su LWIP/App/%.cyclo: ../LWIP/App/%.c LWIP/App/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F429xx -c -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I../LWIP/App -I../LWIP/Target -I../Middlewares/Third_Party/LwIP/src/include -I../Middlewares/Third_Party/LwIP/system -I../Drivers/BSP/Components/dp83848 -I../Middlewares/Third_Party/LwIP/src/include/netif/ppp -I../Middlewares/Third_Party/LwIP/src/include/lwip -I../Middlewares/Third_Party/LwIP/src/include/lwip/apps -I../Middlewares/Third_Party/LwIP/src/include/lwip/priv -I../Middlewares/Third_Party/LwIP/src/include/lwip/prot -I../Middlewares/Third_Party/LwIP/src/include/netif -I../Middlewares/Third_Party/LwIP/src/include/compat/posix -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/arpa -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/net -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/sys -I../Middlewares/Third_Party/LwIP/src/include/compat/stdc -I../Middlewares/Third_Party/LwIP/system/arch -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" - -clean: clean-LWIP-2f-App - -clean-LWIP-2f-App: - -$(RM) ./LWIP/App/lwip.cyclo ./LWIP/App/lwip.d ./LWIP/App/lwip.o ./LWIP/App/lwip.su - -.PHONY: clean-LWIP-2f-App - diff --git a/Debug/LWIP/Target/subdir.mk b/Debug/LWIP/Target/subdir.mk deleted file mode 100644 index 5cb576c..0000000 --- a/Debug/LWIP/Target/subdir.mk +++ /dev/null @@ -1,27 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (12.3.rel1) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../LWIP/Target/ethernetif.c - -OBJS += \ -./LWIP/Target/ethernetif.o - -C_DEPS += \ -./LWIP/Target/ethernetif.d - - -# Each subdirectory must supply rules for building sources it contributes -LWIP/Target/%.o LWIP/Target/%.su LWIP/Target/%.cyclo: ../LWIP/Target/%.c LWIP/Target/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F429xx -c -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I../LWIP/App -I../LWIP/Target -I../Middlewares/Third_Party/LwIP/src/include -I../Middlewares/Third_Party/LwIP/system -I../Drivers/BSP/Components/dp83848 -I../Middlewares/Third_Party/LwIP/src/include/netif/ppp -I../Middlewares/Third_Party/LwIP/src/include/lwip -I../Middlewares/Third_Party/LwIP/src/include/lwip/apps -I../Middlewares/Third_Party/LwIP/src/include/lwip/priv -I../Middlewares/Third_Party/LwIP/src/include/lwip/prot -I../Middlewares/Third_Party/LwIP/src/include/netif -I../Middlewares/Third_Party/LwIP/src/include/compat/posix -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/arpa -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/net -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/sys -I../Middlewares/Third_Party/LwIP/src/include/compat/stdc -I../Middlewares/Third_Party/LwIP/system/arch -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" - -clean: clean-LWIP-2f-Target - -clean-LWIP-2f-Target: - -$(RM) ./LWIP/Target/ethernetif.cyclo ./LWIP/Target/ethernetif.d ./LWIP/Target/ethernetif.o ./LWIP/Target/ethernetif.su - -.PHONY: clean-LWIP-2f-Target - diff --git a/Debug/Middlewares/Third_Party/LwIP/src/api/subdir.mk b/Debug/Middlewares/Third_Party/LwIP/src/api/subdir.mk deleted file mode 100644 index b711ed3..0000000 --- a/Debug/Middlewares/Third_Party/LwIP/src/api/subdir.mk +++ /dev/null @@ -1,51 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (12.3.rel1) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../Middlewares/Third_Party/LwIP/src/api/api_lib.c \ -../Middlewares/Third_Party/LwIP/src/api/api_msg.c \ -../Middlewares/Third_Party/LwIP/src/api/err.c \ -../Middlewares/Third_Party/LwIP/src/api/if_api.c \ -../Middlewares/Third_Party/LwIP/src/api/netbuf.c \ -../Middlewares/Third_Party/LwIP/src/api/netdb.c \ -../Middlewares/Third_Party/LwIP/src/api/netifapi.c \ -../Middlewares/Third_Party/LwIP/src/api/sockets.c \ -../Middlewares/Third_Party/LwIP/src/api/tcpip.c - -OBJS += \ -./Middlewares/Third_Party/LwIP/src/api/api_lib.o \ -./Middlewares/Third_Party/LwIP/src/api/api_msg.o \ -./Middlewares/Third_Party/LwIP/src/api/err.o \ -./Middlewares/Third_Party/LwIP/src/api/if_api.o \ -./Middlewares/Third_Party/LwIP/src/api/netbuf.o \ -./Middlewares/Third_Party/LwIP/src/api/netdb.o \ -./Middlewares/Third_Party/LwIP/src/api/netifapi.o \ -./Middlewares/Third_Party/LwIP/src/api/sockets.o \ -./Middlewares/Third_Party/LwIP/src/api/tcpip.o - -C_DEPS += \ -./Middlewares/Third_Party/LwIP/src/api/api_lib.d \ -./Middlewares/Third_Party/LwIP/src/api/api_msg.d \ -./Middlewares/Third_Party/LwIP/src/api/err.d \ -./Middlewares/Third_Party/LwIP/src/api/if_api.d \ -./Middlewares/Third_Party/LwIP/src/api/netbuf.d \ -./Middlewares/Third_Party/LwIP/src/api/netdb.d \ -./Middlewares/Third_Party/LwIP/src/api/netifapi.d \ -./Middlewares/Third_Party/LwIP/src/api/sockets.d \ -./Middlewares/Third_Party/LwIP/src/api/tcpip.d - - -# Each subdirectory must supply rules for building sources it contributes -Middlewares/Third_Party/LwIP/src/api/%.o Middlewares/Third_Party/LwIP/src/api/%.su Middlewares/Third_Party/LwIP/src/api/%.cyclo: ../Middlewares/Third_Party/LwIP/src/api/%.c Middlewares/Third_Party/LwIP/src/api/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F429xx -c -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I../LWIP/App -I../LWIP/Target -I../Middlewares/Third_Party/LwIP/src/include -I../Middlewares/Third_Party/LwIP/system -I../Drivers/BSP/Components/dp83848 -I../Middlewares/Third_Party/LwIP/src/include/netif/ppp -I../Middlewares/Third_Party/LwIP/src/include/lwip -I../Middlewares/Third_Party/LwIP/src/include/lwip/apps -I../Middlewares/Third_Party/LwIP/src/include/lwip/priv -I../Middlewares/Third_Party/LwIP/src/include/lwip/prot -I../Middlewares/Third_Party/LwIP/src/include/netif -I../Middlewares/Third_Party/LwIP/src/include/compat/posix -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/arpa -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/net -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/sys -I../Middlewares/Third_Party/LwIP/src/include/compat/stdc -I../Middlewares/Third_Party/LwIP/system/arch -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" - -clean: clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-api - -clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-api: - -$(RM) ./Middlewares/Third_Party/LwIP/src/api/api_lib.cyclo ./Middlewares/Third_Party/LwIP/src/api/api_lib.d ./Middlewares/Third_Party/LwIP/src/api/api_lib.o ./Middlewares/Third_Party/LwIP/src/api/api_lib.su ./Middlewares/Third_Party/LwIP/src/api/api_msg.cyclo ./Middlewares/Third_Party/LwIP/src/api/api_msg.d ./Middlewares/Third_Party/LwIP/src/api/api_msg.o ./Middlewares/Third_Party/LwIP/src/api/api_msg.su ./Middlewares/Third_Party/LwIP/src/api/err.cyclo ./Middlewares/Third_Party/LwIP/src/api/err.d ./Middlewares/Third_Party/LwIP/src/api/err.o ./Middlewares/Third_Party/LwIP/src/api/err.su ./Middlewares/Third_Party/LwIP/src/api/if_api.cyclo ./Middlewares/Third_Party/LwIP/src/api/if_api.d ./Middlewares/Third_Party/LwIP/src/api/if_api.o ./Middlewares/Third_Party/LwIP/src/api/if_api.su ./Middlewares/Third_Party/LwIP/src/api/netbuf.cyclo ./Middlewares/Third_Party/LwIP/src/api/netbuf.d ./Middlewares/Third_Party/LwIP/src/api/netbuf.o ./Middlewares/Third_Party/LwIP/src/api/netbuf.su ./Middlewares/Third_Party/LwIP/src/api/netdb.cyclo ./Middlewares/Third_Party/LwIP/src/api/netdb.d ./Middlewares/Third_Party/LwIP/src/api/netdb.o ./Middlewares/Third_Party/LwIP/src/api/netdb.su ./Middlewares/Third_Party/LwIP/src/api/netifapi.cyclo ./Middlewares/Third_Party/LwIP/src/api/netifapi.d ./Middlewares/Third_Party/LwIP/src/api/netifapi.o ./Middlewares/Third_Party/LwIP/src/api/netifapi.su ./Middlewares/Third_Party/LwIP/src/api/sockets.cyclo ./Middlewares/Third_Party/LwIP/src/api/sockets.d ./Middlewares/Third_Party/LwIP/src/api/sockets.o ./Middlewares/Third_Party/LwIP/src/api/sockets.su ./Middlewares/Third_Party/LwIP/src/api/tcpip.cyclo ./Middlewares/Third_Party/LwIP/src/api/tcpip.d ./Middlewares/Third_Party/LwIP/src/api/tcpip.o ./Middlewares/Third_Party/LwIP/src/api/tcpip.su - -.PHONY: clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-api - diff --git a/Debug/Middlewares/Third_Party/LwIP/src/apps/mqtt/subdir.mk b/Debug/Middlewares/Third_Party/LwIP/src/apps/mqtt/subdir.mk deleted file mode 100644 index b5a22af..0000000 --- a/Debug/Middlewares/Third_Party/LwIP/src/apps/mqtt/subdir.mk +++ /dev/null @@ -1,27 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (12.3.rel1) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../Middlewares/Third_Party/LwIP/src/apps/mqtt/mqtt.c - -OBJS += \ -./Middlewares/Third_Party/LwIP/src/apps/mqtt/mqtt.o - -C_DEPS += \ -./Middlewares/Third_Party/LwIP/src/apps/mqtt/mqtt.d - - -# Each subdirectory must supply rules for building sources it contributes -Middlewares/Third_Party/LwIP/src/apps/mqtt/%.o Middlewares/Third_Party/LwIP/src/apps/mqtt/%.su Middlewares/Third_Party/LwIP/src/apps/mqtt/%.cyclo: ../Middlewares/Third_Party/LwIP/src/apps/mqtt/%.c Middlewares/Third_Party/LwIP/src/apps/mqtt/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F429xx -c -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I../LWIP/App -I../LWIP/Target -I../Middlewares/Third_Party/LwIP/src/include -I../Middlewares/Third_Party/LwIP/system -I../Drivers/BSP/Components/dp83848 -I../Middlewares/Third_Party/LwIP/src/include/netif/ppp -I../Middlewares/Third_Party/LwIP/src/include/lwip -I../Middlewares/Third_Party/LwIP/src/include/lwip/apps -I../Middlewares/Third_Party/LwIP/src/include/lwip/priv -I../Middlewares/Third_Party/LwIP/src/include/lwip/prot -I../Middlewares/Third_Party/LwIP/src/include/netif -I../Middlewares/Third_Party/LwIP/src/include/compat/posix -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/arpa -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/net -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/sys -I../Middlewares/Third_Party/LwIP/src/include/compat/stdc -I../Middlewares/Third_Party/LwIP/system/arch -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" - -clean: clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-apps-2f-mqtt - -clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-apps-2f-mqtt: - -$(RM) ./Middlewares/Third_Party/LwIP/src/apps/mqtt/mqtt.cyclo ./Middlewares/Third_Party/LwIP/src/apps/mqtt/mqtt.d ./Middlewares/Third_Party/LwIP/src/apps/mqtt/mqtt.o ./Middlewares/Third_Party/LwIP/src/apps/mqtt/mqtt.su - -.PHONY: clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-apps-2f-mqtt - diff --git a/Debug/Middlewares/Third_Party/LwIP/src/core/ipv4/subdir.mk b/Debug/Middlewares/Third_Party/LwIP/src/core/ipv4/subdir.mk deleted file mode 100644 index 5dde43a..0000000 --- a/Debug/Middlewares/Third_Party/LwIP/src/core/ipv4/subdir.mk +++ /dev/null @@ -1,48 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (12.3.rel1) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../Middlewares/Third_Party/LwIP/src/core/ipv4/autoip.c \ -../Middlewares/Third_Party/LwIP/src/core/ipv4/dhcp.c \ -../Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.c \ -../Middlewares/Third_Party/LwIP/src/core/ipv4/icmp.c \ -../Middlewares/Third_Party/LwIP/src/core/ipv4/igmp.c \ -../Middlewares/Third_Party/LwIP/src/core/ipv4/ip4.c \ -../Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_addr.c \ -../Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.c - -OBJS += \ -./Middlewares/Third_Party/LwIP/src/core/ipv4/autoip.o \ -./Middlewares/Third_Party/LwIP/src/core/ipv4/dhcp.o \ -./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o \ -./Middlewares/Third_Party/LwIP/src/core/ipv4/icmp.o \ -./Middlewares/Third_Party/LwIP/src/core/ipv4/igmp.o \ -./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4.o \ -./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_addr.o \ -./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o - -C_DEPS += \ -./Middlewares/Third_Party/LwIP/src/core/ipv4/autoip.d \ -./Middlewares/Third_Party/LwIP/src/core/ipv4/dhcp.d \ -./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.d \ -./Middlewares/Third_Party/LwIP/src/core/ipv4/icmp.d \ -./Middlewares/Third_Party/LwIP/src/core/ipv4/igmp.d \ -./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4.d \ -./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_addr.d \ -./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.d - - -# Each subdirectory must supply rules for building sources it contributes -Middlewares/Third_Party/LwIP/src/core/ipv4/%.o Middlewares/Third_Party/LwIP/src/core/ipv4/%.su Middlewares/Third_Party/LwIP/src/core/ipv4/%.cyclo: ../Middlewares/Third_Party/LwIP/src/core/ipv4/%.c Middlewares/Third_Party/LwIP/src/core/ipv4/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F429xx -c -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I../LWIP/App -I../LWIP/Target -I../Middlewares/Third_Party/LwIP/src/include -I../Middlewares/Third_Party/LwIP/system -I../Drivers/BSP/Components/dp83848 -I../Middlewares/Third_Party/LwIP/src/include/netif/ppp -I../Middlewares/Third_Party/LwIP/src/include/lwip -I../Middlewares/Third_Party/LwIP/src/include/lwip/apps -I../Middlewares/Third_Party/LwIP/src/include/lwip/priv -I../Middlewares/Third_Party/LwIP/src/include/lwip/prot -I../Middlewares/Third_Party/LwIP/src/include/netif -I../Middlewares/Third_Party/LwIP/src/include/compat/posix -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/arpa -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/net -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/sys -I../Middlewares/Third_Party/LwIP/src/include/compat/stdc -I../Middlewares/Third_Party/LwIP/system/arch -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" - -clean: clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-core-2f-ipv4 - -clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-core-2f-ipv4: - -$(RM) ./Middlewares/Third_Party/LwIP/src/core/ipv4/autoip.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv4/autoip.d ./Middlewares/Third_Party/LwIP/src/core/ipv4/autoip.o ./Middlewares/Third_Party/LwIP/src/core/ipv4/autoip.su ./Middlewares/Third_Party/LwIP/src/core/ipv4/dhcp.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv4/dhcp.d ./Middlewares/Third_Party/LwIP/src/core/ipv4/dhcp.o ./Middlewares/Third_Party/LwIP/src/core/ipv4/dhcp.su ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.d ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.su ./Middlewares/Third_Party/LwIP/src/core/ipv4/icmp.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv4/icmp.d ./Middlewares/Third_Party/LwIP/src/core/ipv4/icmp.o ./Middlewares/Third_Party/LwIP/src/core/ipv4/icmp.su ./Middlewares/Third_Party/LwIP/src/core/ipv4/igmp.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv4/igmp.d ./Middlewares/Third_Party/LwIP/src/core/ipv4/igmp.o ./Middlewares/Third_Party/LwIP/src/core/ipv4/igmp.su ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4.d ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4.o ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4.su ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_addr.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_addr.d ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_addr.o ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_addr.su ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.d ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.su - -.PHONY: clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-core-2f-ipv4 - diff --git a/Debug/Middlewares/Third_Party/LwIP/src/core/ipv6/subdir.mk b/Debug/Middlewares/Third_Party/LwIP/src/core/ipv6/subdir.mk deleted file mode 100644 index a1291ca..0000000 --- a/Debug/Middlewares/Third_Party/LwIP/src/core/ipv6/subdir.mk +++ /dev/null @@ -1,51 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (12.3.rel1) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../Middlewares/Third_Party/LwIP/src/core/ipv6/dhcp6.c \ -../Middlewares/Third_Party/LwIP/src/core/ipv6/ethip6.c \ -../Middlewares/Third_Party/LwIP/src/core/ipv6/icmp6.c \ -../Middlewares/Third_Party/LwIP/src/core/ipv6/inet6.c \ -../Middlewares/Third_Party/LwIP/src/core/ipv6/ip6.c \ -../Middlewares/Third_Party/LwIP/src/core/ipv6/ip6_addr.c \ -../Middlewares/Third_Party/LwIP/src/core/ipv6/ip6_frag.c \ -../Middlewares/Third_Party/LwIP/src/core/ipv6/mld6.c \ -../Middlewares/Third_Party/LwIP/src/core/ipv6/nd6.c - -OBJS += \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/dhcp6.o \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/ethip6.o \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/icmp6.o \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/inet6.o \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6.o \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6_addr.o \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6_frag.o \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/mld6.o \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/nd6.o - -C_DEPS += \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/dhcp6.d \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/ethip6.d \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/icmp6.d \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/inet6.d \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6.d \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6_addr.d \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6_frag.d \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/mld6.d \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/nd6.d - - -# Each subdirectory must supply rules for building sources it contributes -Middlewares/Third_Party/LwIP/src/core/ipv6/%.o Middlewares/Third_Party/LwIP/src/core/ipv6/%.su Middlewares/Third_Party/LwIP/src/core/ipv6/%.cyclo: ../Middlewares/Third_Party/LwIP/src/core/ipv6/%.c Middlewares/Third_Party/LwIP/src/core/ipv6/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F429xx -c -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I../LWIP/App -I../LWIP/Target -I../Middlewares/Third_Party/LwIP/src/include -I../Middlewares/Third_Party/LwIP/system -I../Drivers/BSP/Components/dp83848 -I../Middlewares/Third_Party/LwIP/src/include/netif/ppp -I../Middlewares/Third_Party/LwIP/src/include/lwip -I../Middlewares/Third_Party/LwIP/src/include/lwip/apps -I../Middlewares/Third_Party/LwIP/src/include/lwip/priv -I../Middlewares/Third_Party/LwIP/src/include/lwip/prot -I../Middlewares/Third_Party/LwIP/src/include/netif -I../Middlewares/Third_Party/LwIP/src/include/compat/posix -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/arpa -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/net -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/sys -I../Middlewares/Third_Party/LwIP/src/include/compat/stdc -I../Middlewares/Third_Party/LwIP/system/arch -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" - -clean: clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-core-2f-ipv6 - -clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-core-2f-ipv6: - -$(RM) ./Middlewares/Third_Party/LwIP/src/core/ipv6/dhcp6.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv6/dhcp6.d ./Middlewares/Third_Party/LwIP/src/core/ipv6/dhcp6.o ./Middlewares/Third_Party/LwIP/src/core/ipv6/dhcp6.su ./Middlewares/Third_Party/LwIP/src/core/ipv6/ethip6.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv6/ethip6.d ./Middlewares/Third_Party/LwIP/src/core/ipv6/ethip6.o ./Middlewares/Third_Party/LwIP/src/core/ipv6/ethip6.su ./Middlewares/Third_Party/LwIP/src/core/ipv6/icmp6.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv6/icmp6.d ./Middlewares/Third_Party/LwIP/src/core/ipv6/icmp6.o ./Middlewares/Third_Party/LwIP/src/core/ipv6/icmp6.su ./Middlewares/Third_Party/LwIP/src/core/ipv6/inet6.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv6/inet6.d ./Middlewares/Third_Party/LwIP/src/core/ipv6/inet6.o ./Middlewares/Third_Party/LwIP/src/core/ipv6/inet6.su ./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6.d ./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6.o ./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6.su ./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6_addr.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6_addr.d ./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6_addr.o ./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6_addr.su ./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6_frag.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6_frag.d ./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6_frag.o ./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6_frag.su ./Middlewares/Third_Party/LwIP/src/core/ipv6/mld6.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv6/mld6.d ./Middlewares/Third_Party/LwIP/src/core/ipv6/mld6.o ./Middlewares/Third_Party/LwIP/src/core/ipv6/mld6.su ./Middlewares/Third_Party/LwIP/src/core/ipv6/nd6.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv6/nd6.d ./Middlewares/Third_Party/LwIP/src/core/ipv6/nd6.o ./Middlewares/Third_Party/LwIP/src/core/ipv6/nd6.su - -.PHONY: clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-core-2f-ipv6 - diff --git a/Debug/Middlewares/Third_Party/LwIP/src/core/subdir.mk b/Debug/Middlewares/Third_Party/LwIP/src/core/subdir.mk deleted file mode 100644 index 35c3609..0000000 --- a/Debug/Middlewares/Third_Party/LwIP/src/core/subdir.mk +++ /dev/null @@ -1,84 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (12.3.rel1) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../Middlewares/Third_Party/LwIP/src/core/altcp.c \ -../Middlewares/Third_Party/LwIP/src/core/altcp_alloc.c \ -../Middlewares/Third_Party/LwIP/src/core/altcp_tcp.c \ -../Middlewares/Third_Party/LwIP/src/core/def.c \ -../Middlewares/Third_Party/LwIP/src/core/dns.c \ -../Middlewares/Third_Party/LwIP/src/core/inet_chksum.c \ -../Middlewares/Third_Party/LwIP/src/core/init.c \ -../Middlewares/Third_Party/LwIP/src/core/ip.c \ -../Middlewares/Third_Party/LwIP/src/core/mem.c \ -../Middlewares/Third_Party/LwIP/src/core/memp.c \ -../Middlewares/Third_Party/LwIP/src/core/netif.c \ -../Middlewares/Third_Party/LwIP/src/core/pbuf.c \ -../Middlewares/Third_Party/LwIP/src/core/raw.c \ -../Middlewares/Third_Party/LwIP/src/core/stats.c \ -../Middlewares/Third_Party/LwIP/src/core/sys.c \ -../Middlewares/Third_Party/LwIP/src/core/tcp.c \ -../Middlewares/Third_Party/LwIP/src/core/tcp_in.c \ -../Middlewares/Third_Party/LwIP/src/core/tcp_out.c \ -../Middlewares/Third_Party/LwIP/src/core/timeouts.c \ -../Middlewares/Third_Party/LwIP/src/core/udp.c - -OBJS += \ -./Middlewares/Third_Party/LwIP/src/core/altcp.o \ -./Middlewares/Third_Party/LwIP/src/core/altcp_alloc.o \ -./Middlewares/Third_Party/LwIP/src/core/altcp_tcp.o \ -./Middlewares/Third_Party/LwIP/src/core/def.o \ -./Middlewares/Third_Party/LwIP/src/core/dns.o \ -./Middlewares/Third_Party/LwIP/src/core/inet_chksum.o \ -./Middlewares/Third_Party/LwIP/src/core/init.o \ -./Middlewares/Third_Party/LwIP/src/core/ip.o \ -./Middlewares/Third_Party/LwIP/src/core/mem.o \ -./Middlewares/Third_Party/LwIP/src/core/memp.o \ -./Middlewares/Third_Party/LwIP/src/core/netif.o \ -./Middlewares/Third_Party/LwIP/src/core/pbuf.o \ -./Middlewares/Third_Party/LwIP/src/core/raw.o \ -./Middlewares/Third_Party/LwIP/src/core/stats.o \ -./Middlewares/Third_Party/LwIP/src/core/sys.o \ -./Middlewares/Third_Party/LwIP/src/core/tcp.o \ -./Middlewares/Third_Party/LwIP/src/core/tcp_in.o \ -./Middlewares/Third_Party/LwIP/src/core/tcp_out.o \ -./Middlewares/Third_Party/LwIP/src/core/timeouts.o \ -./Middlewares/Third_Party/LwIP/src/core/udp.o - -C_DEPS += \ -./Middlewares/Third_Party/LwIP/src/core/altcp.d \ -./Middlewares/Third_Party/LwIP/src/core/altcp_alloc.d \ -./Middlewares/Third_Party/LwIP/src/core/altcp_tcp.d \ -./Middlewares/Third_Party/LwIP/src/core/def.d \ -./Middlewares/Third_Party/LwIP/src/core/dns.d \ -./Middlewares/Third_Party/LwIP/src/core/inet_chksum.d \ -./Middlewares/Third_Party/LwIP/src/core/init.d \ -./Middlewares/Third_Party/LwIP/src/core/ip.d \ -./Middlewares/Third_Party/LwIP/src/core/mem.d \ -./Middlewares/Third_Party/LwIP/src/core/memp.d \ -./Middlewares/Third_Party/LwIP/src/core/netif.d \ -./Middlewares/Third_Party/LwIP/src/core/pbuf.d \ -./Middlewares/Third_Party/LwIP/src/core/raw.d \ -./Middlewares/Third_Party/LwIP/src/core/stats.d \ -./Middlewares/Third_Party/LwIP/src/core/sys.d \ -./Middlewares/Third_Party/LwIP/src/core/tcp.d \ -./Middlewares/Third_Party/LwIP/src/core/tcp_in.d \ -./Middlewares/Third_Party/LwIP/src/core/tcp_out.d \ -./Middlewares/Third_Party/LwIP/src/core/timeouts.d \ -./Middlewares/Third_Party/LwIP/src/core/udp.d - - -# Each subdirectory must supply rules for building sources it contributes -Middlewares/Third_Party/LwIP/src/core/%.o Middlewares/Third_Party/LwIP/src/core/%.su Middlewares/Third_Party/LwIP/src/core/%.cyclo: ../Middlewares/Third_Party/LwIP/src/core/%.c Middlewares/Third_Party/LwIP/src/core/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F429xx -c -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I../LWIP/App -I../LWIP/Target -I../Middlewares/Third_Party/LwIP/src/include -I../Middlewares/Third_Party/LwIP/system -I../Drivers/BSP/Components/dp83848 -I../Middlewares/Third_Party/LwIP/src/include/netif/ppp -I../Middlewares/Third_Party/LwIP/src/include/lwip -I../Middlewares/Third_Party/LwIP/src/include/lwip/apps -I../Middlewares/Third_Party/LwIP/src/include/lwip/priv -I../Middlewares/Third_Party/LwIP/src/include/lwip/prot -I../Middlewares/Third_Party/LwIP/src/include/netif -I../Middlewares/Third_Party/LwIP/src/include/compat/posix -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/arpa -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/net -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/sys -I../Middlewares/Third_Party/LwIP/src/include/compat/stdc -I../Middlewares/Third_Party/LwIP/system/arch -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" - -clean: clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-core - -clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-core: - -$(RM) ./Middlewares/Third_Party/LwIP/src/core/altcp.cyclo ./Middlewares/Third_Party/LwIP/src/core/altcp.d ./Middlewares/Third_Party/LwIP/src/core/altcp.o ./Middlewares/Third_Party/LwIP/src/core/altcp.su ./Middlewares/Third_Party/LwIP/src/core/altcp_alloc.cyclo ./Middlewares/Third_Party/LwIP/src/core/altcp_alloc.d ./Middlewares/Third_Party/LwIP/src/core/altcp_alloc.o ./Middlewares/Third_Party/LwIP/src/core/altcp_alloc.su ./Middlewares/Third_Party/LwIP/src/core/altcp_tcp.cyclo ./Middlewares/Third_Party/LwIP/src/core/altcp_tcp.d ./Middlewares/Third_Party/LwIP/src/core/altcp_tcp.o ./Middlewares/Third_Party/LwIP/src/core/altcp_tcp.su ./Middlewares/Third_Party/LwIP/src/core/def.cyclo ./Middlewares/Third_Party/LwIP/src/core/def.d ./Middlewares/Third_Party/LwIP/src/core/def.o ./Middlewares/Third_Party/LwIP/src/core/def.su ./Middlewares/Third_Party/LwIP/src/core/dns.cyclo ./Middlewares/Third_Party/LwIP/src/core/dns.d ./Middlewares/Third_Party/LwIP/src/core/dns.o ./Middlewares/Third_Party/LwIP/src/core/dns.su ./Middlewares/Third_Party/LwIP/src/core/inet_chksum.cyclo ./Middlewares/Third_Party/LwIP/src/core/inet_chksum.d ./Middlewares/Third_Party/LwIP/src/core/inet_chksum.o ./Middlewares/Third_Party/LwIP/src/core/inet_chksum.su ./Middlewares/Third_Party/LwIP/src/core/init.cyclo ./Middlewares/Third_Party/LwIP/src/core/init.d ./Middlewares/Third_Party/LwIP/src/core/init.o ./Middlewares/Third_Party/LwIP/src/core/init.su ./Middlewares/Third_Party/LwIP/src/core/ip.cyclo ./Middlewares/Third_Party/LwIP/src/core/ip.d ./Middlewares/Third_Party/LwIP/src/core/ip.o ./Middlewares/Third_Party/LwIP/src/core/ip.su ./Middlewares/Third_Party/LwIP/src/core/mem.cyclo ./Middlewares/Third_Party/LwIP/src/core/mem.d ./Middlewares/Third_Party/LwIP/src/core/mem.o ./Middlewares/Third_Party/LwIP/src/core/mem.su ./Middlewares/Third_Party/LwIP/src/core/memp.cyclo ./Middlewares/Third_Party/LwIP/src/core/memp.d ./Middlewares/Third_Party/LwIP/src/core/memp.o ./Middlewares/Third_Party/LwIP/src/core/memp.su ./Middlewares/Third_Party/LwIP/src/core/netif.cyclo ./Middlewares/Third_Party/LwIP/src/core/netif.d ./Middlewares/Third_Party/LwIP/src/core/netif.o ./Middlewares/Third_Party/LwIP/src/core/netif.su ./Middlewares/Third_Party/LwIP/src/core/pbuf.cyclo ./Middlewares/Third_Party/LwIP/src/core/pbuf.d ./Middlewares/Third_Party/LwIP/src/core/pbuf.o ./Middlewares/Third_Party/LwIP/src/core/pbuf.su ./Middlewares/Third_Party/LwIP/src/core/raw.cyclo ./Middlewares/Third_Party/LwIP/src/core/raw.d ./Middlewares/Third_Party/LwIP/src/core/raw.o ./Middlewares/Third_Party/LwIP/src/core/raw.su ./Middlewares/Third_Party/LwIP/src/core/stats.cyclo ./Middlewares/Third_Party/LwIP/src/core/stats.d ./Middlewares/Third_Party/LwIP/src/core/stats.o ./Middlewares/Third_Party/LwIP/src/core/stats.su ./Middlewares/Third_Party/LwIP/src/core/sys.cyclo ./Middlewares/Third_Party/LwIP/src/core/sys.d ./Middlewares/Third_Party/LwIP/src/core/sys.o ./Middlewares/Third_Party/LwIP/src/core/sys.su ./Middlewares/Third_Party/LwIP/src/core/tcp.cyclo ./Middlewares/Third_Party/LwIP/src/core/tcp.d ./Middlewares/Third_Party/LwIP/src/core/tcp.o ./Middlewares/Third_Party/LwIP/src/core/tcp.su ./Middlewares/Third_Party/LwIP/src/core/tcp_in.cyclo ./Middlewares/Third_Party/LwIP/src/core/tcp_in.d ./Middlewares/Third_Party/LwIP/src/core/tcp_in.o ./Middlewares/Third_Party/LwIP/src/core/tcp_in.su ./Middlewares/Third_Party/LwIP/src/core/tcp_out.cyclo ./Middlewares/Third_Party/LwIP/src/core/tcp_out.d ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o ./Middlewares/Third_Party/LwIP/src/core/tcp_out.su ./Middlewares/Third_Party/LwIP/src/core/timeouts.cyclo ./Middlewares/Third_Party/LwIP/src/core/timeouts.d ./Middlewares/Third_Party/LwIP/src/core/timeouts.o ./Middlewares/Third_Party/LwIP/src/core/timeouts.su ./Middlewares/Third_Party/LwIP/src/core/udp.cyclo ./Middlewares/Third_Party/LwIP/src/core/udp.d ./Middlewares/Third_Party/LwIP/src/core/udp.o ./Middlewares/Third_Party/LwIP/src/core/udp.su - -.PHONY: clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-core - diff --git a/Debug/Middlewares/Third_Party/LwIP/src/netif/ppp/subdir.mk b/Debug/Middlewares/Third_Party/LwIP/src/netif/ppp/subdir.mk deleted file mode 100644 index b60e39d..0000000 --- a/Debug/Middlewares/Third_Party/LwIP/src/netif/ppp/subdir.mk +++ /dev/null @@ -1,99 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (12.3.rel1) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/auth.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/ccp.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/chap-md5.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/chap-new.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/chap_ms.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/demand.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/eap.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/ecp.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/eui64.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/fsm.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/ipcp.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/ipv6cp.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/lcp.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/magic.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/mppe.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/multilink.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/ppp.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/pppapi.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/pppcrypt.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/pppoe.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/pppol2tp.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/pppos.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/upap.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/utils.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/vj.c - -OBJS += \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/auth.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/ccp.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/chap-md5.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/chap-new.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/chap_ms.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/demand.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/eap.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/ecp.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/eui64.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/fsm.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/ipcp.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/ipv6cp.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/lcp.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/magic.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/mppe.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/multilink.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/ppp.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/pppapi.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/pppcrypt.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/pppoe.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/pppol2tp.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/pppos.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/upap.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/utils.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/vj.o - -C_DEPS += \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/auth.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/ccp.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/chap-md5.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/chap-new.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/chap_ms.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/demand.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/eap.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/ecp.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/eui64.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/fsm.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/ipcp.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/ipv6cp.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/lcp.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/magic.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/mppe.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/multilink.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/ppp.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/pppapi.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/pppcrypt.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/pppoe.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/pppol2tp.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/pppos.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/upap.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/utils.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/vj.d - - -# Each subdirectory must supply rules for building sources it contributes -Middlewares/Third_Party/LwIP/src/netif/ppp/%.o Middlewares/Third_Party/LwIP/src/netif/ppp/%.su Middlewares/Third_Party/LwIP/src/netif/ppp/%.cyclo: ../Middlewares/Third_Party/LwIP/src/netif/ppp/%.c Middlewares/Third_Party/LwIP/src/netif/ppp/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F429xx -c -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I../LWIP/App -I../LWIP/Target -I../Middlewares/Third_Party/LwIP/src/include -I../Middlewares/Third_Party/LwIP/system -I../Drivers/BSP/Components/dp83848 -I../Middlewares/Third_Party/LwIP/src/include/netif/ppp -I../Middlewares/Third_Party/LwIP/src/include/lwip -I../Middlewares/Third_Party/LwIP/src/include/lwip/apps -I../Middlewares/Third_Party/LwIP/src/include/lwip/priv -I../Middlewares/Third_Party/LwIP/src/include/lwip/prot -I../Middlewares/Third_Party/LwIP/src/include/netif -I../Middlewares/Third_Party/LwIP/src/include/compat/posix -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/arpa -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/net -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/sys -I../Middlewares/Third_Party/LwIP/src/include/compat/stdc -I../Middlewares/Third_Party/LwIP/system/arch -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" - -clean: clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-netif-2f-ppp - -clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-netif-2f-ppp: - -$(RM) ./Middlewares/Third_Party/LwIP/src/netif/ppp/auth.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/auth.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/auth.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/auth.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/ccp.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/ccp.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/ccp.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/ccp.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/chap-md5.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/chap-md5.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/chap-md5.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/chap-md5.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/chap-new.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/chap-new.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/chap-new.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/chap-new.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/chap_ms.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/chap_ms.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/chap_ms.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/chap_ms.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/demand.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/demand.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/demand.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/demand.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/eap.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/eap.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/eap.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/eap.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/ecp.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/ecp.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/ecp.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/ecp.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/eui64.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/eui64.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/eui64.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/eui64.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/fsm.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/fsm.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/fsm.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/fsm.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/ipcp.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/ipcp.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/ipcp.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/ipcp.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/ipv6cp.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/ipv6cp.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/ipv6cp.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/ipv6cp.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/lcp.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/lcp.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/lcp.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/lcp.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/magic.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/magic.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/magic.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/magic.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/mppe.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/mppe.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/mppe.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/mppe.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/multilink.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/multilink.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/multilink.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/multilink.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/ppp.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/ppp.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/ppp.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/ppp.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppapi.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppapi.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppapi.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppapi.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppcrypt.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppcrypt.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppcrypt.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppcrypt.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppoe.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppoe.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppoe.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppoe.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppol2tp.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppol2tp.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppol2tp.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppol2tp.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppos.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppos.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppos.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppos.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/upap.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/upap.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/upap.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/upap.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/utils.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/utils.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/utils.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/utils.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/vj.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/vj.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/vj.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/vj.su - -.PHONY: clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-netif-2f-ppp - diff --git a/Debug/Middlewares/Third_Party/LwIP/src/netif/subdir.mk b/Debug/Middlewares/Third_Party/LwIP/src/netif/subdir.mk deleted file mode 100644 index 0867587..0000000 --- a/Debug/Middlewares/Third_Party/LwIP/src/netif/subdir.mk +++ /dev/null @@ -1,48 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (12.3.rel1) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../Middlewares/Third_Party/LwIP/src/netif/bridgeif.c \ -../Middlewares/Third_Party/LwIP/src/netif/bridgeif_fdb.c \ -../Middlewares/Third_Party/LwIP/src/netif/ethernet.c \ -../Middlewares/Third_Party/LwIP/src/netif/lowpan6.c \ -../Middlewares/Third_Party/LwIP/src/netif/lowpan6_ble.c \ -../Middlewares/Third_Party/LwIP/src/netif/lowpan6_common.c \ -../Middlewares/Third_Party/LwIP/src/netif/slipif.c \ -../Middlewares/Third_Party/LwIP/src/netif/zepif.c - -OBJS += \ -./Middlewares/Third_Party/LwIP/src/netif/bridgeif.o \ -./Middlewares/Third_Party/LwIP/src/netif/bridgeif_fdb.o \ -./Middlewares/Third_Party/LwIP/src/netif/ethernet.o \ -./Middlewares/Third_Party/LwIP/src/netif/lowpan6.o \ -./Middlewares/Third_Party/LwIP/src/netif/lowpan6_ble.o \ -./Middlewares/Third_Party/LwIP/src/netif/lowpan6_common.o \ -./Middlewares/Third_Party/LwIP/src/netif/slipif.o \ -./Middlewares/Third_Party/LwIP/src/netif/zepif.o - -C_DEPS += \ -./Middlewares/Third_Party/LwIP/src/netif/bridgeif.d \ -./Middlewares/Third_Party/LwIP/src/netif/bridgeif_fdb.d \ -./Middlewares/Third_Party/LwIP/src/netif/ethernet.d \ -./Middlewares/Third_Party/LwIP/src/netif/lowpan6.d \ -./Middlewares/Third_Party/LwIP/src/netif/lowpan6_ble.d \ -./Middlewares/Third_Party/LwIP/src/netif/lowpan6_common.d \ -./Middlewares/Third_Party/LwIP/src/netif/slipif.d \ -./Middlewares/Third_Party/LwIP/src/netif/zepif.d - - -# Each subdirectory must supply rules for building sources it contributes -Middlewares/Third_Party/LwIP/src/netif/%.o Middlewares/Third_Party/LwIP/src/netif/%.su Middlewares/Third_Party/LwIP/src/netif/%.cyclo: ../Middlewares/Third_Party/LwIP/src/netif/%.c Middlewares/Third_Party/LwIP/src/netif/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F429xx -c -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I../LWIP/App -I../LWIP/Target -I../Middlewares/Third_Party/LwIP/src/include -I../Middlewares/Third_Party/LwIP/system -I../Drivers/BSP/Components/dp83848 -I../Middlewares/Third_Party/LwIP/src/include/netif/ppp -I../Middlewares/Third_Party/LwIP/src/include/lwip -I../Middlewares/Third_Party/LwIP/src/include/lwip/apps -I../Middlewares/Third_Party/LwIP/src/include/lwip/priv -I../Middlewares/Third_Party/LwIP/src/include/lwip/prot -I../Middlewares/Third_Party/LwIP/src/include/netif -I../Middlewares/Third_Party/LwIP/src/include/compat/posix -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/arpa -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/net -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/sys -I../Middlewares/Third_Party/LwIP/src/include/compat/stdc -I../Middlewares/Third_Party/LwIP/system/arch -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" - -clean: clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-netif - -clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-netif: - -$(RM) ./Middlewares/Third_Party/LwIP/src/netif/bridgeif.cyclo ./Middlewares/Third_Party/LwIP/src/netif/bridgeif.d ./Middlewares/Third_Party/LwIP/src/netif/bridgeif.o ./Middlewares/Third_Party/LwIP/src/netif/bridgeif.su ./Middlewares/Third_Party/LwIP/src/netif/bridgeif_fdb.cyclo ./Middlewares/Third_Party/LwIP/src/netif/bridgeif_fdb.d ./Middlewares/Third_Party/LwIP/src/netif/bridgeif_fdb.o ./Middlewares/Third_Party/LwIP/src/netif/bridgeif_fdb.su ./Middlewares/Third_Party/LwIP/src/netif/ethernet.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ethernet.d ./Middlewares/Third_Party/LwIP/src/netif/ethernet.o ./Middlewares/Third_Party/LwIP/src/netif/ethernet.su ./Middlewares/Third_Party/LwIP/src/netif/lowpan6.cyclo ./Middlewares/Third_Party/LwIP/src/netif/lowpan6.d ./Middlewares/Third_Party/LwIP/src/netif/lowpan6.o ./Middlewares/Third_Party/LwIP/src/netif/lowpan6.su ./Middlewares/Third_Party/LwIP/src/netif/lowpan6_ble.cyclo ./Middlewares/Third_Party/LwIP/src/netif/lowpan6_ble.d ./Middlewares/Third_Party/LwIP/src/netif/lowpan6_ble.o ./Middlewares/Third_Party/LwIP/src/netif/lowpan6_ble.su ./Middlewares/Third_Party/LwIP/src/netif/lowpan6_common.cyclo ./Middlewares/Third_Party/LwIP/src/netif/lowpan6_common.d ./Middlewares/Third_Party/LwIP/src/netif/lowpan6_common.o ./Middlewares/Third_Party/LwIP/src/netif/lowpan6_common.su ./Middlewares/Third_Party/LwIP/src/netif/slipif.cyclo ./Middlewares/Third_Party/LwIP/src/netif/slipif.d ./Middlewares/Third_Party/LwIP/src/netif/slipif.o ./Middlewares/Third_Party/LwIP/src/netif/slipif.su ./Middlewares/Third_Party/LwIP/src/netif/zepif.cyclo ./Middlewares/Third_Party/LwIP/src/netif/zepif.d ./Middlewares/Third_Party/LwIP/src/netif/zepif.o ./Middlewares/Third_Party/LwIP/src/netif/zepif.su - -.PHONY: clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-netif - diff --git a/Debug/Startup/subdir.mk b/Debug/Startup/subdir.mk deleted file mode 100644 index aa4bb2e..0000000 --- a/Debug/Startup/subdir.mk +++ /dev/null @@ -1,27 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (10.3-2021.10) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -S_SRCS += \ -../Startup/startup_stm32f429zitx.s - -OBJS += \ -./Startup/startup_stm32f429zitx.o - -S_DEPS += \ -./Startup/startup_stm32f429zitx.d - - -# Each subdirectory must supply rules for building sources it contributes -Startup/%.o: ../Startup/%.s Startup/subdir.mk - arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -DDEBUG -c -x assembler-with-cpp -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" "$<" - -clean: clean-Startup - -clean-Startup: - -$(RM) ./Startup/startup_stm32f429zitx.d ./Startup/startup_stm32f429zitx.o - -.PHONY: clean-Startup - diff --git a/Debug/makefile b/Debug/makefile index 6ca31b2..f8d34aa 100644 --- a/Debug/makefile +++ b/Debug/makefile @@ -70,8 +70,8 @@ all: main-build main-build: yau-07b.elf secondary-outputs # Tool invocations -yau-07b.elf yau-07b.map: $(OBJS) $(USER_OBJS) D:\Work\CubeMX\ Projects\yau-07b\STM32F429ZITX_FLASH.ld makefile objects.list $(OPTIONAL_TOOL_DEPS) - arm-none-eabi-gcc -o "yau-07b.elf" @"objects.list" $(USER_OBJS) $(LIBS) -mcpu=cortex-m4 -T"D:\Work\CubeMX Projects\yau-07b\STM32F429ZITX_FLASH.ld" --specs=nosys.specs -Wl,-Map="yau-07b.map" -Wl,--gc-sections -static -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group +yau-07b.elf yau-07b.map: $(OBJS) $(USER_OBJS) C:\Maxim_Git\Yau-07B\STM32F429ZITX_FLASH.ld makefile objects.list $(OPTIONAL_TOOL_DEPS) + arm-none-eabi-gcc -o "yau-07b.elf" @"objects.list" $(USER_OBJS) $(LIBS) -mcpu=cortex-m4 -T"C:\Maxim_Git\Yau-07B\STM32F429ZITX_FLASH.ld" --specs=nosys.specs -Wl,-Map="yau-07b.map" -Wl,--gc-sections -static -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group @echo 'Finished building target: $@' @echo ' ' diff --git a/Debug/objects.list b/Debug/objects.list deleted file mode 100644 index cea01d7..0000000 --- a/Debug/objects.list +++ /dev/null @@ -1,108 +0,0 @@ -"./Core/Src/FLASH_SECTOR_F4.o" -"./Core/Src/main.o" -"./Core/Src/pribors.o" -"./Core/Src/stm32f4xx_hal_msp.o" -"./Core/Src/stm32f4xx_it.o" -"./Core/Src/system_stm32f4xx.o" -"./Core/Startup/startup_stm32f429zitx.o" -"./Drivers/BSP/Components/dp83848/dp83848.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_eth.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sram.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.o" -"./LWIP/App/lwip.o" -"./LWIP/Target/ethernetif.o" -"./Middlewares/Third_Party/LwIP/src/api/api_lib.o" -"./Middlewares/Third_Party/LwIP/src/api/api_msg.o" -"./Middlewares/Third_Party/LwIP/src/api/err.o" -"./Middlewares/Third_Party/LwIP/src/api/if_api.o" -"./Middlewares/Third_Party/LwIP/src/api/netbuf.o" -"./Middlewares/Third_Party/LwIP/src/api/netdb.o" -"./Middlewares/Third_Party/LwIP/src/api/netifapi.o" -"./Middlewares/Third_Party/LwIP/src/api/sockets.o" -"./Middlewares/Third_Party/LwIP/src/api/tcpip.o" -"./Middlewares/Third_Party/LwIP/src/apps/mqtt/mqtt.o" -"./Middlewares/Third_Party/LwIP/src/core/altcp.o" -"./Middlewares/Third_Party/LwIP/src/core/altcp_alloc.o" -"./Middlewares/Third_Party/LwIP/src/core/altcp_tcp.o" -"./Middlewares/Third_Party/LwIP/src/core/def.o" -"./Middlewares/Third_Party/LwIP/src/core/dns.o" -"./Middlewares/Third_Party/LwIP/src/core/inet_chksum.o" -"./Middlewares/Third_Party/LwIP/src/core/init.o" -"./Middlewares/Third_Party/LwIP/src/core/ip.o" -"./Middlewares/Third_Party/LwIP/src/core/mem.o" -"./Middlewares/Third_Party/LwIP/src/core/memp.o" -"./Middlewares/Third_Party/LwIP/src/core/netif.o" -"./Middlewares/Third_Party/LwIP/src/core/pbuf.o" -"./Middlewares/Third_Party/LwIP/src/core/raw.o" -"./Middlewares/Third_Party/LwIP/src/core/stats.o" -"./Middlewares/Third_Party/LwIP/src/core/sys.o" -"./Middlewares/Third_Party/LwIP/src/core/tcp.o" -"./Middlewares/Third_Party/LwIP/src/core/tcp_in.o" -"./Middlewares/Third_Party/LwIP/src/core/tcp_out.o" -"./Middlewares/Third_Party/LwIP/src/core/timeouts.o" -"./Middlewares/Third_Party/LwIP/src/core/udp.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv4/autoip.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv4/dhcp.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv4/icmp.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv4/igmp.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_addr.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv6/dhcp6.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv6/ethip6.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv6/icmp6.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv6/inet6.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6_addr.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6_frag.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv6/mld6.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv6/nd6.o" -"./Middlewares/Third_Party/LwIP/src/netif/bridgeif.o" -"./Middlewares/Third_Party/LwIP/src/netif/bridgeif_fdb.o" -"./Middlewares/Third_Party/LwIP/src/netif/ethernet.o" -"./Middlewares/Third_Party/LwIP/src/netif/lowpan6.o" -"./Middlewares/Third_Party/LwIP/src/netif/lowpan6_ble.o" -"./Middlewares/Third_Party/LwIP/src/netif/lowpan6_common.o" -"./Middlewares/Third_Party/LwIP/src/netif/slipif.o" -"./Middlewares/Third_Party/LwIP/src/netif/zepif.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/auth.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/ccp.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/chap-md5.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/chap-new.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/chap_ms.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/demand.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/eap.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/ecp.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/eui64.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/fsm.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/ipcp.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/ipv6cp.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/lcp.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/magic.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/mppe.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/multilink.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/ppp.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/pppapi.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/pppcrypt.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/pppoe.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/pppol2tp.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/pppos.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/upap.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/utils.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/vj.o" diff --git a/Debug/objects.mk b/Debug/objects.mk deleted file mode 100644 index 94e86f7..0000000 --- a/Debug/objects.mk +++ /dev/null @@ -1,9 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (12.3.rel1) -################################################################################ - -USER_OBJS := - -LIBS := - diff --git a/Debug/sources.mk b/Debug/sources.mk deleted file mode 100644 index 182aa5f..0000000 --- a/Debug/sources.mk +++ /dev/null @@ -1,38 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (12.3.rel1) -################################################################################ - -ELF_SRCS := -OBJ_SRCS := -S_SRCS := -C_SRCS := -S_UPPER_SRCS := -O_SRCS := -CYCLO_FILES := -SIZE_OUTPUT := -OBJDUMP_LIST := -SU_FILES := -EXECUTABLES := -OBJS := -MAP_FILES := -S_DEPS := -S_UPPER_DEPS := -C_DEPS := - -# Every subdirectory with source files must be described here -SUBDIRS := \ -Core/Src \ -Core/Startup \ -Drivers/BSP/Components/dp83848 \ -Drivers/STM32F4xx_HAL_Driver/Src \ -LWIP/App \ -LWIP/Target \ -Middlewares/Third_Party/LwIP/src/api \ -Middlewares/Third_Party/LwIP/src/apps/mqtt \ -Middlewares/Third_Party/LwIP/src/core \ -Middlewares/Third_Party/LwIP/src/core/ipv4 \ -Middlewares/Third_Party/LwIP/src/core/ipv6 \ -Middlewares/Third_Party/LwIP/src/netif \ -Middlewares/Third_Party/LwIP/src/netif/ppp \ - diff --git a/Debug/yau-07b.list b/Debug/yau-07b.list deleted file mode 100644 index 6d7e5bd..0000000 --- a/Debug/yau-07b.list +++ /dev/null @@ -1,56320 +0,0 @@ - -yau-07b.elf: file format elf32-littlearm - -Sections: -Idx Name Size VMA LMA File off Algn - 0 .isr_vector 000001ac 08000000 08000000 00001000 2**0 - CONTENTS, ALLOC, LOAD, READONLY, DATA - 1 .text 00017478 080001b0 080001b0 000011b0 2**4 - CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .rodata 0000335c 08017628 08017628 00018628 2**3 - CONTENTS, ALLOC, LOAD, READONLY, DATA - 3 .ARM.extab 00000000 0801a984 0801a984 0001c6e0 2**0 - CONTENTS - 4 .ARM 00000008 0801a984 0801a984 0001b984 2**2 - CONTENTS, ALLOC, LOAD, READONLY, DATA - 5 .preinit_array 00000000 0801a98c 0801a98c 0001c6e0 2**0 - CONTENTS, ALLOC, LOAD, DATA - 6 .init_array 00000008 0801a98c 0801a98c 0001b98c 2**2 - CONTENTS, ALLOC, LOAD, DATA - 7 .fini_array 00000004 0801a994 0801a994 0001b994 2**2 - CONTENTS, ALLOC, LOAD, DATA - 8 .data 000006e0 20000000 0801a998 0001c000 2**3 - CONTENTS, ALLOC, LOAD, DATA - 9 .ccmram 00000000 10000000 10000000 0001c6e0 2**0 - CONTENTS - 10 .bss 00018eac 200006e0 200006e0 0001c6e0 2**2 - ALLOC - 11 ._user_heap_stack 00000604 2001958c 2001958c 0001c6e0 2**0 - ALLOC - 12 .ARM.attributes 00000030 00000000 00000000 0001c6e0 2**0 - CONTENTS, READONLY - 13 .debug_info 00021557 00000000 00000000 0001c710 2**0 - CONTENTS, READONLY, DEBUGGING, OCTETS - 14 .debug_abbrev 00005ff9 00000000 00000000 0003dc67 2**0 - CONTENTS, READONLY, DEBUGGING, OCTETS - 15 .debug_aranges 00001b48 00000000 00000000 00043c60 2**3 - CONTENTS, READONLY, DEBUGGING, OCTETS - 16 .debug_rnglists 000015c5 00000000 00000000 000457a8 2**0 - CONTENTS, READONLY, DEBUGGING, OCTETS - 17 .debug_macro 00030c43 00000000 00000000 00046d6d 2**0 - CONTENTS, READONLY, DEBUGGING, OCTETS - 18 .debug_line 0002ad40 00000000 00000000 000779b0 2**0 - CONTENTS, READONLY, DEBUGGING, OCTETS - 19 .debug_str 000f5d0f 00000000 00000000 000a26f0 2**0 - CONTENTS, READONLY, DEBUGGING, OCTETS - 20 .comment 00000043 00000000 00000000 001983ff 2**0 - CONTENTS, READONLY - 21 .debug_frame 000083f0 00000000 00000000 00198444 2**2 - CONTENTS, READONLY, DEBUGGING, OCTETS - 22 .debug_line_str 0000004e 00000000 00000000 001a0834 2**0 - CONTENTS, READONLY, DEBUGGING, OCTETS - -Disassembly of section .text: - -080001b0 <__do_global_dtors_aux>: - 80001b0: b510 push {r4, lr} - 80001b2: 4c05 ldr r4, [pc, #20] @ (80001c8 <__do_global_dtors_aux+0x18>) - 80001b4: 7823 ldrb r3, [r4, #0] - 80001b6: b933 cbnz r3, 80001c6 <__do_global_dtors_aux+0x16> - 80001b8: 4b04 ldr r3, [pc, #16] @ (80001cc <__do_global_dtors_aux+0x1c>) - 80001ba: b113 cbz r3, 80001c2 <__do_global_dtors_aux+0x12> - 80001bc: 4804 ldr r0, [pc, #16] @ (80001d0 <__do_global_dtors_aux+0x20>) - 80001be: f3af 8000 nop.w - 80001c2: 2301 movs r3, #1 - 80001c4: 7023 strb r3, [r4, #0] - 80001c6: bd10 pop {r4, pc} - 80001c8: 200006e0 .word 0x200006e0 - 80001cc: 00000000 .word 0x00000000 - 80001d0: 08017610 .word 0x08017610 - -080001d4 : - 80001d4: b508 push {r3, lr} - 80001d6: 4b03 ldr r3, [pc, #12] @ (80001e4 ) - 80001d8: b11b cbz r3, 80001e2 - 80001da: 4903 ldr r1, [pc, #12] @ (80001e8 ) - 80001dc: 4803 ldr r0, [pc, #12] @ (80001ec ) - 80001de: f3af 8000 nop.w - 80001e2: bd08 pop {r3, pc} - 80001e4: 00000000 .word 0x00000000 - 80001e8: 200006e4 .word 0x200006e4 - 80001ec: 08017610 .word 0x08017610 - -080001f0 : - 80001f0: 4603 mov r3, r0 - 80001f2: f813 2b01 ldrb.w r2, [r3], #1 - 80001f6: 2a00 cmp r2, #0 - 80001f8: d1fb bne.n 80001f2 - 80001fa: 1a18 subs r0, r3, r0 - 80001fc: 3801 subs r0, #1 - 80001fe: 4770 bx lr - -08000200 : - 8000200: f001 01ff and.w r1, r1, #255 @ 0xff - 8000204: 2a10 cmp r2, #16 - 8000206: db2b blt.n 8000260 - 8000208: f010 0f07 tst.w r0, #7 - 800020c: d008 beq.n 8000220 - 800020e: f810 3b01 ldrb.w r3, [r0], #1 - 8000212: 3a01 subs r2, #1 - 8000214: 428b cmp r3, r1 - 8000216: d02d beq.n 8000274 - 8000218: f010 0f07 tst.w r0, #7 - 800021c: b342 cbz r2, 8000270 - 800021e: d1f6 bne.n 800020e - 8000220: b4f0 push {r4, r5, r6, r7} - 8000222: ea41 2101 orr.w r1, r1, r1, lsl #8 - 8000226: ea41 4101 orr.w r1, r1, r1, lsl #16 - 800022a: f022 0407 bic.w r4, r2, #7 - 800022e: f07f 0700 mvns.w r7, #0 - 8000232: 2300 movs r3, #0 - 8000234: e8f0 5602 ldrd r5, r6, [r0], #8 - 8000238: 3c08 subs r4, #8 - 800023a: ea85 0501 eor.w r5, r5, r1 - 800023e: ea86 0601 eor.w r6, r6, r1 - 8000242: fa85 f547 uadd8 r5, r5, r7 - 8000246: faa3 f587 sel r5, r3, r7 - 800024a: fa86 f647 uadd8 r6, r6, r7 - 800024e: faa5 f687 sel r6, r5, r7 - 8000252: b98e cbnz r6, 8000278 - 8000254: d1ee bne.n 8000234 - 8000256: bcf0 pop {r4, r5, r6, r7} - 8000258: f001 01ff and.w r1, r1, #255 @ 0xff - 800025c: f002 0207 and.w r2, r2, #7 - 8000260: b132 cbz r2, 8000270 - 8000262: f810 3b01 ldrb.w r3, [r0], #1 - 8000266: 3a01 subs r2, #1 - 8000268: ea83 0301 eor.w r3, r3, r1 - 800026c: b113 cbz r3, 8000274 - 800026e: d1f8 bne.n 8000262 - 8000270: 2000 movs r0, #0 - 8000272: 4770 bx lr - 8000274: 3801 subs r0, #1 - 8000276: 4770 bx lr - 8000278: 2d00 cmp r5, #0 - 800027a: bf06 itte eq - 800027c: 4635 moveq r5, r6 - 800027e: 3803 subeq r0, #3 - 8000280: 3807 subne r0, #7 - 8000282: f015 0f01 tst.w r5, #1 - 8000286: d107 bne.n 8000298 - 8000288: 3001 adds r0, #1 - 800028a: f415 7f80 tst.w r5, #256 @ 0x100 - 800028e: bf02 ittt eq - 8000290: 3001 addeq r0, #1 - 8000292: f415 3fc0 tsteq.w r5, #98304 @ 0x18000 - 8000296: 3001 addeq r0, #1 - 8000298: bcf0 pop {r4, r5, r6, r7} - 800029a: 3801 subs r0, #1 - 800029c: 4770 bx lr - 800029e: bf00 nop - -080002a0 <__aeabi_drsub>: - 80002a0: f081 4100 eor.w r1, r1, #2147483648 @ 0x80000000 - 80002a4: e002 b.n 80002ac <__adddf3> - 80002a6: bf00 nop - -080002a8 <__aeabi_dsub>: - 80002a8: f083 4300 eor.w r3, r3, #2147483648 @ 0x80000000 - -080002ac <__adddf3>: - 80002ac: b530 push {r4, r5, lr} - 80002ae: ea4f 0441 mov.w r4, r1, lsl #1 - 80002b2: ea4f 0543 mov.w r5, r3, lsl #1 - 80002b6: ea94 0f05 teq r4, r5 - 80002ba: bf08 it eq - 80002bc: ea90 0f02 teqeq r0, r2 - 80002c0: bf1f itttt ne - 80002c2: ea54 0c00 orrsne.w ip, r4, r0 - 80002c6: ea55 0c02 orrsne.w ip, r5, r2 - 80002ca: ea7f 5c64 mvnsne.w ip, r4, asr #21 - 80002ce: ea7f 5c65 mvnsne.w ip, r5, asr #21 - 80002d2: f000 80e2 beq.w 800049a <__adddf3+0x1ee> - 80002d6: ea4f 5454 mov.w r4, r4, lsr #21 - 80002da: ebd4 5555 rsbs r5, r4, r5, lsr #21 - 80002de: bfb8 it lt - 80002e0: 426d neglt r5, r5 - 80002e2: dd0c ble.n 80002fe <__adddf3+0x52> - 80002e4: 442c add r4, r5 - 80002e6: ea80 0202 eor.w r2, r0, r2 - 80002ea: ea81 0303 eor.w r3, r1, r3 - 80002ee: ea82 0000 eor.w r0, r2, r0 - 80002f2: ea83 0101 eor.w r1, r3, r1 - 80002f6: ea80 0202 eor.w r2, r0, r2 - 80002fa: ea81 0303 eor.w r3, r1, r3 - 80002fe: 2d36 cmp r5, #54 @ 0x36 - 8000300: bf88 it hi - 8000302: bd30 pophi {r4, r5, pc} - 8000304: f011 4f00 tst.w r1, #2147483648 @ 0x80000000 - 8000308: ea4f 3101 mov.w r1, r1, lsl #12 - 800030c: f44f 1c80 mov.w ip, #1048576 @ 0x100000 - 8000310: ea4c 3111 orr.w r1, ip, r1, lsr #12 - 8000314: d002 beq.n 800031c <__adddf3+0x70> - 8000316: 4240 negs r0, r0 - 8000318: eb61 0141 sbc.w r1, r1, r1, lsl #1 - 800031c: f013 4f00 tst.w r3, #2147483648 @ 0x80000000 - 8000320: ea4f 3303 mov.w r3, r3, lsl #12 - 8000324: ea4c 3313 orr.w r3, ip, r3, lsr #12 - 8000328: d002 beq.n 8000330 <__adddf3+0x84> - 800032a: 4252 negs r2, r2 - 800032c: eb63 0343 sbc.w r3, r3, r3, lsl #1 - 8000330: ea94 0f05 teq r4, r5 - 8000334: f000 80a7 beq.w 8000486 <__adddf3+0x1da> - 8000338: f1a4 0401 sub.w r4, r4, #1 - 800033c: f1d5 0e20 rsbs lr, r5, #32 - 8000340: db0d blt.n 800035e <__adddf3+0xb2> - 8000342: fa02 fc0e lsl.w ip, r2, lr - 8000346: fa22 f205 lsr.w r2, r2, r5 - 800034a: 1880 adds r0, r0, r2 - 800034c: f141 0100 adc.w r1, r1, #0 - 8000350: fa03 f20e lsl.w r2, r3, lr - 8000354: 1880 adds r0, r0, r2 - 8000356: fa43 f305 asr.w r3, r3, r5 - 800035a: 4159 adcs r1, r3 - 800035c: e00e b.n 800037c <__adddf3+0xd0> - 800035e: f1a5 0520 sub.w r5, r5, #32 - 8000362: f10e 0e20 add.w lr, lr, #32 - 8000366: 2a01 cmp r2, #1 - 8000368: fa03 fc0e lsl.w ip, r3, lr - 800036c: bf28 it cs - 800036e: f04c 0c02 orrcs.w ip, ip, #2 - 8000372: fa43 f305 asr.w r3, r3, r5 - 8000376: 18c0 adds r0, r0, r3 - 8000378: eb51 71e3 adcs.w r1, r1, r3, asr #31 - 800037c: f001 4500 and.w r5, r1, #2147483648 @ 0x80000000 - 8000380: d507 bpl.n 8000392 <__adddf3+0xe6> - 8000382: f04f 0e00 mov.w lr, #0 - 8000386: f1dc 0c00 rsbs ip, ip, #0 - 800038a: eb7e 0000 sbcs.w r0, lr, r0 - 800038e: eb6e 0101 sbc.w r1, lr, r1 - 8000392: f5b1 1f80 cmp.w r1, #1048576 @ 0x100000 - 8000396: d31b bcc.n 80003d0 <__adddf3+0x124> - 8000398: f5b1 1f00 cmp.w r1, #2097152 @ 0x200000 - 800039c: d30c bcc.n 80003b8 <__adddf3+0x10c> - 800039e: 0849 lsrs r1, r1, #1 - 80003a0: ea5f 0030 movs.w r0, r0, rrx - 80003a4: ea4f 0c3c mov.w ip, ip, rrx - 80003a8: f104 0401 add.w r4, r4, #1 - 80003ac: ea4f 5244 mov.w r2, r4, lsl #21 - 80003b0: f512 0f80 cmn.w r2, #4194304 @ 0x400000 - 80003b4: f080 809a bcs.w 80004ec <__adddf3+0x240> - 80003b8: f1bc 4f00 cmp.w ip, #2147483648 @ 0x80000000 - 80003bc: bf08 it eq - 80003be: ea5f 0c50 movseq.w ip, r0, lsr #1 - 80003c2: f150 0000 adcs.w r0, r0, #0 - 80003c6: eb41 5104 adc.w r1, r1, r4, lsl #20 - 80003ca: ea41 0105 orr.w r1, r1, r5 - 80003ce: bd30 pop {r4, r5, pc} - 80003d0: ea5f 0c4c movs.w ip, ip, lsl #1 - 80003d4: 4140 adcs r0, r0 - 80003d6: eb41 0101 adc.w r1, r1, r1 - 80003da: 3c01 subs r4, #1 - 80003dc: bf28 it cs - 80003de: f5b1 1f80 cmpcs.w r1, #1048576 @ 0x100000 - 80003e2: d2e9 bcs.n 80003b8 <__adddf3+0x10c> - 80003e4: f091 0f00 teq r1, #0 - 80003e8: bf04 itt eq - 80003ea: 4601 moveq r1, r0 - 80003ec: 2000 moveq r0, #0 - 80003ee: fab1 f381 clz r3, r1 - 80003f2: bf08 it eq - 80003f4: 3320 addeq r3, #32 - 80003f6: f1a3 030b sub.w r3, r3, #11 - 80003fa: f1b3 0220 subs.w r2, r3, #32 - 80003fe: da0c bge.n 800041a <__adddf3+0x16e> - 8000400: 320c adds r2, #12 - 8000402: dd08 ble.n 8000416 <__adddf3+0x16a> - 8000404: f102 0c14 add.w ip, r2, #20 - 8000408: f1c2 020c rsb r2, r2, #12 - 800040c: fa01 f00c lsl.w r0, r1, ip - 8000410: fa21 f102 lsr.w r1, r1, r2 - 8000414: e00c b.n 8000430 <__adddf3+0x184> - 8000416: f102 0214 add.w r2, r2, #20 - 800041a: bfd8 it le - 800041c: f1c2 0c20 rsble ip, r2, #32 - 8000420: fa01 f102 lsl.w r1, r1, r2 - 8000424: fa20 fc0c lsr.w ip, r0, ip - 8000428: bfdc itt le - 800042a: ea41 010c orrle.w r1, r1, ip - 800042e: 4090 lslle r0, r2 - 8000430: 1ae4 subs r4, r4, r3 - 8000432: bfa2 ittt ge - 8000434: eb01 5104 addge.w r1, r1, r4, lsl #20 - 8000438: 4329 orrge r1, r5 - 800043a: bd30 popge {r4, r5, pc} - 800043c: ea6f 0404 mvn.w r4, r4 - 8000440: 3c1f subs r4, #31 - 8000442: da1c bge.n 800047e <__adddf3+0x1d2> - 8000444: 340c adds r4, #12 - 8000446: dc0e bgt.n 8000466 <__adddf3+0x1ba> - 8000448: f104 0414 add.w r4, r4, #20 - 800044c: f1c4 0220 rsb r2, r4, #32 - 8000450: fa20 f004 lsr.w r0, r0, r4 - 8000454: fa01 f302 lsl.w r3, r1, r2 - 8000458: ea40 0003 orr.w r0, r0, r3 - 800045c: fa21 f304 lsr.w r3, r1, r4 - 8000460: ea45 0103 orr.w r1, r5, r3 - 8000464: bd30 pop {r4, r5, pc} - 8000466: f1c4 040c rsb r4, r4, #12 - 800046a: f1c4 0220 rsb r2, r4, #32 - 800046e: fa20 f002 lsr.w r0, r0, r2 - 8000472: fa01 f304 lsl.w r3, r1, r4 - 8000476: ea40 0003 orr.w r0, r0, r3 - 800047a: 4629 mov r1, r5 - 800047c: bd30 pop {r4, r5, pc} - 800047e: fa21 f004 lsr.w r0, r1, r4 - 8000482: 4629 mov r1, r5 - 8000484: bd30 pop {r4, r5, pc} - 8000486: f094 0f00 teq r4, #0 - 800048a: f483 1380 eor.w r3, r3, #1048576 @ 0x100000 - 800048e: bf06 itte eq - 8000490: f481 1180 eoreq.w r1, r1, #1048576 @ 0x100000 - 8000494: 3401 addeq r4, #1 - 8000496: 3d01 subne r5, #1 - 8000498: e74e b.n 8000338 <__adddf3+0x8c> - 800049a: ea7f 5c64 mvns.w ip, r4, asr #21 - 800049e: bf18 it ne - 80004a0: ea7f 5c65 mvnsne.w ip, r5, asr #21 - 80004a4: d029 beq.n 80004fa <__adddf3+0x24e> - 80004a6: ea94 0f05 teq r4, r5 - 80004aa: bf08 it eq - 80004ac: ea90 0f02 teqeq r0, r2 - 80004b0: d005 beq.n 80004be <__adddf3+0x212> - 80004b2: ea54 0c00 orrs.w ip, r4, r0 - 80004b6: bf04 itt eq - 80004b8: 4619 moveq r1, r3 - 80004ba: 4610 moveq r0, r2 - 80004bc: bd30 pop {r4, r5, pc} - 80004be: ea91 0f03 teq r1, r3 - 80004c2: bf1e ittt ne - 80004c4: 2100 movne r1, #0 - 80004c6: 2000 movne r0, #0 - 80004c8: bd30 popne {r4, r5, pc} - 80004ca: ea5f 5c54 movs.w ip, r4, lsr #21 - 80004ce: d105 bne.n 80004dc <__adddf3+0x230> - 80004d0: 0040 lsls r0, r0, #1 - 80004d2: 4149 adcs r1, r1 - 80004d4: bf28 it cs - 80004d6: f041 4100 orrcs.w r1, r1, #2147483648 @ 0x80000000 - 80004da: bd30 pop {r4, r5, pc} - 80004dc: f514 0480 adds.w r4, r4, #4194304 @ 0x400000 - 80004e0: bf3c itt cc - 80004e2: f501 1180 addcc.w r1, r1, #1048576 @ 0x100000 - 80004e6: bd30 popcc {r4, r5, pc} - 80004e8: f001 4500 and.w r5, r1, #2147483648 @ 0x80000000 - 80004ec: f045 41fe orr.w r1, r5, #2130706432 @ 0x7f000000 - 80004f0: f441 0170 orr.w r1, r1, #15728640 @ 0xf00000 - 80004f4: f04f 0000 mov.w r0, #0 - 80004f8: bd30 pop {r4, r5, pc} - 80004fa: ea7f 5c64 mvns.w ip, r4, asr #21 - 80004fe: bf1a itte ne - 8000500: 4619 movne r1, r3 - 8000502: 4610 movne r0, r2 - 8000504: ea7f 5c65 mvnseq.w ip, r5, asr #21 - 8000508: bf1c itt ne - 800050a: 460b movne r3, r1 - 800050c: 4602 movne r2, r0 - 800050e: ea50 3401 orrs.w r4, r0, r1, lsl #12 - 8000512: bf06 itte eq - 8000514: ea52 3503 orrseq.w r5, r2, r3, lsl #12 - 8000518: ea91 0f03 teqeq r1, r3 - 800051c: f441 2100 orrne.w r1, r1, #524288 @ 0x80000 - 8000520: bd30 pop {r4, r5, pc} - 8000522: bf00 nop - -08000524 <__aeabi_ui2d>: - 8000524: f090 0f00 teq r0, #0 - 8000528: bf04 itt eq - 800052a: 2100 moveq r1, #0 - 800052c: 4770 bxeq lr - 800052e: b530 push {r4, r5, lr} - 8000530: f44f 6480 mov.w r4, #1024 @ 0x400 - 8000534: f104 0432 add.w r4, r4, #50 @ 0x32 - 8000538: f04f 0500 mov.w r5, #0 - 800053c: f04f 0100 mov.w r1, #0 - 8000540: e750 b.n 80003e4 <__adddf3+0x138> - 8000542: bf00 nop - -08000544 <__aeabi_i2d>: - 8000544: f090 0f00 teq r0, #0 - 8000548: bf04 itt eq - 800054a: 2100 moveq r1, #0 - 800054c: 4770 bxeq lr - 800054e: b530 push {r4, r5, lr} - 8000550: f44f 6480 mov.w r4, #1024 @ 0x400 - 8000554: f104 0432 add.w r4, r4, #50 @ 0x32 - 8000558: f010 4500 ands.w r5, r0, #2147483648 @ 0x80000000 - 800055c: bf48 it mi - 800055e: 4240 negmi r0, r0 - 8000560: f04f 0100 mov.w r1, #0 - 8000564: e73e b.n 80003e4 <__adddf3+0x138> - 8000566: bf00 nop - -08000568 <__aeabi_f2d>: - 8000568: 0042 lsls r2, r0, #1 - 800056a: ea4f 01e2 mov.w r1, r2, asr #3 - 800056e: ea4f 0131 mov.w r1, r1, rrx - 8000572: ea4f 7002 mov.w r0, r2, lsl #28 - 8000576: bf1f itttt ne - 8000578: f012 437f andsne.w r3, r2, #4278190080 @ 0xff000000 - 800057c: f093 4f7f teqne r3, #4278190080 @ 0xff000000 - 8000580: f081 5160 eorne.w r1, r1, #939524096 @ 0x38000000 - 8000584: 4770 bxne lr - 8000586: f032 427f bics.w r2, r2, #4278190080 @ 0xff000000 - 800058a: bf08 it eq - 800058c: 4770 bxeq lr - 800058e: f093 4f7f teq r3, #4278190080 @ 0xff000000 - 8000592: bf04 itt eq - 8000594: f441 2100 orreq.w r1, r1, #524288 @ 0x80000 - 8000598: 4770 bxeq lr - 800059a: b530 push {r4, r5, lr} - 800059c: f44f 7460 mov.w r4, #896 @ 0x380 - 80005a0: f001 4500 and.w r5, r1, #2147483648 @ 0x80000000 - 80005a4: f021 4100 bic.w r1, r1, #2147483648 @ 0x80000000 - 80005a8: e71c b.n 80003e4 <__adddf3+0x138> - 80005aa: bf00 nop - -080005ac <__aeabi_ul2d>: - 80005ac: ea50 0201 orrs.w r2, r0, r1 - 80005b0: bf08 it eq - 80005b2: 4770 bxeq lr - 80005b4: b530 push {r4, r5, lr} - 80005b6: f04f 0500 mov.w r5, #0 - 80005ba: e00a b.n 80005d2 <__aeabi_l2d+0x16> - -080005bc <__aeabi_l2d>: - 80005bc: ea50 0201 orrs.w r2, r0, r1 - 80005c0: bf08 it eq - 80005c2: 4770 bxeq lr - 80005c4: b530 push {r4, r5, lr} - 80005c6: f011 4500 ands.w r5, r1, #2147483648 @ 0x80000000 - 80005ca: d502 bpl.n 80005d2 <__aeabi_l2d+0x16> - 80005cc: 4240 negs r0, r0 - 80005ce: eb61 0141 sbc.w r1, r1, r1, lsl #1 - 80005d2: f44f 6480 mov.w r4, #1024 @ 0x400 - 80005d6: f104 0432 add.w r4, r4, #50 @ 0x32 - 80005da: ea5f 5c91 movs.w ip, r1, lsr #22 - 80005de: f43f aed8 beq.w 8000392 <__adddf3+0xe6> - 80005e2: f04f 0203 mov.w r2, #3 - 80005e6: ea5f 0cdc movs.w ip, ip, lsr #3 - 80005ea: bf18 it ne - 80005ec: 3203 addne r2, #3 - 80005ee: ea5f 0cdc movs.w ip, ip, lsr #3 - 80005f2: bf18 it ne - 80005f4: 3203 addne r2, #3 - 80005f6: eb02 02dc add.w r2, r2, ip, lsr #3 - 80005fa: f1c2 0320 rsb r3, r2, #32 - 80005fe: fa00 fc03 lsl.w ip, r0, r3 - 8000602: fa20 f002 lsr.w r0, r0, r2 - 8000606: fa01 fe03 lsl.w lr, r1, r3 - 800060a: ea40 000e orr.w r0, r0, lr - 800060e: fa21 f102 lsr.w r1, r1, r2 - 8000612: 4414 add r4, r2 - 8000614: e6bd b.n 8000392 <__adddf3+0xe6> - 8000616: bf00 nop - -08000618 <__aeabi_dmul>: - 8000618: b570 push {r4, r5, r6, lr} - 800061a: f04f 0cff mov.w ip, #255 @ 0xff - 800061e: f44c 6ce0 orr.w ip, ip, #1792 @ 0x700 - 8000622: ea1c 5411 ands.w r4, ip, r1, lsr #20 - 8000626: bf1d ittte ne - 8000628: ea1c 5513 andsne.w r5, ip, r3, lsr #20 - 800062c: ea94 0f0c teqne r4, ip - 8000630: ea95 0f0c teqne r5, ip - 8000634: f000 f8de bleq 80007f4 <__aeabi_dmul+0x1dc> - 8000638: 442c add r4, r5 - 800063a: ea81 0603 eor.w r6, r1, r3 - 800063e: ea21 514c bic.w r1, r1, ip, lsl #21 - 8000642: ea23 534c bic.w r3, r3, ip, lsl #21 - 8000646: ea50 3501 orrs.w r5, r0, r1, lsl #12 - 800064a: bf18 it ne - 800064c: ea52 3503 orrsne.w r5, r2, r3, lsl #12 - 8000650: f441 1180 orr.w r1, r1, #1048576 @ 0x100000 - 8000654: f443 1380 orr.w r3, r3, #1048576 @ 0x100000 - 8000658: d038 beq.n 80006cc <__aeabi_dmul+0xb4> - 800065a: fba0 ce02 umull ip, lr, r0, r2 - 800065e: f04f 0500 mov.w r5, #0 - 8000662: fbe1 e502 umlal lr, r5, r1, r2 - 8000666: f006 4200 and.w r2, r6, #2147483648 @ 0x80000000 - 800066a: fbe0 e503 umlal lr, r5, r0, r3 - 800066e: f04f 0600 mov.w r6, #0 - 8000672: fbe1 5603 umlal r5, r6, r1, r3 - 8000676: f09c 0f00 teq ip, #0 - 800067a: bf18 it ne - 800067c: f04e 0e01 orrne.w lr, lr, #1 - 8000680: f1a4 04ff sub.w r4, r4, #255 @ 0xff - 8000684: f5b6 7f00 cmp.w r6, #512 @ 0x200 - 8000688: f564 7440 sbc.w r4, r4, #768 @ 0x300 - 800068c: d204 bcs.n 8000698 <__aeabi_dmul+0x80> - 800068e: ea5f 0e4e movs.w lr, lr, lsl #1 - 8000692: 416d adcs r5, r5 - 8000694: eb46 0606 adc.w r6, r6, r6 - 8000698: ea42 21c6 orr.w r1, r2, r6, lsl #11 - 800069c: ea41 5155 orr.w r1, r1, r5, lsr #21 - 80006a0: ea4f 20c5 mov.w r0, r5, lsl #11 - 80006a4: ea40 505e orr.w r0, r0, lr, lsr #21 - 80006a8: ea4f 2ece mov.w lr, lr, lsl #11 - 80006ac: f1b4 0cfd subs.w ip, r4, #253 @ 0xfd - 80006b0: bf88 it hi - 80006b2: f5bc 6fe0 cmphi.w ip, #1792 @ 0x700 - 80006b6: d81e bhi.n 80006f6 <__aeabi_dmul+0xde> - 80006b8: f1be 4f00 cmp.w lr, #2147483648 @ 0x80000000 - 80006bc: bf08 it eq - 80006be: ea5f 0e50 movseq.w lr, r0, lsr #1 - 80006c2: f150 0000 adcs.w r0, r0, #0 - 80006c6: eb41 5104 adc.w r1, r1, r4, lsl #20 - 80006ca: bd70 pop {r4, r5, r6, pc} - 80006cc: f006 4600 and.w r6, r6, #2147483648 @ 0x80000000 - 80006d0: ea46 0101 orr.w r1, r6, r1 - 80006d4: ea40 0002 orr.w r0, r0, r2 - 80006d8: ea81 0103 eor.w r1, r1, r3 - 80006dc: ebb4 045c subs.w r4, r4, ip, lsr #1 - 80006e0: bfc2 ittt gt - 80006e2: ebd4 050c rsbsgt r5, r4, ip - 80006e6: ea41 5104 orrgt.w r1, r1, r4, lsl #20 - 80006ea: bd70 popgt {r4, r5, r6, pc} - 80006ec: f441 1180 orr.w r1, r1, #1048576 @ 0x100000 - 80006f0: f04f 0e00 mov.w lr, #0 - 80006f4: 3c01 subs r4, #1 - 80006f6: f300 80ab bgt.w 8000850 <__aeabi_dmul+0x238> - 80006fa: f114 0f36 cmn.w r4, #54 @ 0x36 - 80006fe: bfde ittt le - 8000700: 2000 movle r0, #0 - 8000702: f001 4100 andle.w r1, r1, #2147483648 @ 0x80000000 - 8000706: bd70 pople {r4, r5, r6, pc} - 8000708: f1c4 0400 rsb r4, r4, #0 - 800070c: 3c20 subs r4, #32 - 800070e: da35 bge.n 800077c <__aeabi_dmul+0x164> - 8000710: 340c adds r4, #12 - 8000712: dc1b bgt.n 800074c <__aeabi_dmul+0x134> - 8000714: f104 0414 add.w r4, r4, #20 - 8000718: f1c4 0520 rsb r5, r4, #32 - 800071c: fa00 f305 lsl.w r3, r0, r5 - 8000720: fa20 f004 lsr.w r0, r0, r4 - 8000724: fa01 f205 lsl.w r2, r1, r5 - 8000728: ea40 0002 orr.w r0, r0, r2 - 800072c: f001 4200 and.w r2, r1, #2147483648 @ 0x80000000 - 8000730: f021 4100 bic.w r1, r1, #2147483648 @ 0x80000000 - 8000734: eb10 70d3 adds.w r0, r0, r3, lsr #31 - 8000738: fa21 f604 lsr.w r6, r1, r4 - 800073c: eb42 0106 adc.w r1, r2, r6 - 8000740: ea5e 0e43 orrs.w lr, lr, r3, lsl #1 - 8000744: bf08 it eq - 8000746: ea20 70d3 biceq.w r0, r0, r3, lsr #31 - 800074a: bd70 pop {r4, r5, r6, pc} - 800074c: f1c4 040c rsb r4, r4, #12 - 8000750: f1c4 0520 rsb r5, r4, #32 - 8000754: fa00 f304 lsl.w r3, r0, r4 - 8000758: fa20 f005 lsr.w r0, r0, r5 - 800075c: fa01 f204 lsl.w r2, r1, r4 - 8000760: ea40 0002 orr.w r0, r0, r2 - 8000764: f001 4100 and.w r1, r1, #2147483648 @ 0x80000000 - 8000768: eb10 70d3 adds.w r0, r0, r3, lsr #31 - 800076c: f141 0100 adc.w r1, r1, #0 - 8000770: ea5e 0e43 orrs.w lr, lr, r3, lsl #1 - 8000774: bf08 it eq - 8000776: ea20 70d3 biceq.w r0, r0, r3, lsr #31 - 800077a: bd70 pop {r4, r5, r6, pc} - 800077c: f1c4 0520 rsb r5, r4, #32 - 8000780: fa00 f205 lsl.w r2, r0, r5 - 8000784: ea4e 0e02 orr.w lr, lr, r2 - 8000788: fa20 f304 lsr.w r3, r0, r4 - 800078c: fa01 f205 lsl.w r2, r1, r5 - 8000790: ea43 0302 orr.w r3, r3, r2 - 8000794: fa21 f004 lsr.w r0, r1, r4 - 8000798: f001 4100 and.w r1, r1, #2147483648 @ 0x80000000 - 800079c: fa21 f204 lsr.w r2, r1, r4 - 80007a0: ea20 0002 bic.w r0, r0, r2 - 80007a4: eb00 70d3 add.w r0, r0, r3, lsr #31 - 80007a8: ea5e 0e43 orrs.w lr, lr, r3, lsl #1 - 80007ac: bf08 it eq - 80007ae: ea20 70d3 biceq.w r0, r0, r3, lsr #31 - 80007b2: bd70 pop {r4, r5, r6, pc} - 80007b4: f094 0f00 teq r4, #0 - 80007b8: d10f bne.n 80007da <__aeabi_dmul+0x1c2> - 80007ba: f001 4600 and.w r6, r1, #2147483648 @ 0x80000000 - 80007be: 0040 lsls r0, r0, #1 - 80007c0: eb41 0101 adc.w r1, r1, r1 - 80007c4: f411 1f80 tst.w r1, #1048576 @ 0x100000 - 80007c8: bf08 it eq - 80007ca: 3c01 subeq r4, #1 - 80007cc: d0f7 beq.n 80007be <__aeabi_dmul+0x1a6> - 80007ce: ea41 0106 orr.w r1, r1, r6 - 80007d2: f095 0f00 teq r5, #0 - 80007d6: bf18 it ne - 80007d8: 4770 bxne lr - 80007da: f003 4600 and.w r6, r3, #2147483648 @ 0x80000000 - 80007de: 0052 lsls r2, r2, #1 - 80007e0: eb43 0303 adc.w r3, r3, r3 - 80007e4: f413 1f80 tst.w r3, #1048576 @ 0x100000 - 80007e8: bf08 it eq - 80007ea: 3d01 subeq r5, #1 - 80007ec: d0f7 beq.n 80007de <__aeabi_dmul+0x1c6> - 80007ee: ea43 0306 orr.w r3, r3, r6 - 80007f2: 4770 bx lr - 80007f4: ea94 0f0c teq r4, ip - 80007f8: ea0c 5513 and.w r5, ip, r3, lsr #20 - 80007fc: bf18 it ne - 80007fe: ea95 0f0c teqne r5, ip - 8000802: d00c beq.n 800081e <__aeabi_dmul+0x206> - 8000804: ea50 0641 orrs.w r6, r0, r1, lsl #1 - 8000808: bf18 it ne - 800080a: ea52 0643 orrsne.w r6, r2, r3, lsl #1 - 800080e: d1d1 bne.n 80007b4 <__aeabi_dmul+0x19c> - 8000810: ea81 0103 eor.w r1, r1, r3 - 8000814: f001 4100 and.w r1, r1, #2147483648 @ 0x80000000 - 8000818: f04f 0000 mov.w r0, #0 - 800081c: bd70 pop {r4, r5, r6, pc} - 800081e: ea50 0641 orrs.w r6, r0, r1, lsl #1 - 8000822: bf06 itte eq - 8000824: 4610 moveq r0, r2 - 8000826: 4619 moveq r1, r3 - 8000828: ea52 0643 orrsne.w r6, r2, r3, lsl #1 - 800082c: d019 beq.n 8000862 <__aeabi_dmul+0x24a> - 800082e: ea94 0f0c teq r4, ip - 8000832: d102 bne.n 800083a <__aeabi_dmul+0x222> - 8000834: ea50 3601 orrs.w r6, r0, r1, lsl #12 - 8000838: d113 bne.n 8000862 <__aeabi_dmul+0x24a> - 800083a: ea95 0f0c teq r5, ip - 800083e: d105 bne.n 800084c <__aeabi_dmul+0x234> - 8000840: ea52 3603 orrs.w r6, r2, r3, lsl #12 - 8000844: bf1c itt ne - 8000846: 4610 movne r0, r2 - 8000848: 4619 movne r1, r3 - 800084a: d10a bne.n 8000862 <__aeabi_dmul+0x24a> - 800084c: ea81 0103 eor.w r1, r1, r3 - 8000850: f001 4100 and.w r1, r1, #2147483648 @ 0x80000000 - 8000854: f041 41fe orr.w r1, r1, #2130706432 @ 0x7f000000 - 8000858: f441 0170 orr.w r1, r1, #15728640 @ 0xf00000 - 800085c: f04f 0000 mov.w r0, #0 - 8000860: bd70 pop {r4, r5, r6, pc} - 8000862: f041 41fe orr.w r1, r1, #2130706432 @ 0x7f000000 - 8000866: f441 0178 orr.w r1, r1, #16252928 @ 0xf80000 - 800086a: bd70 pop {r4, r5, r6, pc} - -0800086c <__aeabi_ddiv>: - 800086c: b570 push {r4, r5, r6, lr} - 800086e: f04f 0cff mov.w ip, #255 @ 0xff - 8000872: f44c 6ce0 orr.w ip, ip, #1792 @ 0x700 - 8000876: ea1c 5411 ands.w r4, ip, r1, lsr #20 - 800087a: bf1d ittte ne - 800087c: ea1c 5513 andsne.w r5, ip, r3, lsr #20 - 8000880: ea94 0f0c teqne r4, ip - 8000884: ea95 0f0c teqne r5, ip - 8000888: f000 f8a7 bleq 80009da <__aeabi_ddiv+0x16e> - 800088c: eba4 0405 sub.w r4, r4, r5 - 8000890: ea81 0e03 eor.w lr, r1, r3 - 8000894: ea52 3503 orrs.w r5, r2, r3, lsl #12 - 8000898: ea4f 3101 mov.w r1, r1, lsl #12 - 800089c: f000 8088 beq.w 80009b0 <__aeabi_ddiv+0x144> - 80008a0: ea4f 3303 mov.w r3, r3, lsl #12 - 80008a4: f04f 5580 mov.w r5, #268435456 @ 0x10000000 - 80008a8: ea45 1313 orr.w r3, r5, r3, lsr #4 - 80008ac: ea43 6312 orr.w r3, r3, r2, lsr #24 - 80008b0: ea4f 2202 mov.w r2, r2, lsl #8 - 80008b4: ea45 1511 orr.w r5, r5, r1, lsr #4 - 80008b8: ea45 6510 orr.w r5, r5, r0, lsr #24 - 80008bc: ea4f 2600 mov.w r6, r0, lsl #8 - 80008c0: f00e 4100 and.w r1, lr, #2147483648 @ 0x80000000 - 80008c4: 429d cmp r5, r3 - 80008c6: bf08 it eq - 80008c8: 4296 cmpeq r6, r2 - 80008ca: f144 04fd adc.w r4, r4, #253 @ 0xfd - 80008ce: f504 7440 add.w r4, r4, #768 @ 0x300 - 80008d2: d202 bcs.n 80008da <__aeabi_ddiv+0x6e> - 80008d4: 085b lsrs r3, r3, #1 - 80008d6: ea4f 0232 mov.w r2, r2, rrx - 80008da: 1ab6 subs r6, r6, r2 - 80008dc: eb65 0503 sbc.w r5, r5, r3 - 80008e0: 085b lsrs r3, r3, #1 - 80008e2: ea4f 0232 mov.w r2, r2, rrx - 80008e6: f44f 1080 mov.w r0, #1048576 @ 0x100000 - 80008ea: f44f 2c00 mov.w ip, #524288 @ 0x80000 - 80008ee: ebb6 0e02 subs.w lr, r6, r2 - 80008f2: eb75 0e03 sbcs.w lr, r5, r3 - 80008f6: bf22 ittt cs - 80008f8: 1ab6 subcs r6, r6, r2 - 80008fa: 4675 movcs r5, lr - 80008fc: ea40 000c orrcs.w r0, r0, ip - 8000900: 085b lsrs r3, r3, #1 - 8000902: ea4f 0232 mov.w r2, r2, rrx - 8000906: ebb6 0e02 subs.w lr, r6, r2 - 800090a: eb75 0e03 sbcs.w lr, r5, r3 - 800090e: bf22 ittt cs - 8000910: 1ab6 subcs r6, r6, r2 - 8000912: 4675 movcs r5, lr - 8000914: ea40 005c orrcs.w r0, r0, ip, lsr #1 - 8000918: 085b lsrs r3, r3, #1 - 800091a: ea4f 0232 mov.w r2, r2, rrx - 800091e: ebb6 0e02 subs.w lr, r6, r2 - 8000922: eb75 0e03 sbcs.w lr, r5, r3 - 8000926: bf22 ittt cs - 8000928: 1ab6 subcs r6, r6, r2 - 800092a: 4675 movcs r5, lr - 800092c: ea40 009c orrcs.w r0, r0, ip, lsr #2 - 8000930: 085b lsrs r3, r3, #1 - 8000932: ea4f 0232 mov.w r2, r2, rrx - 8000936: ebb6 0e02 subs.w lr, r6, r2 - 800093a: eb75 0e03 sbcs.w lr, r5, r3 - 800093e: bf22 ittt cs - 8000940: 1ab6 subcs r6, r6, r2 - 8000942: 4675 movcs r5, lr - 8000944: ea40 00dc orrcs.w r0, r0, ip, lsr #3 - 8000948: ea55 0e06 orrs.w lr, r5, r6 - 800094c: d018 beq.n 8000980 <__aeabi_ddiv+0x114> - 800094e: ea4f 1505 mov.w r5, r5, lsl #4 - 8000952: ea45 7516 orr.w r5, r5, r6, lsr #28 - 8000956: ea4f 1606 mov.w r6, r6, lsl #4 - 800095a: ea4f 03c3 mov.w r3, r3, lsl #3 - 800095e: ea43 7352 orr.w r3, r3, r2, lsr #29 - 8000962: ea4f 02c2 mov.w r2, r2, lsl #3 - 8000966: ea5f 1c1c movs.w ip, ip, lsr #4 - 800096a: d1c0 bne.n 80008ee <__aeabi_ddiv+0x82> - 800096c: f411 1f80 tst.w r1, #1048576 @ 0x100000 - 8000970: d10b bne.n 800098a <__aeabi_ddiv+0x11e> - 8000972: ea41 0100 orr.w r1, r1, r0 - 8000976: f04f 0000 mov.w r0, #0 - 800097a: f04f 4c00 mov.w ip, #2147483648 @ 0x80000000 - 800097e: e7b6 b.n 80008ee <__aeabi_ddiv+0x82> - 8000980: f411 1f80 tst.w r1, #1048576 @ 0x100000 - 8000984: bf04 itt eq - 8000986: 4301 orreq r1, r0 - 8000988: 2000 moveq r0, #0 - 800098a: f1b4 0cfd subs.w ip, r4, #253 @ 0xfd - 800098e: bf88 it hi - 8000990: f5bc 6fe0 cmphi.w ip, #1792 @ 0x700 - 8000994: f63f aeaf bhi.w 80006f6 <__aeabi_dmul+0xde> - 8000998: ebb5 0c03 subs.w ip, r5, r3 - 800099c: bf04 itt eq - 800099e: ebb6 0c02 subseq.w ip, r6, r2 - 80009a2: ea5f 0c50 movseq.w ip, r0, lsr #1 - 80009a6: f150 0000 adcs.w r0, r0, #0 - 80009aa: eb41 5104 adc.w r1, r1, r4, lsl #20 - 80009ae: bd70 pop {r4, r5, r6, pc} - 80009b0: f00e 4e00 and.w lr, lr, #2147483648 @ 0x80000000 - 80009b4: ea4e 3111 orr.w r1, lr, r1, lsr #12 - 80009b8: eb14 045c adds.w r4, r4, ip, lsr #1 - 80009bc: bfc2 ittt gt - 80009be: ebd4 050c rsbsgt r5, r4, ip - 80009c2: ea41 5104 orrgt.w r1, r1, r4, lsl #20 - 80009c6: bd70 popgt {r4, r5, r6, pc} - 80009c8: f441 1180 orr.w r1, r1, #1048576 @ 0x100000 - 80009cc: f04f 0e00 mov.w lr, #0 - 80009d0: 3c01 subs r4, #1 - 80009d2: e690 b.n 80006f6 <__aeabi_dmul+0xde> - 80009d4: ea45 0e06 orr.w lr, r5, r6 - 80009d8: e68d b.n 80006f6 <__aeabi_dmul+0xde> - 80009da: ea0c 5513 and.w r5, ip, r3, lsr #20 - 80009de: ea94 0f0c teq r4, ip - 80009e2: bf08 it eq - 80009e4: ea95 0f0c teqeq r5, ip - 80009e8: f43f af3b beq.w 8000862 <__aeabi_dmul+0x24a> - 80009ec: ea94 0f0c teq r4, ip - 80009f0: d10a bne.n 8000a08 <__aeabi_ddiv+0x19c> - 80009f2: ea50 3401 orrs.w r4, r0, r1, lsl #12 - 80009f6: f47f af34 bne.w 8000862 <__aeabi_dmul+0x24a> - 80009fa: ea95 0f0c teq r5, ip - 80009fe: f47f af25 bne.w 800084c <__aeabi_dmul+0x234> - 8000a02: 4610 mov r0, r2 - 8000a04: 4619 mov r1, r3 - 8000a06: e72c b.n 8000862 <__aeabi_dmul+0x24a> - 8000a08: ea95 0f0c teq r5, ip - 8000a0c: d106 bne.n 8000a1c <__aeabi_ddiv+0x1b0> - 8000a0e: ea52 3503 orrs.w r5, r2, r3, lsl #12 - 8000a12: f43f aefd beq.w 8000810 <__aeabi_dmul+0x1f8> - 8000a16: 4610 mov r0, r2 - 8000a18: 4619 mov r1, r3 - 8000a1a: e722 b.n 8000862 <__aeabi_dmul+0x24a> - 8000a1c: ea50 0641 orrs.w r6, r0, r1, lsl #1 - 8000a20: bf18 it ne - 8000a22: ea52 0643 orrsne.w r6, r2, r3, lsl #1 - 8000a26: f47f aec5 bne.w 80007b4 <__aeabi_dmul+0x19c> - 8000a2a: ea50 0441 orrs.w r4, r0, r1, lsl #1 - 8000a2e: f47f af0d bne.w 800084c <__aeabi_dmul+0x234> - 8000a32: ea52 0543 orrs.w r5, r2, r3, lsl #1 - 8000a36: f47f aeeb bne.w 8000810 <__aeabi_dmul+0x1f8> - 8000a3a: e712 b.n 8000862 <__aeabi_dmul+0x24a> - -08000a3c <__gedf2>: - 8000a3c: f04f 3cff mov.w ip, #4294967295 - 8000a40: e006 b.n 8000a50 <__cmpdf2+0x4> - 8000a42: bf00 nop - -08000a44 <__ledf2>: - 8000a44: f04f 0c01 mov.w ip, #1 - 8000a48: e002 b.n 8000a50 <__cmpdf2+0x4> - 8000a4a: bf00 nop - -08000a4c <__cmpdf2>: - 8000a4c: f04f 0c01 mov.w ip, #1 - 8000a50: f84d cd04 str.w ip, [sp, #-4]! - 8000a54: ea4f 0c41 mov.w ip, r1, lsl #1 - 8000a58: ea7f 5c6c mvns.w ip, ip, asr #21 - 8000a5c: ea4f 0c43 mov.w ip, r3, lsl #1 - 8000a60: bf18 it ne - 8000a62: ea7f 5c6c mvnsne.w ip, ip, asr #21 - 8000a66: d01b beq.n 8000aa0 <__cmpdf2+0x54> - 8000a68: b001 add sp, #4 - 8000a6a: ea50 0c41 orrs.w ip, r0, r1, lsl #1 - 8000a6e: bf0c ite eq - 8000a70: ea52 0c43 orrseq.w ip, r2, r3, lsl #1 - 8000a74: ea91 0f03 teqne r1, r3 - 8000a78: bf02 ittt eq - 8000a7a: ea90 0f02 teqeq r0, r2 - 8000a7e: 2000 moveq r0, #0 - 8000a80: 4770 bxeq lr - 8000a82: f110 0f00 cmn.w r0, #0 - 8000a86: ea91 0f03 teq r1, r3 - 8000a8a: bf58 it pl - 8000a8c: 4299 cmppl r1, r3 - 8000a8e: bf08 it eq - 8000a90: 4290 cmpeq r0, r2 - 8000a92: bf2c ite cs - 8000a94: 17d8 asrcs r0, r3, #31 - 8000a96: ea6f 70e3 mvncc.w r0, r3, asr #31 - 8000a9a: f040 0001 orr.w r0, r0, #1 - 8000a9e: 4770 bx lr - 8000aa0: ea4f 0c41 mov.w ip, r1, lsl #1 - 8000aa4: ea7f 5c6c mvns.w ip, ip, asr #21 - 8000aa8: d102 bne.n 8000ab0 <__cmpdf2+0x64> - 8000aaa: ea50 3c01 orrs.w ip, r0, r1, lsl #12 - 8000aae: d107 bne.n 8000ac0 <__cmpdf2+0x74> - 8000ab0: ea4f 0c43 mov.w ip, r3, lsl #1 - 8000ab4: ea7f 5c6c mvns.w ip, ip, asr #21 - 8000ab8: d1d6 bne.n 8000a68 <__cmpdf2+0x1c> - 8000aba: ea52 3c03 orrs.w ip, r2, r3, lsl #12 - 8000abe: d0d3 beq.n 8000a68 <__cmpdf2+0x1c> - 8000ac0: f85d 0b04 ldr.w r0, [sp], #4 - 8000ac4: 4770 bx lr - 8000ac6: bf00 nop - -08000ac8 <__aeabi_cdrcmple>: - 8000ac8: 4684 mov ip, r0 - 8000aca: 4610 mov r0, r2 - 8000acc: 4662 mov r2, ip - 8000ace: 468c mov ip, r1 - 8000ad0: 4619 mov r1, r3 - 8000ad2: 4663 mov r3, ip - 8000ad4: e000 b.n 8000ad8 <__aeabi_cdcmpeq> - 8000ad6: bf00 nop - -08000ad8 <__aeabi_cdcmpeq>: - 8000ad8: b501 push {r0, lr} - 8000ada: f7ff ffb7 bl 8000a4c <__cmpdf2> - 8000ade: 2800 cmp r0, #0 - 8000ae0: bf48 it mi - 8000ae2: f110 0f00 cmnmi.w r0, #0 - 8000ae6: bd01 pop {r0, pc} - -08000ae8 <__aeabi_dcmpeq>: - 8000ae8: f84d ed08 str.w lr, [sp, #-8]! - 8000aec: f7ff fff4 bl 8000ad8 <__aeabi_cdcmpeq> - 8000af0: bf0c ite eq - 8000af2: 2001 moveq r0, #1 - 8000af4: 2000 movne r0, #0 - 8000af6: f85d fb08 ldr.w pc, [sp], #8 - 8000afa: bf00 nop - -08000afc <__aeabi_dcmplt>: - 8000afc: f84d ed08 str.w lr, [sp, #-8]! - 8000b00: f7ff ffea bl 8000ad8 <__aeabi_cdcmpeq> - 8000b04: bf34 ite cc - 8000b06: 2001 movcc r0, #1 - 8000b08: 2000 movcs r0, #0 - 8000b0a: f85d fb08 ldr.w pc, [sp], #8 - 8000b0e: bf00 nop - -08000b10 <__aeabi_dcmple>: - 8000b10: f84d ed08 str.w lr, [sp, #-8]! - 8000b14: f7ff ffe0 bl 8000ad8 <__aeabi_cdcmpeq> - 8000b18: bf94 ite ls - 8000b1a: 2001 movls r0, #1 - 8000b1c: 2000 movhi r0, #0 - 8000b1e: f85d fb08 ldr.w pc, [sp], #8 - 8000b22: bf00 nop - -08000b24 <__aeabi_dcmpge>: - 8000b24: f84d ed08 str.w lr, [sp, #-8]! - 8000b28: f7ff ffce bl 8000ac8 <__aeabi_cdrcmple> - 8000b2c: bf94 ite ls - 8000b2e: 2001 movls r0, #1 - 8000b30: 2000 movhi r0, #0 - 8000b32: f85d fb08 ldr.w pc, [sp], #8 - 8000b36: bf00 nop - -08000b38 <__aeabi_dcmpgt>: - 8000b38: f84d ed08 str.w lr, [sp, #-8]! - 8000b3c: f7ff ffc4 bl 8000ac8 <__aeabi_cdrcmple> - 8000b40: bf34 ite cc - 8000b42: 2001 movcc r0, #1 - 8000b44: 2000 movcs r0, #0 - 8000b46: f85d fb08 ldr.w pc, [sp], #8 - 8000b4a: bf00 nop - -08000b4c <__aeabi_dcmpun>: - 8000b4c: ea4f 0c41 mov.w ip, r1, lsl #1 - 8000b50: ea7f 5c6c mvns.w ip, ip, asr #21 - 8000b54: d102 bne.n 8000b5c <__aeabi_dcmpun+0x10> - 8000b56: ea50 3c01 orrs.w ip, r0, r1, lsl #12 - 8000b5a: d10a bne.n 8000b72 <__aeabi_dcmpun+0x26> - 8000b5c: ea4f 0c43 mov.w ip, r3, lsl #1 - 8000b60: ea7f 5c6c mvns.w ip, ip, asr #21 - 8000b64: d102 bne.n 8000b6c <__aeabi_dcmpun+0x20> - 8000b66: ea52 3c03 orrs.w ip, r2, r3, lsl #12 - 8000b6a: d102 bne.n 8000b72 <__aeabi_dcmpun+0x26> - 8000b6c: f04f 0000 mov.w r0, #0 - 8000b70: 4770 bx lr - 8000b72: f04f 0001 mov.w r0, #1 - 8000b76: 4770 bx lr - -08000b78 <__aeabi_d2iz>: - 8000b78: ea4f 0241 mov.w r2, r1, lsl #1 - 8000b7c: f512 1200 adds.w r2, r2, #2097152 @ 0x200000 - 8000b80: d215 bcs.n 8000bae <__aeabi_d2iz+0x36> - 8000b82: d511 bpl.n 8000ba8 <__aeabi_d2iz+0x30> - 8000b84: f46f 7378 mvn.w r3, #992 @ 0x3e0 - 8000b88: ebb3 5262 subs.w r2, r3, r2, asr #21 - 8000b8c: d912 bls.n 8000bb4 <__aeabi_d2iz+0x3c> - 8000b8e: ea4f 23c1 mov.w r3, r1, lsl #11 - 8000b92: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 - 8000b96: ea43 5350 orr.w r3, r3, r0, lsr #21 - 8000b9a: f011 4f00 tst.w r1, #2147483648 @ 0x80000000 - 8000b9e: fa23 f002 lsr.w r0, r3, r2 - 8000ba2: bf18 it ne - 8000ba4: 4240 negne r0, r0 - 8000ba6: 4770 bx lr - 8000ba8: f04f 0000 mov.w r0, #0 - 8000bac: 4770 bx lr - 8000bae: ea50 3001 orrs.w r0, r0, r1, lsl #12 - 8000bb2: d105 bne.n 8000bc0 <__aeabi_d2iz+0x48> - 8000bb4: f011 4000 ands.w r0, r1, #2147483648 @ 0x80000000 - 8000bb8: bf08 it eq - 8000bba: f06f 4000 mvneq.w r0, #2147483648 @ 0x80000000 - 8000bbe: 4770 bx lr - 8000bc0: f04f 0000 mov.w r0, #0 - 8000bc4: 4770 bx lr - 8000bc6: bf00 nop - -08000bc8 <__aeabi_uldivmod>: - 8000bc8: b953 cbnz r3, 8000be0 <__aeabi_uldivmod+0x18> - 8000bca: b94a cbnz r2, 8000be0 <__aeabi_uldivmod+0x18> - 8000bcc: 2900 cmp r1, #0 - 8000bce: bf08 it eq - 8000bd0: 2800 cmpeq r0, #0 - 8000bd2: bf1c itt ne - 8000bd4: f04f 31ff movne.w r1, #4294967295 - 8000bd8: f04f 30ff movne.w r0, #4294967295 - 8000bdc: f000 b96a b.w 8000eb4 <__aeabi_idiv0> - 8000be0: f1ad 0c08 sub.w ip, sp, #8 - 8000be4: e96d ce04 strd ip, lr, [sp, #-16]! - 8000be8: f000 f806 bl 8000bf8 <__udivmoddi4> - 8000bec: f8dd e004 ldr.w lr, [sp, #4] - 8000bf0: e9dd 2302 ldrd r2, r3, [sp, #8] - 8000bf4: b004 add sp, #16 - 8000bf6: 4770 bx lr - -08000bf8 <__udivmoddi4>: - 8000bf8: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 8000bfc: 9d08 ldr r5, [sp, #32] - 8000bfe: 460c mov r4, r1 - 8000c00: 2b00 cmp r3, #0 - 8000c02: d14e bne.n 8000ca2 <__udivmoddi4+0xaa> - 8000c04: 4694 mov ip, r2 - 8000c06: 458c cmp ip, r1 - 8000c08: 4686 mov lr, r0 - 8000c0a: fab2 f282 clz r2, r2 - 8000c0e: d962 bls.n 8000cd6 <__udivmoddi4+0xde> - 8000c10: b14a cbz r2, 8000c26 <__udivmoddi4+0x2e> - 8000c12: f1c2 0320 rsb r3, r2, #32 - 8000c16: 4091 lsls r1, r2 - 8000c18: fa20 f303 lsr.w r3, r0, r3 - 8000c1c: fa0c fc02 lsl.w ip, ip, r2 - 8000c20: 4319 orrs r1, r3 - 8000c22: fa00 fe02 lsl.w lr, r0, r2 - 8000c26: ea4f 471c mov.w r7, ip, lsr #16 - 8000c2a: fa1f f68c uxth.w r6, ip - 8000c2e: fbb1 f4f7 udiv r4, r1, r7 - 8000c32: ea4f 431e mov.w r3, lr, lsr #16 - 8000c36: fb07 1114 mls r1, r7, r4, r1 - 8000c3a: ea43 4301 orr.w r3, r3, r1, lsl #16 - 8000c3e: fb04 f106 mul.w r1, r4, r6 - 8000c42: 4299 cmp r1, r3 - 8000c44: d90a bls.n 8000c5c <__udivmoddi4+0x64> - 8000c46: eb1c 0303 adds.w r3, ip, r3 - 8000c4a: f104 30ff add.w r0, r4, #4294967295 - 8000c4e: f080 8112 bcs.w 8000e76 <__udivmoddi4+0x27e> - 8000c52: 4299 cmp r1, r3 - 8000c54: f240 810f bls.w 8000e76 <__udivmoddi4+0x27e> - 8000c58: 3c02 subs r4, #2 - 8000c5a: 4463 add r3, ip - 8000c5c: 1a59 subs r1, r3, r1 - 8000c5e: fa1f f38e uxth.w r3, lr - 8000c62: fbb1 f0f7 udiv r0, r1, r7 - 8000c66: fb07 1110 mls r1, r7, r0, r1 - 8000c6a: ea43 4301 orr.w r3, r3, r1, lsl #16 - 8000c6e: fb00 f606 mul.w r6, r0, r6 - 8000c72: 429e cmp r6, r3 - 8000c74: d90a bls.n 8000c8c <__udivmoddi4+0x94> - 8000c76: eb1c 0303 adds.w r3, ip, r3 - 8000c7a: f100 31ff add.w r1, r0, #4294967295 - 8000c7e: f080 80fc bcs.w 8000e7a <__udivmoddi4+0x282> - 8000c82: 429e cmp r6, r3 - 8000c84: f240 80f9 bls.w 8000e7a <__udivmoddi4+0x282> - 8000c88: 4463 add r3, ip - 8000c8a: 3802 subs r0, #2 - 8000c8c: 1b9b subs r3, r3, r6 - 8000c8e: ea40 4004 orr.w r0, r0, r4, lsl #16 - 8000c92: 2100 movs r1, #0 - 8000c94: b11d cbz r5, 8000c9e <__udivmoddi4+0xa6> - 8000c96: 40d3 lsrs r3, r2 - 8000c98: 2200 movs r2, #0 - 8000c9a: e9c5 3200 strd r3, r2, [r5] - 8000c9e: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 8000ca2: 428b cmp r3, r1 - 8000ca4: d905 bls.n 8000cb2 <__udivmoddi4+0xba> - 8000ca6: b10d cbz r5, 8000cac <__udivmoddi4+0xb4> - 8000ca8: e9c5 0100 strd r0, r1, [r5] - 8000cac: 2100 movs r1, #0 - 8000cae: 4608 mov r0, r1 - 8000cb0: e7f5 b.n 8000c9e <__udivmoddi4+0xa6> - 8000cb2: fab3 f183 clz r1, r3 - 8000cb6: 2900 cmp r1, #0 - 8000cb8: d146 bne.n 8000d48 <__udivmoddi4+0x150> - 8000cba: 42a3 cmp r3, r4 - 8000cbc: d302 bcc.n 8000cc4 <__udivmoddi4+0xcc> - 8000cbe: 4290 cmp r0, r2 - 8000cc0: f0c0 80f0 bcc.w 8000ea4 <__udivmoddi4+0x2ac> - 8000cc4: 1a86 subs r6, r0, r2 - 8000cc6: eb64 0303 sbc.w r3, r4, r3 - 8000cca: 2001 movs r0, #1 - 8000ccc: 2d00 cmp r5, #0 - 8000cce: d0e6 beq.n 8000c9e <__udivmoddi4+0xa6> - 8000cd0: e9c5 6300 strd r6, r3, [r5] - 8000cd4: e7e3 b.n 8000c9e <__udivmoddi4+0xa6> - 8000cd6: 2a00 cmp r2, #0 - 8000cd8: f040 8090 bne.w 8000dfc <__udivmoddi4+0x204> - 8000cdc: eba1 040c sub.w r4, r1, ip - 8000ce0: ea4f 481c mov.w r8, ip, lsr #16 - 8000ce4: fa1f f78c uxth.w r7, ip - 8000ce8: 2101 movs r1, #1 - 8000cea: fbb4 f6f8 udiv r6, r4, r8 - 8000cee: ea4f 431e mov.w r3, lr, lsr #16 - 8000cf2: fb08 4416 mls r4, r8, r6, r4 - 8000cf6: ea43 4304 orr.w r3, r3, r4, lsl #16 - 8000cfa: fb07 f006 mul.w r0, r7, r6 - 8000cfe: 4298 cmp r0, r3 - 8000d00: d908 bls.n 8000d14 <__udivmoddi4+0x11c> - 8000d02: eb1c 0303 adds.w r3, ip, r3 - 8000d06: f106 34ff add.w r4, r6, #4294967295 - 8000d0a: d202 bcs.n 8000d12 <__udivmoddi4+0x11a> - 8000d0c: 4298 cmp r0, r3 - 8000d0e: f200 80cd bhi.w 8000eac <__udivmoddi4+0x2b4> - 8000d12: 4626 mov r6, r4 - 8000d14: 1a1c subs r4, r3, r0 - 8000d16: fa1f f38e uxth.w r3, lr - 8000d1a: fbb4 f0f8 udiv r0, r4, r8 - 8000d1e: fb08 4410 mls r4, r8, r0, r4 - 8000d22: ea43 4304 orr.w r3, r3, r4, lsl #16 - 8000d26: fb00 f707 mul.w r7, r0, r7 - 8000d2a: 429f cmp r7, r3 - 8000d2c: d908 bls.n 8000d40 <__udivmoddi4+0x148> - 8000d2e: eb1c 0303 adds.w r3, ip, r3 - 8000d32: f100 34ff add.w r4, r0, #4294967295 - 8000d36: d202 bcs.n 8000d3e <__udivmoddi4+0x146> - 8000d38: 429f cmp r7, r3 - 8000d3a: f200 80b0 bhi.w 8000e9e <__udivmoddi4+0x2a6> - 8000d3e: 4620 mov r0, r4 - 8000d40: 1bdb subs r3, r3, r7 - 8000d42: ea40 4006 orr.w r0, r0, r6, lsl #16 - 8000d46: e7a5 b.n 8000c94 <__udivmoddi4+0x9c> - 8000d48: f1c1 0620 rsb r6, r1, #32 - 8000d4c: 408b lsls r3, r1 - 8000d4e: fa22 f706 lsr.w r7, r2, r6 - 8000d52: 431f orrs r7, r3 - 8000d54: fa20 fc06 lsr.w ip, r0, r6 - 8000d58: fa04 f301 lsl.w r3, r4, r1 - 8000d5c: ea43 030c orr.w r3, r3, ip - 8000d60: 40f4 lsrs r4, r6 - 8000d62: fa00 f801 lsl.w r8, r0, r1 - 8000d66: 0c38 lsrs r0, r7, #16 - 8000d68: ea4f 4913 mov.w r9, r3, lsr #16 - 8000d6c: fbb4 fef0 udiv lr, r4, r0 - 8000d70: fa1f fc87 uxth.w ip, r7 - 8000d74: fb00 441e mls r4, r0, lr, r4 - 8000d78: ea49 4404 orr.w r4, r9, r4, lsl #16 - 8000d7c: fb0e f90c mul.w r9, lr, ip - 8000d80: 45a1 cmp r9, r4 - 8000d82: fa02 f201 lsl.w r2, r2, r1 - 8000d86: d90a bls.n 8000d9e <__udivmoddi4+0x1a6> - 8000d88: 193c adds r4, r7, r4 - 8000d8a: f10e 3aff add.w sl, lr, #4294967295 - 8000d8e: f080 8084 bcs.w 8000e9a <__udivmoddi4+0x2a2> - 8000d92: 45a1 cmp r9, r4 - 8000d94: f240 8081 bls.w 8000e9a <__udivmoddi4+0x2a2> - 8000d98: f1ae 0e02 sub.w lr, lr, #2 - 8000d9c: 443c add r4, r7 - 8000d9e: eba4 0409 sub.w r4, r4, r9 - 8000da2: fa1f f983 uxth.w r9, r3 - 8000da6: fbb4 f3f0 udiv r3, r4, r0 - 8000daa: fb00 4413 mls r4, r0, r3, r4 - 8000dae: ea49 4404 orr.w r4, r9, r4, lsl #16 - 8000db2: fb03 fc0c mul.w ip, r3, ip - 8000db6: 45a4 cmp ip, r4 - 8000db8: d907 bls.n 8000dca <__udivmoddi4+0x1d2> - 8000dba: 193c adds r4, r7, r4 - 8000dbc: f103 30ff add.w r0, r3, #4294967295 - 8000dc0: d267 bcs.n 8000e92 <__udivmoddi4+0x29a> - 8000dc2: 45a4 cmp ip, r4 - 8000dc4: d965 bls.n 8000e92 <__udivmoddi4+0x29a> - 8000dc6: 3b02 subs r3, #2 - 8000dc8: 443c add r4, r7 - 8000dca: ea43 400e orr.w r0, r3, lr, lsl #16 - 8000dce: fba0 9302 umull r9, r3, r0, r2 - 8000dd2: eba4 040c sub.w r4, r4, ip - 8000dd6: 429c cmp r4, r3 - 8000dd8: 46ce mov lr, r9 - 8000dda: 469c mov ip, r3 - 8000ddc: d351 bcc.n 8000e82 <__udivmoddi4+0x28a> - 8000dde: d04e beq.n 8000e7e <__udivmoddi4+0x286> - 8000de0: b155 cbz r5, 8000df8 <__udivmoddi4+0x200> - 8000de2: ebb8 030e subs.w r3, r8, lr - 8000de6: eb64 040c sbc.w r4, r4, ip - 8000dea: fa04 f606 lsl.w r6, r4, r6 - 8000dee: 40cb lsrs r3, r1 - 8000df0: 431e orrs r6, r3 - 8000df2: 40cc lsrs r4, r1 - 8000df4: e9c5 6400 strd r6, r4, [r5] - 8000df8: 2100 movs r1, #0 - 8000dfa: e750 b.n 8000c9e <__udivmoddi4+0xa6> - 8000dfc: f1c2 0320 rsb r3, r2, #32 - 8000e00: fa20 f103 lsr.w r1, r0, r3 - 8000e04: fa0c fc02 lsl.w ip, ip, r2 - 8000e08: fa24 f303 lsr.w r3, r4, r3 - 8000e0c: 4094 lsls r4, r2 - 8000e0e: 430c orrs r4, r1 - 8000e10: ea4f 481c mov.w r8, ip, lsr #16 - 8000e14: fa00 fe02 lsl.w lr, r0, r2 - 8000e18: fa1f f78c uxth.w r7, ip - 8000e1c: fbb3 f0f8 udiv r0, r3, r8 - 8000e20: fb08 3110 mls r1, r8, r0, r3 - 8000e24: 0c23 lsrs r3, r4, #16 - 8000e26: ea43 4301 orr.w r3, r3, r1, lsl #16 - 8000e2a: fb00 f107 mul.w r1, r0, r7 - 8000e2e: 4299 cmp r1, r3 - 8000e30: d908 bls.n 8000e44 <__udivmoddi4+0x24c> - 8000e32: eb1c 0303 adds.w r3, ip, r3 - 8000e36: f100 36ff add.w r6, r0, #4294967295 - 8000e3a: d22c bcs.n 8000e96 <__udivmoddi4+0x29e> - 8000e3c: 4299 cmp r1, r3 - 8000e3e: d92a bls.n 8000e96 <__udivmoddi4+0x29e> - 8000e40: 3802 subs r0, #2 - 8000e42: 4463 add r3, ip - 8000e44: 1a5b subs r3, r3, r1 - 8000e46: b2a4 uxth r4, r4 - 8000e48: fbb3 f1f8 udiv r1, r3, r8 - 8000e4c: fb08 3311 mls r3, r8, r1, r3 - 8000e50: ea44 4403 orr.w r4, r4, r3, lsl #16 - 8000e54: fb01 f307 mul.w r3, r1, r7 - 8000e58: 42a3 cmp r3, r4 - 8000e5a: d908 bls.n 8000e6e <__udivmoddi4+0x276> - 8000e5c: eb1c 0404 adds.w r4, ip, r4 - 8000e60: f101 36ff add.w r6, r1, #4294967295 - 8000e64: d213 bcs.n 8000e8e <__udivmoddi4+0x296> - 8000e66: 42a3 cmp r3, r4 - 8000e68: d911 bls.n 8000e8e <__udivmoddi4+0x296> - 8000e6a: 3902 subs r1, #2 - 8000e6c: 4464 add r4, ip - 8000e6e: 1ae4 subs r4, r4, r3 - 8000e70: ea41 4100 orr.w r1, r1, r0, lsl #16 - 8000e74: e739 b.n 8000cea <__udivmoddi4+0xf2> - 8000e76: 4604 mov r4, r0 - 8000e78: e6f0 b.n 8000c5c <__udivmoddi4+0x64> - 8000e7a: 4608 mov r0, r1 - 8000e7c: e706 b.n 8000c8c <__udivmoddi4+0x94> - 8000e7e: 45c8 cmp r8, r9 - 8000e80: d2ae bcs.n 8000de0 <__udivmoddi4+0x1e8> - 8000e82: ebb9 0e02 subs.w lr, r9, r2 - 8000e86: eb63 0c07 sbc.w ip, r3, r7 - 8000e8a: 3801 subs r0, #1 - 8000e8c: e7a8 b.n 8000de0 <__udivmoddi4+0x1e8> - 8000e8e: 4631 mov r1, r6 - 8000e90: e7ed b.n 8000e6e <__udivmoddi4+0x276> - 8000e92: 4603 mov r3, r0 - 8000e94: e799 b.n 8000dca <__udivmoddi4+0x1d2> - 8000e96: 4630 mov r0, r6 - 8000e98: e7d4 b.n 8000e44 <__udivmoddi4+0x24c> - 8000e9a: 46d6 mov lr, sl - 8000e9c: e77f b.n 8000d9e <__udivmoddi4+0x1a6> - 8000e9e: 4463 add r3, ip - 8000ea0: 3802 subs r0, #2 - 8000ea2: e74d b.n 8000d40 <__udivmoddi4+0x148> - 8000ea4: 4606 mov r6, r0 - 8000ea6: 4623 mov r3, r4 - 8000ea8: 4608 mov r0, r1 - 8000eaa: e70f b.n 8000ccc <__udivmoddi4+0xd4> - 8000eac: 3e02 subs r6, #2 - 8000eae: 4463 add r3, ip - 8000eb0: e730 b.n 8000d14 <__udivmoddi4+0x11c> - 8000eb2: bf00 nop - -08000eb4 <__aeabi_idiv0>: - 8000eb4: 4770 bx lr - 8000eb6: bf00 nop - -08000eb8 : - * Sector 4 as 64KB - * Sector 5 to Sector 7 each 128KB - */ - -static uint32_t GetSector(uint32_t Address) -{ - 8000eb8: b480 push {r7} - 8000eba: b085 sub sp, #20 - 8000ebc: af00 add r7, sp, #0 - 8000ebe: 6078 str r0, [r7, #4] - uint32_t sector = 0; - 8000ec0: 2300 movs r3, #0 - 8000ec2: 60fb str r3, [r7, #12] - - if((Address < 0x08003FFF) && (Address >= 0x08000000)) - 8000ec4: 687b ldr r3, [r7, #4] - 8000ec6: 4a86 ldr r2, [pc, #536] @ (80010e0 ) - 8000ec8: 4293 cmp r3, r2 - 8000eca: d806 bhi.n 8000eda - 8000ecc: 687b ldr r3, [r7, #4] - 8000ece: f1b3 6f00 cmp.w r3, #134217728 @ 0x8000000 - 8000ed2: d302 bcc.n 8000eda - { - sector = FLASH_SECTOR_0; - 8000ed4: 2300 movs r3, #0 - 8000ed6: 60fb str r3, [r7, #12] - 8000ed8: e0fb b.n 80010d2 - } - else if((Address < 0x08007FFF) && (Address >= 0x08004000)) - 8000eda: 687b ldr r3, [r7, #4] - 8000edc: 4a81 ldr r2, [pc, #516] @ (80010e4 ) - 8000ede: 4293 cmp r3, r2 - 8000ee0: d806 bhi.n 8000ef0 - 8000ee2: 687b ldr r3, [r7, #4] - 8000ee4: 4a80 ldr r2, [pc, #512] @ (80010e8 ) - 8000ee6: 4293 cmp r3, r2 - 8000ee8: d302 bcc.n 8000ef0 - { - sector = FLASH_SECTOR_1; - 8000eea: 2301 movs r3, #1 - 8000eec: 60fb str r3, [r7, #12] - 8000eee: e0f0 b.n 80010d2 - } - else if((Address < 0x0800BFFF) && (Address >= 0x08008000)) - 8000ef0: 687b ldr r3, [r7, #4] - 8000ef2: 4a7e ldr r2, [pc, #504] @ (80010ec ) - 8000ef4: 4293 cmp r3, r2 - 8000ef6: d806 bhi.n 8000f06 - 8000ef8: 687b ldr r3, [r7, #4] - 8000efa: 4a7d ldr r2, [pc, #500] @ (80010f0 ) - 8000efc: 4293 cmp r3, r2 - 8000efe: d302 bcc.n 8000f06 - { - sector = FLASH_SECTOR_2; - 8000f00: 2302 movs r3, #2 - 8000f02: 60fb str r3, [r7, #12] - 8000f04: e0e5 b.n 80010d2 - } - else if((Address < 0x0800FFFF) && (Address >= 0x0800C000)) - 8000f06: 687b ldr r3, [r7, #4] - 8000f08: 4a7a ldr r2, [pc, #488] @ (80010f4 ) - 8000f0a: 4293 cmp r3, r2 - 8000f0c: d206 bcs.n 8000f1c - 8000f0e: 687b ldr r3, [r7, #4] - 8000f10: 4a79 ldr r2, [pc, #484] @ (80010f8 ) - 8000f12: 4293 cmp r3, r2 - 8000f14: d302 bcc.n 8000f1c - { - sector = FLASH_SECTOR_3; - 8000f16: 2303 movs r3, #3 - 8000f18: 60fb str r3, [r7, #12] - 8000f1a: e0da b.n 80010d2 - } - else if((Address < 0x0801FFFF) && (Address >= 0x08010000)) - 8000f1c: 687b ldr r3, [r7, #4] - 8000f1e: 4a77 ldr r2, [pc, #476] @ (80010fc ) - 8000f20: 4293 cmp r3, r2 - 8000f22: d206 bcs.n 8000f32 - 8000f24: 687b ldr r3, [r7, #4] - 8000f26: 4a73 ldr r2, [pc, #460] @ (80010f4 ) - 8000f28: 4293 cmp r3, r2 - 8000f2a: d902 bls.n 8000f32 - { - sector = FLASH_SECTOR_4; - 8000f2c: 2304 movs r3, #4 - 8000f2e: 60fb str r3, [r7, #12] - 8000f30: e0cf b.n 80010d2 - } - else if((Address < 0x0803FFFF) && (Address >= 0x08020000)) - 8000f32: 687b ldr r3, [r7, #4] - 8000f34: 4a72 ldr r2, [pc, #456] @ (8001100 ) - 8000f36: 4293 cmp r3, r2 - 8000f38: d206 bcs.n 8000f48 - 8000f3a: 687b ldr r3, [r7, #4] - 8000f3c: 4a6f ldr r2, [pc, #444] @ (80010fc ) - 8000f3e: 4293 cmp r3, r2 - 8000f40: d902 bls.n 8000f48 - { - sector = FLASH_SECTOR_5; - 8000f42: 2305 movs r3, #5 - 8000f44: 60fb str r3, [r7, #12] - 8000f46: e0c4 b.n 80010d2 - } - else if((Address < 0x0805FFFF) && (Address >= 0x08040000)) - 8000f48: 687b ldr r3, [r7, #4] - 8000f4a: 4a6e ldr r2, [pc, #440] @ (8001104 ) - 8000f4c: 4293 cmp r3, r2 - 8000f4e: d206 bcs.n 8000f5e - 8000f50: 687b ldr r3, [r7, #4] - 8000f52: 4a6b ldr r2, [pc, #428] @ (8001100 ) - 8000f54: 4293 cmp r3, r2 - 8000f56: d902 bls.n 8000f5e - { - sector = FLASH_SECTOR_6; - 8000f58: 2306 movs r3, #6 - 8000f5a: 60fb str r3, [r7, #12] - 8000f5c: e0b9 b.n 80010d2 - } - else if((Address < 0x0807FFFF) && (Address >= 0x08060000)) - 8000f5e: 687b ldr r3, [r7, #4] - 8000f60: 4a69 ldr r2, [pc, #420] @ (8001108 ) - 8000f62: 4293 cmp r3, r2 - 8000f64: d206 bcs.n 8000f74 - 8000f66: 687b ldr r3, [r7, #4] - 8000f68: 4a66 ldr r2, [pc, #408] @ (8001104 ) - 8000f6a: 4293 cmp r3, r2 - 8000f6c: d902 bls.n 8000f74 - { - sector = FLASH_SECTOR_7; - 8000f6e: 2307 movs r3, #7 - 8000f70: 60fb str r3, [r7, #12] - 8000f72: e0ae b.n 80010d2 - } - else if((Address < 0x0809FFFF) && (Address >= 0x08080000)) - 8000f74: 687b ldr r3, [r7, #4] - 8000f76: 4a65 ldr r2, [pc, #404] @ (800110c ) - 8000f78: 4293 cmp r3, r2 - 8000f7a: d206 bcs.n 8000f8a - 8000f7c: 687b ldr r3, [r7, #4] - 8000f7e: 4a62 ldr r2, [pc, #392] @ (8001108 ) - 8000f80: 4293 cmp r3, r2 - 8000f82: d902 bls.n 8000f8a - { - sector = FLASH_SECTOR_8; - 8000f84: 2308 movs r3, #8 - 8000f86: 60fb str r3, [r7, #12] - 8000f88: e0a3 b.n 80010d2 - } - else if((Address < 0x080BFFFF) && (Address >= 0x080A0000)) - 8000f8a: 687b ldr r3, [r7, #4] - 8000f8c: 4a60 ldr r2, [pc, #384] @ (8001110 ) - 8000f8e: 4293 cmp r3, r2 - 8000f90: d206 bcs.n 8000fa0 - 8000f92: 687b ldr r3, [r7, #4] - 8000f94: 4a5d ldr r2, [pc, #372] @ (800110c ) - 8000f96: 4293 cmp r3, r2 - 8000f98: d902 bls.n 8000fa0 - { - sector = FLASH_SECTOR_9; - 8000f9a: 2309 movs r3, #9 - 8000f9c: 60fb str r3, [r7, #12] - 8000f9e: e098 b.n 80010d2 - } - else if((Address < 0x080DFFFF) && (Address >= 0x080C0000)) - 8000fa0: 687b ldr r3, [r7, #4] - 8000fa2: 4a5c ldr r2, [pc, #368] @ (8001114 ) - 8000fa4: 4293 cmp r3, r2 - 8000fa6: d806 bhi.n 8000fb6 - 8000fa8: 687b ldr r3, [r7, #4] - 8000faa: 4a59 ldr r2, [pc, #356] @ (8001110 ) - 8000fac: 4293 cmp r3, r2 - 8000fae: d902 bls.n 8000fb6 - { - sector = FLASH_SECTOR_10; - 8000fb0: 230a movs r3, #10 - 8000fb2: 60fb str r3, [r7, #12] - 8000fb4: e08d b.n 80010d2 - } - else if((Address < 0x080FFFFF) && (Address >= 0x080E0000)) - 8000fb6: 687b ldr r3, [r7, #4] - 8000fb8: 4a57 ldr r2, [pc, #348] @ (8001118 ) - 8000fba: 4293 cmp r3, r2 - 8000fbc: d806 bhi.n 8000fcc - 8000fbe: 687b ldr r3, [r7, #4] - 8000fc0: 4a56 ldr r2, [pc, #344] @ (800111c ) - 8000fc2: 4293 cmp r3, r2 - 8000fc4: d902 bls.n 8000fcc - { - sector = FLASH_SECTOR_11; - 8000fc6: 230b movs r3, #11 - 8000fc8: 60fb str r3, [r7, #12] - 8000fca: e082 b.n 80010d2 - } - else if((Address < 0x08103FFF) && (Address >= 0x08100000)) - 8000fcc: 687b ldr r3, [r7, #4] - 8000fce: 4a54 ldr r2, [pc, #336] @ (8001120 ) - 8000fd0: 4293 cmp r3, r2 - 8000fd2: d806 bhi.n 8000fe2 - 8000fd4: 687b ldr r3, [r7, #4] - 8000fd6: f1b3 6f01 cmp.w r3, #135266304 @ 0x8100000 - 8000fda: d302 bcc.n 8000fe2 - { - sector = FLASH_SECTOR_12; - 8000fdc: 230c movs r3, #12 - 8000fde: 60fb str r3, [r7, #12] - 8000fe0: e077 b.n 80010d2 - } - else if((Address < 0x08107FFF) && (Address >= 0x08104000)) - 8000fe2: 687b ldr r3, [r7, #4] - 8000fe4: 4a4f ldr r2, [pc, #316] @ (8001124 ) - 8000fe6: 4293 cmp r3, r2 - 8000fe8: d806 bhi.n 8000ff8 - 8000fea: 687b ldr r3, [r7, #4] - 8000fec: 4a4e ldr r2, [pc, #312] @ (8001128 ) - 8000fee: 4293 cmp r3, r2 - 8000ff0: d302 bcc.n 8000ff8 - { - sector = FLASH_SECTOR_13; - 8000ff2: 230d movs r3, #13 - 8000ff4: 60fb str r3, [r7, #12] - 8000ff6: e06c b.n 80010d2 - } - else if((Address < 0x0810BFFF) && (Address >= 0x08108000)) - 8000ff8: 687b ldr r3, [r7, #4] - 8000ffa: 4a4c ldr r2, [pc, #304] @ (800112c ) - 8000ffc: 4293 cmp r3, r2 - 8000ffe: d806 bhi.n 800100e - 8001000: 687b ldr r3, [r7, #4] - 8001002: 4a4b ldr r2, [pc, #300] @ (8001130 ) - 8001004: 4293 cmp r3, r2 - 8001006: d302 bcc.n 800100e - { - sector = FLASH_SECTOR_14; - 8001008: 230e movs r3, #14 - 800100a: 60fb str r3, [r7, #12] - 800100c: e061 b.n 80010d2 - } - else if((Address < 0x0810FFFF) && (Address >= 0x0810C000)) - 800100e: 687b ldr r3, [r7, #4] - 8001010: 4a48 ldr r2, [pc, #288] @ (8001134 ) - 8001012: 4293 cmp r3, r2 - 8001014: d206 bcs.n 8001024 - 8001016: 687b ldr r3, [r7, #4] - 8001018: 4a47 ldr r2, [pc, #284] @ (8001138 ) - 800101a: 4293 cmp r3, r2 - 800101c: d302 bcc.n 8001024 - { - sector = FLASH_SECTOR_15; - 800101e: 230f movs r3, #15 - 8001020: 60fb str r3, [r7, #12] - 8001022: e056 b.n 80010d2 - } - else if((Address < 0x0811FFFF) && (Address >= 0x08110000)) - 8001024: 687b ldr r3, [r7, #4] - 8001026: 4a45 ldr r2, [pc, #276] @ (800113c ) - 8001028: 4293 cmp r3, r2 - 800102a: d206 bcs.n 800103a - 800102c: 687b ldr r3, [r7, #4] - 800102e: 4a41 ldr r2, [pc, #260] @ (8001134 ) - 8001030: 4293 cmp r3, r2 - 8001032: d902 bls.n 800103a - { - sector = FLASH_SECTOR_16; - 8001034: 2310 movs r3, #16 - 8001036: 60fb str r3, [r7, #12] - 8001038: e04b b.n 80010d2 - } - else if((Address < 0x0813FFFF) && (Address >= 0x08120000)) - 800103a: 687b ldr r3, [r7, #4] - 800103c: 4a40 ldr r2, [pc, #256] @ (8001140 ) - 800103e: 4293 cmp r3, r2 - 8001040: d206 bcs.n 8001050 - 8001042: 687b ldr r3, [r7, #4] - 8001044: 4a3d ldr r2, [pc, #244] @ (800113c ) - 8001046: 4293 cmp r3, r2 - 8001048: d902 bls.n 8001050 - { - sector = FLASH_SECTOR_17; - 800104a: 2311 movs r3, #17 - 800104c: 60fb str r3, [r7, #12] - 800104e: e040 b.n 80010d2 - } - else if((Address < 0x0815FFFF) && (Address >= 0x08140000)) - 8001050: 687b ldr r3, [r7, #4] - 8001052: 4a3c ldr r2, [pc, #240] @ (8001144 ) - 8001054: 4293 cmp r3, r2 - 8001056: d206 bcs.n 8001066 - 8001058: 687b ldr r3, [r7, #4] - 800105a: 4a39 ldr r2, [pc, #228] @ (8001140 ) - 800105c: 4293 cmp r3, r2 - 800105e: d902 bls.n 8001066 - { - sector = FLASH_SECTOR_18; - 8001060: 2312 movs r3, #18 - 8001062: 60fb str r3, [r7, #12] - 8001064: e035 b.n 80010d2 - } - else if((Address < 0x0817FFFF) && (Address >= 0x08160000)) - 8001066: 687b ldr r3, [r7, #4] - 8001068: 4a37 ldr r2, [pc, #220] @ (8001148 ) - 800106a: 4293 cmp r3, r2 - 800106c: d206 bcs.n 800107c - 800106e: 687b ldr r3, [r7, #4] - 8001070: 4a34 ldr r2, [pc, #208] @ (8001144 ) - 8001072: 4293 cmp r3, r2 - 8001074: d902 bls.n 800107c - { - sector = FLASH_SECTOR_19; - 8001076: 2313 movs r3, #19 - 8001078: 60fb str r3, [r7, #12] - 800107a: e02a b.n 80010d2 - } - else if((Address < 0x0819FFFF) && (Address >= 0x08180000)) - 800107c: 687b ldr r3, [r7, #4] - 800107e: 4a33 ldr r2, [pc, #204] @ (800114c ) - 8001080: 4293 cmp r3, r2 - 8001082: d206 bcs.n 8001092 - 8001084: 687b ldr r3, [r7, #4] - 8001086: 4a30 ldr r2, [pc, #192] @ (8001148 ) - 8001088: 4293 cmp r3, r2 - 800108a: d902 bls.n 8001092 - { - sector = FLASH_SECTOR_20; - 800108c: 2314 movs r3, #20 - 800108e: 60fb str r3, [r7, #12] - 8001090: e01f b.n 80010d2 - } - else if((Address < 0x081BFFFF) && (Address >= 0x081A0000)) - 8001092: 687b ldr r3, [r7, #4] - 8001094: 4a2e ldr r2, [pc, #184] @ (8001150 ) - 8001096: 4293 cmp r3, r2 - 8001098: d206 bcs.n 80010a8 - 800109a: 687b ldr r3, [r7, #4] - 800109c: 4a2b ldr r2, [pc, #172] @ (800114c ) - 800109e: 4293 cmp r3, r2 - 80010a0: d902 bls.n 80010a8 - { - sector = FLASH_SECTOR_21; - 80010a2: 2315 movs r3, #21 - 80010a4: 60fb str r3, [r7, #12] - 80010a6: e014 b.n 80010d2 - } - else if((Address < 0x081DFFFF) && (Address >= 0x081C0000)) - 80010a8: 687b ldr r3, [r7, #4] - 80010aa: 4a2a ldr r2, [pc, #168] @ (8001154 ) - 80010ac: 4293 cmp r3, r2 - 80010ae: d806 bhi.n 80010be - 80010b0: 687b ldr r3, [r7, #4] - 80010b2: 4a27 ldr r2, [pc, #156] @ (8001150 ) - 80010b4: 4293 cmp r3, r2 - 80010b6: d902 bls.n 80010be - { - sector = FLASH_SECTOR_22; - 80010b8: 2316 movs r3, #22 - 80010ba: 60fb str r3, [r7, #12] - 80010bc: e009 b.n 80010d2 - } - else if ((Address < 0x081FFFFF) && (Address >= 0x081E0000)) - 80010be: 687b ldr r3, [r7, #4] - 80010c0: 4a25 ldr r2, [pc, #148] @ (8001158 ) - 80010c2: 4293 cmp r3, r2 - 80010c4: d805 bhi.n 80010d2 - 80010c6: 687b ldr r3, [r7, #4] - 80010c8: 4a24 ldr r2, [pc, #144] @ (800115c ) - 80010ca: 4293 cmp r3, r2 - 80010cc: d901 bls.n 80010d2 - { - sector = FLASH_SECTOR_23; - 80010ce: 2317 movs r3, #23 - 80010d0: 60fb str r3, [r7, #12] - } - return sector; - 80010d2: 68fb ldr r3, [r7, #12] -} - 80010d4: 4618 mov r0, r3 - 80010d6: 3714 adds r7, #20 - 80010d8: 46bd mov sp, r7 - 80010da: f85d 7b04 ldr.w r7, [sp], #4 - 80010de: 4770 bx lr - 80010e0: 08003ffe .word 0x08003ffe - 80010e4: 08007ffe .word 0x08007ffe - 80010e8: 08004000 .word 0x08004000 - 80010ec: 0800bffe .word 0x0800bffe - 80010f0: 08008000 .word 0x08008000 - 80010f4: 0800ffff .word 0x0800ffff - 80010f8: 0800c000 .word 0x0800c000 - 80010fc: 0801ffff .word 0x0801ffff - 8001100: 0803ffff .word 0x0803ffff - 8001104: 0805ffff .word 0x0805ffff - 8001108: 0807ffff .word 0x0807ffff - 800110c: 0809ffff .word 0x0809ffff - 8001110: 080bffff .word 0x080bffff - 8001114: 080dfffe .word 0x080dfffe - 8001118: 080ffffe .word 0x080ffffe - 800111c: 080dffff .word 0x080dffff - 8001120: 08103ffe .word 0x08103ffe - 8001124: 08107ffe .word 0x08107ffe - 8001128: 08104000 .word 0x08104000 - 800112c: 0810bffe .word 0x0810bffe - 8001130: 08108000 .word 0x08108000 - 8001134: 0810ffff .word 0x0810ffff - 8001138: 0810c000 .word 0x0810c000 - 800113c: 0811ffff .word 0x0811ffff - 8001140: 0813ffff .word 0x0813ffff - 8001144: 0815ffff .word 0x0815ffff - 8001148: 0817ffff .word 0x0817ffff - 800114c: 0819ffff .word 0x0819ffff - 8001150: 081bffff .word 0x081bffff - 8001154: 081dfffe .word 0x081dfffe - 8001158: 081ffffe .word 0x081ffffe - 800115c: 081dffff .word 0x081dffff - -08001160 : - return float_variable; -} - - -uint32_t Flash_Write_Data (uint32_t StartSectorAddress, uint32_t *Data, uint16_t numberofwords) -{ - 8001160: b5b0 push {r4, r5, r7, lr} - 8001162: b08a sub sp, #40 @ 0x28 - 8001164: af00 add r7, sp, #0 - 8001166: 60f8 str r0, [r7, #12] - 8001168: 60b9 str r1, [r7, #8] - 800116a: 4613 mov r3, r2 - 800116c: 80fb strh r3, [r7, #6] - - static FLASH_EraseInitTypeDef EraseInitStruct; - uint32_t SECTORError; - int sofar=0; - 800116e: 2300 movs r3, #0 - 8001170: 627b str r3, [r7, #36] @ 0x24 - - - /* Unlock the Flash to enable the flash control register access *************/ - HAL_FLASH_Unlock(); - 8001172: f003 f97b bl 800446c - - /* Erase the user Flash area */ - - /* Get the number of sector to erase from 1st sector */ - - uint32_t StartSector = GetSector(StartSectorAddress); - 8001176: 68f8 ldr r0, [r7, #12] - 8001178: f7ff fe9e bl 8000eb8 - 800117c: 6238 str r0, [r7, #32] - uint32_t EndSectorAddress = StartSectorAddress + numberofwords*4; - 800117e: 88fb ldrh r3, [r7, #6] - 8001180: 009b lsls r3, r3, #2 - 8001182: 461a mov r2, r3 - 8001184: 68fb ldr r3, [r7, #12] - 8001186: 4413 add r3, r2 - 8001188: 61fb str r3, [r7, #28] - uint32_t EndSector = GetSector(EndSectorAddress); - 800118a: 69f8 ldr r0, [r7, #28] - 800118c: f7ff fe94 bl 8000eb8 - 8001190: 61b8 str r0, [r7, #24] - - /* Fill EraseInit structure*/ - EraseInitStruct.TypeErase = FLASH_TYPEERASE_SECTORS; - 8001192: 4b21 ldr r3, [pc, #132] @ (8001218 ) - 8001194: 2200 movs r2, #0 - 8001196: 601a str r2, [r3, #0] - EraseInitStruct.VoltageRange = FLASH_VOLTAGE_RANGE_3; - 8001198: 4b1f ldr r3, [pc, #124] @ (8001218 ) - 800119a: 2202 movs r2, #2 - 800119c: 611a str r2, [r3, #16] - EraseInitStruct.Sector = StartSector; - 800119e: 4a1e ldr r2, [pc, #120] @ (8001218 ) - 80011a0: 6a3b ldr r3, [r7, #32] - 80011a2: 6093 str r3, [r2, #8] - EraseInitStruct.NbSectors = (EndSector - StartSector) + 1; - 80011a4: 69ba ldr r2, [r7, #24] - 80011a6: 6a3b ldr r3, [r7, #32] - 80011a8: 1ad3 subs r3, r2, r3 - 80011aa: 3301 adds r3, #1 - 80011ac: 4a1a ldr r2, [pc, #104] @ (8001218 ) - 80011ae: 60d3 str r3, [r2, #12] - - /* Note: If an erase operation in Flash memory also concerns data in the data or instruction cache, - you have to make sure that these data are rewritten before they are accessed during code - execution. If this cannot be done safely, it is recommended to flush the caches by setting the - DCRST and ICRST bits in the FLASH_CR register. */ - if (HAL_FLASHEx_Erase(&EraseInitStruct, &SECTORError) != HAL_OK) - 80011b0: f107 0314 add.w r3, r7, #20 - 80011b4: 4619 mov r1, r3 - 80011b6: 4818 ldr r0, [pc, #96] @ (8001218 ) - 80011b8: f003 fad6 bl 8004768 - 80011bc: 4603 mov r3, r0 - 80011be: 2b00 cmp r3, #0 - 80011c0: d01f beq.n 8001202 - { - return HAL_FLASH_GetError (); - 80011c2: f003 f985 bl 80044d0 - 80011c6: 4603 mov r3, r0 - 80011c8: e022 b.n 8001210 - /* Program the user Flash area word by word - (area defined by FLASH_USER_START_ADDR and FLASH_USER_END_ADDR) ***********/ - - while (sofar - 80011e6: 4603 mov r3, r0 - 80011e8: 2b00 cmp r3, #0 - 80011ea: d106 bne.n 80011fa - { - StartSectorAddress += 4; // use StartPageAddress += 2 for half word and 8 for double word - 80011ec: 68fb ldr r3, [r7, #12] - 80011ee: 3304 adds r3, #4 - 80011f0: 60fb str r3, [r7, #12] - sofar++; - 80011f2: 6a7b ldr r3, [r7, #36] @ 0x24 - 80011f4: 3301 adds r3, #1 - 80011f6: 627b str r3, [r7, #36] @ 0x24 - 80011f8: e003 b.n 8001202 - } - else - { - /* Error occurred while writing data in Flash memory*/ - return HAL_FLASH_GetError (); - 80011fa: f003 f969 bl 80044d0 - 80011fe: 4603 mov r3, r0 - 8001200: e006 b.n 8001210 - while (sofar - } - } - - /* Lock the Flash to disable the flash control register access (recommended - to protect the FLASH memory against possible unwanted operation) *********/ - HAL_FLASH_Lock(); - 800120a: f003 f951 bl 80044b0 - - return 0; - 800120e: 2300 movs r3, #0 -} - 8001210: 4618 mov r0, r3 - 8001212: 3728 adds r7, #40 @ 0x28 - 8001214: 46bd mov sp, r7 - 8001216: bdb0 pop {r4, r5, r7, pc} - 8001218: 200006fc .word 0x200006fc - -0800121c : - - -void Flash_Read_Data (uint32_t StartSectorAddress, uint32_t *RxBuf, uint16_t numberofwords) -{ - 800121c: b480 push {r7} - 800121e: b085 sub sp, #20 - 8001220: af00 add r7, sp, #0 - 8001222: 60f8 str r0, [r7, #12] - 8001224: 60b9 str r1, [r7, #8] - 8001226: 4613 mov r3, r2 - 8001228: 80fb strh r3, [r7, #6] - while (1) - { - - *RxBuf = *(__IO uint32_t *)StartSectorAddress; - 800122a: 68fb ldr r3, [r7, #12] - 800122c: 681a ldr r2, [r3, #0] - 800122e: 68bb ldr r3, [r7, #8] - 8001230: 601a str r2, [r3, #0] - StartSectorAddress += 4; - 8001232: 68fb ldr r3, [r7, #12] - 8001234: 3304 adds r3, #4 - 8001236: 60fb str r3, [r7, #12] - RxBuf++; - 8001238: 68bb ldr r3, [r7, #8] - 800123a: 3304 adds r3, #4 - 800123c: 60bb str r3, [r7, #8] - if (!(numberofwords--)) break; - 800123e: 88fb ldrh r3, [r7, #6] - 8001240: 1e5a subs r2, r3, #1 - 8001242: 80fa strh r2, [r7, #6] - 8001244: 2b00 cmp r3, #0 - 8001246: d000 beq.n 800124a - *RxBuf = *(__IO uint32_t *)StartSectorAddress; - 8001248: e7ef b.n 800122a - if (!(numberofwords--)) break; - 800124a: bf00 nop - } -} - 800124c: bf00 nop - 800124e: 3714 adds r7, #20 - 8001250: 46bd mov sp, r7 - 8001252: f85d 7b04 ldr.w r7, [sp], #4 - 8001256: 4770 bx lr - -08001258
: -/** - * @brief The application entry point. - * @retval int - */ -int main(void) -{ - 8001258: b580 push {r7, lr} - 800125a: b084 sub sp, #16 - 800125c: af00 add r7, sp, #0 - /* USER CODE END 1 */ - - /* MCU Configuration--------------------------------------------------------*/ - - /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ - HAL_Init(); - 800125e: f001 fe13 bl 8002e88 - /* USER CODE BEGIN Init */ - - /* USER CODE END Init */ - - /* Configure the system clock */ - SystemClock_Config(); - 8001262: f000 f8e7 bl 8001434 - /* USER CODE BEGIN SysInit */ - - /* USER CODE END SysInit */ - - /* Initialize all configured peripherals */ - MX_GPIO_Init(); - 8001266: f000 fa01 bl 800166c - HAL_Delay(100); - 800126a: 2064 movs r0, #100 @ 0x64 - 800126c: f001 fe7e bl 8002f6c - MX_LWIP_Init(); - 8001270: f004 ff92 bl 8006198 - MX_FMC_Init(); - 8001274: f000 f998 bl 80015a8 - MX_TIM3_Init(); - 8001278: f000 f948 bl 800150c - /* USER CODE BEGIN 2 */ - struct udp_pcb * pcb = udp_new(); - 800127c: f00d f924 bl 800e4c8 - 8001280: 60f8 str r0, [r7, #12] - sock_init(pcb); - 8001282: 68f8 ldr r0, [r7, #12] - 8001284: f000 fad4 bl 8001830 - memset(tx_msg.tx_buf, 0, sizeof tx_msg.tx_buf); - 8001288: f44f 62af mov.w r2, #1400 @ 0x578 - 800128c: 2100 movs r1, #0 - 800128e: 485a ldr r0, [pc, #360] @ (80013f8 ) - 8001290: f011 fd71 bl 8012d76 - struct pbuf *p = pbuf_alloc(0, sizeof tx_msg.tx_buf, PBUF_RAM); - 8001294: f44f 7220 mov.w r2, #640 @ 0x280 - 8001298: f44f 61af mov.w r1, #1400 @ 0x578 - 800129c: 2000 movs r0, #0 - 800129e: f006 fc21 bl 8007ae4 - 80012a2: 60b8 str r0, [r7, #8] - uint32_t br_addr = ipaddr_addr("10.1.1.255"); - 80012a4: 4855 ldr r0, [pc, #340] @ (80013fc ) - 80012a6: f010 fbb6 bl 8011a16 - 80012aa: 4603 mov r3, r0 - 80012ac: 603b str r3, [r7, #0] - u16_t br_port = 50000U; - 80012ae: f24c 3350 movw r3, #50000 @ 0xc350 - 80012b2: 80fb strh r3, [r7, #6] - pribor = (((GPIOC->IDR) >> 6) & 0x7) | (((GPIOC->IDR) >> 9) & 0x18); - 80012b4: 4b52 ldr r3, [pc, #328] @ (8001400 ) - 80012b6: 691b ldr r3, [r3, #16] - 80012b8: 099b lsrs r3, r3, #6 - 80012ba: f003 0207 and.w r2, r3, #7 - 80012be: 4b50 ldr r3, [pc, #320] @ (8001400 ) - 80012c0: 691b ldr r3, [r3, #16] - 80012c2: 0a5b lsrs r3, r3, #9 - 80012c4: f003 0318 and.w r3, r3, #24 - 80012c8: 4313 orrs r3, r2 - 80012ca: 4a4e ldr r2, [pc, #312] @ (8001404 ) - 80012cc: 6013 str r3, [r2, #0] - // timer start - if (HAL_TIM_Base_Start_IT(&htim3) != HAL_OK) - 80012ce: 484e ldr r0, [pc, #312] @ (8001408 ) - 80012d0: f004 fa18 bl 8005704 - 80012d4: 4603 mov r3, r0 - 80012d6: 2b00 cmp r3, #0 - 80012d8: d001 beq.n 80012de - { - /* Starting Error */ - Error_Handler(); - 80012da: f000 ff33 bl 8002144 - } - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_14, GPIO_PIN_SET); - 80012de: 2201 movs r2, #1 - 80012e0: f44f 4180 mov.w r1, #16384 @ 0x4000 - 80012e4: 4846 ldr r0, [pc, #280] @ (8001400 ) - 80012e6: f003 fd2b bl 8004d40 - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1) - { - MX_LWIP_Process(); - 80012ea: f004 ffc1 bl 8006270 - if (need_send_private == 1) - 80012ee: 4b47 ldr r3, [pc, #284] @ (800140c ) - 80012f0: 781b ldrb r3, [r3, #0] - 80012f2: 2b00 cmp r3, #0 - 80012f4: d01a beq.n 800132c - { - need_send_private = 0; - 80012f6: 4b45 ldr r3, [pc, #276] @ (800140c ) - 80012f8: 2200 movs r2, #0 - 80012fa: 701a strb r2, [r3, #0] - set_pbuf_params(p, tx_msg.status_len + tx_msg.cmd_len); - 80012fc: 4b3e ldr r3, [pc, #248] @ (80013f8 ) - 80012fe: f8b3 2578 ldrh.w r2, [r3, #1400] @ 0x578 - 8001302: 4b3d ldr r3, [pc, #244] @ (80013f8 ) - 8001304: f8b3 357c ldrh.w r3, [r3, #1404] @ 0x57c - 8001308: 4413 add r3, r2 - 800130a: b29b uxth r3, r3 - 800130c: 4619 mov r1, r3 - 800130e: 68b8 ldr r0, [r7, #8] - 8001310: f000 fa72 bl 80017f8 - err_t errok = udp_sendto(pcb, p, &rx_addr, rx_msg.port); - 8001314: 4b3e ldr r3, [pc, #248] @ (8001410 ) - 8001316: 881b ldrh r3, [r3, #0] - 8001318: 4a3e ldr r2, [pc, #248] @ (8001414 ) - 800131a: 68b9 ldr r1, [r7, #8] - 800131c: 68f8 ldr r0, [r7, #12] - 800131e: f00c fdc5 bl 800deac - 8001322: 4603 mov r3, r0 - 8001324: 717b strb r3, [r7, #5] - br_counter = 0; - 8001326: 4b3c ldr r3, [pc, #240] @ (8001418 ) - 8001328: 2200 movs r2, #0 - 800132a: 601a str r2, [r3, #0] - } - if (br_counter > 99) // Широковещательный всётчик для отправки пакетов 100мс. - 800132c: 4b3a ldr r3, [pc, #232] @ (8001418 ) - 800132e: 681b ldr r3, [r3, #0] - 8001330: 2b63 cmp r3, #99 @ 0x63 - 8001332: d919 bls.n 8001368 - { - create_header(); - 8001334: f000 fa32 bl 800179c - set_pbuf_params(p, create_header() + tx_msg.cmd_len); - 8001338: f000 fa30 bl 800179c - 800133c: 4603 mov r3, r0 - 800133e: 461a mov r2, r3 - 8001340: 4b2d ldr r3, [pc, #180] @ (80013f8 ) - 8001342: f8b3 357c ldrh.w r3, [r3, #1404] @ 0x57c - 8001346: 4413 add r3, r2 - 8001348: b29b uxth r3, r3 - 800134a: 4619 mov r1, r3 - 800134c: 68b8 ldr r0, [r7, #8] - 800134e: f000 fa53 bl 80017f8 - err_t errok = udp_sendto(pcb, p, (ip_addr_t*)&br_addr, br_port); - 8001352: 88fb ldrh r3, [r7, #6] - 8001354: 463a mov r2, r7 - 8001356: 68b9 ldr r1, [r7, #8] - 8001358: 68f8 ldr r0, [r7, #12] - 800135a: f00c fda7 bl 800deac - 800135e: 4603 mov r3, r0 - 8001360: 713b strb r3, [r7, #4] - br_counter = 0; - 8001362: 4b2d ldr r3, [pc, #180] @ (8001418 ) - 8001364: 2200 movs r2, #0 - 8001366: 601a str r2, [r3, #0] - } - - - if (rx_msg.con_timeout > 1999) // Таймаут соединения 2с - 8001368: 4b29 ldr r3, [pc, #164] @ (8001410 ) - 800136a: f8b3 380a ldrh.w r3, [r3, #2058] @ 0x80a - 800136e: f5b3 6ffa cmp.w r3, #2000 @ 0x7d0 - 8001372: d302 bcc.n 800137a - { - rx_msg.clnt_con = 0; - 8001374: 4b26 ldr r3, [pc, #152] @ (8001410 ) - 8001376: 2200 movs r2, #0 - 8001378: 719a strb r2, [r3, #6] - } - - if (rx_counter > 30) // Мигание светодиода на 30мс при приёме команды - 800137a: 4b28 ldr r3, [pc, #160] @ (800141c ) - 800137c: 681b ldr r3, [r3, #0] - 800137e: 2b1e cmp r3, #30 - 8001380: d905 bls.n 800138e - { - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_14, GPIO_PIN_SET); - 8001382: 2201 movs r2, #1 - 8001384: f44f 4180 mov.w r1, #16384 @ 0x4000 - 8001388: 481d ldr r0, [pc, #116] @ (8001400 ) - 800138a: f003 fcd9 bl 8004d40 - } - - if (flash_counter > 100) // Таймер проверки загрежен ли флеш - 800138e: 4b24 ldr r3, [pc, #144] @ (8001420 ) - 8001390: 681b ldr r3, [r3, #0] - 8001392: 2b64 cmp r3, #100 @ 0x64 - 8001394: d9a9 bls.n 80012ea - { - flash_counter = 0; - 8001396: 4b22 ldr r3, [pc, #136] @ (8001420 ) - 8001398: 2200 movs r2, #0 - 800139a: 601a str r2, [r3, #0] - switch(pribor_type) - 800139c: 4b21 ldr r3, [pc, #132] @ (8001424 ) - 800139e: 681b ldr r3, [r3, #0] - 80013a0: 2b00 cmp r3, #0 - 80013a2: d002 beq.n 80013aa - 80013a4: 2b01 cmp r3, #1 - 80013a6: d011 beq.n 80013cc - 80013a8: e024 b.n 80013f4 - { - case PRIBOR_TYPE_PRD: - { - if (flag_load_ems_g == 0) flag_load_ems_g = load_flash_to_ems(FLASH_BASE_WR, BASE_ADDR_EMS_G); - 80013aa: 4b1f ldr r3, [pc, #124] @ (8001428 ) - 80013ac: 781b ldrb r3, [r3, #0] - 80013ae: f083 0301 eor.w r3, r3, #1 - 80013b2: b2db uxtb r3, r3 - 80013b4: 2b00 cmp r3, #0 - 80013b6: d01a beq.n 80013ee - 80013b8: f44f 7190 mov.w r1, #288 @ 0x120 - 80013bc: 481b ldr r0, [pc, #108] @ (800142c ) - 80013be: f000 fe18 bl 8001ff2 - 80013c2: 4603 mov r3, r0 - 80013c4: 461a mov r2, r3 - 80013c6: 4b18 ldr r3, [pc, #96] @ (8001428 ) - 80013c8: 701a strb r2, [r3, #0] - break; - 80013ca: e010 b.n 80013ee - } - case PRIBOR_TYPE_UF: - { - //if (flag_load_kems_b == 0) flag_load_kems_b = load_flash_to_ems(FLASH_BASE_WR, BASE_ADDR_KEMS_B); - //if (flag_load_ems_b0 == 0) flag_load_ems_b0 = load_flash_to_ems(FLASH_BASE_EMS_B0, BASE_ADDR_EMS_B0); - if (flag_load_ems_b1 == 0) flag_load_ems_b1 = load_flash_to_ems(FLASH_BASE_EMS_B1, BASE_ADDR_EMS_B1); - 80013cc: 4b18 ldr r3, [pc, #96] @ (8001430 ) - 80013ce: 781b ldrb r3, [r3, #0] - 80013d0: f083 0301 eor.w r3, r3, #1 - 80013d4: b2db uxtb r3, r3 - 80013d6: 2b00 cmp r3, #0 - 80013d8: d00b beq.n 80013f2 - 80013da: f44f 7190 mov.w r1, #288 @ 0x120 - 80013de: 4813 ldr r0, [pc, #76] @ (800142c ) - 80013e0: f000 fe07 bl 8001ff2 - 80013e4: 4603 mov r3, r0 - 80013e6: 461a mov r2, r3 - 80013e8: 4b11 ldr r3, [pc, #68] @ (8001430 ) - 80013ea: 701a strb r2, [r3, #0] - break; - 80013ec: e001 b.n 80013f2 - break; - 80013ee: bf00 nop - 80013f0: e77b b.n 80012ea - break; - 80013f2: bf00 nop - MX_LWIP_Process(); - 80013f4: e779 b.n 80012ea - 80013f6: bf00 nop - 80013f8: 20000fd0 .word 0x20000fd0 - 80013fc: 08017628 .word 0x08017628 - 8001400: 40020800 .word 0x40020800 - 8001404: 200007b4 .word 0x200007b4 - 8001408: 20000710 .word 0x20000710 - 800140c: 2000154e .word 0x2000154e - 8001410: 200007c4 .word 0x200007c4 - 8001414: 200007bc .word 0x200007bc - 8001418: 200007a8 .word 0x200007a8 - 800141c: 200007ac .word 0x200007ac - 8001420: 200007b0 .word 0x200007b0 - 8001424: 200007b8 .word 0x200007b8 - 8001428: 200007c0 .word 0x200007c0 - 800142c: 081c0000 .word 0x081c0000 - 8001430: 200007c2 .word 0x200007c2 - -08001434 : -/** - * @brief System Clock Configuration - * @retval None - */ -void SystemClock_Config(void) -{ - 8001434: b580 push {r7, lr} - 8001436: b094 sub sp, #80 @ 0x50 - 8001438: af00 add r7, sp, #0 - RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - 800143a: f107 0320 add.w r3, r7, #32 - 800143e: 2230 movs r2, #48 @ 0x30 - 8001440: 2100 movs r1, #0 - 8001442: 4618 mov r0, r3 - 8001444: f011 fc97 bl 8012d76 - RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - 8001448: f107 030c add.w r3, r7, #12 - 800144c: 2200 movs r2, #0 - 800144e: 601a str r2, [r3, #0] - 8001450: 605a str r2, [r3, #4] - 8001452: 609a str r2, [r3, #8] - 8001454: 60da str r2, [r3, #12] - 8001456: 611a str r2, [r3, #16] - - /** Configure the main internal regulator output voltage - */ - __HAL_RCC_PWR_CLK_ENABLE(); - 8001458: 2300 movs r3, #0 - 800145a: 60bb str r3, [r7, #8] - 800145c: 4b29 ldr r3, [pc, #164] @ (8001504 ) - 800145e: 6c1b ldr r3, [r3, #64] @ 0x40 - 8001460: 4a28 ldr r2, [pc, #160] @ (8001504 ) - 8001462: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 - 8001466: 6413 str r3, [r2, #64] @ 0x40 - 8001468: 4b26 ldr r3, [pc, #152] @ (8001504 ) - 800146a: 6c1b ldr r3, [r3, #64] @ 0x40 - 800146c: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 8001470: 60bb str r3, [r7, #8] - 8001472: 68bb ldr r3, [r7, #8] - __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); - 8001474: 2300 movs r3, #0 - 8001476: 607b str r3, [r7, #4] - 8001478: 4b23 ldr r3, [pc, #140] @ (8001508 ) - 800147a: 681b ldr r3, [r3, #0] - 800147c: f423 4340 bic.w r3, r3, #49152 @ 0xc000 - 8001480: 4a21 ldr r2, [pc, #132] @ (8001508 ) - 8001482: f443 4380 orr.w r3, r3, #16384 @ 0x4000 - 8001486: 6013 str r3, [r2, #0] - 8001488: 4b1f ldr r3, [pc, #124] @ (8001508 ) - 800148a: 681b ldr r3, [r3, #0] - 800148c: f403 4340 and.w r3, r3, #49152 @ 0xc000 - 8001490: 607b str r3, [r7, #4] - 8001492: 687b ldr r3, [r7, #4] - - /** Initializes the RCC Oscillators according to the specified parameters - * in the RCC_OscInitTypeDef structure. - */ - RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; - 8001494: 2302 movs r3, #2 - 8001496: 623b str r3, [r7, #32] - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - 8001498: 2301 movs r3, #1 - 800149a: 62fb str r3, [r7, #44] @ 0x2c - RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; - 800149c: 2310 movs r3, #16 - 800149e: 633b str r3, [r7, #48] @ 0x30 - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - 80014a0: 2302 movs r3, #2 - 80014a2: 63bb str r3, [r7, #56] @ 0x38 - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; - 80014a4: 2300 movs r3, #0 - 80014a6: 63fb str r3, [r7, #60] @ 0x3c - RCC_OscInitStruct.PLL.PLLM = 8; - 80014a8: 2308 movs r3, #8 - 80014aa: 643b str r3, [r7, #64] @ 0x40 - RCC_OscInitStruct.PLL.PLLN = 100; - 80014ac: 2364 movs r3, #100 @ 0x64 - 80014ae: 647b str r3, [r7, #68] @ 0x44 - RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; - 80014b0: 2302 movs r3, #2 - 80014b2: 64bb str r3, [r7, #72] @ 0x48 - RCC_OscInitStruct.PLL.PLLQ = 4; - 80014b4: 2304 movs r3, #4 - 80014b6: 64fb str r3, [r7, #76] @ 0x4c - if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) - 80014b8: f107 0320 add.w r3, r7, #32 - 80014bc: 4618 mov r0, r3 - 80014be: f003 fc59 bl 8004d74 - 80014c2: 4603 mov r3, r0 - 80014c4: 2b00 cmp r3, #0 - 80014c6: d001 beq.n 80014cc - { - Error_Handler(); - 80014c8: f000 fe3c bl 8002144 - } - - /** Initializes the CPU, AHB and APB buses clocks - */ - RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK - 80014cc: 230f movs r3, #15 - 80014ce: 60fb str r3, [r7, #12] - |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; - RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; - 80014d0: 2302 movs r3, #2 - 80014d2: 613b str r3, [r7, #16] - RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; - 80014d4: 2300 movs r3, #0 - 80014d6: 617b str r3, [r7, #20] - RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; - 80014d8: f44f 53a0 mov.w r3, #5120 @ 0x1400 - 80014dc: 61bb str r3, [r7, #24] - RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; - 80014de: f44f 5380 mov.w r3, #4096 @ 0x1000 - 80014e2: 61fb str r3, [r7, #28] - - if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_3) != HAL_OK) - 80014e4: f107 030c add.w r3, r7, #12 - 80014e8: 2103 movs r1, #3 - 80014ea: 4618 mov r0, r3 - 80014ec: f003 feba bl 8005264 - 80014f0: 4603 mov r3, r0 - 80014f2: 2b00 cmp r3, #0 - 80014f4: d001 beq.n 80014fa - { - Error_Handler(); - 80014f6: f000 fe25 bl 8002144 - } -} - 80014fa: bf00 nop - 80014fc: 3750 adds r7, #80 @ 0x50 - 80014fe: 46bd mov sp, r7 - 8001500: bd80 pop {r7, pc} - 8001502: bf00 nop - 8001504: 40023800 .word 0x40023800 - 8001508: 40007000 .word 0x40007000 - -0800150c : - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - 800150c: b580 push {r7, lr} - 800150e: b086 sub sp, #24 - 8001510: af00 add r7, sp, #0 - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - 8001512: f107 0308 add.w r3, r7, #8 - 8001516: 2200 movs r2, #0 - 8001518: 601a str r2, [r3, #0] - 800151a: 605a str r2, [r3, #4] - 800151c: 609a str r2, [r3, #8] - 800151e: 60da str r2, [r3, #12] - TIM_MasterConfigTypeDef sMasterConfig = {0}; - 8001520: 463b mov r3, r7 - 8001522: 2200 movs r2, #0 - 8001524: 601a str r2, [r3, #0] - 8001526: 605a str r2, [r3, #4] - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - 8001528: 4b1d ldr r3, [pc, #116] @ (80015a0 ) - 800152a: 4a1e ldr r2, [pc, #120] @ (80015a4 ) - 800152c: 601a str r2, [r3, #0] - htim3.Init.Prescaler = 22; - 800152e: 4b1c ldr r3, [pc, #112] @ (80015a0 ) - 8001530: 2216 movs r2, #22 - 8001532: 605a str r2, [r3, #4] - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - 8001534: 4b1a ldr r3, [pc, #104] @ (80015a0 ) - 8001536: 2200 movs r2, #0 - 8001538: 609a str r2, [r3, #8] - htim3.Init.Period = 2170; - 800153a: 4b19 ldr r3, [pc, #100] @ (80015a0 ) - 800153c: f640 027a movw r2, #2170 @ 0x87a - 8001540: 60da str r2, [r3, #12] - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - 8001542: 4b17 ldr r3, [pc, #92] @ (80015a0 ) - 8001544: 2200 movs r2, #0 - 8001546: 611a str r2, [r3, #16] - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - 8001548: 4b15 ldr r3, [pc, #84] @ (80015a0 ) - 800154a: 2200 movs r2, #0 - 800154c: 619a str r2, [r3, #24] - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - 800154e: 4814 ldr r0, [pc, #80] @ (80015a0 ) - 8001550: f004 f888 bl 8005664 - 8001554: 4603 mov r3, r0 - 8001556: 2b00 cmp r3, #0 - 8001558: d001 beq.n 800155e - { - Error_Handler(); - 800155a: f000 fdf3 bl 8002144 - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - 800155e: f44f 5380 mov.w r3, #4096 @ 0x1000 - 8001562: 60bb str r3, [r7, #8] - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - 8001564: f107 0308 add.w r3, r7, #8 - 8001568: 4619 mov r1, r3 - 800156a: 480d ldr r0, [pc, #52] @ (80015a0 ) - 800156c: f004 fa42 bl 80059f4 - 8001570: 4603 mov r3, r0 - 8001572: 2b00 cmp r3, #0 - 8001574: d001 beq.n 800157a - { - Error_Handler(); - 8001576: f000 fde5 bl 8002144 - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - 800157a: 2300 movs r3, #0 - 800157c: 603b str r3, [r7, #0] - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - 800157e: 2300 movs r3, #0 - 8001580: 607b str r3, [r7, #4] - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - 8001582: 463b mov r3, r7 - 8001584: 4619 mov r1, r3 - 8001586: 4806 ldr r0, [pc, #24] @ (80015a0 ) - 8001588: f004 fc68 bl 8005e5c - 800158c: 4603 mov r3, r0 - 800158e: 2b00 cmp r3, #0 - 8001590: d001 beq.n 8001596 - { - Error_Handler(); - 8001592: f000 fdd7 bl 8002144 - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_Init 2 */ - -} - 8001596: bf00 nop - 8001598: 3718 adds r7, #24 - 800159a: 46bd mov sp, r7 - 800159c: bd80 pop {r7, pc} - 800159e: bf00 nop - 80015a0: 20000710 .word 0x20000710 - 80015a4: 40000400 .word 0x40000400 - -080015a8 : - -/* FMC initialization function */ -static void MX_FMC_Init(void) -{ - 80015a8: b580 push {r7, lr} - 80015aa: b088 sub sp, #32 - 80015ac: af00 add r7, sp, #0 - - /* USER CODE BEGIN FMC_Init 0 */ - - /* USER CODE END FMC_Init 0 */ - - FMC_NORSRAM_TimingTypeDef Timing = {0}; - 80015ae: 1d3b adds r3, r7, #4 - 80015b0: 2200 movs r2, #0 - 80015b2: 601a str r2, [r3, #0] - 80015b4: 605a str r2, [r3, #4] - 80015b6: 609a str r2, [r3, #8] - 80015b8: 60da str r2, [r3, #12] - 80015ba: 611a str r2, [r3, #16] - 80015bc: 615a str r2, [r3, #20] - 80015be: 619a str r2, [r3, #24] - - /* USER CODE END FMC_Init 1 */ - - /** Perform the SRAM1 memory initialization sequence - */ - hsram1.Instance = FMC_NORSRAM_DEVICE; - 80015c0: 4b28 ldr r3, [pc, #160] @ (8001664 ) - 80015c2: f04f 4220 mov.w r2, #2684354560 @ 0xa0000000 - 80015c6: 601a str r2, [r3, #0] - hsram1.Extended = FMC_NORSRAM_EXTENDED_DEVICE; - 80015c8: 4b26 ldr r3, [pc, #152] @ (8001664 ) - 80015ca: 4a27 ldr r2, [pc, #156] @ (8001668 ) - 80015cc: 605a str r2, [r3, #4] - /* hsram1.Init */ - hsram1.Init.NSBank = FMC_NORSRAM_BANK1; - 80015ce: 4b25 ldr r3, [pc, #148] @ (8001664 ) - 80015d0: 2200 movs r2, #0 - 80015d2: 609a str r2, [r3, #8] - hsram1.Init.DataAddressMux = FMC_DATA_ADDRESS_MUX_DISABLE; - 80015d4: 4b23 ldr r3, [pc, #140] @ (8001664 ) - 80015d6: 2200 movs r2, #0 - 80015d8: 60da str r2, [r3, #12] - hsram1.Init.MemoryType = FMC_MEMORY_TYPE_SRAM; - 80015da: 4b22 ldr r3, [pc, #136] @ (8001664 ) - 80015dc: 2200 movs r2, #0 - 80015de: 611a str r2, [r3, #16] - hsram1.Init.MemoryDataWidth = FMC_NORSRAM_MEM_BUS_WIDTH_16; - 80015e0: 4b20 ldr r3, [pc, #128] @ (8001664 ) - 80015e2: 2210 movs r2, #16 - 80015e4: 615a str r2, [r3, #20] - hsram1.Init.BurstAccessMode = FMC_BURST_ACCESS_MODE_DISABLE; - 80015e6: 4b1f ldr r3, [pc, #124] @ (8001664 ) - 80015e8: 2200 movs r2, #0 - 80015ea: 619a str r2, [r3, #24] - hsram1.Init.WaitSignalPolarity = FMC_WAIT_SIGNAL_POLARITY_LOW; - 80015ec: 4b1d ldr r3, [pc, #116] @ (8001664 ) - 80015ee: 2200 movs r2, #0 - 80015f0: 61da str r2, [r3, #28] - hsram1.Init.WrapMode = FMC_WRAP_MODE_DISABLE; - 80015f2: 4b1c ldr r3, [pc, #112] @ (8001664 ) - 80015f4: 2200 movs r2, #0 - 80015f6: 621a str r2, [r3, #32] - hsram1.Init.WaitSignalActive = FMC_WAIT_TIMING_BEFORE_WS; - 80015f8: 4b1a ldr r3, [pc, #104] @ (8001664 ) - 80015fa: 2200 movs r2, #0 - 80015fc: 625a str r2, [r3, #36] @ 0x24 - hsram1.Init.WriteOperation = FMC_WRITE_OPERATION_ENABLE; - 80015fe: 4b19 ldr r3, [pc, #100] @ (8001664 ) - 8001600: f44f 5280 mov.w r2, #4096 @ 0x1000 - 8001604: 629a str r2, [r3, #40] @ 0x28 - hsram1.Init.WaitSignal = FMC_WAIT_SIGNAL_DISABLE; - 8001606: 4b17 ldr r3, [pc, #92] @ (8001664 ) - 8001608: 2200 movs r2, #0 - 800160a: 62da str r2, [r3, #44] @ 0x2c - hsram1.Init.ExtendedMode = FMC_EXTENDED_MODE_DISABLE; - 800160c: 4b15 ldr r3, [pc, #84] @ (8001664 ) - 800160e: 2200 movs r2, #0 - 8001610: 631a str r2, [r3, #48] @ 0x30 - hsram1.Init.AsynchronousWait = FMC_ASYNCHRONOUS_WAIT_DISABLE; - 8001612: 4b14 ldr r3, [pc, #80] @ (8001664 ) - 8001614: 2200 movs r2, #0 - 8001616: 635a str r2, [r3, #52] @ 0x34 - hsram1.Init.WriteBurst = FMC_WRITE_BURST_DISABLE; - 8001618: 4b12 ldr r3, [pc, #72] @ (8001664 ) - 800161a: 2200 movs r2, #0 - 800161c: 639a str r2, [r3, #56] @ 0x38 - hsram1.Init.ContinuousClock = FMC_CONTINUOUS_CLOCK_SYNC_ONLY; - 800161e: 4b11 ldr r3, [pc, #68] @ (8001664 ) - 8001620: 2200 movs r2, #0 - 8001622: 63da str r2, [r3, #60] @ 0x3c - hsram1.Init.PageSize = FMC_PAGE_SIZE_NONE; - 8001624: 4b0f ldr r3, [pc, #60] @ (8001664 ) - 8001626: 2200 movs r2, #0 - 8001628: 645a str r2, [r3, #68] @ 0x44 - /* Timing */ - Timing.AddressSetupTime = 10; - 800162a: 230a movs r3, #10 - 800162c: 607b str r3, [r7, #4] - Timing.AddressHoldTime = 10; - 800162e: 230a movs r3, #10 - 8001630: 60bb str r3, [r7, #8] - Timing.DataSetupTime = 15; - 8001632: 230f movs r3, #15 - 8001634: 60fb str r3, [r7, #12] - Timing.BusTurnAroundDuration = 10; - 8001636: 230a movs r3, #10 - 8001638: 613b str r3, [r7, #16] - Timing.CLKDivision = 10; - 800163a: 230a movs r3, #10 - 800163c: 617b str r3, [r7, #20] - Timing.DataLatency = 10; - 800163e: 230a movs r3, #10 - 8001640: 61bb str r3, [r7, #24] - Timing.AccessMode = FMC_ACCESS_MODE_A; - 8001642: 2300 movs r3, #0 - 8001644: 61fb str r3, [r7, #28] - - - if (HAL_SRAM_Init(&hsram1, &Timing, NULL) != HAL_OK) - 8001646: 1d3b adds r3, r7, #4 - 8001648: 2200 movs r2, #0 - 800164a: 4619 mov r1, r3 - 800164c: 4805 ldr r0, [pc, #20] @ (8001664 ) - 800164e: f003 ffc1 bl 80055d4 - 8001652: 4603 mov r3, r0 - 8001654: 2b00 cmp r3, #0 - 8001656: d001 beq.n 800165c - { - Error_Handler( ); - 8001658: f000 fd74 bl 8002144 - } - - /* USER CODE BEGIN FMC_Init 2 */ - - /* USER CODE END FMC_Init 2 */ -} - 800165c: bf00 nop - 800165e: 3720 adds r7, #32 - 8001660: 46bd mov sp, r7 - 8001662: bd80 pop {r7, pc} - 8001664: 20000758 .word 0x20000758 - 8001668: a0000104 .word 0xa0000104 - -0800166c : - * @brief GPIO Initialization Function - * @param None - * @retval None - */ -static void MX_GPIO_Init(void) -{ - 800166c: b580 push {r7, lr} - 800166e: b08c sub sp, #48 @ 0x30 - 8001670: af00 add r7, sp, #0 - GPIO_InitTypeDef GPIO_InitStruct = {0}; - 8001672: f107 031c add.w r3, r7, #28 - 8001676: 2200 movs r2, #0 - 8001678: 601a str r2, [r3, #0] - 800167a: 605a str r2, [r3, #4] - 800167c: 609a str r2, [r3, #8] - 800167e: 60da str r2, [r3, #12] - 8001680: 611a str r2, [r3, #16] - - /* GPIO Ports Clock Enable */ - __HAL_RCC_GPIOE_CLK_ENABLE(); - 8001682: 2300 movs r3, #0 - 8001684: 61bb str r3, [r7, #24] - 8001686: 4b43 ldr r3, [pc, #268] @ (8001794 ) - 8001688: 6b1b ldr r3, [r3, #48] @ 0x30 - 800168a: 4a42 ldr r2, [pc, #264] @ (8001794 ) - 800168c: f043 0310 orr.w r3, r3, #16 - 8001690: 6313 str r3, [r2, #48] @ 0x30 - 8001692: 4b40 ldr r3, [pc, #256] @ (8001794 ) - 8001694: 6b1b ldr r3, [r3, #48] @ 0x30 - 8001696: f003 0310 and.w r3, r3, #16 - 800169a: 61bb str r3, [r7, #24] - 800169c: 69bb ldr r3, [r7, #24] - __HAL_RCC_GPIOC_CLK_ENABLE(); - 800169e: 2300 movs r3, #0 - 80016a0: 617b str r3, [r7, #20] - 80016a2: 4b3c ldr r3, [pc, #240] @ (8001794 ) - 80016a4: 6b1b ldr r3, [r3, #48] @ 0x30 - 80016a6: 4a3b ldr r2, [pc, #236] @ (8001794 ) - 80016a8: f043 0304 orr.w r3, r3, #4 - 80016ac: 6313 str r3, [r2, #48] @ 0x30 - 80016ae: 4b39 ldr r3, [pc, #228] @ (8001794 ) - 80016b0: 6b1b ldr r3, [r3, #48] @ 0x30 - 80016b2: f003 0304 and.w r3, r3, #4 - 80016b6: 617b str r3, [r7, #20] - 80016b8: 697b ldr r3, [r7, #20] - __HAL_RCC_GPIOF_CLK_ENABLE(); - 80016ba: 2300 movs r3, #0 - 80016bc: 613b str r3, [r7, #16] - 80016be: 4b35 ldr r3, [pc, #212] @ (8001794 ) - 80016c0: 6b1b ldr r3, [r3, #48] @ 0x30 - 80016c2: 4a34 ldr r2, [pc, #208] @ (8001794 ) - 80016c4: f043 0320 orr.w r3, r3, #32 - 80016c8: 6313 str r3, [r2, #48] @ 0x30 - 80016ca: 4b32 ldr r3, [pc, #200] @ (8001794 ) - 80016cc: 6b1b ldr r3, [r3, #48] @ 0x30 - 80016ce: f003 0320 and.w r3, r3, #32 - 80016d2: 613b str r3, [r7, #16] - 80016d4: 693b ldr r3, [r7, #16] - __HAL_RCC_GPIOA_CLK_ENABLE(); - 80016d6: 2300 movs r3, #0 - 80016d8: 60fb str r3, [r7, #12] - 80016da: 4b2e ldr r3, [pc, #184] @ (8001794 ) - 80016dc: 6b1b ldr r3, [r3, #48] @ 0x30 - 80016de: 4a2d ldr r2, [pc, #180] @ (8001794 ) - 80016e0: f043 0301 orr.w r3, r3, #1 - 80016e4: 6313 str r3, [r2, #48] @ 0x30 - 80016e6: 4b2b ldr r3, [pc, #172] @ (8001794 ) - 80016e8: 6b1b ldr r3, [r3, #48] @ 0x30 - 80016ea: f003 0301 and.w r3, r3, #1 - 80016ee: 60fb str r3, [r7, #12] - 80016f0: 68fb ldr r3, [r7, #12] - __HAL_RCC_GPIOG_CLK_ENABLE(); - 80016f2: 2300 movs r3, #0 - 80016f4: 60bb str r3, [r7, #8] - 80016f6: 4b27 ldr r3, [pc, #156] @ (8001794 ) - 80016f8: 6b1b ldr r3, [r3, #48] @ 0x30 - 80016fa: 4a26 ldr r2, [pc, #152] @ (8001794 ) - 80016fc: f043 0340 orr.w r3, r3, #64 @ 0x40 - 8001700: 6313 str r3, [r2, #48] @ 0x30 - 8001702: 4b24 ldr r3, [pc, #144] @ (8001794 ) - 8001704: 6b1b ldr r3, [r3, #48] @ 0x30 - 8001706: f003 0340 and.w r3, r3, #64 @ 0x40 - 800170a: 60bb str r3, [r7, #8] - 800170c: 68bb ldr r3, [r7, #8] - __HAL_RCC_GPIOB_CLK_ENABLE(); - 800170e: 2300 movs r3, #0 - 8001710: 607b str r3, [r7, #4] - 8001712: 4b20 ldr r3, [pc, #128] @ (8001794 ) - 8001714: 6b1b ldr r3, [r3, #48] @ 0x30 - 8001716: 4a1f ldr r2, [pc, #124] @ (8001794 ) - 8001718: f043 0302 orr.w r3, r3, #2 - 800171c: 6313 str r3, [r2, #48] @ 0x30 - 800171e: 4b1d ldr r3, [pc, #116] @ (8001794 ) - 8001720: 6b1b ldr r3, [r3, #48] @ 0x30 - 8001722: f003 0302 and.w r3, r3, #2 - 8001726: 607b str r3, [r7, #4] - 8001728: 687b ldr r3, [r7, #4] - __HAL_RCC_GPIOD_CLK_ENABLE(); - 800172a: 2300 movs r3, #0 - 800172c: 603b str r3, [r7, #0] - 800172e: 4b19 ldr r3, [pc, #100] @ (8001794 ) - 8001730: 6b1b ldr r3, [r3, #48] @ 0x30 - 8001732: 4a18 ldr r2, [pc, #96] @ (8001794 ) - 8001734: f043 0308 orr.w r3, r3, #8 - 8001738: 6313 str r3, [r2, #48] @ 0x30 - 800173a: 4b16 ldr r3, [pc, #88] @ (8001794 ) - 800173c: 6b1b ldr r3, [r3, #48] @ 0x30 - 800173e: f003 0308 and.w r3, r3, #8 - 8001742: 603b str r3, [r7, #0] - 8001744: 683b ldr r3, [r7, #0] - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_14, GPIO_PIN_RESET); - 8001746: 2200 movs r2, #0 - 8001748: f44f 4180 mov.w r1, #16384 @ 0x4000 - 800174c: 4812 ldr r0, [pc, #72] @ (8001798 ) - 800174e: f003 faf7 bl 8004d40 - - /*Configure GPIO pins : PC13 PC6 PC7 PC8 - PC12 */ - GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8 - 8001752: f44f 5347 mov.w r3, #12736 @ 0x31c0 - 8001756: 61fb str r3, [r7, #28] - |GPIO_PIN_12; - GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - 8001758: 2300 movs r3, #0 - 800175a: 623b str r3, [r7, #32] - GPIO_InitStruct.Pull = GPIO_NOPULL; - 800175c: 2300 movs r3, #0 - 800175e: 627b str r3, [r7, #36] @ 0x24 - HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - 8001760: f107 031c add.w r3, r7, #28 - 8001764: 4619 mov r1, r3 - 8001766: 480c ldr r0, [pc, #48] @ (8001798 ) - 8001768: f003 f93e bl 80049e8 - - /*Configure GPIO pin : PC14 */ - GPIO_InitStruct.Pin = GPIO_PIN_14; - 800176c: f44f 4380 mov.w r3, #16384 @ 0x4000 - 8001770: 61fb str r3, [r7, #28] - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 8001772: 2301 movs r3, #1 - 8001774: 623b str r3, [r7, #32] - GPIO_InitStruct.Pull = GPIO_NOPULL; - 8001776: 2300 movs r3, #0 - 8001778: 627b str r3, [r7, #36] @ 0x24 - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 800177a: 2300 movs r3, #0 - 800177c: 62bb str r3, [r7, #40] @ 0x28 - HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - 800177e: f107 031c add.w r3, r7, #28 - 8001782: 4619 mov r1, r3 - 8001784: 4804 ldr r0, [pc, #16] @ (8001798 ) - 8001786: f003 f92f bl 80049e8 - -} - 800178a: bf00 nop - 800178c: 3730 adds r7, #48 @ 0x30 - 800178e: 46bd mov sp, r7 - 8001790: bd80 pop {r7, pc} - 8001792: bf00 nop - 8001794: 40023800 .word 0x40023800 - 8001798: 40020800 .word 0x40020800 - -0800179c : - -/* USER CODE BEGIN 4 */ - -uint16_t create_header(void) -{ - 800179c: b580 push {r7, lr} - 800179e: af00 add r7, sp, #0 - tx_msg.tx_buf[0] = 0; - 80017a0: 4b12 ldr r3, [pc, #72] @ (80017ec ) - 80017a2: 2200 movs r2, #0 - 80017a4: 701a strb r2, [r3, #0] - tx_msg.tx_buf[1] = 0; - 80017a6: 4b11 ldr r3, [pc, #68] @ (80017ec ) - 80017a8: 2200 movs r2, #0 - 80017aa: 705a strb r2, [r3, #1] - tx_msg.tx_buf[2] = rx_msg.rx_buf[2]; - 80017ac: 4b10 ldr r3, [pc, #64] @ (80017f0 ) - 80017ae: 7a5a ldrb r2, [r3, #9] - 80017b0: 4b0e ldr r3, [pc, #56] @ (80017ec ) - 80017b2: 709a strb r2, [r3, #2] - tx_msg.tx_buf[3] = rx_msg.rx_buf[3]; - 80017b4: 4b0e ldr r3, [pc, #56] @ (80017f0 ) - 80017b6: 7a9a ldrb r2, [r3, #10] - 80017b8: 4b0c ldr r3, [pc, #48] @ (80017ec ) - 80017ba: 70da strb r2, [r3, #3] - tx_msg.tx_buf[4] = 0; - 80017bc: 4b0b ldr r3, [pc, #44] @ (80017ec ) - 80017be: 2200 movs r2, #0 - 80017c0: 711a strb r2, [r3, #4] - tx_msg.tx_buf[5] = 0; - 80017c2: 4b0a ldr r3, [pc, #40] @ (80017ec ) - 80017c4: 2200 movs r2, #0 - 80017c6: 715a strb r2, [r3, #5] - tx_msg.status_len = set_status(tx_msg.tx_buf, pribor) + 6; - 80017c8: 4b0a ldr r3, [pc, #40] @ (80017f4 ) - 80017ca: 681b ldr r3, [r3, #0] - 80017cc: 4619 mov r1, r3 - 80017ce: 4807 ldr r0, [pc, #28] @ (80017ec ) - 80017d0: f000 fdf4 bl 80023bc - 80017d4: 4603 mov r3, r0 - 80017d6: 3306 adds r3, #6 - 80017d8: b29a uxth r2, r3 - 80017da: 4b04 ldr r3, [pc, #16] @ (80017ec ) - 80017dc: f8a3 2578 strh.w r2, [r3, #1400] @ 0x578 - return tx_msg.status_len; - 80017e0: 4b02 ldr r3, [pc, #8] @ (80017ec ) - 80017e2: f8b3 3578 ldrh.w r3, [r3, #1400] @ 0x578 -} - 80017e6: 4618 mov r0, r3 - 80017e8: bd80 pop {r7, pc} - 80017ea: bf00 nop - 80017ec: 20000fd0 .word 0x20000fd0 - 80017f0: 200007c4 .word 0x200007c4 - 80017f4: 200007b4 .word 0x200007b4 - -080017f8 : - -void set_pbuf_params(struct pbuf *p, u16_t length) -{ - 80017f8: b580 push {r7, lr} - 80017fa: b082 sub sp, #8 - 80017fc: af00 add r7, sp, #0 - 80017fe: 6078 str r0, [r7, #4] - 8001800: 460b mov r3, r1 - 8001802: 807b strh r3, [r7, #2] - p->len = length; - 8001804: 687b ldr r3, [r7, #4] - 8001806: 887a ldrh r2, [r7, #2] - 8001808: 815a strh r2, [r3, #10] - p->tot_len = p->len; - 800180a: 687b ldr r3, [r7, #4] - 800180c: 895a ldrh r2, [r3, #10] - 800180e: 687b ldr r3, [r7, #4] - 8001810: 811a strh r2, [r3, #8] - memcpy(p->payload, tx_msg.tx_buf, p->tot_len); - 8001812: 687b ldr r3, [r7, #4] - 8001814: 6858 ldr r0, [r3, #4] - 8001816: 687b ldr r3, [r7, #4] - 8001818: 891b ldrh r3, [r3, #8] - 800181a: 461a mov r2, r3 - 800181c: 4903 ldr r1, [pc, #12] @ (800182c ) - 800181e: f011 fb27 bl 8012e70 -} - 8001822: bf00 nop - 8001824: 3708 adds r7, #8 - 8001826: 46bd mov sp, r7 - 8001828: bd80 pop {r7, pc} - 800182a: bf00 nop - 800182c: 20000fd0 .word 0x20000fd0 - -08001830 : - -void sock_init(struct udp_pcb * pcb) -{ - 8001830: b580 push {r7, lr} - 8001832: b084 sub sp, #16 - 8001834: af00 add r7, sp, #0 - 8001836: 6078 str r0, [r7, #4] - uint32_t ipaddr = get_ip(); - 8001838: f000 fc8a bl 8002150 - 800183c: 4603 mov r3, r0 - 800183e: 60bb str r3, [r7, #8] - u16_t port = get_port(); - 8001840: f000 fd3c bl 80022bc - 8001844: 4603 mov r3, r0 - 8001846: 81fb strh r3, [r7, #14] - err_t errok = udp_bind(pcb, (ip_addr_t*)&ipaddr, port); - 8001848: 89fa ldrh r2, [r7, #14] - 800184a: f107 0308 add.w r3, r7, #8 - 800184e: 4619 mov r1, r3 - 8001850: 6878 ldr r0, [r7, #4] - 8001852: f00c fce1 bl 800e218 - 8001856: 4603 mov r3, r0 - 8001858: 737b strb r3, [r7, #13] - udp_recv(pcb, udp_echo_recv, NULL); - 800185a: 2200 movs r2, #0 - 800185c: 4912 ldr r1, [pc, #72] @ (80018a8 ) - 800185e: 6878 ldr r0, [r7, #4] - 8001860: f00c fdd0 bl 800e404 - rx_msg.port = 0; - 8001864: 4b11 ldr r3, [pc, #68] @ (80018ac ) - 8001866: 2200 movs r2, #0 - 8001868: 801a strh r2, [r3, #0] - rx_msg.cmd_num = 0; - 800186a: 4b10 ldr r3, [pc, #64] @ (80018ac ) - 800186c: 2200 movs r2, #0 - 800186e: 805a strh r2, [r3, #2] - rx_msg.cmd_code = 0; - 8001870: 4b0e ldr r3, [pc, #56] @ (80018ac ) - 8001872: 2200 movs r2, #0 - 8001874: 809a strh r2, [r3, #4] - rx_msg.clnt_con = 0; - 8001876: 4b0d ldr r3, [pc, #52] @ (80018ac ) - 8001878: 2200 movs r2, #0 - 800187a: 719a strb r2, [r3, #6] - rx_msg.length = 0; - 800187c: 4b0b ldr r3, [pc, #44] @ (80018ac ) - 800187e: 2200 movs r2, #0 - 8001880: f8a3 2808 strh.w r2, [r3, #2056] @ 0x808 - tx_msg.status_len = 0; - 8001884: 4b0a ldr r3, [pc, #40] @ (80018b0 ) - 8001886: 2200 movs r2, #0 - 8001888: f8a3 2578 strh.w r2, [r3, #1400] @ 0x578 - tx_msg.cmd_len = 0; - 800188c: 4b08 ldr r3, [pc, #32] @ (80018b0 ) - 800188e: 2200 movs r2, #0 - 8001890: f8a3 257c strh.w r2, [r3, #1404] @ 0x57c - memset(rx_msg.rx_buf, 0, sizeof rx_msg.rx_buf); - 8001894: f44f 6200 mov.w r2, #2048 @ 0x800 - 8001898: 2100 movs r1, #0 - 800189a: 4806 ldr r0, [pc, #24] @ (80018b4 ) - 800189c: f011 fa6b bl 8012d76 - return; - 80018a0: bf00 nop -} - 80018a2: 3710 adds r7, #16 - 80018a4: 46bd mov sp, r7 - 80018a6: bd80 pop {r7, pc} - 80018a8: 080018b9 .word 0x080018b9 - 80018ac: 200007c4 .word 0x200007c4 - 80018b0: 20000fd0 .word 0x20000fd0 - 80018b4: 200007cb .word 0x200007cb - -080018b8 : - -void udp_echo_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, - const ip_addr_t *addr, u16_t port) -{ - 80018b8: b580 push {r7, lr} - 80018ba: b086 sub sp, #24 - 80018bc: af00 add r7, sp, #0 - 80018be: 60f8 str r0, [r7, #12] - 80018c0: 60b9 str r1, [r7, #8] - 80018c2: 607a str r2, [r7, #4] - 80018c4: 603b str r3, [r7, #0] - if (p != NULL) { - 80018c6: 687b ldr r3, [r7, #4] - 80018c8: 2b00 cmp r3, #0 - 80018ca: d04f beq.n 800196c - if (p->tot_len < sizeof rx_msg.rx_buf) - 80018cc: 687b ldr r3, [r7, #4] - 80018ce: 891b ldrh r3, [r3, #8] - 80018d0: f5b3 6f00 cmp.w r3, #2048 @ 0x800 - 80018d4: d243 bcs.n 800195e - { - if (p->tot_len < 6) - 80018d6: 687b ldr r3, [r7, #4] - 80018d8: 891b ldrh r3, [r3, #8] - 80018da: 2b05 cmp r3, #5 - 80018dc: d943 bls.n 8001966 - { - return; - } - memcpy(rx_msg.rx_buf, p->payload, p->tot_len); - 80018de: 687b ldr r3, [r7, #4] - 80018e0: 6859 ldr r1, [r3, #4] - 80018e2: 687b ldr r3, [r7, #4] - 80018e4: 891b ldrh r3, [r3, #8] - 80018e6: 461a mov r2, r3 - 80018e8: 4822 ldr r0, [pc, #136] @ (8001974 ) - 80018ea: f011 fac1 bl 8012e70 - if (rx_msg.clnt_con == 1) - 80018ee: 4b22 ldr r3, [pc, #136] @ (8001978 ) - 80018f0: 799b ldrb r3, [r3, #6] - 80018f2: 2b00 cmp r3, #0 - 80018f4: d01d beq.n 8001932 - { - if ((memcmp(&rx_addr, addr, sizeof rx_addr)!= 0) || (rx_msg.port != port)) - 80018f6: 2204 movs r2, #4 - 80018f8: 6839 ldr r1, [r7, #0] - 80018fa: 4820 ldr r0, [pc, #128] @ (800197c ) - 80018fc: f011 fa11 bl 8012d22 - 8001900: 4603 mov r3, r0 - 8001902: 2b00 cmp r3, #0 - 8001904: d131 bne.n 800196a - 8001906: 4b1c ldr r3, [pc, #112] @ (8001978 ) - 8001908: 881b ldrh r3, [r3, #0] - 800190a: 8c3a ldrh r2, [r7, #32] - 800190c: 429a cmp r2, r3 - 800190e: d12c bne.n 800196a - { - return; - } - uint16_t cmd_num = rx_msg.rx_buf[2] | (rx_msg.rx_buf[3] << 8); - 8001910: 4b19 ldr r3, [pc, #100] @ (8001978 ) - 8001912: 7a5b ldrb r3, [r3, #9] - 8001914: b21a sxth r2, r3 - 8001916: 4b18 ldr r3, [pc, #96] @ (8001978 ) - 8001918: 7a9b ldrb r3, [r3, #10] - 800191a: 021b lsls r3, r3, #8 - 800191c: b21b sxth r3, r3 - 800191e: 4313 orrs r3, r2 - 8001920: b21b sxth r3, r3 - 8001922: 82fb strh r3, [r7, #22] - if (cmd_num != (rx_msg.cmd_num + 1)) - 8001924: 8afa ldrh r2, [r7, #22] - 8001926: 4b14 ldr r3, [pc, #80] @ (8001978 ) - 8001928: 885b ldrh r3, [r3, #2] - 800192a: 3301 adds r3, #1 - 800192c: 429a cmp r2, r3 - 800192e: d008 beq.n 8001942 - { - return; - 8001930: e01c b.n 800196c - } - } - else - { - memcpy(&rx_addr, addr, sizeof rx_addr); - 8001932: 683b ldr r3, [r7, #0] - 8001934: 681b ldr r3, [r3, #0] - 8001936: 461a mov r2, r3 - 8001938: 4b10 ldr r3, [pc, #64] @ (800197c ) - 800193a: 601a str r2, [r3, #0] - rx_msg.port = port; - 800193c: 4a0e ldr r2, [pc, #56] @ (8001978 ) - 800193e: 8c3b ldrh r3, [r7, #32] - 8001940: 8013 strh r3, [r2, #0] - } - rx_msg.con_timeout = 0; - 8001942: 4b0d ldr r3, [pc, #52] @ (8001978 ) - 8001944: 2200 movs r2, #0 - 8001946: f8a3 280a strh.w r2, [r3, #2058] @ 0x80a - rx_msg.clnt_con = 1; - 800194a: 4b0b ldr r3, [pc, #44] @ (8001978 ) - 800194c: 2201 movs r2, #1 - 800194e: 719a strb r2, [r3, #6] - rx_msg.length = p->tot_len; - 8001950: 687b ldr r3, [r7, #4] - 8001952: 891a ldrh r2, [r3, #8] - 8001954: 4b08 ldr r3, [pc, #32] @ (8001978 ) - 8001956: f8a3 2808 strh.w r2, [r3, #2056] @ 0x808 - rcv_command(); - 800195a: f000 f811 bl 8001980 - } - /* free the pbuf */ - pbuf_free(p); - 800195e: 6878 ldr r0, [r7, #4] - 8001960: f006 fba2 bl 80080a8 - 8001964: e002 b.n 800196c - return; - 8001966: bf00 nop - 8001968: e000 b.n 800196c - return; - 800196a: bf00 nop - } -} - 800196c: 3718 adds r7, #24 - 800196e: 46bd mov sp, r7 - 8001970: bd80 pop {r7, pc} - 8001972: bf00 nop - 8001974: 200007cb .word 0x200007cb - 8001978: 200007c4 .word 0x200007c4 - 800197c: 200007bc .word 0x200007bc - -08001980 : - -void rcv_command(void) -{ - 8001980: b580 push {r7, lr} - 8001982: b08a sub sp, #40 @ 0x28 - 8001984: af00 add r7, sp, #0 - uint16_t ports_amount = 0; - 8001986: 2300 movs r3, #0 - 8001988: 84bb strh r3, [r7, #36] @ 0x24 - uint16_t bytes_amount = 0; - 800198a: 2300 movs r3, #0 - 800198c: 847b strh r3, [r7, #34] @ 0x22 - uint16_t len_block = 0; - 800198e: 2300 movs r3, #0 - 8001990: 843b strh r3, [r7, #32] - uint16_t i = 0; - 8001992: 2300 movs r3, #0 - 8001994: 84fb strh r3, [r7, #38] @ 0x26 - rx_msg.cmd_num = rx_msg.rx_buf[2] | (rx_msg.rx_buf[3] << 8); - 8001996: 4b7e ldr r3, [pc, #504] @ (8001b90 ) - 8001998: 7a5b ldrb r3, [r3, #9] - 800199a: b21a sxth r2, r3 - 800199c: 4b7c ldr r3, [pc, #496] @ (8001b90 ) - 800199e: 7a9b ldrb r3, [r3, #10] - 80019a0: 021b lsls r3, r3, #8 - 80019a2: b21b sxth r3, r3 - 80019a4: 4313 orrs r3, r2 - 80019a6: b21b sxth r3, r3 - 80019a8: b29a uxth r2, r3 - 80019aa: 4b79 ldr r3, [pc, #484] @ (8001b90 ) - 80019ac: 805a strh r2, [r3, #2] - rx_msg.cmd_code = rx_msg.rx_buf[6]; - 80019ae: 4b78 ldr r3, [pc, #480] @ (8001b90 ) - 80019b0: 7b5b ldrb r3, [r3, #13] - 80019b2: 461a mov r2, r3 - 80019b4: 4b76 ldr r3, [pc, #472] @ (8001b90 ) - 80019b6: 809a strh r2, [r3, #4] - tx_msg.status_len = create_header(); - 80019b8: f7ff fef0 bl 800179c - 80019bc: 4603 mov r3, r0 - 80019be: 461a mov r2, r3 - 80019c0: 4b74 ldr r3, [pc, #464] @ (8001b94 ) - 80019c2: f8a3 2578 strh.w r2, [r3, #1400] @ 0x578 - - unsigned char *cmd_buf = &tx_msg.tx_buf[tx_msg.status_len]; - 80019c6: 4b73 ldr r3, [pc, #460] @ (8001b94 ) - 80019c8: f8b3 3578 ldrh.w r3, [r3, #1400] @ 0x578 - 80019cc: 461a mov r2, r3 - 80019ce: 4b71 ldr r3, [pc, #452] @ (8001b94 ) - 80019d0: 4413 add r3, r2 - 80019d2: 61fb str r3, [r7, #28] - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_14, GPIO_PIN_RESET); - 80019d4: 2200 movs r2, #0 - 80019d6: f44f 4180 mov.w r1, #16384 @ 0x4000 - 80019da: 486f ldr r0, [pc, #444] @ (8001b98 ) - 80019dc: f003 f9b0 bl 8004d40 - tx_msg.tx_buf[5] = 1; - 80019e0: 4b6c ldr r3, [pc, #432] @ (8001b94 ) - 80019e2: 2201 movs r2, #1 - 80019e4: 715a strb r2, [r3, #5] - rx_counter = 0; - 80019e6: 4b6d ldr r3, [pc, #436] @ (8001b9c ) - 80019e8: 2200 movs r2, #0 - 80019ea: 601a str r2, [r3, #0] - switch(rx_msg.cmd_code) // код команды - 80019ec: 4b68 ldr r3, [pc, #416] @ (8001b90 ) - 80019ee: 889b ldrh r3, [r3, #4] - 80019f0: 2b3d cmp r3, #61 @ 0x3d - 80019f2: f300 82bc bgt.w 8001f6e - 80019f6: 2b33 cmp r3, #51 @ 0x33 - 80019f8: da05 bge.n 8001a06 - 80019fa: 2b00 cmp r3, #0 - 80019fc: d020 beq.n 8001a40 - 80019fe: 2b01 cmp r3, #1 - 8001a00: f000 809f beq.w 8001b42 - 8001a04: e2b3 b.n 8001f6e - 8001a06: 3b33 subs r3, #51 @ 0x33 - 8001a08: 2b0a cmp r3, #10 - 8001a0a: f200 82b0 bhi.w 8001f6e - 8001a0e: a201 add r2, pc, #4 @ (adr r2, 8001a14 ) - 8001a10: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 8001a14: 08001c7b .word 0x08001c7b - 8001a18: 08001f6f .word 0x08001f6f - 8001a1c: 08001f6f .word 0x08001f6f - 8001a20: 08001f6f .word 0x08001f6f - 8001a24: 08001d31 .word 0x08001d31 - 8001a28: 08001f6f .word 0x08001f6f - 8001a2c: 08001f6f .word 0x08001f6f - 8001a30: 08001f6f .word 0x08001f6f - 8001a34: 08001f6f .word 0x08001f6f - 8001a38: 08001dc1 .word 0x08001dc1 - 8001a3c: 08001e9b .word 0x08001e9b - //----------------------------------------------------------- - // КОМАНДА №0 - // ЧТЕНИЕ МАССИВА ПОРТОВ - //----------------------------------------------------------- - - cmd_buf[0] = rx_msg.cmd_code; // - код команды - 8001a40: 4b53 ldr r3, [pc, #332] @ (8001b90 ) - 8001a42: 889b ldrh r3, [r3, #4] - 8001a44: b2da uxtb r2, r3 - 8001a46: 69fb ldr r3, [r7, #28] - 8001a48: 701a strb r2, [r3, #0] - ports_amount = rx_msg.rx_buf[7]; - 8001a4a: 4b51 ldr r3, [pc, #324] @ (8001b90 ) - 8001a4c: 7b9b ldrb r3, [r3, #14] - 8001a4e: 84bb strh r3, [r7, #36] @ 0x24 - - // Проверка размера принятого буфера - if( rx_msg.length < (8 + ports_amount * 2)) - 8001a50: 4b4f ldr r3, [pc, #316] @ (8001b90 ) - 8001a52: f8b3 3808 ldrh.w r3, [r3, #2056] @ 0x808 - 8001a56: 461a mov r2, r3 - 8001a58: 8cbb ldrh r3, [r7, #36] @ 0x24 - 8001a5a: 3304 adds r3, #4 - 8001a5c: 005b lsls r3, r3, #1 - 8001a5e: 429a cmp r2, r3 - 8001a60: da08 bge.n 8001a74 - { - // Размер принятого пакета меньше чем долно быть - // Установить ошибку - // КОД = 2 - cmd_buf[1] = ERR_SIZE; - 8001a62: 69fb ldr r3, [r7, #28] - 8001a64: 3301 adds r3, #1 - 8001a66: 2202 movs r2, #2 - 8001a68: 701a strb r2, [r3, #0] - - // Установить размер буфера = 2 - tx_msg.cmd_len = 2; - 8001a6a: 4b4a ldr r3, [pc, #296] @ (8001b94 ) - 8001a6c: 2202 movs r2, #2 - 8001a6e: f8a3 257c strh.w r2, [r3, #1404] @ 0x57c - cmd_buf[6 + (i*4)] = port_data >> 8; - } - // Установить размер буфера - tx_msg.cmd_len = (ports_amount << 2) + 3; - } - break; - 8001a72: e28a b.n 8001f8a - cmd_buf[1] = NO_ERROR; - 8001a74: 69fb ldr r3, [r7, #28] - 8001a76: 3301 adds r3, #1 - 8001a78: 2201 movs r2, #1 - 8001a7a: 701a strb r2, [r3, #0] - cmd_buf[2] = rx_msg.rx_buf[7]; - 8001a7c: 69fb ldr r3, [r7, #28] - 8001a7e: 3302 adds r3, #2 - 8001a80: 4a43 ldr r2, [pc, #268] @ (8001b90 ) - 8001a82: 7b92 ldrb r2, [r2, #14] - 8001a84: 701a strb r2, [r3, #0] - uint16_t port_data = 0xFFFF; - 8001a86: f64f 73ff movw r3, #65535 @ 0xffff - 8001a8a: 80fb strh r3, [r7, #6] - uint16_t port_addr = 0x0000; - 8001a8c: 2300 movs r3, #0 - 8001a8e: 80bb strh r3, [r7, #4] - for (i = 0; i - port_addr = rx_msg.rx_buf[8 + i * 2] + (rx_msg.rx_buf[9 + i * 2] << 8); - 8001a96: 8cfb ldrh r3, [r7, #38] @ 0x26 - 8001a98: 3304 adds r3, #4 - 8001a9a: 005b lsls r3, r3, #1 - 8001a9c: 4a3c ldr r2, [pc, #240] @ (8001b90 ) - 8001a9e: 4413 add r3, r2 - 8001aa0: 79db ldrb r3, [r3, #7] - 8001aa2: 4619 mov r1, r3 - 8001aa4: 8cfb ldrh r3, [r7, #38] @ 0x26 - 8001aa6: 005b lsls r3, r3, #1 - 8001aa8: 3309 adds r3, #9 - 8001aaa: 4a39 ldr r2, [pc, #228] @ (8001b90 ) - 8001aac: 4413 add r3, r2 - 8001aae: 79db ldrb r3, [r3, #7] - 8001ab0: 021b lsls r3, r3, #8 - 8001ab2: b29b uxth r3, r3 - 8001ab4: 440b add r3, r1 - 8001ab6: 80bb strh r3, [r7, #4] - cmd_buf[3 + (i*4)] = rx_msg.rx_buf[8 + i * 2]; - 8001ab8: 8cfb ldrh r3, [r7, #38] @ 0x26 - 8001aba: 3304 adds r3, #4 - 8001abc: 005a lsls r2, r3, #1 - 8001abe: 8cfb ldrh r3, [r7, #38] @ 0x26 - 8001ac0: 009b lsls r3, r3, #2 - 8001ac2: 3303 adds r3, #3 - 8001ac4: 4619 mov r1, r3 - 8001ac6: 69fb ldr r3, [r7, #28] - 8001ac8: 440b add r3, r1 - 8001aca: 4931 ldr r1, [pc, #196] @ (8001b90 ) - 8001acc: 440a add r2, r1 - 8001ace: 79d2 ldrb r2, [r2, #7] - 8001ad0: 701a strb r2, [r3, #0] - cmd_buf[4 + (i*4)] = rx_msg.rx_buf[9 + i * 2]; - 8001ad2: 8cfb ldrh r3, [r7, #38] @ 0x26 - 8001ad4: 005b lsls r3, r3, #1 - 8001ad6: f103 0209 add.w r2, r3, #9 - 8001ada: 8cfb ldrh r3, [r7, #38] @ 0x26 - 8001adc: 3301 adds r3, #1 - 8001ade: 009b lsls r3, r3, #2 - 8001ae0: 4619 mov r1, r3 - 8001ae2: 69fb ldr r3, [r7, #28] - 8001ae4: 440b add r3, r1 - 8001ae6: 492a ldr r1, [pc, #168] @ (8001b90 ) - 8001ae8: 440a add r2, r1 - 8001aea: 79d2 ldrb r2, [r2, #7] - 8001aec: 701a strb r2, [r3, #0] - port_data = read_isa(port_addr); - 8001aee: 88bb ldrh r3, [r7, #4] - 8001af0: 4618 mov r0, r3 - 8001af2: f000 fa57 bl 8001fa4 - 8001af6: 4603 mov r3, r0 - 8001af8: 80fb strh r3, [r7, #6] - cmd_buf[5 + (i*4)] = port_data & 0xFF; - 8001afa: 8cfb ldrh r3, [r7, #38] @ 0x26 - 8001afc: 009b lsls r3, r3, #2 - 8001afe: 3305 adds r3, #5 - 8001b00: 461a mov r2, r3 - 8001b02: 69fb ldr r3, [r7, #28] - 8001b04: 4413 add r3, r2 - 8001b06: 88fa ldrh r2, [r7, #6] - 8001b08: b2d2 uxtb r2, r2 - 8001b0a: 701a strb r2, [r3, #0] - cmd_buf[6 + (i*4)] = port_data >> 8; - 8001b0c: 88fb ldrh r3, [r7, #6] - 8001b0e: 0a1b lsrs r3, r3, #8 - 8001b10: b29a uxth r2, r3 - 8001b12: 8cfb ldrh r3, [r7, #38] @ 0x26 - 8001b14: 009b lsls r3, r3, #2 - 8001b16: 3306 adds r3, #6 - 8001b18: 4619 mov r1, r3 - 8001b1a: 69fb ldr r3, [r7, #28] - 8001b1c: 440b add r3, r1 - 8001b1e: b2d2 uxtb r2, r2 - 8001b20: 701a strb r2, [r3, #0] - for (i = 0; i - tx_msg.cmd_len = (ports_amount << 2) + 3; - 8001b30: 8cbb ldrh r3, [r7, #36] @ 0x24 - 8001b32: 009b lsls r3, r3, #2 - 8001b34: b29b uxth r3, r3 - 8001b36: 3303 adds r3, #3 - 8001b38: b29a uxth r2, r3 - 8001b3a: 4b16 ldr r3, [pc, #88] @ (8001b94 ) - 8001b3c: f8a3 257c strh.w r2, [r3, #1404] @ 0x57c - break; - 8001b40: e223 b.n 8001f8a - //----------------------------------------------------------- - // КОМАНДА №1 - // ЗАПИСЬ МАССИВА ПОРТОВ - //----------------------------------------------------------- - - cmd_buf[0] = rx_msg.cmd_code; // - код команды - 8001b42: 4b13 ldr r3, [pc, #76] @ (8001b90 ) - 8001b44: 889b ldrh r3, [r3, #4] - 8001b46: b2da uxtb r2, r3 - 8001b48: 69fb ldr r3, [r7, #28] - 8001b4a: 701a strb r2, [r3, #0] - ports_amount = rx_msg.rx_buf[7]; - 8001b4c: 4b10 ldr r3, [pc, #64] @ (8001b90 ) - 8001b4e: 7b9b ldrb r3, [r3, #14] - 8001b50: 84bb strh r3, [r7, #36] @ 0x24 - - // Проверка размера принятого буфера - if( rx_msg.length < (8 + ports_amount * 4)) - 8001b52: 4b0f ldr r3, [pc, #60] @ (8001b90 ) - 8001b54: f8b3 3808 ldrh.w r3, [r3, #2056] @ 0x808 - 8001b58: 461a mov r2, r3 - 8001b5a: 8cbb ldrh r3, [r7, #36] @ 0x24 - 8001b5c: 3302 adds r3, #2 - 8001b5e: 009b lsls r3, r3, #2 - 8001b60: 429a cmp r2, r3 - 8001b62: da08 bge.n 8001b76 - { - // Размер принятого пакета меньше чем долно быть - // Установить ошибку - // КОД = 2 - cmd_buf[1] = ERR_SIZE; - 8001b64: 69fb ldr r3, [r7, #28] - 8001b66: 3301 adds r3, #1 - 8001b68: 2202 movs r2, #2 - 8001b6a: 701a strb r2, [r3, #0] - - // Установить размер буфера = 2 - tx_msg.cmd_len = 2; - 8001b6c: 4b09 ldr r3, [pc, #36] @ (8001b94 ) - 8001b6e: 2202 movs r2, #2 - 8001b70: f8a3 257c strh.w r2, [r3, #1404] @ 0x57c - cmd_buf[6 + (i*4)] = port_data >> 8; - } - // Установить размер буфера - tx_msg.cmd_len = (ports_amount << 2) + 3; - } - break; - 8001b74: e209 b.n 8001f8a - cmd_buf[1] = NO_ERROR; - 8001b76: 69fb ldr r3, [r7, #28] - 8001b78: 3301 adds r3, #1 - 8001b7a: 2201 movs r2, #1 - 8001b7c: 701a strb r2, [r3, #0] - cmd_buf[2] = rx_msg.rx_buf[7]; - 8001b7e: 69fb ldr r3, [r7, #28] - 8001b80: 3302 adds r3, #2 - 8001b82: 4a03 ldr r2, [pc, #12] @ (8001b90 ) - 8001b84: 7b92 ldrb r2, [r2, #14] - 8001b86: 701a strb r2, [r3, #0] - for (i = 0; i - 8001b8e: bf00 nop - 8001b90: 200007c4 .word 0x200007c4 - 8001b94: 20000fd0 .word 0x20000fd0 - 8001b98: 40020800 .word 0x40020800 - 8001b9c: 200007ac .word 0x200007ac - port_addr = rx_msg.rx_buf[8 + i * 4] + (rx_msg.rx_buf[9 + i * 4] << 8); - 8001ba0: 8cfb ldrh r3, [r7, #38] @ 0x26 - 8001ba2: 3302 adds r3, #2 - 8001ba4: 009b lsls r3, r3, #2 - 8001ba6: 4aa8 ldr r2, [pc, #672] @ (8001e48 ) - 8001ba8: 4413 add r3, r2 - 8001baa: 79db ldrb r3, [r3, #7] - 8001bac: 4619 mov r1, r3 - 8001bae: 8cfb ldrh r3, [r7, #38] @ 0x26 - 8001bb0: 009b lsls r3, r3, #2 - 8001bb2: 3309 adds r3, #9 - 8001bb4: 4aa4 ldr r2, [pc, #656] @ (8001e48 ) - 8001bb6: 4413 add r3, r2 - 8001bb8: 79db ldrb r3, [r3, #7] - 8001bba: 021b lsls r3, r3, #8 - 8001bbc: b29b uxth r3, r3 - 8001bbe: 440b add r3, r1 - 8001bc0: 817b strh r3, [r7, #10] - port_data = rx_msg.rx_buf[10 + i * 4] + (rx_msg.rx_buf[11 + i * 4] << 8); - 8001bc2: 8cfb ldrh r3, [r7, #38] @ 0x26 - 8001bc4: 009b lsls r3, r3, #2 - 8001bc6: 330a adds r3, #10 - 8001bc8: 4a9f ldr r2, [pc, #636] @ (8001e48 ) - 8001bca: 4413 add r3, r2 - 8001bcc: 79db ldrb r3, [r3, #7] - 8001bce: 4619 mov r1, r3 - 8001bd0: 8cfb ldrh r3, [r7, #38] @ 0x26 - 8001bd2: 009b lsls r3, r3, #2 - 8001bd4: 330b adds r3, #11 - 8001bd6: 4a9c ldr r2, [pc, #624] @ (8001e48 ) - 8001bd8: 4413 add r3, r2 - 8001bda: 79db ldrb r3, [r3, #7] - 8001bdc: 021b lsls r3, r3, #8 - 8001bde: b29b uxth r3, r3 - 8001be0: 440b add r3, r1 - 8001be2: 813b strh r3, [r7, #8] - cmd_buf[3 + (i*4)] = rx_msg.rx_buf[8 + i * 4]; - 8001be4: 8cfb ldrh r3, [r7, #38] @ 0x26 - 8001be6: 3302 adds r3, #2 - 8001be8: 009a lsls r2, r3, #2 - 8001bea: 8cfb ldrh r3, [r7, #38] @ 0x26 - 8001bec: 009b lsls r3, r3, #2 - 8001bee: 3303 adds r3, #3 - 8001bf0: 4619 mov r1, r3 - 8001bf2: 69fb ldr r3, [r7, #28] - 8001bf4: 440b add r3, r1 - 8001bf6: 4994 ldr r1, [pc, #592] @ (8001e48 ) - 8001bf8: 440a add r2, r1 - 8001bfa: 79d2 ldrb r2, [r2, #7] - 8001bfc: 701a strb r2, [r3, #0] - cmd_buf[4 + (i*4)] = rx_msg.rx_buf[9 + i * 4]; - 8001bfe: 8cfb ldrh r3, [r7, #38] @ 0x26 - 8001c00: 009b lsls r3, r3, #2 - 8001c02: f103 0209 add.w r2, r3, #9 - 8001c06: 8cfb ldrh r3, [r7, #38] @ 0x26 - 8001c08: 3301 adds r3, #1 - 8001c0a: 009b lsls r3, r3, #2 - 8001c0c: 4619 mov r1, r3 - 8001c0e: 69fb ldr r3, [r7, #28] - 8001c10: 440b add r3, r1 - 8001c12: 498d ldr r1, [pc, #564] @ (8001e48 ) - 8001c14: 440a add r2, r1 - 8001c16: 79d2 ldrb r2, [r2, #7] - 8001c18: 701a strb r2, [r3, #0] - write_isa(port_addr, port_data); - 8001c1a: 893a ldrh r2, [r7, #8] - 8001c1c: 897b ldrh r3, [r7, #10] - 8001c1e: 4611 mov r1, r2 - 8001c20: 4618 mov r0, r3 - 8001c22: f000 f9cf bl 8001fc4 - port_data = read_isa(port_addr); - 8001c26: 897b ldrh r3, [r7, #10] - 8001c28: 4618 mov r0, r3 - 8001c2a: f000 f9bb bl 8001fa4 - 8001c2e: 4603 mov r3, r0 - 8001c30: 813b strh r3, [r7, #8] - cmd_buf[5 + (i*4)] = port_data & 0xFF; - 8001c32: 8cfb ldrh r3, [r7, #38] @ 0x26 - 8001c34: 009b lsls r3, r3, #2 - 8001c36: 3305 adds r3, #5 - 8001c38: 461a mov r2, r3 - 8001c3a: 69fb ldr r3, [r7, #28] - 8001c3c: 4413 add r3, r2 - 8001c3e: 893a ldrh r2, [r7, #8] - 8001c40: b2d2 uxtb r2, r2 - 8001c42: 701a strb r2, [r3, #0] - cmd_buf[6 + (i*4)] = port_data >> 8; - 8001c44: 893b ldrh r3, [r7, #8] - 8001c46: 0a1b lsrs r3, r3, #8 - 8001c48: b29a uxth r2, r3 - 8001c4a: 8cfb ldrh r3, [r7, #38] @ 0x26 - 8001c4c: 009b lsls r3, r3, #2 - 8001c4e: 3306 adds r3, #6 - 8001c50: 4619 mov r1, r3 - 8001c52: 69fb ldr r3, [r7, #28] - 8001c54: 440b add r3, r1 - 8001c56: b2d2 uxtb r2, r2 - 8001c58: 701a strb r2, [r3, #0] - for (i = 0; i - tx_msg.cmd_len = (ports_amount << 2) + 3; - 8001c68: 8cbb ldrh r3, [r7, #36] @ 0x24 - 8001c6a: 009b lsls r3, r3, #2 - 8001c6c: b29b uxth r3, r3 - 8001c6e: 3303 adds r3, #3 - 8001c70: b29a uxth r2, r3 - 8001c72: 4b76 ldr r3, [pc, #472] @ (8001e4c ) - 8001c74: f8a3 257c strh.w r2, [r3, #1404] @ 0x57c - break; - 8001c78: e187 b.n 8001f8a - //----------------------------------------------------------- - // КОМАНДА №51 - // ЧТЕНИЕ МАССИВА ИЗ FLASH - //----------------------------------------------------------- - - cmd_buf[0] = rx_msg.cmd_code; // - код команды - 8001c7a: 4b73 ldr r3, [pc, #460] @ (8001e48 ) - 8001c7c: 889b ldrh r3, [r3, #4] - 8001c7e: b2da uxtb r2, r3 - 8001c80: 69fb ldr r3, [r7, #28] - 8001c82: 701a strb r2, [r3, #0] - bytes_amount = rx_msg.rx_buf[9] + (rx_msg.rx_buf[10] << 8); - 8001c84: 4b70 ldr r3, [pc, #448] @ (8001e48 ) - 8001c86: 7c1b ldrb r3, [r3, #16] - 8001c88: 461a mov r2, r3 - 8001c8a: 4b6f ldr r3, [pc, #444] @ (8001e48 ) - 8001c8c: 7c5b ldrb r3, [r3, #17] - 8001c8e: 021b lsls r3, r3, #8 - 8001c90: b29b uxth r3, r3 - 8001c92: 4413 add r3, r2 - 8001c94: 847b strh r3, [r7, #34] @ 0x22 - - // Проверка размера принятого буфера - if( rx_msg.length < (8)) - 8001c96: 4b6c ldr r3, [pc, #432] @ (8001e48 ) - 8001c98: f8b3 3808 ldrh.w r3, [r3, #2056] @ 0x808 - 8001c9c: 2b07 cmp r3, #7 - 8001c9e: d808 bhi.n 8001cb2 - { - // Размер принятого пакета меньше чем долно быть - // Установить ошибку - // КОД = 2 - cmd_buf[1] = ERR_SIZE; - 8001ca0: 69fb ldr r3, [r7, #28] - 8001ca2: 3301 adds r3, #1 - 8001ca4: 2202 movs r2, #2 - 8001ca6: 701a strb r2, [r3, #0] - - // Установить размер буфера = 2 - tx_msg.cmd_len = 2; - 8001ca8: 4b68 ldr r3, [pc, #416] @ (8001e4c ) - 8001caa: 2202 movs r2, #2 - 8001cac: f8a3 257c strh.w r2, [r3, #1404] @ 0x57c - uint16_t numofwords = (bytes_amount/4)+((bytes_amount%4)!=0); - Flash_Read_Data(FLASH_BASE_WR + flash_addr, (uint32_t *)&cmd_buf[6], numofwords); - // Установить размер буфера - tx_msg.cmd_len = 6 + bytes_amount; - } - break; - 8001cb0: e16b b.n 8001f8a - cmd_buf[1] = NO_ERROR; - 8001cb2: 69fb ldr r3, [r7, #28] - 8001cb4: 3301 adds r3, #1 - 8001cb6: 2201 movs r2, #1 - 8001cb8: 701a strb r2, [r3, #0] - cmd_buf[2] = rx_msg.rx_buf[7]; - 8001cba: 69fb ldr r3, [r7, #28] - 8001cbc: 3302 adds r3, #2 - 8001cbe: 4a62 ldr r2, [pc, #392] @ (8001e48 ) - 8001cc0: 7b92 ldrb r2, [r2, #14] - 8001cc2: 701a strb r2, [r3, #0] - cmd_buf[3] = rx_msg.rx_buf[8] << 8; - 8001cc4: 69fb ldr r3, [r7, #28] - 8001cc6: 3303 adds r3, #3 - 8001cc8: 2200 movs r2, #0 - 8001cca: 701a strb r2, [r3, #0] - cmd_buf[4] = rx_msg.rx_buf[9]; - 8001ccc: 69fb ldr r3, [r7, #28] - 8001cce: 3304 adds r3, #4 - 8001cd0: 4a5d ldr r2, [pc, #372] @ (8001e48 ) - 8001cd2: 7c12 ldrb r2, [r2, #16] - 8001cd4: 701a strb r2, [r3, #0] - cmd_buf[5] = rx_msg.rx_buf[10] << 8; - 8001cd6: 69fb ldr r3, [r7, #28] - 8001cd8: 3305 adds r3, #5 - 8001cda: 2200 movs r2, #0 - 8001cdc: 701a strb r2, [r3, #0] - uint16_t flash_addr = rx_msg.rx_buf[7] + (rx_msg.rx_buf[8] << 8); - 8001cde: 4b5a ldr r3, [pc, #360] @ (8001e48 ) - 8001ce0: 7b9b ldrb r3, [r3, #14] - 8001ce2: 461a mov r2, r3 - 8001ce4: 4b58 ldr r3, [pc, #352] @ (8001e48 ) - 8001ce6: 7bdb ldrb r3, [r3, #15] - 8001ce8: 021b lsls r3, r3, #8 - 8001cea: b29b uxth r3, r3 - 8001cec: 4413 add r3, r2 - 8001cee: 81fb strh r3, [r7, #14] - uint16_t numofwords = (bytes_amount/4)+((bytes_amount%4)!=0); - 8001cf0: 8c7b ldrh r3, [r7, #34] @ 0x22 - 8001cf2: 089b lsrs r3, r3, #2 - 8001cf4: b29b uxth r3, r3 - 8001cf6: 8c7a ldrh r2, [r7, #34] @ 0x22 - 8001cf8: f002 0203 and.w r2, r2, #3 - 8001cfc: b292 uxth r2, r2 - 8001cfe: 2a00 cmp r2, #0 - 8001d00: bf14 ite ne - 8001d02: 2201 movne r2, #1 - 8001d04: 2200 moveq r2, #0 - 8001d06: b2d2 uxtb r2, r2 - 8001d08: 4413 add r3, r2 - 8001d0a: 81bb strh r3, [r7, #12] - Flash_Read_Data(FLASH_BASE_WR + flash_addr, (uint32_t *)&cmd_buf[6], numofwords); - 8001d0c: 89fb ldrh r3, [r7, #14] - 8001d0e: f103 6301 add.w r3, r3, #135266304 @ 0x8100000 - 8001d12: f503 2340 add.w r3, r3, #786432 @ 0xc0000 - 8001d16: 69fa ldr r2, [r7, #28] - 8001d18: 1d91 adds r1, r2, #6 - 8001d1a: 89ba ldrh r2, [r7, #12] - 8001d1c: 4618 mov r0, r3 - 8001d1e: f7ff fa7d bl 800121c - tx_msg.cmd_len = 6 + bytes_amount; - 8001d22: 8c7b ldrh r3, [r7, #34] @ 0x22 - 8001d24: 3306 adds r3, #6 - 8001d26: b29a uxth r2, r3 - 8001d28: 4b48 ldr r3, [pc, #288] @ (8001e4c ) - 8001d2a: f8a3 257c strh.w r2, [r3, #1404] @ 0x57c - break; - 8001d2e: e12c b.n 8001f8a - //----------------------------------------------------------- - // КОМАНДА №55 - // ЗАПИСЬ МАССИВА В FLASH - //----------------------------------------------------------- - - cmd_buf[0] = rx_msg.cmd_code; // - код команды - 8001d30: 4b45 ldr r3, [pc, #276] @ (8001e48 ) - 8001d32: 889b ldrh r3, [r3, #4] - 8001d34: b2da uxtb r2, r3 - 8001d36: 69fb ldr r3, [r7, #28] - 8001d38: 701a strb r2, [r3, #0] - bytes_amount = rx_msg.rx_buf[9] + (rx_msg.rx_buf[10] << 8); - 8001d3a: 4b43 ldr r3, [pc, #268] @ (8001e48 ) - 8001d3c: 7c1b ldrb r3, [r3, #16] - 8001d3e: 461a mov r2, r3 - 8001d40: 4b41 ldr r3, [pc, #260] @ (8001e48 ) - 8001d42: 7c5b ldrb r3, [r3, #17] - 8001d44: 021b lsls r3, r3, #8 - 8001d46: b29b uxth r3, r3 - 8001d48: 4413 add r3, r2 - 8001d4a: 847b strh r3, [r7, #34] @ 0x22 - - // Проверка размера принятого буфера - if( rx_msg.length < (10 + bytes_amount)) - 8001d4c: 8c7b ldrh r3, [r7, #34] @ 0x22 - 8001d4e: 3309 adds r3, #9 - 8001d50: 4a3d ldr r2, [pc, #244] @ (8001e48 ) - 8001d52: f8b2 2808 ldrh.w r2, [r2, #2056] @ 0x808 - 8001d56: 4293 cmp r3, r2 - 8001d58: db08 blt.n 8001d6c - { - // Размер принятого пакета меньше чем долно быть - // Установить ошибку - // КОД = 2 - cmd_buf[1] = ERR_SIZE; - 8001d5a: 69fb ldr r3, [r7, #28] - 8001d5c: 3301 adds r3, #1 - 8001d5e: 2202 movs r2, #2 - 8001d60: 701a strb r2, [r3, #0] - - // Установить размер буфера = 2 - tx_msg.cmd_len = 2; - 8001d62: 4b3a ldr r3, [pc, #232] @ (8001e4c ) - 8001d64: 2202 movs r2, #2 - 8001d66: f8a3 257c strh.w r2, [r3, #1404] @ 0x57c - uint16_t numofwords = (bytes_amount/4)+((bytes_amount%4)!=0); - Flash_Write_Data(FLASH_BASE_WR + flash_addr, (uint32_t *)&rx_msg.rx_buf[11], numofwords); - // Установить размер буфера - tx_msg.cmd_len = 2; - } - break; - 8001d6a: e10e b.n 8001f8a - cmd_buf[1] = NO_ERROR; - 8001d6c: 69fb ldr r3, [r7, #28] - 8001d6e: 3301 adds r3, #1 - 8001d70: 2201 movs r2, #1 - 8001d72: 701a strb r2, [r3, #0] - uint16_t flash_addr = rx_msg.rx_buf[7] + (rx_msg.rx_buf[8] << 8); - 8001d74: 4b34 ldr r3, [pc, #208] @ (8001e48 ) - 8001d76: 7b9b ldrb r3, [r3, #14] - 8001d78: 461a mov r2, r3 - 8001d7a: 4b33 ldr r3, [pc, #204] @ (8001e48 ) - 8001d7c: 7bdb ldrb r3, [r3, #15] - 8001d7e: 021b lsls r3, r3, #8 - 8001d80: b29b uxth r3, r3 - 8001d82: 4413 add r3, r2 - 8001d84: 827b strh r3, [r7, #18] - uint16_t numofwords = (bytes_amount/4)+((bytes_amount%4)!=0); - 8001d86: 8c7b ldrh r3, [r7, #34] @ 0x22 - 8001d88: 089b lsrs r3, r3, #2 - 8001d8a: b29b uxth r3, r3 - 8001d8c: 8c7a ldrh r2, [r7, #34] @ 0x22 - 8001d8e: f002 0203 and.w r2, r2, #3 - 8001d92: b292 uxth r2, r2 - 8001d94: 2a00 cmp r2, #0 - 8001d96: bf14 ite ne - 8001d98: 2201 movne r2, #1 - 8001d9a: 2200 moveq r2, #0 - 8001d9c: b2d2 uxtb r2, r2 - 8001d9e: 4413 add r3, r2 - 8001da0: 823b strh r3, [r7, #16] - Flash_Write_Data(FLASH_BASE_WR + flash_addr, (uint32_t *)&rx_msg.rx_buf[11], numofwords); - 8001da2: 8a7b ldrh r3, [r7, #18] - 8001da4: f103 6301 add.w r3, r3, #135266304 @ 0x8100000 - 8001da8: f503 2340 add.w r3, r3, #786432 @ 0xc0000 - 8001dac: 8a3a ldrh r2, [r7, #16] - 8001dae: 4928 ldr r1, [pc, #160] @ (8001e50 ) - 8001db0: 4618 mov r0, r3 - 8001db2: f7ff f9d5 bl 8001160 - tx_msg.cmd_len = 2; - 8001db6: 4b25 ldr r3, [pc, #148] @ (8001e4c ) - 8001db8: 2202 movs r2, #2 - 8001dba: f8a3 257c strh.w r2, [r3, #1404] @ 0x57c - break; - 8001dbe: e0e4 b.n 8001f8a - //----------------------------------------------------------- - // КОМАНДА №60 - // ЗАПИСЬ МАССИВА В ПОРТ - //----------------------------------------------------------- - - cmd_buf[0] = rx_msg.cmd_code; // - код команды - 8001dc0: 4b21 ldr r3, [pc, #132] @ (8001e48 ) - 8001dc2: 889b ldrh r3, [r3, #4] - 8001dc4: b2da uxtb r2, r3 - 8001dc6: 69fb ldr r3, [r7, #28] - 8001dc8: 701a strb r2, [r3, #0] - len_block = rx_msg.rx_buf[7] + (rx_msg.rx_buf[8] << 8); // - длинна блока данных в словах - 8001dca: 4b1f ldr r3, [pc, #124] @ (8001e48 ) - 8001dcc: 7b9b ldrb r3, [r3, #14] - 8001dce: 461a mov r2, r3 - 8001dd0: 4b1d ldr r3, [pc, #116] @ (8001e48 ) - 8001dd2: 7bdb ldrb r3, [r3, #15] - 8001dd4: 021b lsls r3, r3, #8 - 8001dd6: b29b uxth r3, r3 - 8001dd8: 4413 add r3, r2 - 8001dda: 843b strh r3, [r7, #32] - - // Проверка размера принятого буфера - if( rx_msg.length < (11 + len_block * 2)) - 8001ddc: 8c3b ldrh r3, [r7, #32] - 8001dde: 3305 adds r3, #5 - 8001de0: 005b lsls r3, r3, #1 - 8001de2: 4a19 ldr r2, [pc, #100] @ (8001e48 ) - 8001de4: f8b2 2808 ldrh.w r2, [r2, #2056] @ 0x808 - 8001de8: 4293 cmp r3, r2 - 8001dea: db08 blt.n 8001dfe - { - // Размер принятого пакета меньше чем долно быть - // Установить ошибку - // КОД = 2 - cmd_buf[1] = ERR_SIZE; - 8001dec: 69fb ldr r3, [r7, #28] - 8001dee: 3301 adds r3, #1 - 8001df0: 2202 movs r2, #2 - 8001df2: 701a strb r2, [r3, #0] - - // Установить размер буфера = 2 - tx_msg.cmd_len = 2; - 8001df4: 4b15 ldr r3, [pc, #84] @ (8001e4c ) - 8001df6: 2202 movs r2, #2 - 8001df8: f8a3 257c strh.w r2, [r3, #1404] @ 0x57c - write_isa(port_addr, port_data); - } - // Установить размер буфера - tx_msg.cmd_len = 6; - } - break; - 8001dfc: e0c5 b.n 8001f8a - cmd_buf[1] = NO_ERROR; - 8001dfe: 69fb ldr r3, [r7, #28] - 8001e00: 3301 adds r3, #1 - 8001e02: 2201 movs r2, #1 - 8001e04: 701a strb r2, [r3, #0] - cmd_buf[2] = rx_msg.rx_buf[7]; - 8001e06: 69fb ldr r3, [r7, #28] - 8001e08: 3302 adds r3, #2 - 8001e0a: 4a0f ldr r2, [pc, #60] @ (8001e48 ) - 8001e0c: 7b92 ldrb r2, [r2, #14] - 8001e0e: 701a strb r2, [r3, #0] - cmd_buf[3] = rx_msg.rx_buf[8]; - 8001e10: 69fb ldr r3, [r7, #28] - 8001e12: 3303 adds r3, #3 - 8001e14: 4a0c ldr r2, [pc, #48] @ (8001e48 ) - 8001e16: 7bd2 ldrb r2, [r2, #15] - 8001e18: 701a strb r2, [r3, #0] - cmd_buf[4] = rx_msg.rx_buf[9]; - 8001e1a: 69fb ldr r3, [r7, #28] - 8001e1c: 3304 adds r3, #4 - 8001e1e: 4a0a ldr r2, [pc, #40] @ (8001e48 ) - 8001e20: 7c12 ldrb r2, [r2, #16] - 8001e22: 701a strb r2, [r3, #0] - cmd_buf[5] = rx_msg.rx_buf[10]; - 8001e24: 69fb ldr r3, [r7, #28] - 8001e26: 3305 adds r3, #5 - 8001e28: 4a07 ldr r2, [pc, #28] @ (8001e48 ) - 8001e2a: 7c52 ldrb r2, [r2, #17] - 8001e2c: 701a strb r2, [r3, #0] - port_addr = rx_msg.rx_buf[9] + (rx_msg.rx_buf[10] << 8); - 8001e2e: 4b06 ldr r3, [pc, #24] @ (8001e48 ) - 8001e30: 7c1b ldrb r3, [r3, #16] - 8001e32: 461a mov r2, r3 - 8001e34: 4b04 ldr r3, [pc, #16] @ (8001e48 ) - 8001e36: 7c5b ldrb r3, [r3, #17] - 8001e38: 021b lsls r3, r3, #8 - 8001e3a: b29b uxth r3, r3 - 8001e3c: 4413 add r3, r2 - 8001e3e: 82fb strh r3, [r7, #22] - for (i = 0; i - 8001e46: bf00 nop - 8001e48: 200007c4 .word 0x200007c4 - 8001e4c: 20000fd0 .word 0x20000fd0 - 8001e50: 200007d6 .word 0x200007d6 - port_data = rx_msg.rx_buf[11 + i * 2] + (rx_msg.rx_buf[12 + i * 2] << 8); - 8001e54: 8cfb ldrh r3, [r7, #38] @ 0x26 - 8001e56: 005b lsls r3, r3, #1 - 8001e58: 330b adds r3, #11 - 8001e5a: 4a4f ldr r2, [pc, #316] @ (8001f98 ) - 8001e5c: 4413 add r3, r2 - 8001e5e: 79db ldrb r3, [r3, #7] - 8001e60: 4619 mov r1, r3 - 8001e62: 8cfb ldrh r3, [r7, #38] @ 0x26 - 8001e64: 3306 adds r3, #6 - 8001e66: 005b lsls r3, r3, #1 - 8001e68: 4a4b ldr r2, [pc, #300] @ (8001f98 ) - 8001e6a: 4413 add r3, r2 - 8001e6c: 79db ldrb r3, [r3, #7] - 8001e6e: 021b lsls r3, r3, #8 - 8001e70: b29b uxth r3, r3 - 8001e72: 440b add r3, r1 - 8001e74: 82bb strh r3, [r7, #20] - write_isa(port_addr, port_data); - 8001e76: 8aba ldrh r2, [r7, #20] - 8001e78: 8afb ldrh r3, [r7, #22] - 8001e7a: 4611 mov r1, r2 - 8001e7c: 4618 mov r0, r3 - 8001e7e: f000 f8a1 bl 8001fc4 - for (i = 0; i - tx_msg.cmd_len = 6; - 8001e90: 4b42 ldr r3, [pc, #264] @ (8001f9c ) - 8001e92: 2206 movs r2, #6 - 8001e94: f8a3 257c strh.w r2, [r3, #1404] @ 0x57c - break; - 8001e98: e077 b.n 8001f8a - //----------------------------------------------------------- - // КОМАНДА №61 - // ЧТЕНИЕ МАССИВА ИЗ ПОРТА - //----------------------------------------------------------- - - cmd_buf[0] = rx_msg.cmd_code; // - код команды - 8001e9a: 4b3f ldr r3, [pc, #252] @ (8001f98 ) - 8001e9c: 889b ldrh r3, [r3, #4] - 8001e9e: b2da uxtb r2, r3 - 8001ea0: 69fb ldr r3, [r7, #28] - 8001ea2: 701a strb r2, [r3, #0] - len_block = rx_msg.rx_buf[7] + (rx_msg.rx_buf[8] << 8); // - длинна блока данных в словах - 8001ea4: 4b3c ldr r3, [pc, #240] @ (8001f98 ) - 8001ea6: 7b9b ldrb r3, [r3, #14] - 8001ea8: 461a mov r2, r3 - 8001eaa: 4b3b ldr r3, [pc, #236] @ (8001f98 ) - 8001eac: 7bdb ldrb r3, [r3, #15] - 8001eae: 021b lsls r3, r3, #8 - 8001eb0: b29b uxth r3, r3 - 8001eb2: 4413 add r3, r2 - 8001eb4: 843b strh r3, [r7, #32] - - // Проверка размера принятого буфера - if( rx_msg.length < 11 ) - 8001eb6: 4b38 ldr r3, [pc, #224] @ (8001f98 ) - 8001eb8: f8b3 3808 ldrh.w r3, [r3, #2056] @ 0x808 - 8001ebc: 2b0a cmp r3, #10 - 8001ebe: d808 bhi.n 8001ed2 - { - // Размер принятого пакета меньше чем долно быть - // Установить ошибку - // КОД = 2 - cmd_buf[1] = ERR_SIZE; - 8001ec0: 69fb ldr r3, [r7, #28] - 8001ec2: 3301 adds r3, #1 - 8001ec4: 2202 movs r2, #2 - 8001ec6: 701a strb r2, [r3, #0] - - // Установить размер буфера = 2 - tx_msg.cmd_len = 2; - 8001ec8: 4b34 ldr r3, [pc, #208] @ (8001f9c ) - 8001eca: 2202 movs r2, #2 - 8001ecc: f8a3 257c strh.w r2, [r3, #1404] @ 0x57c - cmd_buf[7 + (i*2)] = port_data >> 8; - } - // Установить размер буфера - tx_msg.cmd_len = 6 + len_block * 2; - } - break; - 8001ed0: e05b b.n 8001f8a - cmd_buf[1] = NO_ERROR; - 8001ed2: 69fb ldr r3, [r7, #28] - 8001ed4: 3301 adds r3, #1 - 8001ed6: 2201 movs r2, #1 - 8001ed8: 701a strb r2, [r3, #0] - cmd_buf[2] = rx_msg.rx_buf[7]; - 8001eda: 69fb ldr r3, [r7, #28] - 8001edc: 3302 adds r3, #2 - 8001ede: 4a2e ldr r2, [pc, #184] @ (8001f98 ) - 8001ee0: 7b92 ldrb r2, [r2, #14] - 8001ee2: 701a strb r2, [r3, #0] - cmd_buf[3] = rx_msg.rx_buf[8]; - 8001ee4: 69fb ldr r3, [r7, #28] - 8001ee6: 3303 adds r3, #3 - 8001ee8: 4a2b ldr r2, [pc, #172] @ (8001f98 ) - 8001eea: 7bd2 ldrb r2, [r2, #15] - 8001eec: 701a strb r2, [r3, #0] - cmd_buf[4] = rx_msg.rx_buf[9]; - 8001eee: 69fb ldr r3, [r7, #28] - 8001ef0: 3304 adds r3, #4 - 8001ef2: 4a29 ldr r2, [pc, #164] @ (8001f98 ) - 8001ef4: 7c12 ldrb r2, [r2, #16] - 8001ef6: 701a strb r2, [r3, #0] - cmd_buf[5] = rx_msg.rx_buf[10]; - 8001ef8: 69fb ldr r3, [r7, #28] - 8001efa: 3305 adds r3, #5 - 8001efc: 4a26 ldr r2, [pc, #152] @ (8001f98 ) - 8001efe: 7c52 ldrb r2, [r2, #17] - 8001f00: 701a strb r2, [r3, #0] - port_addr = rx_msg.rx_buf[9] + (rx_msg.rx_buf[10] << 8); - 8001f02: 4b25 ldr r3, [pc, #148] @ (8001f98 ) - 8001f04: 7c1b ldrb r3, [r3, #16] - 8001f06: 461a mov r2, r3 - 8001f08: 4b23 ldr r3, [pc, #140] @ (8001f98 ) - 8001f0a: 7c5b ldrb r3, [r3, #17] - 8001f0c: 021b lsls r3, r3, #8 - 8001f0e: b29b uxth r3, r3 - 8001f10: 4413 add r3, r2 - 8001f12: 837b strh r3, [r7, #26] - for (i = 0; i - port_data = read_isa(port_addr); - 8001f1a: 8b7b ldrh r3, [r7, #26] - 8001f1c: 4618 mov r0, r3 - 8001f1e: f000 f841 bl 8001fa4 - 8001f22: 4603 mov r3, r0 - 8001f24: 833b strh r3, [r7, #24] - cmd_buf[6 + (i*2)] = port_data & 0xFF; - 8001f26: 8cfb ldrh r3, [r7, #38] @ 0x26 - 8001f28: 3303 adds r3, #3 - 8001f2a: 005b lsls r3, r3, #1 - 8001f2c: 461a mov r2, r3 - 8001f2e: 69fb ldr r3, [r7, #28] - 8001f30: 4413 add r3, r2 - 8001f32: 8b3a ldrh r2, [r7, #24] - 8001f34: b2d2 uxtb r2, r2 - 8001f36: 701a strb r2, [r3, #0] - cmd_buf[7 + (i*2)] = port_data >> 8; - 8001f38: 8b3b ldrh r3, [r7, #24] - 8001f3a: 0a1b lsrs r3, r3, #8 - 8001f3c: b29a uxth r2, r3 - 8001f3e: 8cfb ldrh r3, [r7, #38] @ 0x26 - 8001f40: 005b lsls r3, r3, #1 - 8001f42: 3307 adds r3, #7 - 8001f44: 4619 mov r1, r3 - 8001f46: 69fb ldr r3, [r7, #28] - 8001f48: 440b add r3, r1 - 8001f4a: b2d2 uxtb r2, r2 - 8001f4c: 701a strb r2, [r3, #0] - for (i = 0; i - tx_msg.cmd_len = 6 + len_block * 2; - 8001f5c: 8c3b ldrh r3, [r7, #32] - 8001f5e: 3303 adds r3, #3 - 8001f60: b29b uxth r3, r3 - 8001f62: 005b lsls r3, r3, #1 - 8001f64: b29a uxth r2, r3 - 8001f66: 4b0d ldr r3, [pc, #52] @ (8001f9c ) - 8001f68: f8a3 257c strh.w r2, [r3, #1404] @ 0x57c - break; - 8001f6c: e00d b.n 8001f8a - { - //----------------------------------------------------------- - // НЕИЗВЕСТНАЯ КОМАНДА - //----------------------------------------------------------- - - cmd_buf[0] = rx_msg.cmd_code; // - код команды - 8001f6e: 4b0a ldr r3, [pc, #40] @ (8001f98 ) - 8001f70: 889b ldrh r3, [r3, #4] - 8001f72: b2da uxtb r2, r3 - 8001f74: 69fb ldr r3, [r7, #28] - 8001f76: 701a strb r2, [r3, #0] - cmd_buf[1] = ERR_UNKNOW_COMMAND; - 8001f78: 69fb ldr r3, [r7, #28] - 8001f7a: 3301 adds r3, #1 - 8001f7c: 22ff movs r2, #255 @ 0xff - 8001f7e: 701a strb r2, [r3, #0] - tx_msg.cmd_len = 2; - 8001f80: 4b06 ldr r3, [pc, #24] @ (8001f9c ) - 8001f82: 2202 movs r2, #2 - 8001f84: f8a3 257c strh.w r2, [r3, #1404] @ 0x57c - } - break; - 8001f88: bf00 nop - } - - need_send_private = 1; - 8001f8a: 4b05 ldr r3, [pc, #20] @ (8001fa0 ) - 8001f8c: 2201 movs r2, #1 - 8001f8e: 701a strb r2, [r3, #0] - -} - 8001f90: bf00 nop - 8001f92: 3728 adds r7, #40 @ 0x28 - 8001f94: 46bd mov sp, r7 - 8001f96: bd80 pop {r7, pc} - 8001f98: 200007c4 .word 0x200007c4 - 8001f9c: 20000fd0 .word 0x20000fd0 - 8001fa0: 2000154e .word 0x2000154e - -08001fa4 : - -uint16_t read_isa(uint16_t addr) -{ - 8001fa4: b480 push {r7} - 8001fa6: b083 sub sp, #12 - 8001fa8: af00 add r7, sp, #0 - 8001faa: 4603 mov r3, r0 - 8001fac: 80fb strh r3, [r7, #6] - return *(uint16_t*)(ISA_BASE_RD + (addr << 1)); - 8001fae: 88fb ldrh r3, [r7, #6] - 8001fb0: 005b lsls r3, r3, #1 - 8001fb2: f103 43c0 add.w r3, r3, #1610612736 @ 0x60000000 - 8001fb6: 881b ldrh r3, [r3, #0] -} - 8001fb8: 4618 mov r0, r3 - 8001fba: 370c adds r7, #12 - 8001fbc: 46bd mov sp, r7 - 8001fbe: f85d 7b04 ldr.w r7, [sp], #4 - 8001fc2: 4770 bx lr - -08001fc4 : - -void write_isa(uint16_t addr, uint16_t data) -{ - 8001fc4: b480 push {r7} - 8001fc6: b083 sub sp, #12 - 8001fc8: af00 add r7, sp, #0 - 8001fca: 4603 mov r3, r0 - 8001fcc: 460a mov r2, r1 - 8001fce: 80fb strh r3, [r7, #6] - 8001fd0: 4613 mov r3, r2 - 8001fd2: 80bb strh r3, [r7, #4] - *(uint16_t*)(ISA_BASE_WR + (addr << 1)) = data; - 8001fd4: 88fb ldrh r3, [r7, #6] - 8001fd6: 005b lsls r3, r3, #1 - 8001fd8: f103 43c0 add.w r3, r3, #1610612736 @ 0x60000000 - 8001fdc: f503 0380 add.w r3, r3, #4194304 @ 0x400000 - 8001fe0: 461a mov r2, r3 - 8001fe2: 88bb ldrh r3, [r7, #4] - 8001fe4: 8013 strh r3, [r2, #0] -} - 8001fe6: bf00 nop - 8001fe8: 370c adds r7, #12 - 8001fea: 46bd mov sp, r7 - 8001fec: f85d 7b04 ldr.w r7, [sp], #4 - 8001ff0: 4770 bx lr - -08001ff2 : - -_Bool load_flash_to_ems(uint32_t base_addr, uint16_t base_port) -{ - 8001ff2: b580 push {r7, lr} - 8001ff4: b086 sub sp, #24 - 8001ff6: af00 add r7, sp, #0 - 8001ff8: 6078 str r0, [r7, #4] - 8001ffa: 460b mov r3, r1 - 8001ffc: 807b strh r3, [r7, #2] - _Bool load_ok = 0; - 8001ffe: 2300 movs r3, #0 - 8002000: 757b strb r3, [r7, #21] - uint16_t ports_data = 0, i = 0; - 8002002: 2300 movs r3, #0 - 8002004: 827b strh r3, [r7, #18] - 8002006: 2300 movs r3, #0 - 8002008: 82fb strh r3, [r7, #22] - uint32_t flash_data = 0; - 800200a: 2300 movs r3, #0 - 800200c: 60fb str r3, [r7, #12] - write_isa(base_port + 0x2, 200); - 800200e: 887b ldrh r3, [r7, #2] - 8002010: 3302 adds r3, #2 - 8002012: b29b uxth r3, r3 - 8002014: 21c8 movs r1, #200 @ 0xc8 - 8002016: 4618 mov r0, r3 - 8002018: f7ff ffd4 bl 8001fc4 - ports_data = read_isa(base_port + 0x2); - 800201c: 887b ldrh r3, [r7, #2] - 800201e: 3302 adds r3, #2 - 8002020: b29b uxth r3, r3 - 8002022: 4618 mov r0, r3 - 8002024: f7ff ffbe bl 8001fa4 - 8002028: 4603 mov r3, r0 - 800202a: 827b strh r3, [r7, #18] - if (ports_data != 200) return load_ok; - 800202c: 8a7b ldrh r3, [r7, #18] - 800202e: 2bc8 cmp r3, #200 @ 0xc8 - 8002030: d001 beq.n 8002036 - 8002032: 7d7b ldrb r3, [r7, #21] - 8002034: e082 b.n 800213c - for (i = 0; i<=WORDS_TO_KEMS; i++) - 8002036: 2300 movs r3, #0 - 8002038: 82fb strh r3, [r7, #22] - 800203a: e079 b.n 8002130 - { - Flash_Read_Data(base_addr + i * 10, (uint32_t *)&flash_data, 1); - 800203c: 8afa ldrh r2, [r7, #22] - 800203e: 4613 mov r3, r2 - 8002040: 009b lsls r3, r3, #2 - 8002042: 4413 add r3, r2 - 8002044: 005b lsls r3, r3, #1 - 8002046: 461a mov r2, r3 - 8002048: 687b ldr r3, [r7, #4] - 800204a: 4413 add r3, r2 - 800204c: f107 010c add.w r1, r7, #12 - 8002050: 2201 movs r2, #1 - 8002052: 4618 mov r0, r3 - 8002054: f7ff f8e2 bl 800121c - write_isa(base_port + 0x2, flash_data); - 8002058: 887b ldrh r3, [r7, #2] - 800205a: 3302 adds r3, #2 - 800205c: b29b uxth r3, r3 - 800205e: 68fa ldr r2, [r7, #12] - 8002060: b292 uxth r2, r2 - 8002062: 4611 mov r1, r2 - 8002064: 4618 mov r0, r3 - 8002066: f7ff ffad bl 8001fc4 - Flash_Read_Data(base_addr + i * 10 + 2, (uint32_t *)&flash_data, 1); - 800206a: 8afa ldrh r2, [r7, #22] - 800206c: 4613 mov r3, r2 - 800206e: 009b lsls r3, r3, #2 - 8002070: 4413 add r3, r2 - 8002072: 005b lsls r3, r3, #1 - 8002074: 461a mov r2, r3 - 8002076: 687b ldr r3, [r7, #4] - 8002078: 4413 add r3, r2 - 800207a: 3302 adds r3, #2 - 800207c: f107 010c add.w r1, r7, #12 - 8002080: 2201 movs r2, #1 - 8002082: 4618 mov r0, r3 - 8002084: f7ff f8ca bl 800121c - write_isa(base_port + 0x4, flash_data); - 8002088: 887b ldrh r3, [r7, #2] - 800208a: 3304 adds r3, #4 - 800208c: b29b uxth r3, r3 - 800208e: 68fa ldr r2, [r7, #12] - 8002090: b292 uxth r2, r2 - 8002092: 4611 mov r1, r2 - 8002094: 4618 mov r0, r3 - 8002096: f7ff ff95 bl 8001fc4 - Flash_Read_Data(base_addr + i * 10 + 4, (uint32_t *)&flash_data, 1); - 800209a: 8afa ldrh r2, [r7, #22] - 800209c: 4613 mov r3, r2 - 800209e: 009b lsls r3, r3, #2 - 80020a0: 4413 add r3, r2 - 80020a2: 005b lsls r3, r3, #1 - 80020a4: 461a mov r2, r3 - 80020a6: 687b ldr r3, [r7, #4] - 80020a8: 4413 add r3, r2 - 80020aa: 3304 adds r3, #4 - 80020ac: f107 010c add.w r1, r7, #12 - 80020b0: 2201 movs r2, #1 - 80020b2: 4618 mov r0, r3 - 80020b4: f7ff f8b2 bl 800121c - write_isa(base_port + 0x6, flash_data); - 80020b8: 887b ldrh r3, [r7, #2] - 80020ba: 3306 adds r3, #6 - 80020bc: b29b uxth r3, r3 - 80020be: 68fa ldr r2, [r7, #12] - 80020c0: b292 uxth r2, r2 - 80020c2: 4611 mov r1, r2 - 80020c4: 4618 mov r0, r3 - 80020c6: f7ff ff7d bl 8001fc4 - Flash_Read_Data(base_addr + i * 10 + 6, (uint32_t *)&flash_data, 1); - 80020ca: 8afa ldrh r2, [r7, #22] - 80020cc: 4613 mov r3, r2 - 80020ce: 009b lsls r3, r3, #2 - 80020d0: 4413 add r3, r2 - 80020d2: 005b lsls r3, r3, #1 - 80020d4: 461a mov r2, r3 - 80020d6: 687b ldr r3, [r7, #4] - 80020d8: 4413 add r3, r2 - 80020da: 3306 adds r3, #6 - 80020dc: f107 010c add.w r1, r7, #12 - 80020e0: 2201 movs r2, #1 - 80020e2: 4618 mov r0, r3 - 80020e4: f7ff f89a bl 800121c - write_isa(base_port + 0x8, flash_data); - 80020e8: 887b ldrh r3, [r7, #2] - 80020ea: 3308 adds r3, #8 - 80020ec: b29b uxth r3, r3 - 80020ee: 68fa ldr r2, [r7, #12] - 80020f0: b292 uxth r2, r2 - 80020f2: 4611 mov r1, r2 - 80020f4: 4618 mov r0, r3 - 80020f6: f7ff ff65 bl 8001fc4 - Flash_Read_Data(base_addr + i * 10 + 8, (uint32_t *)&flash_data, 1); - 80020fa: 8afa ldrh r2, [r7, #22] - 80020fc: 4613 mov r3, r2 - 80020fe: 009b lsls r3, r3, #2 - 8002100: 4413 add r3, r2 - 8002102: 005b lsls r3, r3, #1 - 8002104: 461a mov r2, r3 - 8002106: 687b ldr r3, [r7, #4] - 8002108: 4413 add r3, r2 - 800210a: 3308 adds r3, #8 - 800210c: f107 010c add.w r1, r7, #12 - 8002110: 2201 movs r2, #1 - 8002112: 4618 mov r0, r3 - 8002114: f7ff f882 bl 800121c - write_isa(base_port + 0xa, flash_data); - 8002118: 887b ldrh r3, [r7, #2] - 800211a: 330a adds r3, #10 - 800211c: b29b uxth r3, r3 - 800211e: 68fa ldr r2, [r7, #12] - 8002120: b292 uxth r2, r2 - 8002122: 4611 mov r1, r2 - 8002124: 4618 mov r0, r3 - 8002126: f7ff ff4d bl 8001fc4 - for (i = 0; i<=WORDS_TO_KEMS; i++) - 800212a: 8afb ldrh r3, [r7, #22] - 800212c: 3301 adds r3, #1 - 800212e: 82fb strh r3, [r7, #22] - 8002130: 8afb ldrh r3, [r7, #22] - 8002132: 2b3c cmp r3, #60 @ 0x3c - 8002134: d982 bls.n 800203c - } - load_ok = 1; - 8002136: 2301 movs r3, #1 - 8002138: 757b strb r3, [r7, #21] - return load_ok; - 800213a: 7d7b ldrb r3, [r7, #21] - -} - 800213c: 4618 mov r0, r3 - 800213e: 3718 adds r7, #24 - 8002140: 46bd mov sp, r7 - 8002142: bd80 pop {r7, pc} - -08002144 : -/** - * @brief This function is executed in case of error occurrence. - * @retval None - */ -void Error_Handler(void) -{ - 8002144: b480 push {r7} - 8002146: af00 add r7, sp, #0 - \details Disables IRQ interrupts by setting the I-bit in the CPSR. - Can only be executed in Privileged modes. - */ -__STATIC_FORCEINLINE void __disable_irq(void) -{ - __ASM volatile ("cpsid i" : : : "memory"); - 8002148: b672 cpsid i -} - 800214a: bf00 nop - /* USER CODE BEGIN Error_Handler_Debug */ - /* User can add his own implementation to report the HAL error return state */ - __disable_irq(); - while (1) - 800214c: bf00 nop - 800214e: e7fd b.n 800214c - -08002150 : -extern _Bool flag_load_ems_b0; -extern _Bool flag_load_ems_b1; -extern _Bool flag_load_kems_b; -extern uint32_t pribor_type; // Тип прибора, где стоит ячейка, нужен для выбора загрузки flash -uint32_t get_ip(void) -{ - 8002150: b580 push {r7, lr} - 8002152: b082 sub sp, #8 - 8002154: af00 add r7, sp, #0 - uint32_t pribor = (((GPIOC->IDR) >> 6) & 0x7) | (((GPIOC->IDR) >> 9) & 0x18); - 8002156: 4b4a ldr r3, [pc, #296] @ (8002280 ) - 8002158: 691b ldr r3, [r3, #16] - 800215a: 099b lsrs r3, r3, #6 - 800215c: f003 0207 and.w r2, r3, #7 - 8002160: 4b47 ldr r3, [pc, #284] @ (8002280 ) - 8002162: 691b ldr r3, [r3, #16] - 8002164: 0a5b lsrs r3, r3, #9 - 8002166: f003 0318 and.w r3, r3, #24 - 800216a: 4313 orrs r3, r2 - 800216c: 607b str r3, [r7, #4] - switch(pribor) - 800216e: 687b ldr r3, [r7, #4] - 8002170: 2b1b cmp r3, #27 - 8002172: d87c bhi.n 800226e - 8002174: a201 add r2, pc, #4 @ (adr r2, 800217c ) - 8002176: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 800217a: bf00 nop - 800217c: 080021f7 .word 0x080021f7 - 8002180: 0800221f .word 0x0800221f - 8002184: 08002247 .word 0x08002247 - 8002188: 0800226f .word 0x0800226f - 800218c: 08002201 .word 0x08002201 - 8002190: 08002229 .word 0x08002229 - 8002194: 08002251 .word 0x08002251 - 8002198: 0800226f .word 0x0800226f - 800219c: 0800220b .word 0x0800220b - 80021a0: 08002233 .word 0x08002233 - 80021a4: 0800225b .word 0x0800225b - 80021a8: 0800226f .word 0x0800226f - 80021ac: 08002215 .word 0x08002215 - 80021b0: 0800223d .word 0x0800223d - 80021b4: 08002265 .word 0x08002265 - 80021b8: 0800226f .word 0x0800226f - 80021bc: 0800226f .word 0x0800226f - 80021c0: 0800226f .word 0x0800226f - 80021c4: 0800226f .word 0x0800226f - 80021c8: 0800226f .word 0x0800226f - 80021cc: 0800226f .word 0x0800226f - 80021d0: 0800226f .word 0x0800226f - 80021d4: 0800226f .word 0x0800226f - 80021d8: 0800226f .word 0x0800226f - 80021dc: 0800226f .word 0x0800226f - 80021e0: 0800226f .word 0x0800226f - 80021e4: 0800226f .word 0x0800226f - 80021e8: 080021ed .word 0x080021ed - { - case PRIBOR_UF: return ipaddr_addr(IP_PRIBOR_UF); - 80021ec: 4825 ldr r0, [pc, #148] @ (8002284 ) - 80021ee: f00f fc12 bl 8011a16 - 80021f2: 4603 mov r3, r0 - 80021f4: e03f b.n 8002276 - case PRIBOR_PRDN1: return ipaddr_addr(IP_PRIBOR_PRDN1); - 80021f6: 4824 ldr r0, [pc, #144] @ (8002288 ) - 80021f8: f00f fc0d bl 8011a16 - 80021fc: 4603 mov r3, r0 - 80021fe: e03a b.n 8002276 - case PRIBOR_PRDN2: return ipaddr_addr(IP_PRIBOR_PRDN2); - 8002200: 4822 ldr r0, [pc, #136] @ (800228c ) - 8002202: f00f fc08 bl 8011a16 - 8002206: 4603 mov r3, r0 - 8002208: e035 b.n 8002276 - case PRIBOR_PRDN3: return ipaddr_addr(IP_PRIBOR_PRDN3); - 800220a: 4821 ldr r0, [pc, #132] @ (8002290 ) - 800220c: f00f fc03 bl 8011a16 - 8002210: 4603 mov r3, r0 - 8002212: e030 b.n 8002276 - case PRIBOR_PRDN4: return ipaddr_addr(IP_PRIBOR_PRDN4); - 8002214: 481f ldr r0, [pc, #124] @ (8002294 ) - 8002216: f00f fbfe bl 8011a16 - 800221a: 4603 mov r3, r0 - 800221c: e02b b.n 8002276 - case PRIBOR_PRDV1: return ipaddr_addr(IP_PRIBOR_PRDV1); - 800221e: 481e ldr r0, [pc, #120] @ (8002298 ) - 8002220: f00f fbf9 bl 8011a16 - 8002224: 4603 mov r3, r0 - 8002226: e026 b.n 8002276 - case PRIBOR_PRDV2: return ipaddr_addr(IP_PRIBOR_PRDV2); - 8002228: 481c ldr r0, [pc, #112] @ (800229c ) - 800222a: f00f fbf4 bl 8011a16 - 800222e: 4603 mov r3, r0 - 8002230: e021 b.n 8002276 - case PRIBOR_PRDV3: return ipaddr_addr(IP_PRIBOR_PRDV3); - 8002232: 481b ldr r0, [pc, #108] @ (80022a0 ) - 8002234: f00f fbef bl 8011a16 - 8002238: 4603 mov r3, r0 - 800223a: e01c b.n 8002276 - case PRIBOR_PRDV4: return ipaddr_addr(IP_PRIBOR_PRDV4); - 800223c: 4819 ldr r0, [pc, #100] @ (80022a4 ) - 800223e: f00f fbea bl 8011a16 - 8002242: 4603 mov r3, r0 - 8002244: e017 b.n 8002276 - case PRIBOR_PRDK1: return ipaddr_addr(IP_PRIBOR_PRDK1); - 8002246: 4818 ldr r0, [pc, #96] @ (80022a8 ) - 8002248: f00f fbe5 bl 8011a16 - 800224c: 4603 mov r3, r0 - 800224e: e012 b.n 8002276 - case PRIBOR_PRDK2: return ipaddr_addr(IP_PRIBOR_PRDK2); - 8002250: 4816 ldr r0, [pc, #88] @ (80022ac ) - 8002252: f00f fbe0 bl 8011a16 - 8002256: 4603 mov r3, r0 - 8002258: e00d b.n 8002276 - case PRIBOR_PRDK3: return ipaddr_addr(IP_PRIBOR_PRDK3); - 800225a: 4815 ldr r0, [pc, #84] @ (80022b0 ) - 800225c: f00f fbdb bl 8011a16 - 8002260: 4603 mov r3, r0 - 8002262: e008 b.n 8002276 - case PRIBOR_PRDK4: return ipaddr_addr(IP_PRIBOR_PRDK4); - 8002264: 4813 ldr r0, [pc, #76] @ (80022b4 ) - 8002266: f00f fbd6 bl 8011a16 - 800226a: 4603 mov r3, r0 - 800226c: e003 b.n 8002276 - default: return ipaddr_addr(IP_PRIBOR_DEFAULT); - 800226e: 4812 ldr r0, [pc, #72] @ (80022b8 ) - 8002270: f00f fbd1 bl 8011a16 - 8002274: 4603 mov r3, r0 - } -} - 8002276: 4618 mov r0, r3 - 8002278: 3708 adds r7, #8 - 800227a: 46bd mov sp, r7 - 800227c: bd80 pop {r7, pc} - 800227e: bf00 nop - 8002280: 40020800 .word 0x40020800 - 8002284: 08017634 .word 0x08017634 - 8002288: 08017640 .word 0x08017640 - 800228c: 0801764c .word 0x0801764c - 8002290: 08017658 .word 0x08017658 - 8002294: 08017664 .word 0x08017664 - 8002298: 08017670 .word 0x08017670 - 800229c: 0801767c .word 0x0801767c - 80022a0: 08017688 .word 0x08017688 - 80022a4: 08017694 .word 0x08017694 - 80022a8: 080176a0 .word 0x080176a0 - 80022ac: 080176ac .word 0x080176ac - 80022b0: 080176b8 .word 0x080176b8 - 80022b4: 080176c4 .word 0x080176c4 - 80022b8: 080176d0 .word 0x080176d0 - -080022bc : - -uint16_t get_port(void) -{ - 80022bc: b480 push {r7} - 80022be: b083 sub sp, #12 - 80022c0: af00 add r7, sp, #0 - uint32_t pribor = (((GPIOC->IDR) >> 6) & 0x7) | (((GPIOC->IDR) >> 9) & 0x18); - 80022c2: 4b3d ldr r3, [pc, #244] @ (80023b8 ) - 80022c4: 691b ldr r3, [r3, #16] - 80022c6: 099b lsrs r3, r3, #6 - 80022c8: f003 0207 and.w r2, r3, #7 - 80022cc: 4b3a ldr r3, [pc, #232] @ (80023b8 ) - 80022ce: 691b ldr r3, [r3, #16] - 80022d0: 0a5b lsrs r3, r3, #9 - 80022d2: f003 0318 and.w r3, r3, #24 - 80022d6: 4313 orrs r3, r2 - 80022d8: 607b str r3, [r7, #4] - switch(pribor) - 80022da: 687b ldr r3, [r7, #4] - 80022dc: 2b1b cmp r3, #27 - 80022de: d862 bhi.n 80023a6 - 80022e0: a201 add r2, pc, #4 @ (adr r2, 80022e8 ) - 80022e2: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 80022e6: bf00 nop - 80022e8: 0800235f .word 0x0800235f - 80022ec: 08002377 .word 0x08002377 - 80022f0: 0800238f .word 0x0800238f - 80022f4: 080023a7 .word 0x080023a7 - 80022f8: 08002365 .word 0x08002365 - 80022fc: 0800237d .word 0x0800237d - 8002300: 08002395 .word 0x08002395 - 8002304: 080023a7 .word 0x080023a7 - 8002308: 0800236b .word 0x0800236b - 800230c: 08002383 .word 0x08002383 - 8002310: 0800239b .word 0x0800239b - 8002314: 080023a7 .word 0x080023a7 - 8002318: 08002371 .word 0x08002371 - 800231c: 08002389 .word 0x08002389 - 8002320: 080023a1 .word 0x080023a1 - 8002324: 080023a7 .word 0x080023a7 - 8002328: 080023a7 .word 0x080023a7 - 800232c: 080023a7 .word 0x080023a7 - 8002330: 080023a7 .word 0x080023a7 - 8002334: 080023a7 .word 0x080023a7 - 8002338: 080023a7 .word 0x080023a7 - 800233c: 080023a7 .word 0x080023a7 - 8002340: 080023a7 .word 0x080023a7 - 8002344: 080023a7 .word 0x080023a7 - 8002348: 080023a7 .word 0x080023a7 - 800234c: 080023a7 .word 0x080023a7 - 8002350: 080023a7 .word 0x080023a7 - 8002354: 08002359 .word 0x08002359 - { - case PRIBOR_UF: return 50000U + PORT_PRIBOR_UF; - 8002358: f24c 3384 movw r3, #50052 @ 0xc384 - 800235c: e025 b.n 80023aa - case PRIBOR_PRDN1: return 50000U + PORT_PRIBOR_PRDN1; - 800235e: f24c 335b movw r3, #50011 @ 0xc35b - 8002362: e022 b.n 80023aa - case PRIBOR_PRDN2: return 50000U + PORT_PRIBOR_PRDN2; - 8002364: f24c 3365 movw r3, #50021 @ 0xc365 - 8002368: e01f b.n 80023aa - case PRIBOR_PRDN3: return 50000U + PORT_PRIBOR_PRDN3; - 800236a: f24c 336f movw r3, #50031 @ 0xc36f - 800236e: e01c b.n 80023aa - case PRIBOR_PRDN4: return 50000U + PORT_PRIBOR_PRDN4; - 8002370: f24c 3379 movw r3, #50041 @ 0xc379 - 8002374: e019 b.n 80023aa - case PRIBOR_PRDV1: return 50000U + PORT_PRIBOR_PRDV1; - 8002376: f24c 335c movw r3, #50012 @ 0xc35c - 800237a: e016 b.n 80023aa - case PRIBOR_PRDV2: return 50000U + PORT_PRIBOR_PRDV2; - 800237c: f24c 3366 movw r3, #50022 @ 0xc366 - 8002380: e013 b.n 80023aa - case PRIBOR_PRDV3: return 50000U + PORT_PRIBOR_PRDV3; - 8002382: f24c 3370 movw r3, #50032 @ 0xc370 - 8002386: e010 b.n 80023aa - case PRIBOR_PRDV4: return 50000U + PORT_PRIBOR_PRDV4; - 8002388: f24c 337a movw r3, #50042 @ 0xc37a - 800238c: e00d b.n 80023aa - case PRIBOR_PRDK1: return 50000U + PORT_PRIBOR_PRDK1; - 800238e: f24c 335d movw r3, #50013 @ 0xc35d - 8002392: e00a b.n 80023aa - case PRIBOR_PRDK2: return 50000U + PORT_PRIBOR_PRDK2; - 8002394: f24c 3367 movw r3, #50023 @ 0xc367 - 8002398: e007 b.n 80023aa - case PRIBOR_PRDK3: return 50000U + PORT_PRIBOR_PRDK3; - 800239a: f24c 3371 movw r3, #50033 @ 0xc371 - 800239e: e004 b.n 80023aa - case PRIBOR_PRDK4: return 50000U + PORT_PRIBOR_PRDK4; - 80023a0: f24c 337b movw r3, #50043 @ 0xc37b - 80023a4: e001 b.n 80023aa - default: return 50000U + PORT_PRIBOR_DEFAULT; - 80023a6: f24c 3395 movw r3, #50069 @ 0xc395 - } -} - 80023aa: 4618 mov r0, r3 - 80023ac: 370c adds r7, #12 - 80023ae: 46bd mov sp, r7 - 80023b0: f85d 7b04 ldr.w r7, [sp], #4 - 80023b4: 4770 bx lr - 80023b6: bf00 nop - 80023b8: 40020800 .word 0x40020800 - -080023bc : - -uint16_t set_status(unsigned char *buf, uint32_t pribor) -{ - 80023bc: b580 push {r7, lr} - 80023be: b084 sub sp, #16 - 80023c0: af00 add r7, sp, #0 - 80023c2: 6078 str r0, [r7, #4] - 80023c4: 6039 str r1, [r7, #0] - uint16_t status_len = 0; - 80023c6: 2300 movs r3, #0 - 80023c8: 81fb strh r3, [r7, #14] - switch(pribor) - 80023ca: 683b ldr r3, [r7, #0] - 80023cc: 2b1b cmp r3, #27 - 80023ce: d87c bhi.n 80024ca - 80023d0: a201 add r2, pc, #4 @ (adr r2, 80023d8 ) - 80023d2: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 80023d6: bf00 nop - 80023d8: 08002453 .word 0x08002453 - 80023dc: 0800247b .word 0x0800247b - 80023e0: 080024a3 .word 0x080024a3 - 80023e4: 080024cb .word 0x080024cb - 80023e8: 0800245d .word 0x0800245d - 80023ec: 08002485 .word 0x08002485 - 80023f0: 080024ad .word 0x080024ad - 80023f4: 080024cb .word 0x080024cb - 80023f8: 08002467 .word 0x08002467 - 80023fc: 0800248f .word 0x0800248f - 8002400: 080024b7 .word 0x080024b7 - 8002404: 080024cb .word 0x080024cb - 8002408: 08002471 .word 0x08002471 - 800240c: 08002499 .word 0x08002499 - 8002410: 080024c1 .word 0x080024c1 - 8002414: 080024cb .word 0x080024cb - 8002418: 080024cb .word 0x080024cb - 800241c: 080024cb .word 0x080024cb - 8002420: 080024cb .word 0x080024cb - 8002424: 080024cb .word 0x080024cb - 8002428: 080024cb .word 0x080024cb - 800242c: 080024cb .word 0x080024cb - 8002430: 080024cb .word 0x080024cb - 8002434: 080024cb .word 0x080024cb - 8002438: 080024cb .word 0x080024cb - 800243c: 080024cb .word 0x080024cb - 8002440: 080024cb .word 0x080024cb - 8002444: 08002449 .word 0x08002449 - { - case PRIBOR_UF: return set_status_uf(buf); - 8002448: 6878 ldr r0, [r7, #4] - 800244a: f000 f933 bl 80026b4 - 800244e: 4603 mov r3, r0 - 8002450: e051 b.n 80024f6 - case PRIBOR_PRDN1: return set_status_prd(buf); - 8002452: 6878 ldr r0, [r7, #4] - 8002454: f000 f856 bl 8002504 - 8002458: 4603 mov r3, r0 - 800245a: e04c b.n 80024f6 - case PRIBOR_PRDN2: return set_status_prd(buf); - 800245c: 6878 ldr r0, [r7, #4] - 800245e: f000 f851 bl 8002504 - 8002462: 4603 mov r3, r0 - 8002464: e047 b.n 80024f6 - case PRIBOR_PRDN3: return set_status_prd(buf); - 8002466: 6878 ldr r0, [r7, #4] - 8002468: f000 f84c bl 8002504 - 800246c: 4603 mov r3, r0 - 800246e: e042 b.n 80024f6 - case PRIBOR_PRDN4: return set_status_prd(buf); - 8002470: 6878 ldr r0, [r7, #4] - 8002472: f000 f847 bl 8002504 - 8002476: 4603 mov r3, r0 - 8002478: e03d b.n 80024f6 - case PRIBOR_PRDV1: return set_status_prd(buf); - 800247a: 6878 ldr r0, [r7, #4] - 800247c: f000 f842 bl 8002504 - 8002480: 4603 mov r3, r0 - 8002482: e038 b.n 80024f6 - case PRIBOR_PRDV2: return set_status_prd(buf); - 8002484: 6878 ldr r0, [r7, #4] - 8002486: f000 f83d bl 8002504 - 800248a: 4603 mov r3, r0 - 800248c: e033 b.n 80024f6 - case PRIBOR_PRDV3: return set_status_prd(buf); - 800248e: 6878 ldr r0, [r7, #4] - 8002490: f000 f838 bl 8002504 - 8002494: 4603 mov r3, r0 - 8002496: e02e b.n 80024f6 - case PRIBOR_PRDV4: return set_status_prd(buf); - 8002498: 6878 ldr r0, [r7, #4] - 800249a: f000 f833 bl 8002504 - 800249e: 4603 mov r3, r0 - 80024a0: e029 b.n 80024f6 - case PRIBOR_PRDK1: return set_status_prd(buf); - 80024a2: 6878 ldr r0, [r7, #4] - 80024a4: f000 f82e bl 8002504 - 80024a8: 4603 mov r3, r0 - 80024aa: e024 b.n 80024f6 - case PRIBOR_PRDK2: return set_status_prd(buf); - 80024ac: 6878 ldr r0, [r7, #4] - 80024ae: f000 f829 bl 8002504 - 80024b2: 4603 mov r3, r0 - 80024b4: e01f b.n 80024f6 - case PRIBOR_PRDK3: return set_status_prd(buf); - 80024b6: 6878 ldr r0, [r7, #4] - 80024b8: f000 f824 bl 8002504 - 80024bc: 4603 mov r3, r0 - 80024be: e01a b.n 80024f6 - case PRIBOR_PRDK4: return set_status_prd(buf); - 80024c0: 6878 ldr r0, [r7, #4] - 80024c2: f000 f81f bl 8002504 - 80024c6: 4603 mov r3, r0 - 80024c8: e015 b.n 80024f6 - default: - { - buf[6] = 2; - 80024ca: 687b ldr r3, [r7, #4] - 80024cc: 3306 adds r3, #6 - 80024ce: 2202 movs r2, #2 - 80024d0: 701a strb r2, [r3, #0] - buf[7] = 0; - 80024d2: 687b ldr r3, [r7, #4] - 80024d4: 3307 adds r3, #7 - 80024d6: 2200 movs r2, #0 - 80024d8: 701a strb r2, [r3, #0] - buf[8] = 1; - 80024da: 687b ldr r3, [r7, #4] - 80024dc: 3308 adds r3, #8 - 80024de: 2201 movs r2, #1 - 80024e0: 701a strb r2, [r3, #0] - buf[9] = 2; - 80024e2: 687b ldr r3, [r7, #4] - 80024e4: 3309 adds r3, #9 - 80024e6: 2202 movs r2, #2 - 80024e8: 701a strb r2, [r3, #0] - status_len = 4; - 80024ea: 2304 movs r3, #4 - 80024ec: 81fb strh r3, [r7, #14] - pribor_type = PRIBOR_TYPE_DEFAULT; - 80024ee: 4b04 ldr r3, [pc, #16] @ (8002500 ) - 80024f0: 2202 movs r2, #2 - 80024f2: 601a str r2, [r3, #0] - } - } - - return(status_len); - 80024f4: 89fb ldrh r3, [r7, #14] -} - 80024f6: 4618 mov r0, r3 - 80024f8: 3710 adds r7, #16 - 80024fa: 46bd mov sp, r7 - 80024fc: bd80 pop {r7, pc} - 80024fe: bf00 nop - 8002500: 200007b8 .word 0x200007b8 - -08002504 : - -uint16_t set_status_prd(unsigned char *buf) -{ - 8002504: b590 push {r4, r7, lr} - 8002506: b085 sub sp, #20 - 8002508: af00 add r7, sp, #0 - 800250a: 6078 str r0, [r7, #4] - uint16_t ports_data, i; - buf[6] = 27; - 800250c: 687b ldr r3, [r7, #4] - 800250e: 3306 adds r3, #6 - 8002510: 221b movs r2, #27 - 8002512: 701a strb r2, [r3, #0] - buf[7] = 0; - 8002514: 687b ldr r3, [r7, #4] - 8002516: 3307 adds r3, #7 - 8002518: 2200 movs r2, #0 - 800251a: 701a strb r2, [r3, #0] - ports_data = read_isa(BASE_ADDR_EMS_G); - 800251c: f44f 7090 mov.w r0, #288 @ 0x120 - 8002520: f7ff fd40 bl 8001fa4 - 8002524: 4603 mov r3, r0 - 8002526: 81bb strh r3, [r7, #12] - buf[8] = 0; - 8002528: 687b ldr r3, [r7, #4] - 800252a: 3308 adds r3, #8 - 800252c: 2200 movs r2, #0 - 800252e: 701a strb r2, [r3, #0] - if( ports_data != 0xFFFF ) - 8002530: 89bb ldrh r3, [r7, #12] - 8002532: f64f 72ff movw r2, #65535 @ 0xffff - 8002536: 4293 cmp r3, r2 - 8002538: d019 beq.n 800256e - { - buf[8] = set_bit(buf[8], 0, 1); - 800253a: 687b ldr r3, [r7, #4] - 800253c: 3308 adds r3, #8 - 800253e: 7818 ldrb r0, [r3, #0] - 8002540: 687b ldr r3, [r7, #4] - 8002542: f103 0408 add.w r4, r3, #8 - 8002546: 2201 movs r2, #1 - 8002548: 2100 movs r1, #0 - 800254a: f000 f9b5 bl 80028b8 - 800254e: 4603 mov r3, r0 - 8002550: 7023 strb r3, [r4, #0] - buf[8] = set_bit(buf[8], 4, flag_load_ems_g); - 8002552: 687b ldr r3, [r7, #4] - 8002554: 3308 adds r3, #8 - 8002556: 7818 ldrb r0, [r3, #0] - 8002558: 4b54 ldr r3, [pc, #336] @ (80026ac ) - 800255a: 781a ldrb r2, [r3, #0] - 800255c: 687b ldr r3, [r7, #4] - 800255e: f103 0408 add.w r4, r3, #8 - 8002562: 2104 movs r1, #4 - 8002564: f000 f9a8 bl 80028b8 - 8002568: 4603 mov r3, r0 - 800256a: 7023 strb r3, [r4, #0] - 800256c: e002 b.n 8002574 - } - else flag_load_ems_g = 0; - 800256e: 4b4f ldr r3, [pc, #316] @ (80026ac ) - 8002570: 2200 movs r2, #0 - 8002572: 701a strb r2, [r3, #0] - ports_data = read_isa(BASE_ADDR_UG); - 8002574: f44f 7080 mov.w r0, #256 @ 0x100 - 8002578: f7ff fd14 bl 8001fa4 - 800257c: 4603 mov r3, r0 - 800257e: 81bb strh r3, [r7, #12] - if( ports_data != 0xFFFF ) buf[8] = set_bit(buf[8], 1, 1); - 8002580: 89bb ldrh r3, [r7, #12] - 8002582: f64f 72ff movw r2, #65535 @ 0xffff - 8002586: 4293 cmp r3, r2 - 8002588: d00b beq.n 80025a2 - 800258a: 687b ldr r3, [r7, #4] - 800258c: 3308 adds r3, #8 - 800258e: 7818 ldrb r0, [r3, #0] - 8002590: 687b ldr r3, [r7, #4] - 8002592: f103 0408 add.w r4, r3, #8 - 8002596: 2201 movs r2, #1 - 8002598: 2101 movs r1, #1 - 800259a: f000 f98d bl 80028b8 - 800259e: 4603 mov r3, r0 - 80025a0: 7023 strb r3, [r4, #0] - ports_data = read_isa(BASE_ADDR_UKP0); - 80025a2: f44f 7098 mov.w r0, #304 @ 0x130 - 80025a6: f7ff fcfd bl 8001fa4 - 80025aa: 4603 mov r3, r0 - 80025ac: 81bb strh r3, [r7, #12] - if( ports_data != 0xFFFF ) buf[8] = set_bit(buf[8], 2, 1); - 80025ae: 89bb ldrh r3, [r7, #12] - 80025b0: f64f 72ff movw r2, #65535 @ 0xffff - 80025b4: 4293 cmp r3, r2 - 80025b6: d00b beq.n 80025d0 - 80025b8: 687b ldr r3, [r7, #4] - 80025ba: 3308 adds r3, #8 - 80025bc: 7818 ldrb r0, [r3, #0] - 80025be: 687b ldr r3, [r7, #4] - 80025c0: f103 0408 add.w r4, r3, #8 - 80025c4: 2201 movs r2, #1 - 80025c6: 2102 movs r1, #2 - 80025c8: f000 f976 bl 80028b8 - 80025cc: 4603 mov r3, r0 - 80025ce: 7023 strb r3, [r4, #0] - ports_data = read_isa(BASE_ADDR_UKP1); - 80025d0: f44f 70a0 mov.w r0, #320 @ 0x140 - 80025d4: f7ff fce6 bl 8001fa4 - 80025d8: 4603 mov r3, r0 - 80025da: 81bb strh r3, [r7, #12] - if( ports_data != 0xFFFF ) buf[8] = set_bit(buf[8], 3, 1); - 80025dc: 89bb ldrh r3, [r7, #12] - 80025de: f64f 72ff movw r2, #65535 @ 0xffff - 80025e2: 4293 cmp r3, r2 - 80025e4: d00b beq.n 80025fe - 80025e6: 687b ldr r3, [r7, #4] - 80025e8: 3308 adds r3, #8 - 80025ea: 7818 ldrb r0, [r3, #0] - 80025ec: 687b ldr r3, [r7, #4] - 80025ee: f103 0408 add.w r4, r3, #8 - 80025f2: 2201 movs r2, #1 - 80025f4: 2103 movs r1, #3 - 80025f6: f000 f95f bl 80028b8 - 80025fa: 4603 mov r3, r0 - 80025fc: 7023 strb r3, [r4, #0] - for (i = 1; i <12; i++) - 80025fe: 2301 movs r3, #1 - 8002600: 81fb strh r3, [r7, #14] - 8002602: e023 b.n 800264c - { - write_isa( BASE_ADDR_EMS_G + 0xC, i ); - 8002604: 89fb ldrh r3, [r7, #14] - 8002606: 4619 mov r1, r3 - 8002608: f44f 7096 mov.w r0, #300 @ 0x12c - 800260c: f7ff fcda bl 8001fc4 - ports_data = read_isa( BASE_ADDR_EMS_G + 0xE ); - 8002610: f44f 7097 mov.w r0, #302 @ 0x12e - 8002614: f7ff fcc6 bl 8001fa4 - 8002618: 4603 mov r3, r0 - 800261a: 81bb strh r3, [r7, #12] - buf[9+(i-1)*2] = ports_data & 0xFF; - 800261c: 89fb ldrh r3, [r7, #14] - 800261e: 3b01 subs r3, #1 - 8002620: 005b lsls r3, r3, #1 - 8002622: 3309 adds r3, #9 - 8002624: 461a mov r2, r3 - 8002626: 687b ldr r3, [r7, #4] - 8002628: 4413 add r3, r2 - 800262a: 89ba ldrh r2, [r7, #12] - 800262c: b2d2 uxtb r2, r2 - 800262e: 701a strb r2, [r3, #0] - buf[10+(i-1)*2] = ports_data >> 8; - 8002630: 89bb ldrh r3, [r7, #12] - 8002632: 0a1b lsrs r3, r3, #8 - 8002634: b29a uxth r2, r3 - 8002636: 89fb ldrh r3, [r7, #14] - 8002638: 3304 adds r3, #4 - 800263a: 005b lsls r3, r3, #1 - 800263c: 4619 mov r1, r3 - 800263e: 687b ldr r3, [r7, #4] - 8002640: 440b add r3, r1 - 8002642: b2d2 uxtb r2, r2 - 8002644: 701a strb r2, [r3, #0] - for (i = 1; i <12; i++) - 8002646: 89fb ldrh r3, [r7, #14] - 8002648: 3301 adds r3, #1 - 800264a: 81fb strh r3, [r7, #14] - 800264c: 89fb ldrh r3, [r7, #14] - 800264e: 2b0b cmp r3, #11 - 8002650: d9d8 bls.n 8002604 - } - ports_data = read_isa( BASE_ADDR_UG + 0xC ); - 8002652: f44f 7086 mov.w r0, #268 @ 0x10c - 8002656: f7ff fca5 bl 8001fa4 - 800265a: 4603 mov r3, r0 - 800265c: 81bb strh r3, [r7, #12] - buf[31] = ports_data & 0xFF; - 800265e: 687b ldr r3, [r7, #4] - 8002660: 331f adds r3, #31 - 8002662: 89ba ldrh r2, [r7, #12] - 8002664: b2d2 uxtb r2, r2 - 8002666: 701a strb r2, [r3, #0] - buf[32] = ports_data >> 8; - 8002668: 89bb ldrh r3, [r7, #12] - 800266a: 0a1b lsrs r3, r3, #8 - 800266c: b29a uxth r2, r3 - 800266e: 687b ldr r3, [r7, #4] - 8002670: 3320 adds r3, #32 - 8002672: b2d2 uxtb r2, r2 - 8002674: 701a strb r2, [r3, #0] - ports_data = read_isa( BASE_ADDR_UG + 0xE ); - 8002676: f44f 7087 mov.w r0, #270 @ 0x10e - 800267a: f7ff fc93 bl 8001fa4 - 800267e: 4603 mov r3, r0 - 8002680: 81bb strh r3, [r7, #12] - buf[33] = ports_data & 0xFF; - 8002682: 687b ldr r3, [r7, #4] - 8002684: 3321 adds r3, #33 @ 0x21 - 8002686: 89ba ldrh r2, [r7, #12] - 8002688: b2d2 uxtb r2, r2 - 800268a: 701a strb r2, [r3, #0] - buf[34] = ports_data >> 8; - 800268c: 89bb ldrh r3, [r7, #12] - 800268e: 0a1b lsrs r3, r3, #8 - 8002690: b29a uxth r2, r3 - 8002692: 687b ldr r3, [r7, #4] - 8002694: 3322 adds r3, #34 @ 0x22 - 8002696: b2d2 uxtb r2, r2 - 8002698: 701a strb r2, [r3, #0] - - pribor_type = PRIBOR_TYPE_PRD; - 800269a: 4b05 ldr r3, [pc, #20] @ (80026b0 ) - 800269c: 2200 movs r2, #0 - 800269e: 601a str r2, [r3, #0] - - return 29; - 80026a0: 231d movs r3, #29 -} - 80026a2: 4618 mov r0, r3 - 80026a4: 3714 adds r7, #20 - 80026a6: 46bd mov sp, r7 - 80026a8: bd90 pop {r4, r7, pc} - 80026aa: bf00 nop - 80026ac: 200007c0 .word 0x200007c0 - 80026b0: 200007b8 .word 0x200007b8 - -080026b4 : - -uint16_t set_status_uf(unsigned char *buf) -{ - 80026b4: b590 push {r4, r7, lr} - 80026b6: b085 sub sp, #20 - 80026b8: af00 add r7, sp, #0 - 80026ba: 6078 str r0, [r7, #4] - uint16_t ports_data, i; - buf[6] = 67; - 80026bc: 687b ldr r3, [r7, #4] - 80026be: 3306 adds r3, #6 - 80026c0: 2243 movs r2, #67 @ 0x43 - 80026c2: 701a strb r2, [r3, #0] - buf[7] = 0; - 80026c4: 687b ldr r3, [r7, #4] - 80026c6: 3307 adds r3, #7 - 80026c8: 2200 movs r2, #0 - 80026ca: 701a strb r2, [r3, #0] - buf[8] = 0; - 80026cc: 687b ldr r3, [r7, #4] - 80026ce: 3308 adds r3, #8 - 80026d0: 2200 movs r2, #0 - 80026d2: 701a strb r2, [r3, #0] - ports_data = read_isa(BASE_ADDR_KEMS_B); - 80026d4: f44f 7098 mov.w r0, #304 @ 0x130 - 80026d8: f7ff fc64 bl 8001fa4 - 80026dc: 4603 mov r3, r0 - 80026de: 81bb strh r3, [r7, #12] - if( ports_data != 0xFFFF ) - 80026e0: 89bb ldrh r3, [r7, #12] - 80026e2: f64f 72ff movw r2, #65535 @ 0xffff - 80026e6: 4293 cmp r3, r2 - 80026e8: d019 beq.n 800271e - { - buf[8] = set_bit(buf[8], 0, 1); - 80026ea: 687b ldr r3, [r7, #4] - 80026ec: 3308 adds r3, #8 - 80026ee: 7818 ldrb r0, [r3, #0] - 80026f0: 687b ldr r3, [r7, #4] - 80026f2: f103 0408 add.w r4, r3, #8 - 80026f6: 2201 movs r2, #1 - 80026f8: 2100 movs r1, #0 - 80026fa: f000 f8dd bl 80028b8 - 80026fe: 4603 mov r3, r0 - 8002700: 7023 strb r3, [r4, #0] - buf[8] = set_bit(buf[8], 3, flag_load_kems_b); - 8002702: 687b ldr r3, [r7, #4] - 8002704: 3308 adds r3, #8 - 8002706: 7818 ldrb r0, [r3, #0] - 8002708: 4b67 ldr r3, [pc, #412] @ (80028a8 ) - 800270a: 781a ldrb r2, [r3, #0] - 800270c: 687b ldr r3, [r7, #4] - 800270e: f103 0408 add.w r4, r3, #8 - 8002712: 2103 movs r1, #3 - 8002714: f000 f8d0 bl 80028b8 - 8002718: 4603 mov r3, r0 - 800271a: 7023 strb r3, [r4, #0] - 800271c: e002 b.n 8002724 - } - else flag_load_kems_b = 0; - 800271e: 4b62 ldr r3, [pc, #392] @ (80028a8 ) - 8002720: 2200 movs r2, #0 - 8002722: 701a strb r2, [r3, #0] - ports_data = read_isa(BASE_ADDR_EMS_B0); - 8002724: f44f 7088 mov.w r0, #272 @ 0x110 - 8002728: f7ff fc3c bl 8001fa4 - 800272c: 4603 mov r3, r0 - 800272e: 81bb strh r3, [r7, #12] - if( ports_data != 0xFFFF ) - 8002730: 89bb ldrh r3, [r7, #12] - 8002732: f64f 72ff movw r2, #65535 @ 0xffff - 8002736: 4293 cmp r3, r2 - 8002738: d019 beq.n 800276e - { - buf[8] = set_bit(buf[8], 1, 1); - 800273a: 687b ldr r3, [r7, #4] - 800273c: 3308 adds r3, #8 - 800273e: 7818 ldrb r0, [r3, #0] - 8002740: 687b ldr r3, [r7, #4] - 8002742: f103 0408 add.w r4, r3, #8 - 8002746: 2201 movs r2, #1 - 8002748: 2101 movs r1, #1 - 800274a: f000 f8b5 bl 80028b8 - 800274e: 4603 mov r3, r0 - 8002750: 7023 strb r3, [r4, #0] - buf[8] = set_bit(buf[8], 4, flag_load_ems_b0); - 8002752: 687b ldr r3, [r7, #4] - 8002754: 3308 adds r3, #8 - 8002756: 7818 ldrb r0, [r3, #0] - 8002758: 4b54 ldr r3, [pc, #336] @ (80028ac ) - 800275a: 781a ldrb r2, [r3, #0] - 800275c: 687b ldr r3, [r7, #4] - 800275e: f103 0408 add.w r4, r3, #8 - 8002762: 2104 movs r1, #4 - 8002764: f000 f8a8 bl 80028b8 - 8002768: 4603 mov r3, r0 - 800276a: 7023 strb r3, [r4, #0] - 800276c: e002 b.n 8002774 - } - else flag_load_ems_b0 = 0; - 800276e: 4b4f ldr r3, [pc, #316] @ (80028ac ) - 8002770: 2200 movs r2, #0 - 8002772: 701a strb r2, [r3, #0] - ports_data = read_isa(BASE_ADDR_EMS_B1); - 8002774: f44f 7090 mov.w r0, #288 @ 0x120 - 8002778: f7ff fc14 bl 8001fa4 - 800277c: 4603 mov r3, r0 - 800277e: 81bb strh r3, [r7, #12] - if( ports_data != 0xFFFF ) - 8002780: 89bb ldrh r3, [r7, #12] - 8002782: f64f 72ff movw r2, #65535 @ 0xffff - 8002786: 4293 cmp r3, r2 - 8002788: d019 beq.n 80027be - { - buf[8] = set_bit(buf[8], 2, 1); - 800278a: 687b ldr r3, [r7, #4] - 800278c: 3308 adds r3, #8 - 800278e: 7818 ldrb r0, [r3, #0] - 8002790: 687b ldr r3, [r7, #4] - 8002792: f103 0408 add.w r4, r3, #8 - 8002796: 2201 movs r2, #1 - 8002798: 2102 movs r1, #2 - 800279a: f000 f88d bl 80028b8 - 800279e: 4603 mov r3, r0 - 80027a0: 7023 strb r3, [r4, #0] - buf[8] = set_bit(buf[8], 5, flag_load_ems_b1); - 80027a2: 687b ldr r3, [r7, #4] - 80027a4: 3308 adds r3, #8 - 80027a6: 7818 ldrb r0, [r3, #0] - 80027a8: 4b41 ldr r3, [pc, #260] @ (80028b0 ) - 80027aa: 781a ldrb r2, [r3, #0] - 80027ac: 687b ldr r3, [r7, #4] - 80027ae: f103 0408 add.w r4, r3, #8 - 80027b2: 2105 movs r1, #5 - 80027b4: f000 f880 bl 80028b8 - 80027b8: 4603 mov r3, r0 - 80027ba: 7023 strb r3, [r4, #0] - 80027bc: e002 b.n 80027c4 - } - else flag_load_ems_b1 = 0; - 80027be: 4b3c ldr r3, [pc, #240] @ (80028b0 ) - 80027c0: 2200 movs r2, #0 - 80027c2: 701a strb r2, [r3, #0] - for (i = 1; i <12; i++) - 80027c4: 2301 movs r3, #1 - 80027c6: 81fb strh r3, [r7, #14] - 80027c8: e063 b.n 8002892 - { - write_isa( BASE_ADDR_KEMS_B + 0xC, i ); - 80027ca: 89fb ldrh r3, [r7, #14] - 80027cc: 4619 mov r1, r3 - 80027ce: f44f 709e mov.w r0, #316 @ 0x13c - 80027d2: f7ff fbf7 bl 8001fc4 - ports_data = read_isa( BASE_ADDR_KEMS_B + 0xE ); - 80027d6: f44f 709f mov.w r0, #318 @ 0x13e - 80027da: f7ff fbe3 bl 8001fa4 - 80027de: 4603 mov r3, r0 - 80027e0: 81bb strh r3, [r7, #12] - buf[9+(i-1)*2] = ports_data & 0xFF; - 80027e2: 89fb ldrh r3, [r7, #14] - 80027e4: 3b01 subs r3, #1 - 80027e6: 005b lsls r3, r3, #1 - 80027e8: 3309 adds r3, #9 - 80027ea: 461a mov r2, r3 - 80027ec: 687b ldr r3, [r7, #4] - 80027ee: 4413 add r3, r2 - 80027f0: 89ba ldrh r2, [r7, #12] - 80027f2: b2d2 uxtb r2, r2 - 80027f4: 701a strb r2, [r3, #0] - buf[10+(i-1)*2] = ports_data >> 8; - 80027f6: 89bb ldrh r3, [r7, #12] - 80027f8: 0a1b lsrs r3, r3, #8 - 80027fa: b29a uxth r2, r3 - 80027fc: 89fb ldrh r3, [r7, #14] - 80027fe: 3304 adds r3, #4 - 8002800: 005b lsls r3, r3, #1 - 8002802: 4619 mov r1, r3 - 8002804: 687b ldr r3, [r7, #4] - 8002806: 440b add r3, r1 - 8002808: b2d2 uxtb r2, r2 - 800280a: 701a strb r2, [r3, #0] - write_isa( BASE_ADDR_EMS_B0 + 0xC, i ); - 800280c: 89fb ldrh r3, [r7, #14] - 800280e: 4619 mov r1, r3 - 8002810: f44f 708e mov.w r0, #284 @ 0x11c - 8002814: f7ff fbd6 bl 8001fc4 - ports_data = read_isa( BASE_ADDR_EMS_B0 + 0xE ); - 8002818: f44f 708f mov.w r0, #286 @ 0x11e - 800281c: f7ff fbc2 bl 8001fa4 - 8002820: 4603 mov r3, r0 - 8002822: 81bb strh r3, [r7, #12] - buf[9+(i-1)*2 + 22] = ports_data & 0xFF; - 8002824: 89fb ldrh r3, [r7, #14] - 8002826: 3b01 subs r3, #1 - 8002828: 005b lsls r3, r3, #1 - 800282a: 331f adds r3, #31 - 800282c: 687a ldr r2, [r7, #4] - 800282e: 4413 add r3, r2 - 8002830: 89ba ldrh r2, [r7, #12] - 8002832: b2d2 uxtb r2, r2 - 8002834: 701a strb r2, [r3, #0] - buf[10+(i-1)*2 + 22] = ports_data >> 8; - 8002836: 89bb ldrh r3, [r7, #12] - 8002838: 0a1b lsrs r3, r3, #8 - 800283a: b299 uxth r1, r3 - 800283c: 89fb ldrh r3, [r7, #14] - 800283e: 3b01 subs r3, #1 - 8002840: 005b lsls r3, r3, #1 - 8002842: 3320 adds r3, #32 - 8002844: 687a ldr r2, [r7, #4] - 8002846: 4413 add r3, r2 - 8002848: b2ca uxtb r2, r1 - 800284a: 701a strb r2, [r3, #0] - write_isa( BASE_ADDR_EMS_B1 + 0xC, i ); - 800284c: 89fb ldrh r3, [r7, #14] - 800284e: 4619 mov r1, r3 - 8002850: f44f 7096 mov.w r0, #300 @ 0x12c - 8002854: f7ff fbb6 bl 8001fc4 - ports_data = read_isa( BASE_ADDR_EMS_B1 + 0xE ); - 8002858: f44f 7097 mov.w r0, #302 @ 0x12e - 800285c: f7ff fba2 bl 8001fa4 - 8002860: 4603 mov r3, r0 - 8002862: 81bb strh r3, [r7, #12] - buf[9+(i-1)*2 + 44] = ports_data & 0xFF; - 8002864: 89fb ldrh r3, [r7, #14] - 8002866: 3b01 subs r3, #1 - 8002868: 005b lsls r3, r3, #1 - 800286a: 3335 adds r3, #53 @ 0x35 - 800286c: 687a ldr r2, [r7, #4] - 800286e: 4413 add r3, r2 - 8002870: 89ba ldrh r2, [r7, #12] - 8002872: b2d2 uxtb r2, r2 - 8002874: 701a strb r2, [r3, #0] - buf[10+(i-1)*2 + 44] = ports_data >> 8; - 8002876: 89bb ldrh r3, [r7, #12] - 8002878: 0a1b lsrs r3, r3, #8 - 800287a: b299 uxth r1, r3 - 800287c: 89fb ldrh r3, [r7, #14] - 800287e: 3b01 subs r3, #1 - 8002880: 005b lsls r3, r3, #1 - 8002882: 3336 adds r3, #54 @ 0x36 - 8002884: 687a ldr r2, [r7, #4] - 8002886: 4413 add r3, r2 - 8002888: b2ca uxtb r2, r1 - 800288a: 701a strb r2, [r3, #0] - for (i = 1; i <12; i++) - 800288c: 89fb ldrh r3, [r7, #14] - 800288e: 3301 adds r3, #1 - 8002890: 81fb strh r3, [r7, #14] - 8002892: 89fb ldrh r3, [r7, #14] - 8002894: 2b0b cmp r3, #11 - 8002896: d998 bls.n 80027ca - } - - pribor_type = PRIBOR_TYPE_UF; - 8002898: 4b06 ldr r3, [pc, #24] @ (80028b4 ) - 800289a: 2201 movs r2, #1 - 800289c: 601a str r2, [r3, #0] - - return 69; - 800289e: 2345 movs r3, #69 @ 0x45 -} - 80028a0: 4618 mov r0, r3 - 80028a2: 3714 adds r7, #20 - 80028a4: 46bd mov sp, r7 - 80028a6: bd90 pop {r4, r7, pc} - 80028a8: 200007c3 .word 0x200007c3 - 80028ac: 200007c1 .word 0x200007c1 - 80028b0: 200007c2 .word 0x200007c2 - 80028b4: 200007b8 .word 0x200007b8 - -080028b8 : - -unsigned char set_bit(unsigned char bits, unsigned char index, _Bool val) -{ - 80028b8: b480 push {r7} - 80028ba: b085 sub sp, #20 - 80028bc: af00 add r7, sp, #0 - 80028be: 4603 mov r3, r0 - 80028c0: 71fb strb r3, [r7, #7] - 80028c2: 460b mov r3, r1 - 80028c4: 71bb strb r3, [r7, #6] - 80028c6: 4613 mov r3, r2 - 80028c8: 717b strb r3, [r7, #5] - unsigned char new_val; - if (val == 1) new_val = bits | (1 << index); - 80028ca: 797b ldrb r3, [r7, #5] - 80028cc: 2b00 cmp r3, #0 - 80028ce: d00a beq.n 80028e6 - 80028d0: 79bb ldrb r3, [r7, #6] - 80028d2: 2201 movs r2, #1 - 80028d4: fa02 f303 lsl.w r3, r2, r3 - 80028d8: b25a sxtb r2, r3 - 80028da: f997 3007 ldrsb.w r3, [r7, #7] - 80028de: 4313 orrs r3, r2 - 80028e0: b25b sxtb r3, r3 - 80028e2: 73fb strb r3, [r7, #15] - 80028e4: e00b b.n 80028fe - else new_val = bits & ~(1 << index); - 80028e6: 79bb ldrb r3, [r7, #6] - 80028e8: 2201 movs r2, #1 - 80028ea: fa02 f303 lsl.w r3, r2, r3 - 80028ee: b25b sxtb r3, r3 - 80028f0: 43db mvns r3, r3 - 80028f2: b25a sxtb r2, r3 - 80028f4: f997 3007 ldrsb.w r3, [r7, #7] - 80028f8: 4013 ands r3, r2 - 80028fa: b25b sxtb r3, r3 - 80028fc: 73fb strb r3, [r7, #15] - return new_val; - 80028fe: 7bfb ldrb r3, [r7, #15] -} - 8002900: 4618 mov r0, r3 - 8002902: 3714 adds r7, #20 - 8002904: 46bd mov sp, r7 - 8002906: f85d 7b04 ldr.w r7, [sp], #4 - 800290a: 4770 bx lr - -0800290c : -/* USER CODE END 0 */ -/** - * Initializes the Global MSP. - */ -void HAL_MspInit(void) -{ - 800290c: b480 push {r7} - 800290e: b083 sub sp, #12 - 8002910: af00 add r7, sp, #0 - /* USER CODE BEGIN MspInit 0 */ - - /* USER CODE END MspInit 0 */ - - __HAL_RCC_SYSCFG_CLK_ENABLE(); - 8002912: 2300 movs r3, #0 - 8002914: 607b str r3, [r7, #4] - 8002916: 4b10 ldr r3, [pc, #64] @ (8002958 ) - 8002918: 6c5b ldr r3, [r3, #68] @ 0x44 - 800291a: 4a0f ldr r2, [pc, #60] @ (8002958 ) - 800291c: f443 4380 orr.w r3, r3, #16384 @ 0x4000 - 8002920: 6453 str r3, [r2, #68] @ 0x44 - 8002922: 4b0d ldr r3, [pc, #52] @ (8002958 ) - 8002924: 6c5b ldr r3, [r3, #68] @ 0x44 - 8002926: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 800292a: 607b str r3, [r7, #4] - 800292c: 687b ldr r3, [r7, #4] - __HAL_RCC_PWR_CLK_ENABLE(); - 800292e: 2300 movs r3, #0 - 8002930: 603b str r3, [r7, #0] - 8002932: 4b09 ldr r3, [pc, #36] @ (8002958 ) - 8002934: 6c1b ldr r3, [r3, #64] @ 0x40 - 8002936: 4a08 ldr r2, [pc, #32] @ (8002958 ) - 8002938: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 - 800293c: 6413 str r3, [r2, #64] @ 0x40 - 800293e: 4b06 ldr r3, [pc, #24] @ (8002958 ) - 8002940: 6c1b ldr r3, [r3, #64] @ 0x40 - 8002942: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 8002946: 603b str r3, [r7, #0] - 8002948: 683b ldr r3, [r7, #0] - /* System interrupt init*/ - - /* USER CODE BEGIN MspInit 1 */ - - /* USER CODE END MspInit 1 */ -} - 800294a: bf00 nop - 800294c: 370c adds r7, #12 - 800294e: 46bd mov sp, r7 - 8002950: f85d 7b04 ldr.w r7, [sp], #4 - 8002954: 4770 bx lr - 8002956: bf00 nop - 8002958: 40023800 .word 0x40023800 - -0800295c : -* This function configures the hardware resources used in this example -* @param htim_base: TIM_Base handle pointer -* @retval None -*/ -void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) -{ - 800295c: b580 push {r7, lr} - 800295e: b084 sub sp, #16 - 8002960: af00 add r7, sp, #0 - 8002962: 6078 str r0, [r7, #4] - if(htim_base->Instance==TIM3) - 8002964: 687b ldr r3, [r7, #4] - 8002966: 681b ldr r3, [r3, #0] - 8002968: 4a0e ldr r2, [pc, #56] @ (80029a4 ) - 800296a: 4293 cmp r3, r2 - 800296c: d115 bne.n 800299a - { - /* USER CODE BEGIN TIM3_MspInit 0 */ - - /* USER CODE END TIM3_MspInit 0 */ - /* Peripheral clock enable */ - __HAL_RCC_TIM3_CLK_ENABLE(); - 800296e: 2300 movs r3, #0 - 8002970: 60fb str r3, [r7, #12] - 8002972: 4b0d ldr r3, [pc, #52] @ (80029a8 ) - 8002974: 6c1b ldr r3, [r3, #64] @ 0x40 - 8002976: 4a0c ldr r2, [pc, #48] @ (80029a8 ) - 8002978: f043 0302 orr.w r3, r3, #2 - 800297c: 6413 str r3, [r2, #64] @ 0x40 - 800297e: 4b0a ldr r3, [pc, #40] @ (80029a8 ) - 8002980: 6c1b ldr r3, [r3, #64] @ 0x40 - 8002982: f003 0302 and.w r3, r3, #2 - 8002986: 60fb str r3, [r7, #12] - 8002988: 68fb ldr r3, [r7, #12] - /* TIM3 interrupt Init */ - HAL_NVIC_SetPriority(TIM3_IRQn, 0, 0); - 800298a: 2200 movs r2, #0 - 800298c: 2100 movs r1, #0 - 800298e: 201d movs r0, #29 - 8002990: f000 fbeb bl 800316a - HAL_NVIC_EnableIRQ(TIM3_IRQn); - 8002994: 201d movs r0, #29 - 8002996: f000 fc04 bl 80031a2 - /* USER CODE BEGIN TIM3_MspInit 1 */ - - /* USER CODE END TIM3_MspInit 1 */ - } - -} - 800299a: bf00 nop - 800299c: 3710 adds r7, #16 - 800299e: 46bd mov sp, r7 - 80029a0: bd80 pop {r7, pc} - 80029a2: bf00 nop - 80029a4: 40000400 .word 0x40000400 - 80029a8: 40023800 .word 0x40023800 - -080029ac : - -} - -static uint32_t FMC_Initialized = 0; - -static void HAL_FMC_MspInit(void){ - 80029ac: b580 push {r7, lr} - 80029ae: b086 sub sp, #24 - 80029b0: af00 add r7, sp, #0 - /* USER CODE BEGIN FMC_MspInit 0 */ - - /* USER CODE END FMC_MspInit 0 */ - GPIO_InitTypeDef GPIO_InitStruct ={0}; - 80029b2: 1d3b adds r3, r7, #4 - 80029b4: 2200 movs r2, #0 - 80029b6: 601a str r2, [r3, #0] - 80029b8: 605a str r2, [r3, #4] - 80029ba: 609a str r2, [r3, #8] - 80029bc: 60da str r2, [r3, #12] - 80029be: 611a str r2, [r3, #16] - if (FMC_Initialized) { - 80029c0: 4b2c ldr r3, [pc, #176] @ (8002a74 ) - 80029c2: 681b ldr r3, [r3, #0] - 80029c4: 2b00 cmp r3, #0 - 80029c6: d150 bne.n 8002a6a - return; - } - FMC_Initialized = 1; - 80029c8: 4b2a ldr r3, [pc, #168] @ (8002a74 ) - 80029ca: 2201 movs r2, #1 - 80029cc: 601a str r2, [r3, #0] - - /* Peripheral clock enable */ - __HAL_RCC_FMC_CLK_ENABLE(); - 80029ce: 2300 movs r3, #0 - 80029d0: 603b str r3, [r7, #0] - 80029d2: 4b29 ldr r3, [pc, #164] @ (8002a78 ) - 80029d4: 6b9b ldr r3, [r3, #56] @ 0x38 - 80029d6: 4a28 ldr r2, [pc, #160] @ (8002a78 ) - 80029d8: f043 0301 orr.w r3, r3, #1 - 80029dc: 6393 str r3, [r2, #56] @ 0x38 - 80029de: 4b26 ldr r3, [pc, #152] @ (8002a78 ) - 80029e0: 6b9b ldr r3, [r3, #56] @ 0x38 - 80029e2: f003 0301 and.w r3, r3, #1 - 80029e6: 603b str r3, [r7, #0] - 80029e8: 683b ldr r3, [r7, #0] - PD5 ------> FMC_NWE - PD7 ------> FMC_NE1 - PE0 ------> FMC_NBL0 - PE1 ------> FMC_NBL1 - */ - GPIO_InitStruct.Pin = GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6 - 80029ea: f64f 73fb movw r3, #65531 @ 0xfffb - 80029ee: 607b str r3, [r7, #4] - |GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10 - |GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14 - |GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 80029f0: 2302 movs r3, #2 - 80029f2: 60bb str r3, [r7, #8] - GPIO_InitStruct.Pull = GPIO_NOPULL; - 80029f4: 2300 movs r3, #0 - 80029f6: 60fb str r3, [r7, #12] - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 80029f8: 2303 movs r3, #3 - 80029fa: 613b str r3, [r7, #16] - GPIO_InitStruct.Alternate = GPIO_AF12_FMC; - 80029fc: 230c movs r3, #12 - 80029fe: 617b str r3, [r7, #20] - HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); - 8002a00: 1d3b adds r3, r7, #4 - 8002a02: 4619 mov r1, r3 - 8002a04: 481d ldr r0, [pc, #116] @ (8002a7c ) - 8002a06: f001 ffef bl 80049e8 - - GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3 - 8002a0a: f24f 033f movw r3, #61503 @ 0xf03f - 8002a0e: 607b str r3, [r7, #4] - |GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_12|GPIO_PIN_13 - |GPIO_PIN_14|GPIO_PIN_15; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8002a10: 2302 movs r3, #2 - 8002a12: 60bb str r3, [r7, #8] - GPIO_InitStruct.Pull = GPIO_NOPULL; - 8002a14: 2300 movs r3, #0 - 8002a16: 60fb str r3, [r7, #12] - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 8002a18: 2303 movs r3, #3 - 8002a1a: 613b str r3, [r7, #16] - GPIO_InitStruct.Alternate = GPIO_AF12_FMC; - 8002a1c: 230c movs r3, #12 - 8002a1e: 617b str r3, [r7, #20] - HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); - 8002a20: 1d3b adds r3, r7, #4 - 8002a22: 4619 mov r1, r3 - 8002a24: 4816 ldr r0, [pc, #88] @ (8002a80 ) - 8002a26: f001 ffdf bl 80049e8 - - GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3 - 8002a2a: 233f movs r3, #63 @ 0x3f - 8002a2c: 607b str r3, [r7, #4] - |GPIO_PIN_4|GPIO_PIN_5; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8002a2e: 2302 movs r3, #2 - 8002a30: 60bb str r3, [r7, #8] - GPIO_InitStruct.Pull = GPIO_NOPULL; - 8002a32: 2300 movs r3, #0 - 8002a34: 60fb str r3, [r7, #12] - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 8002a36: 2303 movs r3, #3 - 8002a38: 613b str r3, [r7, #16] - GPIO_InitStruct.Alternate = GPIO_AF12_FMC; - 8002a3a: 230c movs r3, #12 - 8002a3c: 617b str r3, [r7, #20] - HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); - 8002a3e: 1d3b adds r3, r7, #4 - 8002a40: 4619 mov r1, r3 - 8002a42: 4810 ldr r0, [pc, #64] @ (8002a84 ) - 8002a44: f001 ffd0 bl 80049e8 - - GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11 - 8002a48: f64f 73b3 movw r3, #65459 @ 0xffb3 - 8002a4c: 607b str r3, [r7, #4] - |GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15 - |GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5 - |GPIO_PIN_7; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8002a4e: 2302 movs r3, #2 - 8002a50: 60bb str r3, [r7, #8] - GPIO_InitStruct.Pull = GPIO_NOPULL; - 8002a52: 2300 movs r3, #0 - 8002a54: 60fb str r3, [r7, #12] - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 8002a56: 2303 movs r3, #3 - 8002a58: 613b str r3, [r7, #16] - GPIO_InitStruct.Alternate = GPIO_AF12_FMC; - 8002a5a: 230c movs r3, #12 - 8002a5c: 617b str r3, [r7, #20] - HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); - 8002a5e: 1d3b adds r3, r7, #4 - 8002a60: 4619 mov r1, r3 - 8002a62: 4809 ldr r0, [pc, #36] @ (8002a88 ) - 8002a64: f001 ffc0 bl 80049e8 - 8002a68: e000 b.n 8002a6c - return; - 8002a6a: bf00 nop - - /* USER CODE BEGIN FMC_MspInit 1 */ - - /* USER CODE END FMC_MspInit 1 */ -} - 8002a6c: 3718 adds r7, #24 - 8002a6e: 46bd mov sp, r7 - 8002a70: bd80 pop {r7, pc} - 8002a72: bf00 nop - 8002a74: 20001550 .word 0x20001550 - 8002a78: 40023800 .word 0x40023800 - 8002a7c: 40021000 .word 0x40021000 - 8002a80: 40021400 .word 0x40021400 - 8002a84: 40021800 .word 0x40021800 - 8002a88: 40020c00 .word 0x40020c00 - -08002a8c : - -void HAL_SRAM_MspInit(SRAM_HandleTypeDef* hsram){ - 8002a8c: b580 push {r7, lr} - 8002a8e: b082 sub sp, #8 - 8002a90: af00 add r7, sp, #0 - 8002a92: 6078 str r0, [r7, #4] - /* USER CODE BEGIN SRAM_MspInit 0 */ - - /* USER CODE END SRAM_MspInit 0 */ - HAL_FMC_MspInit(); - 8002a94: f7ff ff8a bl 80029ac - /* USER CODE BEGIN SRAM_MspInit 1 */ - - /* USER CODE END SRAM_MspInit 1 */ -} - 8002a98: bf00 nop - 8002a9a: 3708 adds r7, #8 - 8002a9c: 46bd mov sp, r7 - 8002a9e: bd80 pop {r7, pc} - -08002aa0 : -/******************************************************************************/ -/** - * @brief This function handles Non maskable interrupt. - */ -void NMI_Handler(void) -{ - 8002aa0: b480 push {r7} - 8002aa2: af00 add r7, sp, #0 - /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ - - /* USER CODE END NonMaskableInt_IRQn 0 */ - /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ - while (1) - 8002aa4: bf00 nop - 8002aa6: e7fd b.n 8002aa4 - -08002aa8 : - -/** - * @brief This function handles Hard fault interrupt. - */ -void HardFault_Handler(void) -{ - 8002aa8: b480 push {r7} - 8002aaa: af00 add r7, sp, #0 - /* USER CODE BEGIN HardFault_IRQn 0 */ - - /* USER CODE END HardFault_IRQn 0 */ - while (1) - 8002aac: bf00 nop - 8002aae: e7fd b.n 8002aac - -08002ab0 : - -/** - * @brief This function handles Memory management fault. - */ -void MemManage_Handler(void) -{ - 8002ab0: b480 push {r7} - 8002ab2: af00 add r7, sp, #0 - /* USER CODE BEGIN MemoryManagement_IRQn 0 */ - - /* USER CODE END MemoryManagement_IRQn 0 */ - while (1) - 8002ab4: bf00 nop - 8002ab6: e7fd b.n 8002ab4 - -08002ab8 : - -/** - * @brief This function handles Pre-fetch fault, memory access fault. - */ -void BusFault_Handler(void) -{ - 8002ab8: b480 push {r7} - 8002aba: af00 add r7, sp, #0 - /* USER CODE BEGIN BusFault_IRQn 0 */ - - /* USER CODE END BusFault_IRQn 0 */ - while (1) - 8002abc: bf00 nop - 8002abe: e7fd b.n 8002abc - -08002ac0 : - -/** - * @brief This function handles Undefined instruction or illegal state. - */ -void UsageFault_Handler(void) -{ - 8002ac0: b480 push {r7} - 8002ac2: af00 add r7, sp, #0 - /* USER CODE BEGIN UsageFault_IRQn 0 */ - - /* USER CODE END UsageFault_IRQn 0 */ - while (1) - 8002ac4: bf00 nop - 8002ac6: e7fd b.n 8002ac4 - -08002ac8 : - -/** - * @brief This function handles System service call via SWI instruction. - */ -void SVC_Handler(void) -{ - 8002ac8: b480 push {r7} - 8002aca: af00 add r7, sp, #0 - - /* USER CODE END SVCall_IRQn 0 */ - /* USER CODE BEGIN SVCall_IRQn 1 */ - - /* USER CODE END SVCall_IRQn 1 */ -} - 8002acc: bf00 nop - 8002ace: 46bd mov sp, r7 - 8002ad0: f85d 7b04 ldr.w r7, [sp], #4 - 8002ad4: 4770 bx lr - -08002ad6 : - -/** - * @brief This function handles Debug monitor. - */ -void DebugMon_Handler(void) -{ - 8002ad6: b480 push {r7} - 8002ad8: af00 add r7, sp, #0 - - /* USER CODE END DebugMonitor_IRQn 0 */ - /* USER CODE BEGIN DebugMonitor_IRQn 1 */ - - /* USER CODE END DebugMonitor_IRQn 1 */ -} - 8002ada: bf00 nop - 8002adc: 46bd mov sp, r7 - 8002ade: f85d 7b04 ldr.w r7, [sp], #4 - 8002ae2: 4770 bx lr - -08002ae4 : - -/** - * @brief This function handles Pendable request for system service. - */ -void PendSV_Handler(void) -{ - 8002ae4: b480 push {r7} - 8002ae6: af00 add r7, sp, #0 - - /* USER CODE END PendSV_IRQn 0 */ - /* USER CODE BEGIN PendSV_IRQn 1 */ - - /* USER CODE END PendSV_IRQn 1 */ -} - 8002ae8: bf00 nop - 8002aea: 46bd mov sp, r7 - 8002aec: f85d 7b04 ldr.w r7, [sp], #4 - 8002af0: 4770 bx lr - -08002af2 : - -/** - * @brief This function handles System tick timer. - */ -void SysTick_Handler(void) -{ - 8002af2: b580 push {r7, lr} - 8002af4: af00 add r7, sp, #0 - /* USER CODE BEGIN SysTick_IRQn 0 */ - - /* USER CODE END SysTick_IRQn 0 */ - HAL_IncTick(); - 8002af6: f000 fa19 bl 8002f2c - /* USER CODE BEGIN SysTick_IRQn 1 */ - - /* USER CODE END SysTick_IRQn 1 */ -} - 8002afa: bf00 nop - 8002afc: bd80 pop {r7, pc} - ... - -08002b00 : - -/** - * @brief This function handles TIM3 global interrupt. - */ -void TIM3_IRQHandler(void) -{ - 8002b00: b580 push {r7, lr} - 8002b02: af00 add r7, sp, #0 - /* USER CODE BEGIN TIM3_IRQn 0 */ - - /* USER CODE END TIM3_IRQn 0 */ - HAL_TIM_IRQHandler(&htim3); - 8002b04: 480d ldr r0, [pc, #52] @ (8002b3c ) - 8002b06: f002 fe6d bl 80057e4 - /* USER CODE BEGIN TIM3_IRQn 1 */ - br_counter++; - 8002b0a: 4b0d ldr r3, [pc, #52] @ (8002b40 ) - 8002b0c: 681b ldr r3, [r3, #0] - 8002b0e: 3301 adds r3, #1 - 8002b10: 4a0b ldr r2, [pc, #44] @ (8002b40 ) - 8002b12: 6013 str r3, [r2, #0] - rx_msg.con_timeout++; - 8002b14: 4b0b ldr r3, [pc, #44] @ (8002b44 ) - 8002b16: f8b3 380a ldrh.w r3, [r3, #2058] @ 0x80a - 8002b1a: 3301 adds r3, #1 - 8002b1c: b29a uxth r2, r3 - 8002b1e: 4b09 ldr r3, [pc, #36] @ (8002b44 ) - 8002b20: f8a3 280a strh.w r2, [r3, #2058] @ 0x80a - rx_counter++; - 8002b24: 4b08 ldr r3, [pc, #32] @ (8002b48 ) - 8002b26: 681b ldr r3, [r3, #0] - 8002b28: 3301 adds r3, #1 - 8002b2a: 4a07 ldr r2, [pc, #28] @ (8002b48 ) - 8002b2c: 6013 str r3, [r2, #0] - flash_counter++; - 8002b2e: 4b07 ldr r3, [pc, #28] @ (8002b4c ) - 8002b30: 681b ldr r3, [r3, #0] - 8002b32: 3301 adds r3, #1 - 8002b34: 4a05 ldr r2, [pc, #20] @ (8002b4c ) - 8002b36: 6013 str r3, [r2, #0] - - /* USER CODE END TIM3_IRQn 1 */ -} - 8002b38: bf00 nop - 8002b3a: bd80 pop {r7, pc} - 8002b3c: 20000710 .word 0x20000710 - 8002b40: 200007a8 .word 0x200007a8 - 8002b44: 200007c4 .word 0x200007c4 - 8002b48: 200007ac .word 0x200007ac - 8002b4c: 200007b0 .word 0x200007b0 - -08002b50 : - * configuration. - * @param None - * @retval None - */ -void SystemInit(void) -{ - 8002b50: b480 push {r7} - 8002b52: af00 add r7, sp, #0 - /* FPU settings ------------------------------------------------------------*/ - #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) - SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */ - 8002b54: 4b06 ldr r3, [pc, #24] @ (8002b70 ) - 8002b56: f8d3 3088 ldr.w r3, [r3, #136] @ 0x88 - 8002b5a: 4a05 ldr r2, [pc, #20] @ (8002b70 ) - 8002b5c: f443 0370 orr.w r3, r3, #15728640 @ 0xf00000 - 8002b60: f8c2 3088 str.w r3, [r2, #136] @ 0x88 - - /* Configure the Vector Table location -------------------------------------*/ -#if defined(USER_VECT_TAB_ADDRESS) - SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */ -#endif /* USER_VECT_TAB_ADDRESS */ -} - 8002b64: bf00 nop - 8002b66: 46bd mov sp, r7 - 8002b68: f85d 7b04 ldr.w r7, [sp], #4 - 8002b6c: 4770 bx lr - 8002b6e: bf00 nop - 8002b70: e000ed00 .word 0xe000ed00 - -08002b74 : - - .section .text.Reset_Handler - .weak Reset_Handler - .type Reset_Handler, %function -Reset_Handler: - ldr r0, =_estack - 8002b74: 480d ldr r0, [pc, #52] @ (8002bac ) - mov sp, r0 /* set stack pointer */ - 8002b76: 4685 mov sp, r0 -/* Call the clock system initialization function.*/ - bl SystemInit - 8002b78: f7ff ffea bl 8002b50 - -/* Copy the data segment initializers from flash to SRAM */ - ldr r0, =_sdata - 8002b7c: 480c ldr r0, [pc, #48] @ (8002bb0 ) - ldr r1, =_edata - 8002b7e: 490d ldr r1, [pc, #52] @ (8002bb4 ) - ldr r2, =_sidata - 8002b80: 4a0d ldr r2, [pc, #52] @ (8002bb8 ) - movs r3, #0 - 8002b82: 2300 movs r3, #0 - b LoopCopyDataInit - 8002b84: e002 b.n 8002b8c - -08002b86 : - -CopyDataInit: - ldr r4, [r2, r3] - 8002b86: 58d4 ldr r4, [r2, r3] - str r4, [r0, r3] - 8002b88: 50c4 str r4, [r0, r3] - adds r3, r3, #4 - 8002b8a: 3304 adds r3, #4 - -08002b8c : - -LoopCopyDataInit: - adds r4, r0, r3 - 8002b8c: 18c4 adds r4, r0, r3 - cmp r4, r1 - 8002b8e: 428c cmp r4, r1 - bcc CopyDataInit - 8002b90: d3f9 bcc.n 8002b86 - -/* Zero fill the bss segment. */ - ldr r2, =_sbss - 8002b92: 4a0a ldr r2, [pc, #40] @ (8002bbc ) - ldr r4, =_ebss - 8002b94: 4c0a ldr r4, [pc, #40] @ (8002bc0 ) - movs r3, #0 - 8002b96: 2300 movs r3, #0 - b LoopFillZerobss - 8002b98: e001 b.n 8002b9e - -08002b9a : - -FillZerobss: - str r3, [r2] - 8002b9a: 6013 str r3, [r2, #0] - adds r2, r2, #4 - 8002b9c: 3204 adds r2, #4 - -08002b9e : - -LoopFillZerobss: - cmp r2, r4 - 8002b9e: 42a2 cmp r2, r4 - bcc FillZerobss - 8002ba0: d3fb bcc.n 8002b9a - -/* Call static constructors */ - bl __libc_init_array - 8002ba2: f010 f93d bl 8012e20 <__libc_init_array> -/* Call the application's entry point.*/ - bl main - 8002ba6: f7fe fb57 bl 8001258
- -08002baa : - -LoopForever: - b LoopForever - 8002baa: e7fe b.n 8002baa - ldr r0, =_estack - 8002bac: 20030000 .word 0x20030000 - ldr r0, =_sdata - 8002bb0: 20000000 .word 0x20000000 - ldr r1, =_edata - 8002bb4: 200006e0 .word 0x200006e0 - ldr r2, =_sidata - 8002bb8: 0801a998 .word 0x0801a998 - ldr r2, =_sbss - 8002bbc: 200006e0 .word 0x200006e0 - ldr r4, =_ebss - 8002bc0: 2001958c .word 0x2001958c - -08002bc4 : - * @retval : None -*/ - .section .text.Default_Handler,"ax",%progbits -Default_Handler: -Infinite_Loop: - b Infinite_Loop - 8002bc4: e7fe b.n 8002bc4 - -08002bc6 : - * @param ioctx: holds device IO functions. - * @retval DP83848_STATUS_OK if OK - * DP83848_STATUS_ERROR if missing mandatory function - */ -int32_t DP83848_RegisterBusIO(dp83848_Object_t *pObj, dp83848_IOCtx_t *ioctx) -{ - 8002bc6: b480 push {r7} - 8002bc8: b083 sub sp, #12 - 8002bca: af00 add r7, sp, #0 - 8002bcc: 6078 str r0, [r7, #4] - 8002bce: 6039 str r1, [r7, #0] - if(!pObj || !ioctx->ReadReg || !ioctx->WriteReg || !ioctx->GetTick) - 8002bd0: 687b ldr r3, [r7, #4] - 8002bd2: 2b00 cmp r3, #0 - 8002bd4: d00b beq.n 8002bee - 8002bd6: 683b ldr r3, [r7, #0] - 8002bd8: 68db ldr r3, [r3, #12] - 8002bda: 2b00 cmp r3, #0 - 8002bdc: d007 beq.n 8002bee - 8002bde: 683b ldr r3, [r7, #0] - 8002be0: 689b ldr r3, [r3, #8] - 8002be2: 2b00 cmp r3, #0 - 8002be4: d003 beq.n 8002bee - 8002be6: 683b ldr r3, [r7, #0] - 8002be8: 691b ldr r3, [r3, #16] - 8002bea: 2b00 cmp r3, #0 - 8002bec: d102 bne.n 8002bf4 - { - return DP83848_STATUS_ERROR; - 8002bee: f04f 33ff mov.w r3, #4294967295 - 8002bf2: e014 b.n 8002c1e - } - - pObj->IO.Init = ioctx->Init; - 8002bf4: 683b ldr r3, [r7, #0] - 8002bf6: 681a ldr r2, [r3, #0] - 8002bf8: 687b ldr r3, [r7, #4] - 8002bfa: 609a str r2, [r3, #8] - pObj->IO.DeInit = ioctx->DeInit; - 8002bfc: 683b ldr r3, [r7, #0] - 8002bfe: 685a ldr r2, [r3, #4] - 8002c00: 687b ldr r3, [r7, #4] - 8002c02: 60da str r2, [r3, #12] - pObj->IO.ReadReg = ioctx->ReadReg; - 8002c04: 683b ldr r3, [r7, #0] - 8002c06: 68da ldr r2, [r3, #12] - 8002c08: 687b ldr r3, [r7, #4] - 8002c0a: 615a str r2, [r3, #20] - pObj->IO.WriteReg = ioctx->WriteReg; - 8002c0c: 683b ldr r3, [r7, #0] - 8002c0e: 689a ldr r2, [r3, #8] - 8002c10: 687b ldr r3, [r7, #4] - 8002c12: 611a str r2, [r3, #16] - pObj->IO.GetTick = ioctx->GetTick; - 8002c14: 683b ldr r3, [r7, #0] - 8002c16: 691a ldr r2, [r3, #16] - 8002c18: 687b ldr r3, [r7, #4] - 8002c1a: 619a str r2, [r3, #24] - - return DP83848_STATUS_OK; - 8002c1c: 2300 movs r3, #0 -} - 8002c1e: 4618 mov r0, r3 - 8002c20: 370c adds r7, #12 - 8002c22: 46bd mov sp, r7 - 8002c24: f85d 7b04 ldr.w r7, [sp], #4 - 8002c28: 4770 bx lr - -08002c2a : - * DP83848_STATUS_READ_ERROR if connot read register - * DP83848_STATUS_WRITE_ERROR if connot write to register - * DP83848_STATUS_RESET_TIMEOUT if cannot perform a software reset - */ - int32_t DP83848_Init(dp83848_Object_t *pObj) - { - 8002c2a: b580 push {r7, lr} - 8002c2c: b086 sub sp, #24 - 8002c2e: af00 add r7, sp, #0 - 8002c30: 6078 str r0, [r7, #4] - uint32_t tickstart = 0, regvalue = 0, addr = 0; - 8002c32: 2300 movs r3, #0 - 8002c34: 60fb str r3, [r7, #12] - 8002c36: 2300 movs r3, #0 - 8002c38: 60bb str r3, [r7, #8] - 8002c3a: 2300 movs r3, #0 - 8002c3c: 617b str r3, [r7, #20] - int32_t status = DP83848_STATUS_OK; - 8002c3e: 2300 movs r3, #0 - 8002c40: 613b str r3, [r7, #16] - - if(pObj->Is_Initialized == 0) - 8002c42: 687b ldr r3, [r7, #4] - 8002c44: 685b ldr r3, [r3, #4] - 8002c46: 2b00 cmp r3, #0 - 8002c48: d17c bne.n 8002d44 - { - if(pObj->IO.Init != 0) - 8002c4a: 687b ldr r3, [r7, #4] - 8002c4c: 689b ldr r3, [r3, #8] - 8002c4e: 2b00 cmp r3, #0 - 8002c50: d002 beq.n 8002c58 - { - /* GPIO and Clocks initialization */ - pObj->IO.Init(); - 8002c52: 687b ldr r3, [r7, #4] - 8002c54: 689b ldr r3, [r3, #8] - 8002c56: 4798 blx r3 - } - - /* for later check */ - pObj->DevAddr = DP83848_MAX_DEV_ADDR + 1; - 8002c58: 687b ldr r3, [r7, #4] - 8002c5a: 2220 movs r2, #32 - 8002c5c: 601a str r2, [r3, #0] - - /* Get the device address from special mode register */ - for(addr = 0; addr <= DP83848_MAX_DEV_ADDR; addr ++) - 8002c5e: 2300 movs r3, #0 - 8002c60: 617b str r3, [r7, #20] - 8002c62: e01c b.n 8002c9e - { - if(pObj->IO.ReadReg(addr, DP83848_SMR, ®value) < 0) - 8002c64: 687b ldr r3, [r7, #4] - 8002c66: 695b ldr r3, [r3, #20] - 8002c68: f107 0208 add.w r2, r7, #8 - 8002c6c: 2119 movs r1, #25 - 8002c6e: 6978 ldr r0, [r7, #20] - 8002c70: 4798 blx r3 - 8002c72: 4603 mov r3, r0 - 8002c74: 2b00 cmp r3, #0 - 8002c76: da03 bge.n 8002c80 - { - status = DP83848_STATUS_READ_ERROR; - 8002c78: f06f 0304 mvn.w r3, #4 - 8002c7c: 613b str r3, [r7, #16] - /* Can't read from this device address - continue with next address */ - continue; - 8002c7e: e00b b.n 8002c98 - } - - if((regvalue & DP83848_SMR_PHY_ADDR) == addr) - 8002c80: 68bb ldr r3, [r7, #8] - 8002c82: f003 031f and.w r3, r3, #31 - 8002c86: 697a ldr r2, [r7, #20] - 8002c88: 429a cmp r2, r3 - 8002c8a: d105 bne.n 8002c98 - { - pObj->DevAddr = addr; - 8002c8c: 687b ldr r3, [r7, #4] - 8002c8e: 697a ldr r2, [r7, #20] - 8002c90: 601a str r2, [r3, #0] - status = DP83848_STATUS_OK; - 8002c92: 2300 movs r3, #0 - 8002c94: 613b str r3, [r7, #16] - break; - 8002c96: e005 b.n 8002ca4 - for(addr = 0; addr <= DP83848_MAX_DEV_ADDR; addr ++) - 8002c98: 697b ldr r3, [r7, #20] - 8002c9a: 3301 adds r3, #1 - 8002c9c: 617b str r3, [r7, #20] - 8002c9e: 697b ldr r3, [r7, #20] - 8002ca0: 2b1f cmp r3, #31 - 8002ca2: d9df bls.n 8002c64 - } - } - - if(pObj->DevAddr > DP83848_MAX_DEV_ADDR) - 8002ca4: 687b ldr r3, [r7, #4] - 8002ca6: 681b ldr r3, [r3, #0] - 8002ca8: 2b1f cmp r3, #31 - 8002caa: d902 bls.n 8002cb2 - { - status = DP83848_STATUS_ADDRESS_ERROR; - 8002cac: f06f 0302 mvn.w r3, #2 - 8002cb0: 613b str r3, [r7, #16] - } - - /* if device address is matched */ - if(status == DP83848_STATUS_OK) - 8002cb2: 693b ldr r3, [r7, #16] - 8002cb4: 2b00 cmp r3, #0 - 8002cb6: d145 bne.n 8002d44 - { - /* set a software reset */ - if(pObj->IO.WriteReg(pObj->DevAddr, DP83848_BCR, DP83848_BCR_SOFT_RESET) >= 0) - 8002cb8: 687b ldr r3, [r7, #4] - 8002cba: 691b ldr r3, [r3, #16] - 8002cbc: 687a ldr r2, [r7, #4] - 8002cbe: 6810 ldr r0, [r2, #0] - 8002cc0: f44f 4200 mov.w r2, #32768 @ 0x8000 - 8002cc4: 2100 movs r1, #0 - 8002cc6: 4798 blx r3 - 8002cc8: 4603 mov r3, r0 - 8002cca: 2b00 cmp r3, #0 - 8002ccc: db37 blt.n 8002d3e - { - /* get software reset status */ - if(pObj->IO.ReadReg(pObj->DevAddr, DP83848_BCR, ®value) >= 0) - 8002cce: 687b ldr r3, [r7, #4] - 8002cd0: 695b ldr r3, [r3, #20] - 8002cd2: 687a ldr r2, [r7, #4] - 8002cd4: 6810 ldr r0, [r2, #0] - 8002cd6: f107 0208 add.w r2, r7, #8 - 8002cda: 2100 movs r1, #0 - 8002cdc: 4798 blx r3 - 8002cde: 4603 mov r3, r0 - 8002ce0: 2b00 cmp r3, #0 - 8002ce2: db28 blt.n 8002d36 - { - tickstart = pObj->IO.GetTick(); - 8002ce4: 687b ldr r3, [r7, #4] - 8002ce6: 699b ldr r3, [r3, #24] - 8002ce8: 4798 blx r3 - 8002cea: 4603 mov r3, r0 - 8002cec: 60fb str r3, [r7, #12] - - /* wait until software reset is done or timeout occured */ - while(regvalue & DP83848_BCR_SOFT_RESET) - 8002cee: e01c b.n 8002d2a - { - if((pObj->IO.GetTick() - tickstart) <= DP83848_SW_RESET_TO) - 8002cf0: 687b ldr r3, [r7, #4] - 8002cf2: 699b ldr r3, [r3, #24] - 8002cf4: 4798 blx r3 - 8002cf6: 4603 mov r3, r0 - 8002cf8: 461a mov r2, r3 - 8002cfa: 68fb ldr r3, [r7, #12] - 8002cfc: 1ad3 subs r3, r2, r3 - 8002cfe: f5b3 7ffa cmp.w r3, #500 @ 0x1f4 - 8002d02: d80e bhi.n 8002d22 - { - if(pObj->IO.ReadReg(pObj->DevAddr, DP83848_BCR, ®value) < 0) - 8002d04: 687b ldr r3, [r7, #4] - 8002d06: 695b ldr r3, [r3, #20] - 8002d08: 687a ldr r2, [r7, #4] - 8002d0a: 6810 ldr r0, [r2, #0] - 8002d0c: f107 0208 add.w r2, r7, #8 - 8002d10: 2100 movs r1, #0 - 8002d12: 4798 blx r3 - 8002d14: 4603 mov r3, r0 - 8002d16: 2b00 cmp r3, #0 - 8002d18: da07 bge.n 8002d2a - { - status = DP83848_STATUS_READ_ERROR; - 8002d1a: f06f 0304 mvn.w r3, #4 - 8002d1e: 613b str r3, [r7, #16] - break; - 8002d20: e010 b.n 8002d44 - } - } - else - { - status = DP83848_STATUS_RESET_TIMEOUT; - 8002d22: f06f 0301 mvn.w r3, #1 - 8002d26: 613b str r3, [r7, #16] - break; - 8002d28: e00c b.n 8002d44 - while(regvalue & DP83848_BCR_SOFT_RESET) - 8002d2a: 68bb ldr r3, [r7, #8] - 8002d2c: f403 4300 and.w r3, r3, #32768 @ 0x8000 - 8002d30: 2b00 cmp r3, #0 - 8002d32: d1dd bne.n 8002cf0 - 8002d34: e006 b.n 8002d44 - } - } - } - else - { - status = DP83848_STATUS_READ_ERROR; - 8002d36: f06f 0304 mvn.w r3, #4 - 8002d3a: 613b str r3, [r7, #16] - 8002d3c: e002 b.n 8002d44 - } - } - else - { - status = DP83848_STATUS_WRITE_ERROR; - 8002d3e: f06f 0303 mvn.w r3, #3 - 8002d42: 613b str r3, [r7, #16] - } - } - } - - if(status == DP83848_STATUS_OK) - 8002d44: 693b ldr r3, [r7, #16] - 8002d46: 2b00 cmp r3, #0 - 8002d48: d112 bne.n 8002d70 - { - tickstart = pObj->IO.GetTick(); - 8002d4a: 687b ldr r3, [r7, #4] - 8002d4c: 699b ldr r3, [r3, #24] - 8002d4e: 4798 blx r3 - 8002d50: 4603 mov r3, r0 - 8002d52: 60fb str r3, [r7, #12] - - /* Wait for 2s to perform initialization */ - while((pObj->IO.GetTick() - tickstart) <= DP83848_INIT_TO) - 8002d54: bf00 nop - 8002d56: 687b ldr r3, [r7, #4] - 8002d58: 699b ldr r3, [r3, #24] - 8002d5a: 4798 blx r3 - 8002d5c: 4603 mov r3, r0 - 8002d5e: 461a mov r2, r3 - 8002d60: 68fb ldr r3, [r7, #12] - 8002d62: 1ad3 subs r3, r2, r3 - 8002d64: f5b3 6ffa cmp.w r3, #2000 @ 0x7d0 - 8002d68: d9f5 bls.n 8002d56 - { - } - pObj->Is_Initialized = 1; - 8002d6a: 687b ldr r3, [r7, #4] - 8002d6c: 2201 movs r2, #1 - 8002d6e: 605a str r2, [r3, #4] - } - - return status; - 8002d70: 693b ldr r3, [r7, #16] - } - 8002d72: 4618 mov r0, r3 - 8002d74: 3718 adds r7, #24 - 8002d76: 46bd mov sp, r7 - 8002d78: bd80 pop {r7, pc} - -08002d7a : - * DP83848_STATUS_10MBITS_HALFDUPLEX if 10Mb/s HD - * DP83848_STATUS_READ_ERROR if connot read register - * DP83848_STATUS_WRITE_ERROR if connot write to register - */ -int32_t DP83848_GetLinkState(dp83848_Object_t *pObj) -{ - 8002d7a: b580 push {r7, lr} - 8002d7c: b084 sub sp, #16 - 8002d7e: af00 add r7, sp, #0 - 8002d80: 6078 str r0, [r7, #4] - uint32_t readval = 0; - 8002d82: 2300 movs r3, #0 - 8002d84: 60fb str r3, [r7, #12] - - /* Read Status register */ - if(pObj->IO.ReadReg(pObj->DevAddr, DP83848_BSR, &readval) < 0) - 8002d86: 687b ldr r3, [r7, #4] - 8002d88: 695b ldr r3, [r3, #20] - 8002d8a: 687a ldr r2, [r7, #4] - 8002d8c: 6810 ldr r0, [r2, #0] - 8002d8e: f107 020c add.w r2, r7, #12 - 8002d92: 2101 movs r1, #1 - 8002d94: 4798 blx r3 - 8002d96: 4603 mov r3, r0 - 8002d98: 2b00 cmp r3, #0 - 8002d9a: da02 bge.n 8002da2 - { - return DP83848_STATUS_READ_ERROR; - 8002d9c: f06f 0304 mvn.w r3, #4 - 8002da0: e06e b.n 8002e80 - } - - /* Read Status register again */ - if(pObj->IO.ReadReg(pObj->DevAddr, DP83848_BSR, &readval) < 0) - 8002da2: 687b ldr r3, [r7, #4] - 8002da4: 695b ldr r3, [r3, #20] - 8002da6: 687a ldr r2, [r7, #4] - 8002da8: 6810 ldr r0, [r2, #0] - 8002daa: f107 020c add.w r2, r7, #12 - 8002dae: 2101 movs r1, #1 - 8002db0: 4798 blx r3 - 8002db2: 4603 mov r3, r0 - 8002db4: 2b00 cmp r3, #0 - 8002db6: da02 bge.n 8002dbe - { - return DP83848_STATUS_READ_ERROR; - 8002db8: f06f 0304 mvn.w r3, #4 - 8002dbc: e060 b.n 8002e80 - } - - if((readval & DP83848_BSR_LINK_STATUS) == 0) - 8002dbe: 68fb ldr r3, [r7, #12] - 8002dc0: f003 0304 and.w r3, r3, #4 - 8002dc4: 2b00 cmp r3, #0 - 8002dc6: d101 bne.n 8002dcc - { - /* Return Link Down status */ - return DP83848_STATUS_LINK_DOWN; - 8002dc8: 2301 movs r3, #1 - 8002dca: e059 b.n 8002e80 - } - - /* Check Auto negotiaition */ - if(pObj->IO.ReadReg(pObj->DevAddr, DP83848_BCR, &readval) < 0) - 8002dcc: 687b ldr r3, [r7, #4] - 8002dce: 695b ldr r3, [r3, #20] - 8002dd0: 687a ldr r2, [r7, #4] - 8002dd2: 6810 ldr r0, [r2, #0] - 8002dd4: f107 020c add.w r2, r7, #12 - 8002dd8: 2100 movs r1, #0 - 8002dda: 4798 blx r3 - 8002ddc: 4603 mov r3, r0 - 8002dde: 2b00 cmp r3, #0 - 8002de0: da02 bge.n 8002de8 - { - return DP83848_STATUS_READ_ERROR; - 8002de2: f06f 0304 mvn.w r3, #4 - 8002de6: e04b b.n 8002e80 - } - - if((readval & DP83848_BCR_AUTONEGO_EN) != DP83848_BCR_AUTONEGO_EN) - 8002de8: 68fb ldr r3, [r7, #12] - 8002dea: f403 5380 and.w r3, r3, #4096 @ 0x1000 - 8002dee: 2b00 cmp r3, #0 - 8002df0: d11b bne.n 8002e2a - { - if(((readval & DP83848_BCR_SPEED_SELECT) == DP83848_BCR_SPEED_SELECT) && ((readval & DP83848_BCR_DUPLEX_MODE) == DP83848_BCR_DUPLEX_MODE)) - 8002df2: 68fb ldr r3, [r7, #12] - 8002df4: f403 5300 and.w r3, r3, #8192 @ 0x2000 - 8002df8: 2b00 cmp r3, #0 - 8002dfa: d006 beq.n 8002e0a - 8002dfc: 68fb ldr r3, [r7, #12] - 8002dfe: f403 7380 and.w r3, r3, #256 @ 0x100 - 8002e02: 2b00 cmp r3, #0 - 8002e04: d001 beq.n 8002e0a - { - return DP83848_STATUS_100MBITS_FULLDUPLEX; - 8002e06: 2302 movs r3, #2 - 8002e08: e03a b.n 8002e80 - } - else if ((readval & DP83848_BCR_SPEED_SELECT) == DP83848_BCR_SPEED_SELECT) - 8002e0a: 68fb ldr r3, [r7, #12] - 8002e0c: f403 5300 and.w r3, r3, #8192 @ 0x2000 - 8002e10: 2b00 cmp r3, #0 - 8002e12: d001 beq.n 8002e18 - { - return DP83848_STATUS_100MBITS_HALFDUPLEX; - 8002e14: 2303 movs r3, #3 - 8002e16: e033 b.n 8002e80 - } - else if ((readval & DP83848_BCR_DUPLEX_MODE) == DP83848_BCR_DUPLEX_MODE) - 8002e18: 68fb ldr r3, [r7, #12] - 8002e1a: f403 7380 and.w r3, r3, #256 @ 0x100 - 8002e1e: 2b00 cmp r3, #0 - 8002e20: d001 beq.n 8002e26 - { - return DP83848_STATUS_10MBITS_FULLDUPLEX; - 8002e22: 2304 movs r3, #4 - 8002e24: e02c b.n 8002e80 - } - else - { - return DP83848_STATUS_10MBITS_HALFDUPLEX; - 8002e26: 2305 movs r3, #5 - 8002e28: e02a b.n 8002e80 - } - } - else /* Auto Nego enabled */ - { - if(pObj->IO.ReadReg(pObj->DevAddr, DP83848_PHYSCSR, &readval) < 0) - 8002e2a: 687b ldr r3, [r7, #4] - 8002e2c: 695b ldr r3, [r3, #20] - 8002e2e: 687a ldr r2, [r7, #4] - 8002e30: 6810 ldr r0, [r2, #0] - 8002e32: f107 020c add.w r2, r7, #12 - 8002e36: 2110 movs r1, #16 - 8002e38: 4798 blx r3 - 8002e3a: 4603 mov r3, r0 - 8002e3c: 2b00 cmp r3, #0 - 8002e3e: da02 bge.n 8002e46 - { - return DP83848_STATUS_READ_ERROR; - 8002e40: f06f 0304 mvn.w r3, #4 - 8002e44: e01c b.n 8002e80 - } - - /* Check if auto nego not done */ - if((readval & DP83848_PHYSCSR_AUTONEGO_DONE) == 0) - 8002e46: 68fb ldr r3, [r7, #12] - 8002e48: f403 7380 and.w r3, r3, #256 @ 0x100 - 8002e4c: 2b00 cmp r3, #0 - 8002e4e: d101 bne.n 8002e54 - { - return DP83848_STATUS_AUTONEGO_NOTDONE; - 8002e50: 2306 movs r3, #6 - 8002e52: e015 b.n 8002e80 - } - - if((readval & DP83848_PHYSCSR_HCDSPEEDMASK) == DP83848_PHYSCSR_100BTX_FD) - 8002e54: 68fb ldr r3, [r7, #12] - 8002e56: f003 0306 and.w r3, r3, #6 - 8002e5a: 2b04 cmp r3, #4 - 8002e5c: d101 bne.n 8002e62 - { - return DP83848_STATUS_100MBITS_FULLDUPLEX; - 8002e5e: 2302 movs r3, #2 - 8002e60: e00e b.n 8002e80 - } - else if ((readval & DP83848_PHYSCSR_HCDSPEEDMASK) == DP83848_PHYSCSR_100BTX_HD) - 8002e62: 68fb ldr r3, [r7, #12] - 8002e64: f003 0306 and.w r3, r3, #6 - 8002e68: 2b00 cmp r3, #0 - 8002e6a: d101 bne.n 8002e70 - { - return DP83848_STATUS_100MBITS_HALFDUPLEX; - 8002e6c: 2303 movs r3, #3 - 8002e6e: e007 b.n 8002e80 - } - else if ((readval & DP83848_PHYSCSR_HCDSPEEDMASK) == DP83848_PHYSCSR_10BT_FD) - 8002e70: 68fb ldr r3, [r7, #12] - 8002e72: f003 0306 and.w r3, r3, #6 - 8002e76: 2b06 cmp r3, #6 - 8002e78: d101 bne.n 8002e7e - { - return DP83848_STATUS_10MBITS_FULLDUPLEX; - 8002e7a: 2304 movs r3, #4 - 8002e7c: e000 b.n 8002e80 - } - else - { - return DP83848_STATUS_10MBITS_HALFDUPLEX; - 8002e7e: 2305 movs r3, #5 - } - } -} - 8002e80: 4618 mov r0, r3 - 8002e82: 3710 adds r7, #16 - 8002e84: 46bd mov sp, r7 - 8002e86: bd80 pop {r7, pc} - -08002e88 : - * 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) -{ - 8002e88: b580 push {r7, lr} - 8002e8a: af00 add r7, sp, #0 - /* Configure Flash prefetch, Instruction cache, Data cache */ -#if (INSTRUCTION_CACHE_ENABLE != 0U) - __HAL_FLASH_INSTRUCTION_CACHE_ENABLE(); - 8002e8c: 4b0e ldr r3, [pc, #56] @ (8002ec8 ) - 8002e8e: 681b ldr r3, [r3, #0] - 8002e90: 4a0d ldr r2, [pc, #52] @ (8002ec8 ) - 8002e92: f443 7300 orr.w r3, r3, #512 @ 0x200 - 8002e96: 6013 str r3, [r2, #0] -#endif /* INSTRUCTION_CACHE_ENABLE */ - -#if (DATA_CACHE_ENABLE != 0U) - __HAL_FLASH_DATA_CACHE_ENABLE(); - 8002e98: 4b0b ldr r3, [pc, #44] @ (8002ec8 ) - 8002e9a: 681b ldr r3, [r3, #0] - 8002e9c: 4a0a ldr r2, [pc, #40] @ (8002ec8 ) - 8002e9e: f443 6380 orr.w r3, r3, #1024 @ 0x400 - 8002ea2: 6013 str r3, [r2, #0] -#endif /* DATA_CACHE_ENABLE */ - -#if (PREFETCH_ENABLE != 0U) - __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); - 8002ea4: 4b08 ldr r3, [pc, #32] @ (8002ec8 ) - 8002ea6: 681b ldr r3, [r3, #0] - 8002ea8: 4a07 ldr r2, [pc, #28] @ (8002ec8 ) - 8002eaa: f443 7380 orr.w r3, r3, #256 @ 0x100 - 8002eae: 6013 str r3, [r2, #0] -#endif /* PREFETCH_ENABLE */ - - /* Set Interrupt Group Priority */ - HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); - 8002eb0: 2003 movs r0, #3 - 8002eb2: f000 f94f bl 8003154 - - /* Use systick as time base source and configure 1ms tick (default clock after Reset is HSI) */ - HAL_InitTick(TICK_INT_PRIORITY); - 8002eb6: 200f movs r0, #15 - 8002eb8: f000 f808 bl 8002ecc - - /* Init the low level hardware */ - HAL_MspInit(); - 8002ebc: f7ff fd26 bl 800290c - - /* Return function status */ - return HAL_OK; - 8002ec0: 2300 movs r3, #0 -} - 8002ec2: 4618 mov r0, r3 - 8002ec4: bd80 pop {r7, pc} - 8002ec6: bf00 nop - 8002ec8: 40023c00 .word 0x40023c00 - -08002ecc : - * implementation in user file. - * @param TickPriority Tick interrupt priority. - * @retval HAL status - */ -__weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) -{ - 8002ecc: b580 push {r7, lr} - 8002ece: b082 sub sp, #8 - 8002ed0: af00 add r7, sp, #0 - 8002ed2: 6078 str r0, [r7, #4] - /* Configure the SysTick to have interrupt in 1ms time basis*/ - if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) > 0U) - 8002ed4: 4b12 ldr r3, [pc, #72] @ (8002f20 ) - 8002ed6: 681a ldr r2, [r3, #0] - 8002ed8: 4b12 ldr r3, [pc, #72] @ (8002f24 ) - 8002eda: 781b ldrb r3, [r3, #0] - 8002edc: 4619 mov r1, r3 - 8002ede: f44f 737a mov.w r3, #1000 @ 0x3e8 - 8002ee2: fbb3 f3f1 udiv r3, r3, r1 - 8002ee6: fbb2 f3f3 udiv r3, r2, r3 - 8002eea: 4618 mov r0, r3 - 8002eec: f000 f967 bl 80031be - 8002ef0: 4603 mov r3, r0 - 8002ef2: 2b00 cmp r3, #0 - 8002ef4: d001 beq.n 8002efa - { - return HAL_ERROR; - 8002ef6: 2301 movs r3, #1 - 8002ef8: e00e b.n 8002f18 - } - - /* Configure the SysTick IRQ priority */ - if (TickPriority < (1UL << __NVIC_PRIO_BITS)) - 8002efa: 687b ldr r3, [r7, #4] - 8002efc: 2b0f cmp r3, #15 - 8002efe: d80a bhi.n 8002f16 - { - HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U); - 8002f00: 2200 movs r2, #0 - 8002f02: 6879 ldr r1, [r7, #4] - 8002f04: f04f 30ff mov.w r0, #4294967295 - 8002f08: f000 f92f bl 800316a - uwTickPrio = TickPriority; - 8002f0c: 4a06 ldr r2, [pc, #24] @ (8002f28 ) - 8002f0e: 687b ldr r3, [r7, #4] - 8002f10: 6013 str r3, [r2, #0] - { - return HAL_ERROR; - } - - /* Return function status */ - return HAL_OK; - 8002f12: 2300 movs r3, #0 - 8002f14: e000 b.n 8002f18 - return HAL_ERROR; - 8002f16: 2301 movs r3, #1 -} - 8002f18: 4618 mov r0, r3 - 8002f1a: 3708 adds r7, #8 - 8002f1c: 46bd mov sp, r7 - 8002f1e: bd80 pop {r7, pc} - 8002f20: 20000000 .word 0x20000000 - 8002f24: 20000008 .word 0x20000008 - 8002f28: 20000004 .word 0x20000004 - -08002f2c : - * @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) -{ - 8002f2c: b480 push {r7} - 8002f2e: af00 add r7, sp, #0 - uwTick += uwTickFreq; - 8002f30: 4b06 ldr r3, [pc, #24] @ (8002f4c ) - 8002f32: 781b ldrb r3, [r3, #0] - 8002f34: 461a mov r2, r3 - 8002f36: 4b06 ldr r3, [pc, #24] @ (8002f50 ) - 8002f38: 681b ldr r3, [r3, #0] - 8002f3a: 4413 add r3, r2 - 8002f3c: 4a04 ldr r2, [pc, #16] @ (8002f50 ) - 8002f3e: 6013 str r3, [r2, #0] -} - 8002f40: bf00 nop - 8002f42: 46bd mov sp, r7 - 8002f44: f85d 7b04 ldr.w r7, [sp], #4 - 8002f48: 4770 bx lr - 8002f4a: bf00 nop - 8002f4c: 20000008 .word 0x20000008 - 8002f50: 20001554 .word 0x20001554 - -08002f54 : - * @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) -{ - 8002f54: b480 push {r7} - 8002f56: af00 add r7, sp, #0 - return uwTick; - 8002f58: 4b03 ldr r3, [pc, #12] @ (8002f68 ) - 8002f5a: 681b ldr r3, [r3, #0] -} - 8002f5c: 4618 mov r0, r3 - 8002f5e: 46bd mov sp, r7 - 8002f60: f85d 7b04 ldr.w r7, [sp], #4 - 8002f64: 4770 bx lr - 8002f66: bf00 nop - 8002f68: 20001554 .word 0x20001554 - -08002f6c : - * implementations in user file. - * @param Delay specifies the delay time length, in milliseconds. - * @retval None - */ -__weak void HAL_Delay(uint32_t Delay) -{ - 8002f6c: b580 push {r7, lr} - 8002f6e: b084 sub sp, #16 - 8002f70: af00 add r7, sp, #0 - 8002f72: 6078 str r0, [r7, #4] - uint32_t tickstart = HAL_GetTick(); - 8002f74: f7ff ffee bl 8002f54 - 8002f78: 60b8 str r0, [r7, #8] - uint32_t wait = Delay; - 8002f7a: 687b ldr r3, [r7, #4] - 8002f7c: 60fb str r3, [r7, #12] - - /* Add a freq to guarantee minimum wait */ - if (wait < HAL_MAX_DELAY) - 8002f7e: 68fb ldr r3, [r7, #12] - 8002f80: f1b3 3fff cmp.w r3, #4294967295 - 8002f84: d005 beq.n 8002f92 - { - wait += (uint32_t)(uwTickFreq); - 8002f86: 4b0a ldr r3, [pc, #40] @ (8002fb0 ) - 8002f88: 781b ldrb r3, [r3, #0] - 8002f8a: 461a mov r2, r3 - 8002f8c: 68fb ldr r3, [r7, #12] - 8002f8e: 4413 add r3, r2 - 8002f90: 60fb str r3, [r7, #12] - } - - while((HAL_GetTick() - tickstart) < wait) - 8002f92: bf00 nop - 8002f94: f7ff ffde bl 8002f54 - 8002f98: 4602 mov r2, r0 - 8002f9a: 68bb ldr r3, [r7, #8] - 8002f9c: 1ad3 subs r3, r2, r3 - 8002f9e: 68fa ldr r2, [r7, #12] - 8002fa0: 429a cmp r2, r3 - 8002fa2: d8f7 bhi.n 8002f94 - { - } -} - 8002fa4: bf00 nop - 8002fa6: bf00 nop - 8002fa8: 3710 adds r7, #16 - 8002faa: 46bd mov sp, r7 - 8002fac: bd80 pop {r7, pc} - 8002fae: bf00 nop - 8002fb0: 20000008 .word 0x20000008 - -08002fb4 <__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) -{ - 8002fb4: b480 push {r7} - 8002fb6: b085 sub sp, #20 - 8002fb8: af00 add r7, sp, #0 - 8002fba: 6078 str r0, [r7, #4] - uint32_t reg_value; - uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ - 8002fbc: 687b ldr r3, [r7, #4] - 8002fbe: f003 0307 and.w r3, r3, #7 - 8002fc2: 60fb str r3, [r7, #12] - - reg_value = SCB->AIRCR; /* read old register configuration */ - 8002fc4: 4b0c ldr r3, [pc, #48] @ (8002ff8 <__NVIC_SetPriorityGrouping+0x44>) - 8002fc6: 68db ldr r3, [r3, #12] - 8002fc8: 60bb str r3, [r7, #8] - reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ - 8002fca: 68ba ldr r2, [r7, #8] - 8002fcc: f64f 03ff movw r3, #63743 @ 0xf8ff - 8002fd0: 4013 ands r3, r2 - 8002fd2: 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 */ - 8002fd4: 68fb ldr r3, [r7, #12] - 8002fd6: 021a lsls r2, r3, #8 - ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | - 8002fd8: 68bb ldr r3, [r7, #8] - 8002fda: 4313 orrs r3, r2 - reg_value = (reg_value | - 8002fdc: f043 63bf orr.w r3, r3, #100139008 @ 0x5f80000 - 8002fe0: f443 3300 orr.w r3, r3, #131072 @ 0x20000 - 8002fe4: 60bb str r3, [r7, #8] - SCB->AIRCR = reg_value; - 8002fe6: 4a04 ldr r2, [pc, #16] @ (8002ff8 <__NVIC_SetPriorityGrouping+0x44>) - 8002fe8: 68bb ldr r3, [r7, #8] - 8002fea: 60d3 str r3, [r2, #12] -} - 8002fec: bf00 nop - 8002fee: 3714 adds r7, #20 - 8002ff0: 46bd mov sp, r7 - 8002ff2: f85d 7b04 ldr.w r7, [sp], #4 - 8002ff6: 4770 bx lr - 8002ff8: e000ed00 .word 0xe000ed00 - -08002ffc <__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) -{ - 8002ffc: b480 push {r7} - 8002ffe: af00 add r7, sp, #0 - return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); - 8003000: 4b04 ldr r3, [pc, #16] @ (8003014 <__NVIC_GetPriorityGrouping+0x18>) - 8003002: 68db ldr r3, [r3, #12] - 8003004: 0a1b lsrs r3, r3, #8 - 8003006: f003 0307 and.w r3, r3, #7 -} - 800300a: 4618 mov r0, r3 - 800300c: 46bd mov sp, r7 - 800300e: f85d 7b04 ldr.w r7, [sp], #4 - 8003012: 4770 bx lr - 8003014: e000ed00 .word 0xe000ed00 - -08003018 <__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) -{ - 8003018: b480 push {r7} - 800301a: b083 sub sp, #12 - 800301c: af00 add r7, sp, #0 - 800301e: 4603 mov r3, r0 - 8003020: 71fb strb r3, [r7, #7] - if ((int32_t)(IRQn) >= 0) - 8003022: f997 3007 ldrsb.w r3, [r7, #7] - 8003026: 2b00 cmp r3, #0 - 8003028: db0b blt.n 8003042 <__NVIC_EnableIRQ+0x2a> - { - NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); - 800302a: 79fb ldrb r3, [r7, #7] - 800302c: f003 021f and.w r2, r3, #31 - 8003030: 4907 ldr r1, [pc, #28] @ (8003050 <__NVIC_EnableIRQ+0x38>) - 8003032: f997 3007 ldrsb.w r3, [r7, #7] - 8003036: 095b lsrs r3, r3, #5 - 8003038: 2001 movs r0, #1 - 800303a: fa00 f202 lsl.w r2, r0, r2 - 800303e: f841 2023 str.w r2, [r1, r3, lsl #2] - } -} - 8003042: bf00 nop - 8003044: 370c adds r7, #12 - 8003046: 46bd mov sp, r7 - 8003048: f85d 7b04 ldr.w r7, [sp], #4 - 800304c: 4770 bx lr - 800304e: bf00 nop - 8003050: e000e100 .word 0xe000e100 - -08003054 <__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) -{ - 8003054: b480 push {r7} - 8003056: b083 sub sp, #12 - 8003058: af00 add r7, sp, #0 - 800305a: 4603 mov r3, r0 - 800305c: 6039 str r1, [r7, #0] - 800305e: 71fb strb r3, [r7, #7] - if ((int32_t)(IRQn) >= 0) - 8003060: f997 3007 ldrsb.w r3, [r7, #7] - 8003064: 2b00 cmp r3, #0 - 8003066: db0a blt.n 800307e <__NVIC_SetPriority+0x2a> - { - NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); - 8003068: 683b ldr r3, [r7, #0] - 800306a: b2da uxtb r2, r3 - 800306c: 490c ldr r1, [pc, #48] @ (80030a0 <__NVIC_SetPriority+0x4c>) - 800306e: f997 3007 ldrsb.w r3, [r7, #7] - 8003072: 0112 lsls r2, r2, #4 - 8003074: b2d2 uxtb r2, r2 - 8003076: 440b add r3, r1 - 8003078: 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); - } -} - 800307c: e00a b.n 8003094 <__NVIC_SetPriority+0x40> - SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); - 800307e: 683b ldr r3, [r7, #0] - 8003080: b2da uxtb r2, r3 - 8003082: 4908 ldr r1, [pc, #32] @ (80030a4 <__NVIC_SetPriority+0x50>) - 8003084: 79fb ldrb r3, [r7, #7] - 8003086: f003 030f and.w r3, r3, #15 - 800308a: 3b04 subs r3, #4 - 800308c: 0112 lsls r2, r2, #4 - 800308e: b2d2 uxtb r2, r2 - 8003090: 440b add r3, r1 - 8003092: 761a strb r2, [r3, #24] -} - 8003094: bf00 nop - 8003096: 370c adds r7, #12 - 8003098: 46bd mov sp, r7 - 800309a: f85d 7b04 ldr.w r7, [sp], #4 - 800309e: 4770 bx lr - 80030a0: e000e100 .word 0xe000e100 - 80030a4: e000ed00 .word 0xe000ed00 - -080030a8 : - \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) -{ - 80030a8: b480 push {r7} - 80030aa: b089 sub sp, #36 @ 0x24 - 80030ac: af00 add r7, sp, #0 - 80030ae: 60f8 str r0, [r7, #12] - 80030b0: 60b9 str r1, [r7, #8] - 80030b2: 607a str r2, [r7, #4] - uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ - 80030b4: 68fb ldr r3, [r7, #12] - 80030b6: f003 0307 and.w r3, r3, #7 - 80030ba: 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); - 80030bc: 69fb ldr r3, [r7, #28] - 80030be: f1c3 0307 rsb r3, r3, #7 - 80030c2: 2b04 cmp r3, #4 - 80030c4: bf28 it cs - 80030c6: 2304 movcs r3, #4 - 80030c8: 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)); - 80030ca: 69fb ldr r3, [r7, #28] - 80030cc: 3304 adds r3, #4 - 80030ce: 2b06 cmp r3, #6 - 80030d0: d902 bls.n 80030d8 - 80030d2: 69fb ldr r3, [r7, #28] - 80030d4: 3b03 subs r3, #3 - 80030d6: e000 b.n 80030da - 80030d8: 2300 movs r3, #0 - 80030da: 617b str r3, [r7, #20] - - return ( - ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | - 80030dc: f04f 32ff mov.w r2, #4294967295 - 80030e0: 69bb ldr r3, [r7, #24] - 80030e2: fa02 f303 lsl.w r3, r2, r3 - 80030e6: 43da mvns r2, r3 - 80030e8: 68bb ldr r3, [r7, #8] - 80030ea: 401a ands r2, r3 - 80030ec: 697b ldr r3, [r7, #20] - 80030ee: 409a lsls r2, r3 - ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) - 80030f0: f04f 31ff mov.w r1, #4294967295 - 80030f4: 697b ldr r3, [r7, #20] - 80030f6: fa01 f303 lsl.w r3, r1, r3 - 80030fa: 43d9 mvns r1, r3 - 80030fc: 687b ldr r3, [r7, #4] - 80030fe: 400b ands r3, r1 - ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | - 8003100: 4313 orrs r3, r2 - ); -} - 8003102: 4618 mov r0, r3 - 8003104: 3724 adds r7, #36 @ 0x24 - 8003106: 46bd mov sp, r7 - 8003108: f85d 7b04 ldr.w r7, [sp], #4 - 800310c: 4770 bx lr - ... - -08003110 : - \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) -{ - 8003110: b580 push {r7, lr} - 8003112: b082 sub sp, #8 - 8003114: af00 add r7, sp, #0 - 8003116: 6078 str r0, [r7, #4] - if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) - 8003118: 687b ldr r3, [r7, #4] - 800311a: 3b01 subs r3, #1 - 800311c: f1b3 7f80 cmp.w r3, #16777216 @ 0x1000000 - 8003120: d301 bcc.n 8003126 - { - return (1UL); /* Reload value impossible */ - 8003122: 2301 movs r3, #1 - 8003124: e00f b.n 8003146 - } - - SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ - 8003126: 4a0a ldr r2, [pc, #40] @ (8003150 ) - 8003128: 687b ldr r3, [r7, #4] - 800312a: 3b01 subs r3, #1 - 800312c: 6053 str r3, [r2, #4] - NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ - 800312e: 210f movs r1, #15 - 8003130: f04f 30ff mov.w r0, #4294967295 - 8003134: f7ff ff8e bl 8003054 <__NVIC_SetPriority> - SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ - 8003138: 4b05 ldr r3, [pc, #20] @ (8003150 ) - 800313a: 2200 movs r2, #0 - 800313c: 609a str r2, [r3, #8] - SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | - 800313e: 4b04 ldr r3, [pc, #16] @ (8003150 ) - 8003140: 2207 movs r2, #7 - 8003142: 601a str r2, [r3, #0] - SysTick_CTRL_TICKINT_Msk | - SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ - return (0UL); /* Function successful */ - 8003144: 2300 movs r3, #0 -} - 8003146: 4618 mov r0, r3 - 8003148: 3708 adds r7, #8 - 800314a: 46bd mov sp, r7 - 800314c: bd80 pop {r7, pc} - 800314e: bf00 nop - 8003150: e000e010 .word 0xe000e010 - -08003154 : - * @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) -{ - 8003154: b580 push {r7, lr} - 8003156: b082 sub sp, #8 - 8003158: af00 add r7, sp, #0 - 800315a: 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); - 800315c: 6878 ldr r0, [r7, #4] - 800315e: f7ff ff29 bl 8002fb4 <__NVIC_SetPriorityGrouping> -} - 8003162: bf00 nop - 8003164: 3708 adds r7, #8 - 8003166: 46bd mov sp, r7 - 8003168: bd80 pop {r7, pc} - -0800316a : - * 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) -{ - 800316a: b580 push {r7, lr} - 800316c: b086 sub sp, #24 - 800316e: af00 add r7, sp, #0 - 8003170: 4603 mov r3, r0 - 8003172: 60b9 str r1, [r7, #8] - 8003174: 607a str r2, [r7, #4] - 8003176: 73fb strb r3, [r7, #15] - uint32_t prioritygroup = 0x00U; - 8003178: 2300 movs r3, #0 - 800317a: 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(); - 800317c: f7ff ff3e bl 8002ffc <__NVIC_GetPriorityGrouping> - 8003180: 6178 str r0, [r7, #20] - - NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority)); - 8003182: 687a ldr r2, [r7, #4] - 8003184: 68b9 ldr r1, [r7, #8] - 8003186: 6978 ldr r0, [r7, #20] - 8003188: f7ff ff8e bl 80030a8 - 800318c: 4602 mov r2, r0 - 800318e: f997 300f ldrsb.w r3, [r7, #15] - 8003192: 4611 mov r1, r2 - 8003194: 4618 mov r0, r3 - 8003196: f7ff ff5d bl 8003054 <__NVIC_SetPriority> -} - 800319a: bf00 nop - 800319c: 3718 adds r7, #24 - 800319e: 46bd mov sp, r7 - 80031a0: bd80 pop {r7, pc} - -080031a2 : - * 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 (stm32f4xxxx.h)) - * @retval None - */ -void HAL_NVIC_EnableIRQ(IRQn_Type IRQn) -{ - 80031a2: b580 push {r7, lr} - 80031a4: b082 sub sp, #8 - 80031a6: af00 add r7, sp, #0 - 80031a8: 4603 mov r3, r0 - 80031aa: 71fb strb r3, [r7, #7] - /* Check the parameters */ - assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); - - /* Enable interrupt */ - NVIC_EnableIRQ(IRQn); - 80031ac: f997 3007 ldrsb.w r3, [r7, #7] - 80031b0: 4618 mov r0, r3 - 80031b2: f7ff ff31 bl 8003018 <__NVIC_EnableIRQ> -} - 80031b6: bf00 nop - 80031b8: 3708 adds r7, #8 - 80031ba: 46bd mov sp, r7 - 80031bc: bd80 pop {r7, pc} - -080031be : - * @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) -{ - 80031be: b580 push {r7, lr} - 80031c0: b082 sub sp, #8 - 80031c2: af00 add r7, sp, #0 - 80031c4: 6078 str r0, [r7, #4] - return SysTick_Config(TicksNumb); - 80031c6: 6878 ldr r0, [r7, #4] - 80031c8: f7ff ffa2 bl 8003110 - 80031cc: 4603 mov r3, r0 -} - 80031ce: 4618 mov r0, r3 - 80031d0: 3708 adds r7, #8 - 80031d2: 46bd mov sp, r7 - 80031d4: bd80 pop {r7, pc} - ... - -080031d8 : - * @param heth: pointer to a ETH_HandleTypeDef structure that contains - * the configuration information for ETHERNET module - * @retval HAL status - */ -HAL_StatusTypeDef HAL_ETH_Init(ETH_HandleTypeDef *heth) -{ - 80031d8: b580 push {r7, lr} - 80031da: b084 sub sp, #16 - 80031dc: af00 add r7, sp, #0 - 80031de: 6078 str r0, [r7, #4] - uint32_t tickstart; - - if (heth == NULL) - 80031e0: 687b ldr r3, [r7, #4] - 80031e2: 2b00 cmp r3, #0 - 80031e4: d101 bne.n 80031ea - { - return HAL_ERROR; - 80031e6: 2301 movs r3, #1 - 80031e8: e06c b.n 80032c4 - } - if (heth->gState == HAL_ETH_STATE_RESET) - 80031ea: 687b ldr r3, [r7, #4] - 80031ec: f8d3 3084 ldr.w r3, [r3, #132] @ 0x84 - 80031f0: 2b00 cmp r3, #0 - 80031f2: d106 bne.n 8003202 - { - heth->gState = HAL_ETH_STATE_BUSY; - 80031f4: 687b ldr r3, [r7, #4] - 80031f6: 2223 movs r2, #35 @ 0x23 - 80031f8: f8c3 2084 str.w r2, [r3, #132] @ 0x84 - - /* Init the low level hardware */ - heth->MspInitCallback(heth); -#else - /* Init the low level hardware : GPIO, CLOCK, NVIC. */ - HAL_ETH_MspInit(heth); - 80031fc: 6878 ldr r0, [r7, #4] - 80031fe: f003 f9f3 bl 80065e8 - -#endif /* (USE_HAL_ETH_REGISTER_CALLBACKS) */ - } - - __HAL_RCC_SYSCFG_CLK_ENABLE(); - 8003202: 2300 movs r3, #0 - 8003204: 60bb str r3, [r7, #8] - 8003206: 4b31 ldr r3, [pc, #196] @ (80032cc ) - 8003208: 6c5b ldr r3, [r3, #68] @ 0x44 - 800320a: 4a30 ldr r2, [pc, #192] @ (80032cc ) - 800320c: f443 4380 orr.w r3, r3, #16384 @ 0x4000 - 8003210: 6453 str r3, [r2, #68] @ 0x44 - 8003212: 4b2e ldr r3, [pc, #184] @ (80032cc ) - 8003214: 6c5b ldr r3, [r3, #68] @ 0x44 - 8003216: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 800321a: 60bb str r3, [r7, #8] - 800321c: 68bb ldr r3, [r7, #8] - - /* Select MII or RMII Mode*/ - SYSCFG->PMC &= ~(SYSCFG_PMC_MII_RMII_SEL); - 800321e: 4b2c ldr r3, [pc, #176] @ (80032d0 ) - 8003220: 685b ldr r3, [r3, #4] - 8003222: 4a2b ldr r2, [pc, #172] @ (80032d0 ) - 8003224: f423 0300 bic.w r3, r3, #8388608 @ 0x800000 - 8003228: 6053 str r3, [r2, #4] - SYSCFG->PMC |= (uint32_t)heth->Init.MediaInterface; - 800322a: 4b29 ldr r3, [pc, #164] @ (80032d0 ) - 800322c: 685a ldr r2, [r3, #4] - 800322e: 687b ldr r3, [r7, #4] - 8003230: 689b ldr r3, [r3, #8] - 8003232: 4927 ldr r1, [pc, #156] @ (80032d0 ) - 8003234: 4313 orrs r3, r2 - 8003236: 604b str r3, [r1, #4] - /* Dummy read to sync SYSCFG with ETH */ - (void)SYSCFG->PMC; - 8003238: 4b25 ldr r3, [pc, #148] @ (80032d0 ) - 800323a: 685b ldr r3, [r3, #4] - - /* Ethernet Software reset */ - /* Set the SWR bit: resets all MAC subsystem internal registers and logic */ - /* After reset all the registers holds their respective reset values */ - SET_BIT(heth->Instance->DMABMR, ETH_DMABMR_SR); - 800323c: 687b ldr r3, [r7, #4] - 800323e: 681b ldr r3, [r3, #0] - 8003240: f503 5380 add.w r3, r3, #4096 @ 0x1000 - 8003244: 681b ldr r3, [r3, #0] - 8003246: 687a ldr r2, [r7, #4] - 8003248: 6812 ldr r2, [r2, #0] - 800324a: f043 0301 orr.w r3, r3, #1 - 800324e: f502 5280 add.w r2, r2, #4096 @ 0x1000 - 8003252: 6013 str r3, [r2, #0] - - /* Get tick */ - tickstart = HAL_GetTick(); - 8003254: f7ff fe7e bl 8002f54 - 8003258: 60f8 str r0, [r7, #12] - - /* Wait for software reset */ - while (READ_BIT(heth->Instance->DMABMR, ETH_DMABMR_SR) > 0U) - 800325a: e011 b.n 8003280 - { - if (((HAL_GetTick() - tickstart) > ETH_SWRESET_TIMEOUT)) - 800325c: f7ff fe7a bl 8002f54 - 8003260: 4602 mov r2, r0 - 8003262: 68fb ldr r3, [r7, #12] - 8003264: 1ad3 subs r3, r2, r3 - 8003266: f5b3 7ffa cmp.w r3, #500 @ 0x1f4 - 800326a: d909 bls.n 8003280 - { - /* Set Error Code */ - heth->ErrorCode = HAL_ETH_ERROR_TIMEOUT; - 800326c: 687b ldr r3, [r7, #4] - 800326e: 2204 movs r2, #4 - 8003270: f8c3 2088 str.w r2, [r3, #136] @ 0x88 - /* Set State as Error */ - heth->gState = HAL_ETH_STATE_ERROR; - 8003274: 687b ldr r3, [r7, #4] - 8003276: 22e0 movs r2, #224 @ 0xe0 - 8003278: f8c3 2084 str.w r2, [r3, #132] @ 0x84 - /* Return Error */ - return HAL_ERROR; - 800327c: 2301 movs r3, #1 - 800327e: e021 b.n 80032c4 - while (READ_BIT(heth->Instance->DMABMR, ETH_DMABMR_SR) > 0U) - 8003280: 687b ldr r3, [r7, #4] - 8003282: 681b ldr r3, [r3, #0] - 8003284: f503 5380 add.w r3, r3, #4096 @ 0x1000 - 8003288: 681b ldr r3, [r3, #0] - 800328a: f003 0301 and.w r3, r3, #1 - 800328e: 2b00 cmp r3, #0 - 8003290: d1e4 bne.n 800325c - } - } - - - /*------------------ MAC, MTL and DMA default Configuration ----------------*/ - ETH_MACDMAConfig(heth); - 8003292: 6878 ldr r0, [r7, #4] - 8003294: f000 fdf0 bl 8003e78 - - - /*------------------ DMA Tx Descriptors Configuration ----------------------*/ - ETH_DMATxDescListInit(heth); - 8003298: 6878 ldr r0, [r7, #4] - 800329a: f000 fe97 bl 8003fcc - - /*------------------ DMA Rx Descriptors Configuration ----------------------*/ - ETH_DMARxDescListInit(heth); - 800329e: 6878 ldr r0, [r7, #4] - 80032a0: f000 feed bl 800407e - - /*--------------------- ETHERNET MAC Address Configuration ------------------*/ - ETH_MACAddressConfig(heth, ETH_MAC_ADDRESS0, heth->Init.MACAddr); - 80032a4: 687b ldr r3, [r7, #4] - 80032a6: 685b ldr r3, [r3, #4] - 80032a8: 461a mov r2, r3 - 80032aa: 2100 movs r1, #0 - 80032ac: 6878 ldr r0, [r7, #4] - 80032ae: f000 fe55 bl 8003f5c - - heth->ErrorCode = HAL_ETH_ERROR_NONE; - 80032b2: 687b ldr r3, [r7, #4] - 80032b4: 2200 movs r2, #0 - 80032b6: f8c3 2088 str.w r2, [r3, #136] @ 0x88 - heth->gState = HAL_ETH_STATE_READY; - 80032ba: 687b ldr r3, [r7, #4] - 80032bc: 2210 movs r2, #16 - 80032be: f8c3 2084 str.w r2, [r3, #132] @ 0x84 - - return HAL_OK; - 80032c2: 2300 movs r3, #0 -} - 80032c4: 4618 mov r0, r3 - 80032c6: 3710 adds r7, #16 - 80032c8: 46bd mov sp, r7 - 80032ca: bd80 pop {r7, pc} - 80032cc: 40023800 .word 0x40023800 - 80032d0: 40013800 .word 0x40013800 - -080032d4 : - * @param heth: pointer to a ETH_HandleTypeDef structure that contains - * the configuration information for ETHERNET module - * @retval HAL status - */ -HAL_StatusTypeDef HAL_ETH_Start(ETH_HandleTypeDef *heth) -{ - 80032d4: b580 push {r7, lr} - 80032d6: b084 sub sp, #16 - 80032d8: af00 add r7, sp, #0 - 80032da: 6078 str r0, [r7, #4] - uint32_t tmpreg1; - - if (heth->gState == HAL_ETH_STATE_READY) - 80032dc: 687b ldr r3, [r7, #4] - 80032de: f8d3 3084 ldr.w r3, [r3, #132] @ 0x84 - 80032e2: 2b10 cmp r3, #16 - 80032e4: d150 bne.n 8003388 - { - heth->gState = HAL_ETH_STATE_BUSY; - 80032e6: 687b ldr r3, [r7, #4] - 80032e8: 2223 movs r2, #35 @ 0x23 - 80032ea: f8c3 2084 str.w r2, [r3, #132] @ 0x84 - - /* Set nombre of descriptors to build */ - heth->RxDescList.RxBuildDescCnt = ETH_RX_DESC_CNT; - 80032ee: 687b ldr r3, [r7, #4] - 80032f0: 2204 movs r2, #4 - 80032f2: 66da str r2, [r3, #108] @ 0x6c - - /* Build all descriptors */ - ETH_UpdateDescriptor(heth); - 80032f4: 6878 ldr r0, [r7, #4] - 80032f6: f000 f9fd bl 80036f4 - - /* Enable the MAC transmission */ - SET_BIT(heth->Instance->MACCR, ETH_MACCR_TE); - 80032fa: 687b ldr r3, [r7, #4] - 80032fc: 681b ldr r3, [r3, #0] - 80032fe: 681a ldr r2, [r3, #0] - 8003300: 687b ldr r3, [r7, #4] - 8003302: 681b ldr r3, [r3, #0] - 8003304: f042 0208 orr.w r2, r2, #8 - 8003308: 601a str r2, [r3, #0] - - /* Wait until the write operation will be taken into account : - at least four TX_CLK/RX_CLK clock cycles */ - tmpreg1 = (heth->Instance)->MACCR; - 800330a: 687b ldr r3, [r7, #4] - 800330c: 681b ldr r3, [r3, #0] - 800330e: 681b ldr r3, [r3, #0] - 8003310: 60fb str r3, [r7, #12] - HAL_Delay(ETH_REG_WRITE_DELAY); - 8003312: 2001 movs r0, #1 - 8003314: f7ff fe2a bl 8002f6c - (heth->Instance)->MACCR = tmpreg1; - 8003318: 687b ldr r3, [r7, #4] - 800331a: 681b ldr r3, [r3, #0] - 800331c: 68fa ldr r2, [r7, #12] - 800331e: 601a str r2, [r3, #0] - - /* Enable the MAC reception */ - SET_BIT(heth->Instance->MACCR, ETH_MACCR_RE); - 8003320: 687b ldr r3, [r7, #4] - 8003322: 681b ldr r3, [r3, #0] - 8003324: 681a ldr r2, [r3, #0] - 8003326: 687b ldr r3, [r7, #4] - 8003328: 681b ldr r3, [r3, #0] - 800332a: f042 0204 orr.w r2, r2, #4 - 800332e: 601a str r2, [r3, #0] - - /* Wait until the write operation will be taken into account : - at least four TX_CLK/RX_CLK clock cycles */ - tmpreg1 = (heth->Instance)->MACCR; - 8003330: 687b ldr r3, [r7, #4] - 8003332: 681b ldr r3, [r3, #0] - 8003334: 681b ldr r3, [r3, #0] - 8003336: 60fb str r3, [r7, #12] - HAL_Delay(ETH_REG_WRITE_DELAY); - 8003338: 2001 movs r0, #1 - 800333a: f7ff fe17 bl 8002f6c - (heth->Instance)->MACCR = tmpreg1; - 800333e: 687b ldr r3, [r7, #4] - 8003340: 681b ldr r3, [r3, #0] - 8003342: 68fa ldr r2, [r7, #12] - 8003344: 601a str r2, [r3, #0] - - /* Flush Transmit FIFO */ - ETH_FlushTransmitFIFO(heth); - 8003346: 6878 ldr r0, [r7, #4] - 8003348: f000 fc36 bl 8003bb8 - - /* Enable the DMA transmission */ - SET_BIT(heth->Instance->DMAOMR, ETH_DMAOMR_ST); - 800334c: 687b ldr r3, [r7, #4] - 800334e: 681b ldr r3, [r3, #0] - 8003350: f503 5380 add.w r3, r3, #4096 @ 0x1000 - 8003354: 699b ldr r3, [r3, #24] - 8003356: 687a ldr r2, [r7, #4] - 8003358: 6812 ldr r2, [r2, #0] - 800335a: f443 5300 orr.w r3, r3, #8192 @ 0x2000 - 800335e: f502 5280 add.w r2, r2, #4096 @ 0x1000 - 8003362: 6193 str r3, [r2, #24] - - /* Enable the DMA reception */ - SET_BIT(heth->Instance->DMAOMR, ETH_DMAOMR_SR); - 8003364: 687b ldr r3, [r7, #4] - 8003366: 681b ldr r3, [r3, #0] - 8003368: f503 5380 add.w r3, r3, #4096 @ 0x1000 - 800336c: 699b ldr r3, [r3, #24] - 800336e: 687a ldr r2, [r7, #4] - 8003370: 6812 ldr r2, [r2, #0] - 8003372: f043 0302 orr.w r3, r3, #2 - 8003376: f502 5280 add.w r2, r2, #4096 @ 0x1000 - 800337a: 6193 str r3, [r2, #24] - - heth->gState = HAL_ETH_STATE_STARTED; - 800337c: 687b ldr r3, [r7, #4] - 800337e: 2223 movs r2, #35 @ 0x23 - 8003380: f8c3 2084 str.w r2, [r3, #132] @ 0x84 - - return HAL_OK; - 8003384: 2300 movs r3, #0 - 8003386: e000 b.n 800338a - } - else - { - return HAL_ERROR; - 8003388: 2301 movs r3, #1 - } -} - 800338a: 4618 mov r0, r3 - 800338c: 3710 adds r7, #16 - 800338e: 46bd mov sp, r7 - 8003390: bd80 pop {r7, pc} - -08003392 : - * @param heth: pointer to a ETH_HandleTypeDef structure that contains - * the configuration information for ETHERNET module - * @retval HAL status - */ -HAL_StatusTypeDef HAL_ETH_Stop(ETH_HandleTypeDef *heth) -{ - 8003392: b580 push {r7, lr} - 8003394: b084 sub sp, #16 - 8003396: af00 add r7, sp, #0 - 8003398: 6078 str r0, [r7, #4] - uint32_t tmpreg1; - - if (heth->gState == HAL_ETH_STATE_STARTED) - 800339a: 687b ldr r3, [r7, #4] - 800339c: f8d3 3084 ldr.w r3, [r3, #132] @ 0x84 - 80033a0: 2b23 cmp r3, #35 @ 0x23 - 80033a2: d14a bne.n 800343a - { - /* Set the ETH peripheral state to BUSY */ - heth->gState = HAL_ETH_STATE_BUSY; - 80033a4: 687b ldr r3, [r7, #4] - 80033a6: 2223 movs r2, #35 @ 0x23 - 80033a8: f8c3 2084 str.w r2, [r3, #132] @ 0x84 - /* Disable the DMA transmission */ - CLEAR_BIT(heth->Instance->DMAOMR, ETH_DMAOMR_ST); - 80033ac: 687b ldr r3, [r7, #4] - 80033ae: 681b ldr r3, [r3, #0] - 80033b0: f503 5380 add.w r3, r3, #4096 @ 0x1000 - 80033b4: 699b ldr r3, [r3, #24] - 80033b6: 687a ldr r2, [r7, #4] - 80033b8: 6812 ldr r2, [r2, #0] - 80033ba: f423 5300 bic.w r3, r3, #8192 @ 0x2000 - 80033be: f502 5280 add.w r2, r2, #4096 @ 0x1000 - 80033c2: 6193 str r3, [r2, #24] - - /* Disable the DMA reception */ - CLEAR_BIT(heth->Instance->DMAOMR, ETH_DMAOMR_SR); - 80033c4: 687b ldr r3, [r7, #4] - 80033c6: 681b ldr r3, [r3, #0] - 80033c8: f503 5380 add.w r3, r3, #4096 @ 0x1000 - 80033cc: 699b ldr r3, [r3, #24] - 80033ce: 687a ldr r2, [r7, #4] - 80033d0: 6812 ldr r2, [r2, #0] - 80033d2: f023 0302 bic.w r3, r3, #2 - 80033d6: f502 5280 add.w r2, r2, #4096 @ 0x1000 - 80033da: 6193 str r3, [r2, #24] - - /* Disable the MAC reception */ - CLEAR_BIT(heth->Instance->MACCR, ETH_MACCR_RE); - 80033dc: 687b ldr r3, [r7, #4] - 80033de: 681b ldr r3, [r3, #0] - 80033e0: 681a ldr r2, [r3, #0] - 80033e2: 687b ldr r3, [r7, #4] - 80033e4: 681b ldr r3, [r3, #0] - 80033e6: f022 0204 bic.w r2, r2, #4 - 80033ea: 601a str r2, [r3, #0] - - /* Wait until the write operation will be taken into account : - at least four TX_CLK/RX_CLK clock cycles */ - tmpreg1 = (heth->Instance)->MACCR; - 80033ec: 687b ldr r3, [r7, #4] - 80033ee: 681b ldr r3, [r3, #0] - 80033f0: 681b ldr r3, [r3, #0] - 80033f2: 60fb str r3, [r7, #12] - HAL_Delay(ETH_REG_WRITE_DELAY); - 80033f4: 2001 movs r0, #1 - 80033f6: f7ff fdb9 bl 8002f6c - (heth->Instance)->MACCR = tmpreg1; - 80033fa: 687b ldr r3, [r7, #4] - 80033fc: 681b ldr r3, [r3, #0] - 80033fe: 68fa ldr r2, [r7, #12] - 8003400: 601a str r2, [r3, #0] - - /* Flush Transmit FIFO */ - ETH_FlushTransmitFIFO(heth); - 8003402: 6878 ldr r0, [r7, #4] - 8003404: f000 fbd8 bl 8003bb8 - - /* Disable the MAC transmission */ - CLEAR_BIT(heth->Instance->MACCR, ETH_MACCR_TE); - 8003408: 687b ldr r3, [r7, #4] - 800340a: 681b ldr r3, [r3, #0] - 800340c: 681a ldr r2, [r3, #0] - 800340e: 687b ldr r3, [r7, #4] - 8003410: 681b ldr r3, [r3, #0] - 8003412: f022 0208 bic.w r2, r2, #8 - 8003416: 601a str r2, [r3, #0] - - /* Wait until the write operation will be taken into account : - at least four TX_CLK/RX_CLK clock cycles */ - tmpreg1 = (heth->Instance)->MACCR; - 8003418: 687b ldr r3, [r7, #4] - 800341a: 681b ldr r3, [r3, #0] - 800341c: 681b ldr r3, [r3, #0] - 800341e: 60fb str r3, [r7, #12] - HAL_Delay(ETH_REG_WRITE_DELAY); - 8003420: 2001 movs r0, #1 - 8003422: f7ff fda3 bl 8002f6c - (heth->Instance)->MACCR = tmpreg1; - 8003426: 687b ldr r3, [r7, #4] - 8003428: 681b ldr r3, [r3, #0] - 800342a: 68fa ldr r2, [r7, #12] - 800342c: 601a str r2, [r3, #0] - - heth->gState = HAL_ETH_STATE_READY; - 800342e: 687b ldr r3, [r7, #4] - 8003430: 2210 movs r2, #16 - 8003432: f8c3 2084 str.w r2, [r3, #132] @ 0x84 - - /* Return function status */ - return HAL_OK; - 8003436: 2300 movs r3, #0 - 8003438: e000 b.n 800343c - } - else - { - return HAL_ERROR; - 800343a: 2301 movs r3, #1 - } -} - 800343c: 4618 mov r0, r3 - 800343e: 3710 adds r7, #16 - 8003440: 46bd mov sp, r7 - 8003442: bd80 pop {r7, pc} - -08003444 : - * @param pTxConfig: Hold the configuration of packet to be transmitted - * @param Timeout: timeout value - * @retval HAL status - */ -HAL_StatusTypeDef HAL_ETH_Transmit(ETH_HandleTypeDef *heth, ETH_TxPacketConfig *pTxConfig, uint32_t Timeout) -{ - 8003444: b580 push {r7, lr} - 8003446: b086 sub sp, #24 - 8003448: af00 add r7, sp, #0 - 800344a: 60f8 str r0, [r7, #12] - 800344c: 60b9 str r1, [r7, #8] - 800344e: 607a str r2, [r7, #4] - uint32_t tickstart; - ETH_DMADescTypeDef *dmatxdesc; - - if (pTxConfig == NULL) - 8003450: 68bb ldr r3, [r7, #8] - 8003452: 2b00 cmp r3, #0 - 8003454: d109 bne.n 800346a - { - heth->ErrorCode |= HAL_ETH_ERROR_PARAM; - 8003456: 68fb ldr r3, [r7, #12] - 8003458: f8d3 3088 ldr.w r3, [r3, #136] @ 0x88 - 800345c: f043 0201 orr.w r2, r3, #1 - 8003460: 68fb ldr r3, [r7, #12] - 8003462: f8c3 2088 str.w r2, [r3, #136] @ 0x88 - return HAL_ERROR; - 8003466: 2301 movs r3, #1 - 8003468: e07c b.n 8003564 - } - - if (heth->gState == HAL_ETH_STATE_STARTED) - 800346a: 68fb ldr r3, [r7, #12] - 800346c: f8d3 3084 ldr.w r3, [r3, #132] @ 0x84 - 8003470: 2b23 cmp r3, #35 @ 0x23 - 8003472: d176 bne.n 8003562 - { - /* Config DMA Tx descriptor by Tx Packet info */ - if (ETH_Prepare_Tx_Descriptors(heth, pTxConfig, 0) != HAL_ETH_ERROR_NONE) - 8003474: 2200 movs r2, #0 - 8003476: 68b9 ldr r1, [r7, #8] - 8003478: 68f8 ldr r0, [r7, #12] - 800347a: f000 fe6d bl 8004158 - 800347e: 4603 mov r3, r0 - 8003480: 2b00 cmp r3, #0 - 8003482: d009 beq.n 8003498 - { - /* Set the ETH error code */ - heth->ErrorCode |= HAL_ETH_ERROR_BUSY; - 8003484: 68fb ldr r3, [r7, #12] - 8003486: f8d3 3088 ldr.w r3, [r3, #136] @ 0x88 - 800348a: f043 0202 orr.w r2, r3, #2 - 800348e: 68fb ldr r3, [r7, #12] - 8003490: f8c3 2088 str.w r2, [r3, #136] @ 0x88 - return HAL_ERROR; - 8003494: 2301 movs r3, #1 - 8003496: e065 b.n 8003564 - \details Acts as a special kind of Data Memory Barrier. - It completes when all explicit memory accesses before this instruction complete. - */ -__STATIC_FORCEINLINE void __DSB(void) -{ - __ASM volatile ("dsb 0xF":::"memory"); - 8003498: f3bf 8f4f dsb sy -} - 800349c: bf00 nop - } - - /* Ensure completion of descriptor preparation before transmission start */ - __DSB(); - - dmatxdesc = (ETH_DMADescTypeDef *)(&heth->TxDescList)->TxDesc[heth->TxDescList.CurTxDesc]; - 800349e: 68fb ldr r3, [r7, #12] - 80034a0: 6a9a ldr r2, [r3, #40] @ 0x28 - 80034a2: 68fb ldr r3, [r7, #12] - 80034a4: 3206 adds r2, #6 - 80034a6: f853 3022 ldr.w r3, [r3, r2, lsl #2] - 80034aa: 617b str r3, [r7, #20] - - /* Incr current tx desc index */ - INCR_TX_DESC_INDEX(heth->TxDescList.CurTxDesc, 1U); - 80034ac: 68fb ldr r3, [r7, #12] - 80034ae: 6a9b ldr r3, [r3, #40] @ 0x28 - 80034b0: 1c5a adds r2, r3, #1 - 80034b2: 68fb ldr r3, [r7, #12] - 80034b4: 629a str r2, [r3, #40] @ 0x28 - 80034b6: 68fb ldr r3, [r7, #12] - 80034b8: 6a9b ldr r3, [r3, #40] @ 0x28 - 80034ba: 2b03 cmp r3, #3 - 80034bc: d904 bls.n 80034c8 - 80034be: 68fb ldr r3, [r7, #12] - 80034c0: 6a9b ldr r3, [r3, #40] @ 0x28 - 80034c2: 1f1a subs r2, r3, #4 - 80034c4: 68fb ldr r3, [r7, #12] - 80034c6: 629a str r2, [r3, #40] @ 0x28 - - /* Start transmission */ - /* issue a poll command to Tx DMA by writing address of next immediate free descriptor */ - WRITE_REG(heth->Instance->DMATPDR, (uint32_t)(heth->TxDescList.TxDesc[heth->TxDescList.CurTxDesc])); - 80034c8: 68fb ldr r3, [r7, #12] - 80034ca: 6a99 ldr r1, [r3, #40] @ 0x28 - 80034cc: 68fb ldr r3, [r7, #12] - 80034ce: 681a ldr r2, [r3, #0] - 80034d0: 68fb ldr r3, [r7, #12] - 80034d2: 3106 adds r1, #6 - 80034d4: f853 3021 ldr.w r3, [r3, r1, lsl #2] - 80034d8: f502 5280 add.w r2, r2, #4096 @ 0x1000 - 80034dc: 6053 str r3, [r2, #4] - - tickstart = HAL_GetTick(); - 80034de: f7ff fd39 bl 8002f54 - 80034e2: 6138 str r0, [r7, #16] - - /* Wait for data to be transmitted or timeout occurred */ - while ((dmatxdesc->DESC0 & ETH_DMATXDESC_OWN) != (uint32_t)RESET) - 80034e4: e037 b.n 8003556 - { - if ((heth->Instance->DMASR & ETH_DMASR_FBES) != (uint32_t)RESET) - 80034e6: 68fb ldr r3, [r7, #12] - 80034e8: 681b ldr r3, [r3, #0] - 80034ea: f503 5380 add.w r3, r3, #4096 @ 0x1000 - 80034ee: 695b ldr r3, [r3, #20] - 80034f0: f403 5300 and.w r3, r3, #8192 @ 0x2000 - 80034f4: 2b00 cmp r3, #0 - 80034f6: d011 beq.n 800351c - { - heth->ErrorCode |= HAL_ETH_ERROR_DMA; - 80034f8: 68fb ldr r3, [r7, #12] - 80034fa: f8d3 3088 ldr.w r3, [r3, #136] @ 0x88 - 80034fe: f043 0208 orr.w r2, r3, #8 - 8003502: 68fb ldr r3, [r7, #12] - 8003504: f8c3 2088 str.w r2, [r3, #136] @ 0x88 - heth->DMAErrorCode = heth->Instance->DMASR; - 8003508: 68fb ldr r3, [r7, #12] - 800350a: 681b ldr r3, [r3, #0] - 800350c: f503 5380 add.w r3, r3, #4096 @ 0x1000 - 8003510: 695a ldr r2, [r3, #20] - 8003512: 68fb ldr r3, [r7, #12] - 8003514: f8c3 208c str.w r2, [r3, #140] @ 0x8c - /* Return function status */ - return HAL_ERROR; - 8003518: 2301 movs r3, #1 - 800351a: e023 b.n 8003564 - } - - /* Check for the Timeout */ - if (Timeout != HAL_MAX_DELAY) - 800351c: 687b ldr r3, [r7, #4] - 800351e: f1b3 3fff cmp.w r3, #4294967295 - 8003522: d018 beq.n 8003556 - { - if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U)) - 8003524: f7ff fd16 bl 8002f54 - 8003528: 4602 mov r2, r0 - 800352a: 693b ldr r3, [r7, #16] - 800352c: 1ad3 subs r3, r2, r3 - 800352e: 687a ldr r2, [r7, #4] - 8003530: 429a cmp r2, r3 - 8003532: d302 bcc.n 800353a - 8003534: 687b ldr r3, [r7, #4] - 8003536: 2b00 cmp r3, #0 - 8003538: d10d bne.n 8003556 - { - heth->ErrorCode |= HAL_ETH_ERROR_TIMEOUT; - 800353a: 68fb ldr r3, [r7, #12] - 800353c: f8d3 3088 ldr.w r3, [r3, #136] @ 0x88 - 8003540: f043 0204 orr.w r2, r3, #4 - 8003544: 68fb ldr r3, [r7, #12] - 8003546: f8c3 2088 str.w r2, [r3, #136] @ 0x88 - /* Clear TX descriptor so that we can proceed */ - dmatxdesc->DESC0 = (ETH_DMATXDESC_FS | ETH_DMATXDESC_LS); - 800354a: 697b ldr r3, [r7, #20] - 800354c: f04f 5240 mov.w r2, #805306368 @ 0x30000000 - 8003550: 601a str r2, [r3, #0] - return HAL_ERROR; - 8003552: 2301 movs r3, #1 - 8003554: e006 b.n 8003564 - while ((dmatxdesc->DESC0 & ETH_DMATXDESC_OWN) != (uint32_t)RESET) - 8003556: 697b ldr r3, [r7, #20] - 8003558: 681b ldr r3, [r3, #0] - 800355a: 2b00 cmp r3, #0 - 800355c: dbc3 blt.n 80034e6 - } - } - } - - /* Return function status */ - return HAL_OK; - 800355e: 2300 movs r3, #0 - 8003560: e000 b.n 8003564 - } - else - { - return HAL_ERROR; - 8003562: 2301 movs r3, #1 - } -} - 8003564: 4618 mov r0, r3 - 8003566: 3718 adds r7, #24 - 8003568: 46bd mov sp, r7 - 800356a: bd80 pop {r7, pc} - -0800356c : - * the configuration information for ETHERNET module - * @param pAppBuff: Pointer to an application buffer to receive the packet. - * @retval HAL status - */ -HAL_StatusTypeDef HAL_ETH_ReadData(ETH_HandleTypeDef *heth, void **pAppBuff) -{ - 800356c: b580 push {r7, lr} - 800356e: b088 sub sp, #32 - 8003570: af00 add r7, sp, #0 - 8003572: 6078 str r0, [r7, #4] - 8003574: 6039 str r1, [r7, #0] - uint32_t descidx; - ETH_DMADescTypeDef *dmarxdesc; - uint32_t desccnt = 0U; - 8003576: 2300 movs r3, #0 - 8003578: 617b str r3, [r7, #20] - uint32_t desccntmax; - uint32_t bufflength; - uint8_t rxdataready = 0U; - 800357a: 2300 movs r3, #0 - 800357c: 73fb strb r3, [r7, #15] - - - if (pAppBuff == NULL) - 800357e: 683b ldr r3, [r7, #0] - 8003580: 2b00 cmp r3, #0 - 8003582: d109 bne.n 8003598 - { - heth->ErrorCode |= HAL_ETH_ERROR_PARAM; - 8003584: 687b ldr r3, [r7, #4] - 8003586: f8d3 3088 ldr.w r3, [r3, #136] @ 0x88 - 800358a: f043 0201 orr.w r2, r3, #1 - 800358e: 687b ldr r3, [r7, #4] - 8003590: f8c3 2088 str.w r2, [r3, #136] @ 0x88 - return HAL_ERROR; - 8003594: 2301 movs r3, #1 - 8003596: e0a8 b.n 80036ea - } - - if (heth->gState != HAL_ETH_STATE_STARTED) - 8003598: 687b ldr r3, [r7, #4] - 800359a: f8d3 3084 ldr.w r3, [r3, #132] @ 0x84 - 800359e: 2b23 cmp r3, #35 @ 0x23 - 80035a0: d001 beq.n 80035a6 - { - return HAL_ERROR; - 80035a2: 2301 movs r3, #1 - 80035a4: e0a1 b.n 80036ea - } - - descidx = heth->RxDescList.RxDescIdx; - 80035a6: 687b ldr r3, [r7, #4] - 80035a8: 6ddb ldr r3, [r3, #92] @ 0x5c - 80035aa: 61fb str r3, [r7, #28] - dmarxdesc = (ETH_DMADescTypeDef *)heth->RxDescList.RxDesc[descidx]; - 80035ac: 687b ldr r3, [r7, #4] - 80035ae: 69fa ldr r2, [r7, #28] - 80035b0: 3212 adds r2, #18 - 80035b2: f853 3022 ldr.w r3, [r3, r2, lsl #2] - 80035b6: 61bb str r3, [r7, #24] - desccntmax = ETH_RX_DESC_CNT - heth->RxDescList.RxBuildDescCnt; - 80035b8: 687b ldr r3, [r7, #4] - 80035ba: 6edb ldr r3, [r3, #108] @ 0x6c - 80035bc: f1c3 0304 rsb r3, r3, #4 - 80035c0: 60bb str r3, [r7, #8] - - /* Check if descriptor is not owned by DMA */ - while ((READ_BIT(dmarxdesc->DESC0, ETH_DMARXDESC_OWN) == (uint32_t)RESET) && (desccnt < desccntmax) - 80035c2: e06a b.n 800369a - && (rxdataready == 0U)) - { - if (READ_BIT(dmarxdesc->DESC0, ETH_DMARXDESC_LS) != (uint32_t)RESET) - 80035c4: 69bb ldr r3, [r7, #24] - 80035c6: 681b ldr r3, [r3, #0] - 80035c8: f403 7380 and.w r3, r3, #256 @ 0x100 - 80035cc: 2b00 cmp r3, #0 - 80035ce: d007 beq.n 80035e0 - { - /* Get timestamp high */ - heth->RxDescList.TimeStamp.TimeStampHigh = dmarxdesc->DESC6; - 80035d0: 69bb ldr r3, [r7, #24] - 80035d2: 699a ldr r2, [r3, #24] - 80035d4: 687b ldr r3, [r7, #4] - 80035d6: 679a str r2, [r3, #120] @ 0x78 - /* Get timestamp low */ - heth->RxDescList.TimeStamp.TimeStampLow = dmarxdesc->DESC7; - 80035d8: 69bb ldr r3, [r7, #24] - 80035da: 69da ldr r2, [r3, #28] - 80035dc: 687b ldr r3, [r7, #4] - 80035de: 675a str r2, [r3, #116] @ 0x74 - } - if ((READ_BIT(dmarxdesc->DESC0, ETH_DMARXDESC_FS) != (uint32_t)RESET) || (heth->RxDescList.pRxStart != NULL)) - 80035e0: 69bb ldr r3, [r7, #24] - 80035e2: 681b ldr r3, [r3, #0] - 80035e4: f403 7300 and.w r3, r3, #512 @ 0x200 - 80035e8: 2b00 cmp r3, #0 - 80035ea: d103 bne.n 80035f4 - 80035ec: 687b ldr r3, [r7, #4] - 80035ee: 6fdb ldr r3, [r3, #124] @ 0x7c - 80035f0: 2b00 cmp r3, #0 - 80035f2: d040 beq.n 8003676 - { - /* Check first descriptor */ - if (READ_BIT(dmarxdesc->DESC0, ETH_DMARXDESC_FS) != (uint32_t)RESET) - 80035f4: 69bb ldr r3, [r7, #24] - 80035f6: 681b ldr r3, [r3, #0] - 80035f8: f403 7300 and.w r3, r3, #512 @ 0x200 - 80035fc: 2b00 cmp r3, #0 - 80035fe: d005 beq.n 800360c - { - heth->RxDescList.RxDescCnt = 0; - 8003600: 687b ldr r3, [r7, #4] - 8003602: 2200 movs r2, #0 - 8003604: 661a str r2, [r3, #96] @ 0x60 - heth->RxDescList.RxDataLength = 0; - 8003606: 687b ldr r3, [r7, #4] - 8003608: 2200 movs r2, #0 - 800360a: 665a str r2, [r3, #100] @ 0x64 - } - - /* Check if last descriptor */ - bufflength = heth->Init.RxBuffLen; - 800360c: 687b ldr r3, [r7, #4] - 800360e: 695b ldr r3, [r3, #20] - 8003610: 613b str r3, [r7, #16] - if (READ_BIT(dmarxdesc->DESC0, ETH_DMARXDESC_LS) != (uint32_t)RESET) - 8003612: 69bb ldr r3, [r7, #24] - 8003614: 681b ldr r3, [r3, #0] - 8003616: f403 7380 and.w r3, r3, #256 @ 0x100 - 800361a: 2b00 cmp r3, #0 - 800361c: d00c beq.n 8003638 - { - /* Get the Frame Length of the received packet: substruct 4 bytes of the CRC */ - bufflength = ((dmarxdesc->DESC0 & ETH_DMARXDESC_FL) >> ETH_DMARXDESC_FRAMELENGTHSHIFT) - 4U; - 800361e: 69bb ldr r3, [r7, #24] - 8003620: 681b ldr r3, [r3, #0] - 8003622: 0c1b lsrs r3, r3, #16 - 8003624: f3c3 030d ubfx r3, r3, #0, #14 - 8003628: 3b04 subs r3, #4 - 800362a: 613b str r3, [r7, #16] - - /* Save Last descriptor index */ - heth->RxDescList.pRxLastRxDesc = dmarxdesc->DESC0; - 800362c: 69bb ldr r3, [r7, #24] - 800362e: 681a ldr r2, [r3, #0] - 8003630: 687b ldr r3, [r7, #4] - 8003632: 671a str r2, [r3, #112] @ 0x70 - - /* Packet ready */ - rxdataready = 1; - 8003634: 2301 movs r3, #1 - 8003636: 73fb strb r3, [r7, #15] - } - - /* Link data */ - WRITE_REG(dmarxdesc->BackupAddr0, dmarxdesc->DESC2); - 8003638: 69bb ldr r3, [r7, #24] - 800363a: 689a ldr r2, [r3, #8] - 800363c: 69bb ldr r3, [r7, #24] - 800363e: 621a str r2, [r3, #32] - /*Call registered Link callback*/ - heth->rxLinkCallback(&heth->RxDescList.pRxStart, &heth->RxDescList.pRxEnd, - (uint8_t *)dmarxdesc->BackupAddr0, bufflength); -#else - /* Link callback */ - HAL_ETH_RxLinkCallback(&heth->RxDescList.pRxStart, &heth->RxDescList.pRxEnd, - 8003640: 687b ldr r3, [r7, #4] - 8003642: f103 007c add.w r0, r3, #124 @ 0x7c - 8003646: 687b ldr r3, [r7, #4] - 8003648: f103 0180 add.w r1, r3, #128 @ 0x80 - (uint8_t *)dmarxdesc->BackupAddr0, (uint16_t) bufflength); - 800364c: 69bb ldr r3, [r7, #24] - 800364e: 6a1b ldr r3, [r3, #32] - HAL_ETH_RxLinkCallback(&heth->RxDescList.pRxStart, &heth->RxDescList.pRxEnd, - 8003650: 461a mov r2, r3 - 8003652: 693b ldr r3, [r7, #16] - 8003654: b29b uxth r3, r3 - 8003656: f003 f997 bl 8006988 -#endif /* USE_HAL_ETH_REGISTER_CALLBACKS */ - heth->RxDescList.RxDescCnt++; - 800365a: 687b ldr r3, [r7, #4] - 800365c: 6e1b ldr r3, [r3, #96] @ 0x60 - 800365e: 1c5a adds r2, r3, #1 - 8003660: 687b ldr r3, [r7, #4] - 8003662: 661a str r2, [r3, #96] @ 0x60 - heth->RxDescList.RxDataLength += bufflength; - 8003664: 687b ldr r3, [r7, #4] - 8003666: 6e5a ldr r2, [r3, #100] @ 0x64 - 8003668: 693b ldr r3, [r7, #16] - 800366a: 441a add r2, r3 - 800366c: 687b ldr r3, [r7, #4] - 800366e: 665a str r2, [r3, #100] @ 0x64 - - /* Clear buffer pointer */ - dmarxdesc->BackupAddr0 = 0; - 8003670: 69bb ldr r3, [r7, #24] - 8003672: 2200 movs r2, #0 - 8003674: 621a str r2, [r3, #32] - } - - /* Increment current rx descriptor index */ - INCR_RX_DESC_INDEX(descidx, 1U); - 8003676: 69fb ldr r3, [r7, #28] - 8003678: 3301 adds r3, #1 - 800367a: 61fb str r3, [r7, #28] - 800367c: 69fb ldr r3, [r7, #28] - 800367e: 2b03 cmp r3, #3 - 8003680: d902 bls.n 8003688 - 8003682: 69fb ldr r3, [r7, #28] - 8003684: 3b04 subs r3, #4 - 8003686: 61fb str r3, [r7, #28] - /* Get current descriptor address */ - dmarxdesc = (ETH_DMADescTypeDef *)heth->RxDescList.RxDesc[descidx]; - 8003688: 687b ldr r3, [r7, #4] - 800368a: 69fa ldr r2, [r7, #28] - 800368c: 3212 adds r2, #18 - 800368e: f853 3022 ldr.w r3, [r3, r2, lsl #2] - 8003692: 61bb str r3, [r7, #24] - desccnt++; - 8003694: 697b ldr r3, [r7, #20] - 8003696: 3301 adds r3, #1 - 8003698: 617b str r3, [r7, #20] - while ((READ_BIT(dmarxdesc->DESC0, ETH_DMARXDESC_OWN) == (uint32_t)RESET) && (desccnt < desccntmax) - 800369a: 69bb ldr r3, [r7, #24] - 800369c: 681b ldr r3, [r3, #0] - && (rxdataready == 0U)) - 800369e: 2b00 cmp r3, #0 - 80036a0: db06 blt.n 80036b0 - while ((READ_BIT(dmarxdesc->DESC0, ETH_DMARXDESC_OWN) == (uint32_t)RESET) && (desccnt < desccntmax) - 80036a2: 697a ldr r2, [r7, #20] - 80036a4: 68bb ldr r3, [r7, #8] - 80036a6: 429a cmp r2, r3 - 80036a8: d202 bcs.n 80036b0 - && (rxdataready == 0U)) - 80036aa: 7bfb ldrb r3, [r7, #15] - 80036ac: 2b00 cmp r3, #0 - 80036ae: d089 beq.n 80035c4 - } - - heth->RxDescList.RxBuildDescCnt += desccnt; - 80036b0: 687b ldr r3, [r7, #4] - 80036b2: 6eda ldr r2, [r3, #108] @ 0x6c - 80036b4: 697b ldr r3, [r7, #20] - 80036b6: 441a add r2, r3 - 80036b8: 687b ldr r3, [r7, #4] - 80036ba: 66da str r2, [r3, #108] @ 0x6c - if ((heth->RxDescList.RxBuildDescCnt) != 0U) - 80036bc: 687b ldr r3, [r7, #4] - 80036be: 6edb ldr r3, [r3, #108] @ 0x6c - 80036c0: 2b00 cmp r3, #0 - 80036c2: d002 beq.n 80036ca - { - /* Update Descriptors */ - ETH_UpdateDescriptor(heth); - 80036c4: 6878 ldr r0, [r7, #4] - 80036c6: f000 f815 bl 80036f4 - } - - heth->RxDescList.RxDescIdx = descidx; - 80036ca: 687b ldr r3, [r7, #4] - 80036cc: 69fa ldr r2, [r7, #28] - 80036ce: 65da str r2, [r3, #92] @ 0x5c - - if (rxdataready == 1U) - 80036d0: 7bfb ldrb r3, [r7, #15] - 80036d2: 2b01 cmp r3, #1 - 80036d4: d108 bne.n 80036e8 - { - /* Return received packet */ - *pAppBuff = heth->RxDescList.pRxStart; - 80036d6: 687b ldr r3, [r7, #4] - 80036d8: 6fda ldr r2, [r3, #124] @ 0x7c - 80036da: 683b ldr r3, [r7, #0] - 80036dc: 601a str r2, [r3, #0] - /* Reset first element */ - heth->RxDescList.pRxStart = NULL; - 80036de: 687b ldr r3, [r7, #4] - 80036e0: 2200 movs r2, #0 - 80036e2: 67da str r2, [r3, #124] @ 0x7c - - return HAL_OK; - 80036e4: 2300 movs r3, #0 - 80036e6: e000 b.n 80036ea - } - - /* Packet not ready */ - return HAL_ERROR; - 80036e8: 2301 movs r3, #1 -} - 80036ea: 4618 mov r0, r3 - 80036ec: 3720 adds r7, #32 - 80036ee: 46bd mov sp, r7 - 80036f0: bd80 pop {r7, pc} - ... - -080036f4 : - * @param heth: pointer to a ETH_HandleTypeDef structure that contains - * the configuration information for ETHERNET module - * @retval HAL status - */ -static void ETH_UpdateDescriptor(ETH_HandleTypeDef *heth) -{ - 80036f4: b580 push {r7, lr} - 80036f6: b088 sub sp, #32 - 80036f8: af00 add r7, sp, #0 - 80036fa: 6078 str r0, [r7, #4] - uint32_t descidx; - uint32_t desccount; - ETH_DMADescTypeDef *dmarxdesc; - uint8_t *buff = NULL; - 80036fc: 2300 movs r3, #0 - 80036fe: 60fb str r3, [r7, #12] - uint8_t allocStatus = 1U; - 8003700: 2301 movs r3, #1 - 8003702: 74fb strb r3, [r7, #19] - - descidx = heth->RxDescList.RxBuildDescIdx; - 8003704: 687b ldr r3, [r7, #4] - 8003706: 6e9b ldr r3, [r3, #104] @ 0x68 - 8003708: 61fb str r3, [r7, #28] - dmarxdesc = (ETH_DMADescTypeDef *)heth->RxDescList.RxDesc[descidx]; - 800370a: 687b ldr r3, [r7, #4] - 800370c: 69fa ldr r2, [r7, #28] - 800370e: 3212 adds r2, #18 - 8003710: f853 3022 ldr.w r3, [r3, r2, lsl #2] - 8003714: 617b str r3, [r7, #20] - desccount = heth->RxDescList.RxBuildDescCnt; - 8003716: 687b ldr r3, [r7, #4] - 8003718: 6edb ldr r3, [r3, #108] @ 0x6c - 800371a: 61bb str r3, [r7, #24] - - while ((desccount > 0U) && (allocStatus != 0U)) - 800371c: e040 b.n 80037a0 - { - /* Check if a buffer's attached the descriptor */ - if (READ_REG(dmarxdesc->BackupAddr0) == 0U) - 800371e: 697b ldr r3, [r7, #20] - 8003720: 6a1b ldr r3, [r3, #32] - 8003722: 2b00 cmp r3, #0 - 8003724: d112 bne.n 800374c -#if (USE_HAL_ETH_REGISTER_CALLBACKS == 1) - /*Call registered Allocate callback*/ - heth->rxAllocateCallback(&buff); -#else - /* Allocate callback */ - HAL_ETH_RxAllocateCallback(&buff); - 8003726: f107 030c add.w r3, r7, #12 - 800372a: 4618 mov r0, r3 - 800372c: f003 f8fc bl 8006928 -#endif /* USE_HAL_ETH_REGISTER_CALLBACKS */ - if (buff == NULL) - 8003730: 68fb ldr r3, [r7, #12] - 8003732: 2b00 cmp r3, #0 - 8003734: d102 bne.n 800373c - { - allocStatus = 0U; - 8003736: 2300 movs r3, #0 - 8003738: 74fb strb r3, [r7, #19] - 800373a: e007 b.n 800374c - } - else - { - WRITE_REG(dmarxdesc->BackupAddr0, (uint32_t)buff); - 800373c: 68fb ldr r3, [r7, #12] - 800373e: 461a mov r2, r3 - 8003740: 697b ldr r3, [r7, #20] - 8003742: 621a str r2, [r3, #32] - WRITE_REG(dmarxdesc->DESC2, (uint32_t)buff); - 8003744: 68fb ldr r3, [r7, #12] - 8003746: 461a mov r2, r3 - 8003748: 697b ldr r3, [r7, #20] - 800374a: 609a str r2, [r3, #8] - } - } - - if (allocStatus != 0U) - 800374c: 7cfb ldrb r3, [r7, #19] - 800374e: 2b00 cmp r3, #0 - 8003750: d026 beq.n 80037a0 - { - if (heth->RxDescList.ItMode == 0U) - 8003752: 687b ldr r3, [r7, #4] - 8003754: 6d9b ldr r3, [r3, #88] @ 0x58 - 8003756: 2b00 cmp r3, #0 - 8003758: d103 bne.n 8003762 - { - WRITE_REG(dmarxdesc->DESC1, ETH_DMARXDESC_DIC | ETH_RX_BUF_SIZE | ETH_DMARXDESC_RCH); - 800375a: 697b ldr r3, [r7, #20] - 800375c: 4a1e ldr r2, [pc, #120] @ (80037d8 ) - 800375e: 605a str r2, [r3, #4] - 8003760: e003 b.n 800376a - } - else - { - WRITE_REG(dmarxdesc->DESC1, ETH_RX_BUF_SIZE | ETH_DMARXDESC_RCH); - 8003762: 697b ldr r3, [r7, #20] - 8003764: f244 52f8 movw r2, #17912 @ 0x45f8 - 8003768: 605a str r2, [r3, #4] - \details Ensures the apparent order of the explicit memory operations before - and after the instruction, without ensuring their completion. - */ -__STATIC_FORCEINLINE void __DMB(void) -{ - __ASM volatile ("dmb 0xF":::"memory"); - 800376a: f3bf 8f5f dmb sy -} - 800376e: bf00 nop - is fully performed. - The __DMB() instruction is added to avoid any potential compiler optimization that - may lead to abnormal behavior. */ - __DMB(); - - SET_BIT(dmarxdesc->DESC0, ETH_DMARXDESC_OWN); - 8003770: 697b ldr r3, [r7, #20] - 8003772: 681b ldr r3, [r3, #0] - 8003774: f043 4200 orr.w r2, r3, #2147483648 @ 0x80000000 - 8003778: 697b ldr r3, [r7, #20] - 800377a: 601a str r2, [r3, #0] - - /* Increment current rx descriptor index */ - INCR_RX_DESC_INDEX(descidx, 1U); - 800377c: 69fb ldr r3, [r7, #28] - 800377e: 3301 adds r3, #1 - 8003780: 61fb str r3, [r7, #28] - 8003782: 69fb ldr r3, [r7, #28] - 8003784: 2b03 cmp r3, #3 - 8003786: d902 bls.n 800378e - 8003788: 69fb ldr r3, [r7, #28] - 800378a: 3b04 subs r3, #4 - 800378c: 61fb str r3, [r7, #28] - /* Get current descriptor address */ - dmarxdesc = (ETH_DMADescTypeDef *)heth->RxDescList.RxDesc[descidx]; - 800378e: 687b ldr r3, [r7, #4] - 8003790: 69fa ldr r2, [r7, #28] - 8003792: 3212 adds r2, #18 - 8003794: f853 3022 ldr.w r3, [r3, r2, lsl #2] - 8003798: 617b str r3, [r7, #20] - desccount--; - 800379a: 69bb ldr r3, [r7, #24] - 800379c: 3b01 subs r3, #1 - 800379e: 61bb str r3, [r7, #24] - while ((desccount > 0U) && (allocStatus != 0U)) - 80037a0: 69bb ldr r3, [r7, #24] - 80037a2: 2b00 cmp r3, #0 - 80037a4: d002 beq.n 80037ac - 80037a6: 7cfb ldrb r3, [r7, #19] - 80037a8: 2b00 cmp r3, #0 - 80037aa: d1b8 bne.n 800371e - } - } - - if (heth->RxDescList.RxBuildDescCnt != desccount) - 80037ac: 687b ldr r3, [r7, #4] - 80037ae: 6edb ldr r3, [r3, #108] @ 0x6c - 80037b0: 69ba ldr r2, [r7, #24] - 80037b2: 429a cmp r2, r3 - 80037b4: d00c beq.n 80037d0 - { - /* Set the Tail pointer address */ - WRITE_REG(heth->Instance->DMARPDR, 0); - 80037b6: 687b ldr r3, [r7, #4] - 80037b8: 681b ldr r3, [r3, #0] - 80037ba: f503 5380 add.w r3, r3, #4096 @ 0x1000 - 80037be: 461a mov r2, r3 - 80037c0: 2300 movs r3, #0 - 80037c2: 6093 str r3, [r2, #8] - - heth->RxDescList.RxBuildDescIdx = descidx; - 80037c4: 687b ldr r3, [r7, #4] - 80037c6: 69fa ldr r2, [r7, #28] - 80037c8: 669a str r2, [r3, #104] @ 0x68 - heth->RxDescList.RxBuildDescCnt = desccount; - 80037ca: 687b ldr r3, [r7, #4] - 80037cc: 69ba ldr r2, [r7, #24] - 80037ce: 66da str r2, [r3, #108] @ 0x6c - } -} - 80037d0: bf00 nop - 80037d2: 3720 adds r7, #32 - 80037d4: 46bd mov sp, r7 - 80037d6: bd80 pop {r7, pc} - 80037d8: 800045f8 .word 0x800045f8 - -080037dc : - * @param pRegValue: parameter to hold read value - * @retval HAL status - */ -HAL_StatusTypeDef HAL_ETH_ReadPHYRegister(ETH_HandleTypeDef *heth, uint32_t PHYAddr, uint32_t PHYReg, - uint32_t *pRegValue) -{ - 80037dc: b580 push {r7, lr} - 80037de: b086 sub sp, #24 - 80037e0: af00 add r7, sp, #0 - 80037e2: 60f8 str r0, [r7, #12] - 80037e4: 60b9 str r1, [r7, #8] - 80037e6: 607a str r2, [r7, #4] - 80037e8: 603b str r3, [r7, #0] - uint32_t tmpreg1; - uint32_t tickstart; - - /* Get the ETHERNET MACMIIAR value */ - tmpreg1 = heth->Instance->MACMIIAR; - 80037ea: 68fb ldr r3, [r7, #12] - 80037ec: 681b ldr r3, [r3, #0] - 80037ee: 691b ldr r3, [r3, #16] - 80037f0: 617b str r3, [r7, #20] - - /* Keep only the CSR Clock Range CR[2:0] bits value */ - tmpreg1 &= ~ETH_MACMIIAR_CR_MASK; - 80037f2: 697b ldr r3, [r7, #20] - 80037f4: f003 031c and.w r3, r3, #28 - 80037f8: 617b str r3, [r7, #20] - - /* Prepare the MII address register value */ - tmpreg1 |= ((PHYAddr << 11U) & ETH_MACMIIAR_PA); /* Set the PHY device address */ - 80037fa: 68bb ldr r3, [r7, #8] - 80037fc: 02db lsls r3, r3, #11 - 80037fe: b29b uxth r3, r3 - 8003800: 697a ldr r2, [r7, #20] - 8003802: 4313 orrs r3, r2 - 8003804: 617b str r3, [r7, #20] - tmpreg1 |= (((uint32_t)PHYReg << 6U) & ETH_MACMIIAR_MR); /* Set the PHY register address */ - 8003806: 687b ldr r3, [r7, #4] - 8003808: 019b lsls r3, r3, #6 - 800380a: f403 63f8 and.w r3, r3, #1984 @ 0x7c0 - 800380e: 697a ldr r2, [r7, #20] - 8003810: 4313 orrs r3, r2 - 8003812: 617b str r3, [r7, #20] - tmpreg1 &= ~ETH_MACMIIAR_MW; /* Set the read mode */ - 8003814: 697b ldr r3, [r7, #20] - 8003816: f023 0302 bic.w r3, r3, #2 - 800381a: 617b str r3, [r7, #20] - tmpreg1 |= ETH_MACMIIAR_MB; /* Set the MII Busy bit */ - 800381c: 697b ldr r3, [r7, #20] - 800381e: f043 0301 orr.w r3, r3, #1 - 8003822: 617b str r3, [r7, #20] - - /* Write the result value into the MII Address register */ - heth->Instance->MACMIIAR = tmpreg1; - 8003824: 68fb ldr r3, [r7, #12] - 8003826: 681b ldr r3, [r3, #0] - 8003828: 697a ldr r2, [r7, #20] - 800382a: 611a str r2, [r3, #16] - - - tickstart = HAL_GetTick(); - 800382c: f7ff fb92 bl 8002f54 - 8003830: 6138 str r0, [r7, #16] - - /* Check for the Busy flag */ - while ((tmpreg1 & ETH_MACMIIAR_MB) == ETH_MACMIIAR_MB) - 8003832: e00d b.n 8003850 - { - /* Check for the Timeout */ - if ((HAL_GetTick() - tickstart) > PHY_READ_TO) - 8003834: f7ff fb8e bl 8002f54 - 8003838: 4602 mov r2, r0 - 800383a: 693b ldr r3, [r7, #16] - 800383c: 1ad3 subs r3, r2, r3 - 800383e: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8003842: d301 bcc.n 8003848 - { - return HAL_ERROR; - 8003844: 2301 movs r3, #1 - 8003846: e010 b.n 800386a - } - - tmpreg1 = heth->Instance->MACMIIAR; - 8003848: 68fb ldr r3, [r7, #12] - 800384a: 681b ldr r3, [r3, #0] - 800384c: 691b ldr r3, [r3, #16] - 800384e: 617b str r3, [r7, #20] - while ((tmpreg1 & ETH_MACMIIAR_MB) == ETH_MACMIIAR_MB) - 8003850: 697b ldr r3, [r7, #20] - 8003852: f003 0301 and.w r3, r3, #1 - 8003856: 2b00 cmp r3, #0 - 8003858: d1ec bne.n 8003834 - } - - /* Get MACMIIDR value */ - *pRegValue = (uint16_t)(heth->Instance->MACMIIDR); - 800385a: 68fb ldr r3, [r7, #12] - 800385c: 681b ldr r3, [r3, #0] - 800385e: 695b ldr r3, [r3, #20] - 8003860: b29b uxth r3, r3 - 8003862: 461a mov r2, r3 - 8003864: 683b ldr r3, [r7, #0] - 8003866: 601a str r2, [r3, #0] - - return HAL_OK; - 8003868: 2300 movs r3, #0 -} - 800386a: 4618 mov r0, r3 - 800386c: 3718 adds r7, #24 - 800386e: 46bd mov sp, r7 - 8003870: bd80 pop {r7, pc} - -08003872 : - * @param RegValue: the value to write - * @retval HAL status - */ -HAL_StatusTypeDef HAL_ETH_WritePHYRegister(ETH_HandleTypeDef *heth, uint32_t PHYAddr, uint32_t PHYReg, - uint32_t RegValue) -{ - 8003872: b580 push {r7, lr} - 8003874: b086 sub sp, #24 - 8003876: af00 add r7, sp, #0 - 8003878: 60f8 str r0, [r7, #12] - 800387a: 60b9 str r1, [r7, #8] - 800387c: 607a str r2, [r7, #4] - 800387e: 603b str r3, [r7, #0] - uint32_t tmpreg1; - uint32_t tickstart; - - /* Get the ETHERNET MACMIIAR value */ - tmpreg1 = heth->Instance->MACMIIAR; - 8003880: 68fb ldr r3, [r7, #12] - 8003882: 681b ldr r3, [r3, #0] - 8003884: 691b ldr r3, [r3, #16] - 8003886: 617b str r3, [r7, #20] - - /* Keep only the CSR Clock Range CR[2:0] bits value */ - tmpreg1 &= ~ETH_MACMIIAR_CR_MASK; - 8003888: 697b ldr r3, [r7, #20] - 800388a: f003 031c and.w r3, r3, #28 - 800388e: 617b str r3, [r7, #20] - - /* Prepare the MII register address value */ - tmpreg1 |= ((PHYAddr << 11U) & ETH_MACMIIAR_PA); /* Set the PHY device address */ - 8003890: 68bb ldr r3, [r7, #8] - 8003892: 02db lsls r3, r3, #11 - 8003894: b29b uxth r3, r3 - 8003896: 697a ldr r2, [r7, #20] - 8003898: 4313 orrs r3, r2 - 800389a: 617b str r3, [r7, #20] - tmpreg1 |= (((uint32_t)PHYReg << 6U) & ETH_MACMIIAR_MR); /* Set the PHY register address */ - 800389c: 687b ldr r3, [r7, #4] - 800389e: 019b lsls r3, r3, #6 - 80038a0: f403 63f8 and.w r3, r3, #1984 @ 0x7c0 - 80038a4: 697a ldr r2, [r7, #20] - 80038a6: 4313 orrs r3, r2 - 80038a8: 617b str r3, [r7, #20] - tmpreg1 |= ETH_MACMIIAR_MW; /* Set the write mode */ - 80038aa: 697b ldr r3, [r7, #20] - 80038ac: f043 0302 orr.w r3, r3, #2 - 80038b0: 617b str r3, [r7, #20] - tmpreg1 |= ETH_MACMIIAR_MB; /* Set the MII Busy bit */ - 80038b2: 697b ldr r3, [r7, #20] - 80038b4: f043 0301 orr.w r3, r3, #1 - 80038b8: 617b str r3, [r7, #20] - - /* Give the value to the MII data register */ - heth->Instance->MACMIIDR = (uint16_t)RegValue; - 80038ba: 683b ldr r3, [r7, #0] - 80038bc: b29a uxth r2, r3 - 80038be: 68fb ldr r3, [r7, #12] - 80038c0: 681b ldr r3, [r3, #0] - 80038c2: 615a str r2, [r3, #20] - - /* Write the result value into the MII Address register */ - heth->Instance->MACMIIAR = tmpreg1; - 80038c4: 68fb ldr r3, [r7, #12] - 80038c6: 681b ldr r3, [r3, #0] - 80038c8: 697a ldr r2, [r7, #20] - 80038ca: 611a str r2, [r3, #16] - - /* Get tick */ - tickstart = HAL_GetTick(); - 80038cc: f7ff fb42 bl 8002f54 - 80038d0: 6138 str r0, [r7, #16] - - /* Check for the Busy flag */ - while ((tmpreg1 & ETH_MACMIIAR_MB) == ETH_MACMIIAR_MB) - 80038d2: e00d b.n 80038f0 - { - /* Check for the Timeout */ - if ((HAL_GetTick() - tickstart) > PHY_WRITE_TO) - 80038d4: f7ff fb3e bl 8002f54 - 80038d8: 4602 mov r2, r0 - 80038da: 693b ldr r3, [r7, #16] - 80038dc: 1ad3 subs r3, r2, r3 - 80038de: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 80038e2: d301 bcc.n 80038e8 - { - return HAL_ERROR; - 80038e4: 2301 movs r3, #1 - 80038e6: e009 b.n 80038fc - } - - tmpreg1 = heth->Instance->MACMIIAR; - 80038e8: 68fb ldr r3, [r7, #12] - 80038ea: 681b ldr r3, [r3, #0] - 80038ec: 691b ldr r3, [r3, #16] - 80038ee: 617b str r3, [r7, #20] - while ((tmpreg1 & ETH_MACMIIAR_MB) == ETH_MACMIIAR_MB) - 80038f0: 697b ldr r3, [r7, #20] - 80038f2: f003 0301 and.w r3, r3, #1 - 80038f6: 2b00 cmp r3, #0 - 80038f8: d1ec bne.n 80038d4 - } - - return HAL_OK; - 80038fa: 2300 movs r3, #0 -} - 80038fc: 4618 mov r0, r3 - 80038fe: 3718 adds r7, #24 - 8003900: 46bd mov sp, r7 - 8003902: bd80 pop {r7, pc} - -08003904 : - * @param macconf: pointer to a ETH_MACConfigTypeDef structure that will hold - * the configuration of the MAC. - * @retval HAL Status - */ -HAL_StatusTypeDef HAL_ETH_GetMACConfig(ETH_HandleTypeDef *heth, ETH_MACConfigTypeDef *macconf) -{ - 8003904: b480 push {r7} - 8003906: b083 sub sp, #12 - 8003908: af00 add r7, sp, #0 - 800390a: 6078 str r0, [r7, #4] - 800390c: 6039 str r1, [r7, #0] - if (macconf == NULL) - 800390e: 683b ldr r3, [r7, #0] - 8003910: 2b00 cmp r3, #0 - 8003912: d101 bne.n 8003918 - { - return HAL_ERROR; - 8003914: 2301 movs r3, #1 - 8003916: e0d9 b.n 8003acc - } - - /* Get MAC parameters */ - macconf->DeferralCheck = ((READ_BIT(heth->Instance->MACCR, ETH_MACCR_DC) >> 4) > 0U) ? ENABLE : DISABLE; - 8003918: 687b ldr r3, [r7, #4] - 800391a: 681b ldr r3, [r3, #0] - 800391c: 681b ldr r3, [r3, #0] - 800391e: f003 0310 and.w r3, r3, #16 - 8003922: 2b00 cmp r3, #0 - 8003924: bf14 ite ne - 8003926: 2301 movne r3, #1 - 8003928: 2300 moveq r3, #0 - 800392a: b2db uxtb r3, r3 - 800392c: 461a mov r2, r3 - 800392e: 683b ldr r3, [r7, #0] - 8003930: f883 2028 strb.w r2, [r3, #40] @ 0x28 - macconf->BackOffLimit = READ_BIT(heth->Instance->MACCR, ETH_MACCR_BL); - 8003934: 687b ldr r3, [r7, #4] - 8003936: 681b ldr r3, [r3, #0] - 8003938: 681b ldr r3, [r3, #0] - 800393a: f003 0260 and.w r2, r3, #96 @ 0x60 - 800393e: 683b ldr r3, [r7, #0] - 8003940: 625a str r2, [r3, #36] @ 0x24 - macconf->RetryTransmission = ((READ_BIT(heth->Instance->MACCR, ETH_MACCR_RD) >> 9) == 0U) ? ENABLE : DISABLE; - 8003942: 687b ldr r3, [r7, #4] - 8003944: 681b ldr r3, [r3, #0] - 8003946: 681b ldr r3, [r3, #0] - 8003948: f403 7300 and.w r3, r3, #512 @ 0x200 - 800394c: 2b00 cmp r3, #0 - 800394e: bf0c ite eq - 8003950: 2301 moveq r3, #1 - 8003952: 2300 movne r3, #0 - 8003954: b2db uxtb r3, r3 - 8003956: 461a mov r2, r3 - 8003958: 683b ldr r3, [r7, #0] - 800395a: f883 2020 strb.w r2, [r3, #32] - macconf->CarrierSenseDuringTransmit = ((READ_BIT(heth->Instance->MACCR, ETH_MACCR_CSD) >> 16) > 0U) - 800395e: 687b ldr r3, [r7, #4] - 8003960: 681b ldr r3, [r3, #0] - 8003962: 681b ldr r3, [r3, #0] - 8003964: f403 3380 and.w r3, r3, #65536 @ 0x10000 - ? ENABLE : DISABLE; - 8003968: 2b00 cmp r3, #0 - 800396a: bf14 ite ne - 800396c: 2301 movne r3, #1 - 800396e: 2300 moveq r3, #0 - 8003970: b2db uxtb r3, r3 - 8003972: 461a mov r2, r3 - macconf->CarrierSenseDuringTransmit = ((READ_BIT(heth->Instance->MACCR, ETH_MACCR_CSD) >> 16) > 0U) - 8003974: 683b ldr r3, [r7, #0] - 8003976: 77da strb r2, [r3, #31] - macconf->ReceiveOwn = ((READ_BIT(heth->Instance->MACCR, ETH_MACCR_ROD) >> 13) == 0U) ? ENABLE : DISABLE; - 8003978: 687b ldr r3, [r7, #4] - 800397a: 681b ldr r3, [r3, #0] - 800397c: 681b ldr r3, [r3, #0] - 800397e: f403 5300 and.w r3, r3, #8192 @ 0x2000 - 8003982: 2b00 cmp r3, #0 - 8003984: bf0c ite eq - 8003986: 2301 moveq r3, #1 - 8003988: 2300 movne r3, #0 - 800398a: b2db uxtb r3, r3 - 800398c: 461a mov r2, r3 - 800398e: 683b ldr r3, [r7, #0] - 8003990: 779a strb r2, [r3, #30] - macconf->LoopbackMode = ((READ_BIT(heth->Instance->MACCR, ETH_MACCR_LM) >> 12) > 0U) ? ENABLE : DISABLE; - 8003992: 687b ldr r3, [r7, #4] - 8003994: 681b ldr r3, [r3, #0] - 8003996: 681b ldr r3, [r3, #0] - 8003998: f403 5380 and.w r3, r3, #4096 @ 0x1000 - 800399c: 2b00 cmp r3, #0 - 800399e: bf14 ite ne - 80039a0: 2301 movne r3, #1 - 80039a2: 2300 moveq r3, #0 - 80039a4: b2db uxtb r3, r3 - 80039a6: 461a mov r2, r3 - 80039a8: 683b ldr r3, [r7, #0] - 80039aa: 771a strb r2, [r3, #28] - macconf->DuplexMode = READ_BIT(heth->Instance->MACCR, ETH_MACCR_DM); - 80039ac: 687b ldr r3, [r7, #4] - 80039ae: 681b ldr r3, [r3, #0] - 80039b0: 681b ldr r3, [r3, #0] - 80039b2: f403 6200 and.w r2, r3, #2048 @ 0x800 - 80039b6: 683b ldr r3, [r7, #0] - 80039b8: 619a str r2, [r3, #24] - macconf->Speed = READ_BIT(heth->Instance->MACCR, ETH_MACCR_FES); - 80039ba: 687b ldr r3, [r7, #4] - 80039bc: 681b ldr r3, [r3, #0] - 80039be: 681b ldr r3, [r3, #0] - 80039c0: f403 4280 and.w r2, r3, #16384 @ 0x4000 - 80039c4: 683b ldr r3, [r7, #0] - 80039c6: 615a str r2, [r3, #20] - macconf->Jabber = ((READ_BIT(heth->Instance->MACCR, ETH_MACCR_JD) >> 22) == 0U) ? ENABLE : DISABLE; - 80039c8: 687b ldr r3, [r7, #4] - 80039ca: 681b ldr r3, [r3, #0] - 80039cc: 681b ldr r3, [r3, #0] - 80039ce: f403 0380 and.w r3, r3, #4194304 @ 0x400000 - 80039d2: 2b00 cmp r3, #0 - 80039d4: bf0c ite eq - 80039d6: 2301 moveq r3, #1 - 80039d8: 2300 movne r3, #0 - 80039da: b2db uxtb r3, r3 - 80039dc: 461a mov r2, r3 - 80039de: 683b ldr r3, [r7, #0] - 80039e0: 745a strb r2, [r3, #17] - macconf->Watchdog = ((READ_BIT(heth->Instance->MACCR, ETH_MACCR_WD) >> 23) == 0U) ? ENABLE : DISABLE; - 80039e2: 687b ldr r3, [r7, #4] - 80039e4: 681b ldr r3, [r3, #0] - 80039e6: 681b ldr r3, [r3, #0] - 80039e8: f403 0300 and.w r3, r3, #8388608 @ 0x800000 - 80039ec: 2b00 cmp r3, #0 - 80039ee: bf0c ite eq - 80039f0: 2301 moveq r3, #1 - 80039f2: 2300 movne r3, #0 - 80039f4: b2db uxtb r3, r3 - 80039f6: 461a mov r2, r3 - 80039f8: 683b ldr r3, [r7, #0] - 80039fa: 741a strb r2, [r3, #16] - macconf->AutomaticPadCRCStrip = ((READ_BIT(heth->Instance->MACCR, ETH_MACCR_APCS) >> 7) > 0U) ? ENABLE : DISABLE; - 80039fc: 687b ldr r3, [r7, #4] - 80039fe: 681b ldr r3, [r3, #0] - 8003a00: 681b ldr r3, [r3, #0] - 8003a02: f003 0380 and.w r3, r3, #128 @ 0x80 - 8003a06: 2b00 cmp r3, #0 - 8003a08: bf14 ite ne - 8003a0a: 2301 movne r3, #1 - 8003a0c: 2300 moveq r3, #0 - 8003a0e: b2db uxtb r3, r3 - 8003a10: 461a mov r2, r3 - 8003a12: 683b ldr r3, [r7, #0] - 8003a14: 73da strb r2, [r3, #15] - macconf->InterPacketGapVal = READ_BIT(heth->Instance->MACCR, ETH_MACCR_IFG); - 8003a16: 687b ldr r3, [r7, #4] - 8003a18: 681b ldr r3, [r3, #0] - 8003a1a: 681b ldr r3, [r3, #0] - 8003a1c: f403 2260 and.w r2, r3, #917504 @ 0xe0000 - 8003a20: 683b ldr r3, [r7, #0] - 8003a22: 609a str r2, [r3, #8] - macconf->ChecksumOffload = ((READ_BIT(heth->Instance->MACCR, ETH_MACCR_IPCO) >> 10U) > 0U) ? ENABLE : DISABLE; - 8003a24: 687b ldr r3, [r7, #4] - 8003a26: 681b ldr r3, [r3, #0] - 8003a28: 681b ldr r3, [r3, #0] - 8003a2a: f403 6380 and.w r3, r3, #1024 @ 0x400 - 8003a2e: 2b00 cmp r3, #0 - 8003a30: bf14 ite ne - 8003a32: 2301 movne r3, #1 - 8003a34: 2300 moveq r3, #0 - 8003a36: b2db uxtb r3, r3 - 8003a38: 461a mov r2, r3 - 8003a3a: 683b ldr r3, [r7, #0] - 8003a3c: 711a strb r2, [r3, #4] - - - macconf->TransmitFlowControl = ((READ_BIT(heth->Instance->MACFCR, ETH_MACFCR_TFCE) >> 1) > 0U) ? ENABLE : DISABLE; - 8003a3e: 687b ldr r3, [r7, #4] - 8003a40: 681b ldr r3, [r3, #0] - 8003a42: 699b ldr r3, [r3, #24] - 8003a44: f003 0302 and.w r3, r3, #2 - 8003a48: 2b00 cmp r3, #0 - 8003a4a: bf14 ite ne - 8003a4c: 2301 movne r3, #1 - 8003a4e: 2300 moveq r3, #0 - 8003a50: b2db uxtb r3, r3 - 8003a52: 461a mov r2, r3 - 8003a54: 683b ldr r3, [r7, #0] - 8003a56: f883 2054 strb.w r2, [r3, #84] @ 0x54 - macconf->ZeroQuantaPause = ((READ_BIT(heth->Instance->MACFCR, ETH_MACFCR_ZQPD) >> 7) == 0U) ? ENABLE : DISABLE; - 8003a5a: 687b ldr r3, [r7, #4] - 8003a5c: 681b ldr r3, [r3, #0] - 8003a5e: 699b ldr r3, [r3, #24] - 8003a60: f003 0380 and.w r3, r3, #128 @ 0x80 - 8003a64: 2b00 cmp r3, #0 - 8003a66: bf0c ite eq - 8003a68: 2301 moveq r3, #1 - 8003a6a: 2300 movne r3, #0 - 8003a6c: b2db uxtb r3, r3 - 8003a6e: 461a mov r2, r3 - 8003a70: 683b ldr r3, [r7, #0] - 8003a72: f883 204c strb.w r2, [r3, #76] @ 0x4c - macconf->PauseLowThreshold = READ_BIT(heth->Instance->MACFCR, ETH_MACFCR_PLT); - 8003a76: 687b ldr r3, [r7, #4] - 8003a78: 681b ldr r3, [r3, #0] - 8003a7a: 699b ldr r3, [r3, #24] - 8003a7c: f003 0230 and.w r2, r3, #48 @ 0x30 - 8003a80: 683b ldr r3, [r7, #0] - 8003a82: 651a str r2, [r3, #80] @ 0x50 - macconf->PauseTime = (READ_BIT(heth->Instance->MACFCR, ETH_MACFCR_PT) >> 16); - 8003a84: 687b ldr r3, [r7, #4] - 8003a86: 681b ldr r3, [r3, #0] - 8003a88: 699b ldr r3, [r3, #24] - 8003a8a: 0c1b lsrs r3, r3, #16 - 8003a8c: b29a uxth r2, r3 - 8003a8e: 683b ldr r3, [r7, #0] - 8003a90: 649a str r2, [r3, #72] @ 0x48 - macconf->ReceiveFlowControl = ((READ_BIT(heth->Instance->MACFCR, ETH_MACFCR_RFCE) >> 2U) > 0U) ? ENABLE : DISABLE; - 8003a92: 687b ldr r3, [r7, #4] - 8003a94: 681b ldr r3, [r3, #0] - 8003a96: 699b ldr r3, [r3, #24] - 8003a98: f003 0304 and.w r3, r3, #4 - 8003a9c: 2b00 cmp r3, #0 - 8003a9e: bf14 ite ne - 8003aa0: 2301 movne r3, #1 - 8003aa2: 2300 moveq r3, #0 - 8003aa4: b2db uxtb r3, r3 - 8003aa6: 461a mov r2, r3 - 8003aa8: 683b ldr r3, [r7, #0] - 8003aaa: f883 2056 strb.w r2, [r3, #86] @ 0x56 - macconf->UnicastPausePacketDetect = ((READ_BIT(heth->Instance->MACFCR, ETH_MACFCR_UPFD) >> 3U) > 0U) - 8003aae: 687b ldr r3, [r7, #4] - 8003ab0: 681b ldr r3, [r3, #0] - 8003ab2: 699b ldr r3, [r3, #24] - 8003ab4: f003 0308 and.w r3, r3, #8 - ? ENABLE : DISABLE; - 8003ab8: 2b00 cmp r3, #0 - 8003aba: bf14 ite ne - 8003abc: 2301 movne r3, #1 - 8003abe: 2300 moveq r3, #0 - 8003ac0: b2db uxtb r3, r3 - 8003ac2: 461a mov r2, r3 - macconf->UnicastPausePacketDetect = ((READ_BIT(heth->Instance->MACFCR, ETH_MACFCR_UPFD) >> 3U) > 0U) - 8003ac4: 683b ldr r3, [r7, #0] - 8003ac6: f883 2055 strb.w r2, [r3, #85] @ 0x55 - - return HAL_OK; - 8003aca: 2300 movs r3, #0 -} - 8003acc: 4618 mov r0, r3 - 8003ace: 370c adds r7, #12 - 8003ad0: 46bd mov sp, r7 - 8003ad2: f85d 7b04 ldr.w r7, [sp], #4 - 8003ad6: 4770 bx lr - -08003ad8 : - * @param macconf: pointer to a ETH_MACConfigTypeDef structure that contains - * the configuration of the MAC. - * @retval HAL status - */ -HAL_StatusTypeDef HAL_ETH_SetMACConfig(ETH_HandleTypeDef *heth, ETH_MACConfigTypeDef *macconf) -{ - 8003ad8: b580 push {r7, lr} - 8003ada: b082 sub sp, #8 - 8003adc: af00 add r7, sp, #0 - 8003ade: 6078 str r0, [r7, #4] - 8003ae0: 6039 str r1, [r7, #0] - if (macconf == NULL) - 8003ae2: 683b ldr r3, [r7, #0] - 8003ae4: 2b00 cmp r3, #0 - 8003ae6: d101 bne.n 8003aec - { - return HAL_ERROR; - 8003ae8: 2301 movs r3, #1 - 8003aea: e00b b.n 8003b04 - } - - if (heth->gState == HAL_ETH_STATE_READY) - 8003aec: 687b ldr r3, [r7, #4] - 8003aee: f8d3 3084 ldr.w r3, [r3, #132] @ 0x84 - 8003af2: 2b10 cmp r3, #16 - 8003af4: d105 bne.n 8003b02 - { - ETH_SetMACConfig(heth, macconf); - 8003af6: 6839 ldr r1, [r7, #0] - 8003af8: 6878 ldr r0, [r7, #4] - 8003afa: f000 f883 bl 8003c04 - - return HAL_OK; - 8003afe: 2300 movs r3, #0 - 8003b00: e000 b.n 8003b04 - } - else - { - return HAL_ERROR; - 8003b02: 2301 movs r3, #1 - } -} - 8003b04: 4618 mov r0, r3 - 8003b06: 3708 adds r7, #8 - 8003b08: 46bd mov sp, r7 - 8003b0a: bd80 pop {r7, pc} - -08003b0c : - * @param heth: pointer to a ETH_HandleTypeDef structure that contains - * the configuration information for ETHERNET module - * @retval None - */ -void HAL_ETH_SetMDIOClockRange(ETH_HandleTypeDef *heth) -{ - 8003b0c: b580 push {r7, lr} - 8003b0e: b084 sub sp, #16 - 8003b10: af00 add r7, sp, #0 - 8003b12: 6078 str r0, [r7, #4] - uint32_t hclk; - uint32_t tmpreg; - - /* Get the ETHERNET MACMIIAR value */ - tmpreg = (heth->Instance)->MACMIIAR; - 8003b14: 687b ldr r3, [r7, #4] - 8003b16: 681b ldr r3, [r3, #0] - 8003b18: 691b ldr r3, [r3, #16] - 8003b1a: 60fb str r3, [r7, #12] - /* Clear CSR Clock Range CR[2:0] bits */ - tmpreg &= ETH_MACMIIAR_CR_MASK; - 8003b1c: 68fb ldr r3, [r7, #12] - 8003b1e: f023 031c bic.w r3, r3, #28 - 8003b22: 60fb str r3, [r7, #12] - - /* Get hclk frequency value */ - hclk = HAL_RCC_GetHCLKFreq(); - 8003b24: f001 fd4a bl 80055bc - 8003b28: 60b8 str r0, [r7, #8] - - /* Set CR bits depending on hclk value */ - if ((hclk >= 20000000U) && (hclk < 35000000U)) - 8003b2a: 68bb ldr r3, [r7, #8] - 8003b2c: 4a1d ldr r2, [pc, #116] @ (8003ba4 ) - 8003b2e: 4293 cmp r3, r2 - 8003b30: d908 bls.n 8003b44 - 8003b32: 68bb ldr r3, [r7, #8] - 8003b34: 4a1c ldr r2, [pc, #112] @ (8003ba8 ) - 8003b36: 4293 cmp r3, r2 - 8003b38: d804 bhi.n 8003b44 - { - /* CSR Clock Range between 20-35 MHz */ - tmpreg |= (uint32_t)ETH_MACMIIAR_CR_Div16; - 8003b3a: 68fb ldr r3, [r7, #12] - 8003b3c: f043 0308 orr.w r3, r3, #8 - 8003b40: 60fb str r3, [r7, #12] - 8003b42: e027 b.n 8003b94 - } - else if ((hclk >= 35000000U) && (hclk < 60000000U)) - 8003b44: 68bb ldr r3, [r7, #8] - 8003b46: 4a18 ldr r2, [pc, #96] @ (8003ba8 ) - 8003b48: 4293 cmp r3, r2 - 8003b4a: d908 bls.n 8003b5e - 8003b4c: 68bb ldr r3, [r7, #8] - 8003b4e: 4a17 ldr r2, [pc, #92] @ (8003bac ) - 8003b50: 4293 cmp r3, r2 - 8003b52: d204 bcs.n 8003b5e - { - /* CSR Clock Range between 35-60 MHz */ - tmpreg |= (uint32_t)ETH_MACMIIAR_CR_Div26; - 8003b54: 68fb ldr r3, [r7, #12] - 8003b56: f043 030c orr.w r3, r3, #12 - 8003b5a: 60fb str r3, [r7, #12] - 8003b5c: e01a b.n 8003b94 - } - else if ((hclk >= 60000000U) && (hclk < 100000000U)) - 8003b5e: 68bb ldr r3, [r7, #8] - 8003b60: 4a12 ldr r2, [pc, #72] @ (8003bac ) - 8003b62: 4293 cmp r3, r2 - 8003b64: d303 bcc.n 8003b6e - 8003b66: 68bb ldr r3, [r7, #8] - 8003b68: 4a11 ldr r2, [pc, #68] @ (8003bb0 ) - 8003b6a: 4293 cmp r3, r2 - 8003b6c: d911 bls.n 8003b92 - { - /* CSR Clock Range between 60-100 MHz */ - tmpreg |= (uint32_t)ETH_MACMIIAR_CR_Div42; - } - else if ((hclk >= 100000000U) && (hclk < 150000000U)) - 8003b6e: 68bb ldr r3, [r7, #8] - 8003b70: 4a0f ldr r2, [pc, #60] @ (8003bb0 ) - 8003b72: 4293 cmp r3, r2 - 8003b74: d908 bls.n 8003b88 - 8003b76: 68bb ldr r3, [r7, #8] - 8003b78: 4a0e ldr r2, [pc, #56] @ (8003bb4 ) - 8003b7a: 4293 cmp r3, r2 - 8003b7c: d804 bhi.n 8003b88 - { - /* CSR Clock Range between 100-150 MHz */ - tmpreg |= (uint32_t)ETH_MACMIIAR_CR_Div62; - 8003b7e: 68fb ldr r3, [r7, #12] - 8003b80: f043 0304 orr.w r3, r3, #4 - 8003b84: 60fb str r3, [r7, #12] - 8003b86: e005 b.n 8003b94 - } - else /* ((hclk >= 150000000)&&(hclk <= 183000000))*/ - { - /* CSR Clock Range between 150-183 MHz */ - tmpreg |= (uint32_t)ETH_MACMIIAR_CR_Div102; - 8003b88: 68fb ldr r3, [r7, #12] - 8003b8a: f043 0310 orr.w r3, r3, #16 - 8003b8e: 60fb str r3, [r7, #12] - 8003b90: e000 b.n 8003b94 - tmpreg |= (uint32_t)ETH_MACMIIAR_CR_Div42; - 8003b92: bf00 nop - } - - /* Write to ETHERNET MAC MIIAR: Configure the ETHERNET CSR Clock Range */ - (heth->Instance)->MACMIIAR = (uint32_t)tmpreg; - 8003b94: 687b ldr r3, [r7, #4] - 8003b96: 681b ldr r3, [r3, #0] - 8003b98: 68fa ldr r2, [r7, #12] - 8003b9a: 611a str r2, [r3, #16] -} - 8003b9c: bf00 nop - 8003b9e: 3710 adds r7, #16 - 8003ba0: 46bd mov sp, r7 - 8003ba2: bd80 pop {r7, pc} - 8003ba4: 01312cff .word 0x01312cff - 8003ba8: 02160ebf .word 0x02160ebf - 8003bac: 03938700 .word 0x03938700 - 8003bb0: 05f5e0ff .word 0x05f5e0ff - 8003bb4: 08f0d17f .word 0x08f0d17f - -08003bb8 : - * @param heth pointer to a ETH_HandleTypeDef structure that contains - * the configuration information for ETHERNET module - * @retval None - */ -static void ETH_FlushTransmitFIFO(ETH_HandleTypeDef *heth) -{ - 8003bb8: b580 push {r7, lr} - 8003bba: b084 sub sp, #16 - 8003bbc: af00 add r7, sp, #0 - 8003bbe: 6078 str r0, [r7, #4] - __IO uint32_t tmpreg = 0; - 8003bc0: 2300 movs r3, #0 - 8003bc2: 60fb str r3, [r7, #12] - - /* Set the Flush Transmit FIFO bit */ - (heth->Instance)->DMAOMR |= ETH_DMAOMR_FTF; - 8003bc4: 687b ldr r3, [r7, #4] - 8003bc6: 681b ldr r3, [r3, #0] - 8003bc8: f503 5380 add.w r3, r3, #4096 @ 0x1000 - 8003bcc: 699b ldr r3, [r3, #24] - 8003bce: 687a ldr r2, [r7, #4] - 8003bd0: 6812 ldr r2, [r2, #0] - 8003bd2: f443 1380 orr.w r3, r3, #1048576 @ 0x100000 - 8003bd6: f502 5280 add.w r2, r2, #4096 @ 0x1000 - 8003bda: 6193 str r3, [r2, #24] - - /* Wait until the write operation will be taken into account: - at least four TX_CLK/RX_CLK clock cycles */ - tmpreg = (heth->Instance)->DMAOMR; - 8003bdc: 687b ldr r3, [r7, #4] - 8003bde: 681b ldr r3, [r3, #0] - 8003be0: f503 5380 add.w r3, r3, #4096 @ 0x1000 - 8003be4: 699b ldr r3, [r3, #24] - 8003be6: 60fb str r3, [r7, #12] - HAL_Delay(ETH_REG_WRITE_DELAY); - 8003be8: 2001 movs r0, #1 - 8003bea: f7ff f9bf bl 8002f6c - (heth->Instance)->DMAOMR = tmpreg; - 8003bee: 687b ldr r3, [r7, #4] - 8003bf0: 681a ldr r2, [r3, #0] - 8003bf2: 68fb ldr r3, [r7, #12] - 8003bf4: f502 5280 add.w r2, r2, #4096 @ 0x1000 - 8003bf8: 6193 str r3, [r2, #24] -} - 8003bfa: bf00 nop - 8003bfc: 3710 adds r7, #16 - 8003bfe: 46bd mov sp, r7 - 8003c00: bd80 pop {r7, pc} - ... - -08003c04 : - -static void ETH_SetMACConfig(ETH_HandleTypeDef *heth, ETH_MACConfigTypeDef *macconf) -{ - 8003c04: b580 push {r7, lr} - 8003c06: b084 sub sp, #16 - 8003c08: af00 add r7, sp, #0 - 8003c0a: 6078 str r0, [r7, #4] - 8003c0c: 6039 str r1, [r7, #0] - uint32_t tmpreg1; - - /*------------------------ ETHERNET MACCR Configuration --------------------*/ - /* Get the ETHERNET MACCR value */ - tmpreg1 = (heth->Instance)->MACCR; - 8003c0e: 687b ldr r3, [r7, #4] - 8003c10: 681b ldr r3, [r3, #0] - 8003c12: 681b ldr r3, [r3, #0] - 8003c14: 60fb str r3, [r7, #12] - /* Clear WD, PCE, PS, TE and RE bits */ - tmpreg1 &= ETH_MACCR_CLEAR_MASK; - 8003c16: 68fa ldr r2, [r7, #12] - 8003c18: 4b51 ldr r3, [pc, #324] @ (8003d60 ) - 8003c1a: 4013 ands r3, r2 - 8003c1c: 60fb str r3, [r7, #12] - - tmpreg1 |= (uint32_t)(((uint32_t)((macconf->Watchdog == DISABLE) ? 1U : 0U) << 23U) | - 8003c1e: 683b ldr r3, [r7, #0] - 8003c20: 7c1b ldrb r3, [r3, #16] - 8003c22: 2b00 cmp r3, #0 - 8003c24: d102 bne.n 8003c2c - 8003c26: f44f 0200 mov.w r2, #8388608 @ 0x800000 - 8003c2a: e000 b.n 8003c2e - 8003c2c: 2200 movs r2, #0 - ((uint32_t)((macconf->Jabber == DISABLE) ? 1U : 0U) << 22U) | - 8003c2e: 683b ldr r3, [r7, #0] - 8003c30: 7c5b ldrb r3, [r3, #17] - 8003c32: 2b00 cmp r3, #0 - 8003c34: d102 bne.n 8003c3c - 8003c36: f44f 0380 mov.w r3, #4194304 @ 0x400000 - 8003c3a: e000 b.n 8003c3e - 8003c3c: 2300 movs r3, #0 - tmpreg1 |= (uint32_t)(((uint32_t)((macconf->Watchdog == DISABLE) ? 1U : 0U) << 23U) | - 8003c3e: 431a orrs r2, r3 - (uint32_t)macconf->InterPacketGapVal | - 8003c40: 683b ldr r3, [r7, #0] - 8003c42: 689b ldr r3, [r3, #8] - ((uint32_t)((macconf->Jabber == DISABLE) ? 1U : 0U) << 22U) | - 8003c44: 431a orrs r2, r3 - ((uint32_t)macconf->CarrierSenseDuringTransmit << 16U) | - 8003c46: 683b ldr r3, [r7, #0] - 8003c48: 7fdb ldrb r3, [r3, #31] - 8003c4a: 041b lsls r3, r3, #16 - (uint32_t)macconf->InterPacketGapVal | - 8003c4c: 431a orrs r2, r3 - macconf->Speed | - 8003c4e: 683b ldr r3, [r7, #0] - 8003c50: 695b ldr r3, [r3, #20] - ((uint32_t)macconf->CarrierSenseDuringTransmit << 16U) | - 8003c52: 4313 orrs r3, r2 - ((uint32_t)((macconf->ReceiveOwn == DISABLE) ? 1U : 0U) << 13U) | - 8003c54: 683a ldr r2, [r7, #0] - 8003c56: 7f92 ldrb r2, [r2, #30] - 8003c58: 2a00 cmp r2, #0 - 8003c5a: d102 bne.n 8003c62 - 8003c5c: f44f 5200 mov.w r2, #8192 @ 0x2000 - 8003c60: e000 b.n 8003c64 - 8003c62: 2200 movs r2, #0 - macconf->Speed | - 8003c64: 431a orrs r2, r3 - ((uint32_t)macconf->LoopbackMode << 12U) | - 8003c66: 683b ldr r3, [r7, #0] - 8003c68: 7f1b ldrb r3, [r3, #28] - 8003c6a: 031b lsls r3, r3, #12 - ((uint32_t)((macconf->ReceiveOwn == DISABLE) ? 1U : 0U) << 13U) | - 8003c6c: 431a orrs r2, r3 - macconf->DuplexMode | - 8003c6e: 683b ldr r3, [r7, #0] - 8003c70: 699b ldr r3, [r3, #24] - ((uint32_t)macconf->LoopbackMode << 12U) | - 8003c72: 431a orrs r2, r3 - ((uint32_t)macconf->ChecksumOffload << 10U) | - 8003c74: 683b ldr r3, [r7, #0] - 8003c76: 791b ldrb r3, [r3, #4] - 8003c78: 029b lsls r3, r3, #10 - macconf->DuplexMode | - 8003c7a: 4313 orrs r3, r2 - ((uint32_t)((macconf->RetryTransmission == DISABLE) ? 1U : 0U) << 9U) | - 8003c7c: 683a ldr r2, [r7, #0] - 8003c7e: f892 2020 ldrb.w r2, [r2, #32] - 8003c82: 2a00 cmp r2, #0 - 8003c84: d102 bne.n 8003c8c - 8003c86: f44f 7200 mov.w r2, #512 @ 0x200 - 8003c8a: e000 b.n 8003c8e - 8003c8c: 2200 movs r2, #0 - ((uint32_t)macconf->ChecksumOffload << 10U) | - 8003c8e: 431a orrs r2, r3 - ((uint32_t)macconf->AutomaticPadCRCStrip << 7U) | - 8003c90: 683b ldr r3, [r7, #0] - 8003c92: 7bdb ldrb r3, [r3, #15] - 8003c94: 01db lsls r3, r3, #7 - ((uint32_t)((macconf->RetryTransmission == DISABLE) ? 1U : 0U) << 9U) | - 8003c96: 431a orrs r2, r3 - macconf->BackOffLimit | - 8003c98: 683b ldr r3, [r7, #0] - 8003c9a: 6a5b ldr r3, [r3, #36] @ 0x24 - ((uint32_t)macconf->AutomaticPadCRCStrip << 7U) | - 8003c9c: 431a orrs r2, r3 - ((uint32_t)macconf->DeferralCheck << 4U)); - 8003c9e: 683b ldr r3, [r7, #0] - 8003ca0: f893 3028 ldrb.w r3, [r3, #40] @ 0x28 - 8003ca4: 011b lsls r3, r3, #4 - tmpreg1 |= (uint32_t)(((uint32_t)((macconf->Watchdog == DISABLE) ? 1U : 0U) << 23U) | - 8003ca6: 4313 orrs r3, r2 - 8003ca8: 68fa ldr r2, [r7, #12] - 8003caa: 4313 orrs r3, r2 - 8003cac: 60fb str r3, [r7, #12] - - /* Write to ETHERNET MACCR */ - (heth->Instance)->MACCR = (uint32_t)tmpreg1; - 8003cae: 687b ldr r3, [r7, #4] - 8003cb0: 681b ldr r3, [r3, #0] - 8003cb2: 68fa ldr r2, [r7, #12] - 8003cb4: 601a str r2, [r3, #0] - - /* Wait until the write operation will be taken into account : - at least four TX_CLK/RX_CLK clock cycles */ - tmpreg1 = (heth->Instance)->MACCR; - 8003cb6: 687b ldr r3, [r7, #4] - 8003cb8: 681b ldr r3, [r3, #0] - 8003cba: 681b ldr r3, [r3, #0] - 8003cbc: 60fb str r3, [r7, #12] - HAL_Delay(ETH_REG_WRITE_DELAY); - 8003cbe: 2001 movs r0, #1 - 8003cc0: f7ff f954 bl 8002f6c - (heth->Instance)->MACCR = tmpreg1; - 8003cc4: 687b ldr r3, [r7, #4] - 8003cc6: 681b ldr r3, [r3, #0] - 8003cc8: 68fa ldr r2, [r7, #12] - 8003cca: 601a str r2, [r3, #0] - - /*----------------------- ETHERNET MACFCR Configuration --------------------*/ - - /* Get the ETHERNET MACFCR value */ - tmpreg1 = (heth->Instance)->MACFCR; - 8003ccc: 687b ldr r3, [r7, #4] - 8003cce: 681b ldr r3, [r3, #0] - 8003cd0: 699b ldr r3, [r3, #24] - 8003cd2: 60fb str r3, [r7, #12] - /* Clear xx bits */ - tmpreg1 &= ETH_MACFCR_CLEAR_MASK; - 8003cd4: 68fa ldr r2, [r7, #12] - 8003cd6: f64f 7341 movw r3, #65345 @ 0xff41 - 8003cda: 4013 ands r3, r2 - 8003cdc: 60fb str r3, [r7, #12] - - tmpreg1 |= (uint32_t)((macconf->PauseTime << 16U) | - 8003cde: 683b ldr r3, [r7, #0] - 8003ce0: 6c9b ldr r3, [r3, #72] @ 0x48 - 8003ce2: 041b lsls r3, r3, #16 - ((uint32_t)((macconf->ZeroQuantaPause == DISABLE) ? 1U : 0U) << 7U) | - 8003ce4: 683a ldr r2, [r7, #0] - 8003ce6: f892 204c ldrb.w r2, [r2, #76] @ 0x4c - 8003cea: 2a00 cmp r2, #0 - 8003cec: d101 bne.n 8003cf2 - 8003cee: 2280 movs r2, #128 @ 0x80 - 8003cf0: e000 b.n 8003cf4 - 8003cf2: 2200 movs r2, #0 - tmpreg1 |= (uint32_t)((macconf->PauseTime << 16U) | - 8003cf4: 431a orrs r2, r3 - macconf->PauseLowThreshold | - 8003cf6: 683b ldr r3, [r7, #0] - 8003cf8: 6d1b ldr r3, [r3, #80] @ 0x50 - ((uint32_t)((macconf->ZeroQuantaPause == DISABLE) ? 1U : 0U) << 7U) | - 8003cfa: 4313 orrs r3, r2 - ((uint32_t)((macconf->UnicastPausePacketDetect == ENABLE) ? 1U : 0U) << 3U) | - 8003cfc: 683a ldr r2, [r7, #0] - 8003cfe: f892 2055 ldrb.w r2, [r2, #85] @ 0x55 - 8003d02: 2a01 cmp r2, #1 - 8003d04: d101 bne.n 8003d0a - 8003d06: 2208 movs r2, #8 - 8003d08: e000 b.n 8003d0c - 8003d0a: 2200 movs r2, #0 - macconf->PauseLowThreshold | - 8003d0c: 4313 orrs r3, r2 - ((uint32_t)((macconf->ReceiveFlowControl == ENABLE) ? 1U : 0U) << 2U) | - 8003d0e: 683a ldr r2, [r7, #0] - 8003d10: f892 2056 ldrb.w r2, [r2, #86] @ 0x56 - 8003d14: 2a01 cmp r2, #1 - 8003d16: d101 bne.n 8003d1c - 8003d18: 2204 movs r2, #4 - 8003d1a: e000 b.n 8003d1e - 8003d1c: 2200 movs r2, #0 - ((uint32_t)((macconf->UnicastPausePacketDetect == ENABLE) ? 1U : 0U) << 3U) | - 8003d1e: 4313 orrs r3, r2 - ((uint32_t)((macconf->TransmitFlowControl == ENABLE) ? 1U : 0U) << 1U)); - 8003d20: 683a ldr r2, [r7, #0] - 8003d22: f892 2054 ldrb.w r2, [r2, #84] @ 0x54 - 8003d26: 2a01 cmp r2, #1 - 8003d28: d101 bne.n 8003d2e - 8003d2a: 2202 movs r2, #2 - 8003d2c: e000 b.n 8003d30 - 8003d2e: 2200 movs r2, #0 - tmpreg1 |= (uint32_t)((macconf->PauseTime << 16U) | - 8003d30: 4313 orrs r3, r2 - 8003d32: 68fa ldr r2, [r7, #12] - 8003d34: 4313 orrs r3, r2 - 8003d36: 60fb str r3, [r7, #12] - - /* Write to ETHERNET MACFCR */ - (heth->Instance)->MACFCR = (uint32_t)tmpreg1; - 8003d38: 687b ldr r3, [r7, #4] - 8003d3a: 681b ldr r3, [r3, #0] - 8003d3c: 68fa ldr r2, [r7, #12] - 8003d3e: 619a str r2, [r3, #24] - - /* Wait until the write operation will be taken into account : - at least four TX_CLK/RX_CLK clock cycles */ - tmpreg1 = (heth->Instance)->MACFCR; - 8003d40: 687b ldr r3, [r7, #4] - 8003d42: 681b ldr r3, [r3, #0] - 8003d44: 699b ldr r3, [r3, #24] - 8003d46: 60fb str r3, [r7, #12] - HAL_Delay(ETH_REG_WRITE_DELAY); - 8003d48: 2001 movs r0, #1 - 8003d4a: f7ff f90f bl 8002f6c - (heth->Instance)->MACFCR = tmpreg1; - 8003d4e: 687b ldr r3, [r7, #4] - 8003d50: 681b ldr r3, [r3, #0] - 8003d52: 68fa ldr r2, [r7, #12] - 8003d54: 619a str r2, [r3, #24] -} - 8003d56: bf00 nop - 8003d58: 3710 adds r7, #16 - 8003d5a: 46bd mov sp, r7 - 8003d5c: bd80 pop {r7, pc} - 8003d5e: bf00 nop - 8003d60: ff20810f .word 0xff20810f - -08003d64 : - -static void ETH_SetDMAConfig(ETH_HandleTypeDef *heth, ETH_DMAConfigTypeDef *dmaconf) -{ - 8003d64: b580 push {r7, lr} - 8003d66: b084 sub sp, #16 - 8003d68: af00 add r7, sp, #0 - 8003d6a: 6078 str r0, [r7, #4] - 8003d6c: 6039 str r1, [r7, #0] - uint32_t tmpreg1; - - /*----------------------- ETHERNET DMAOMR Configuration --------------------*/ - /* Get the ETHERNET DMAOMR value */ - tmpreg1 = (heth->Instance)->DMAOMR; - 8003d6e: 687b ldr r3, [r7, #4] - 8003d70: 681b ldr r3, [r3, #0] - 8003d72: f503 5380 add.w r3, r3, #4096 @ 0x1000 - 8003d76: 699b ldr r3, [r3, #24] - 8003d78: 60fb str r3, [r7, #12] - /* Clear xx bits */ - tmpreg1 &= ETH_DMAOMR_CLEAR_MASK; - 8003d7a: 68fa ldr r2, [r7, #12] - 8003d7c: 4b3d ldr r3, [pc, #244] @ (8003e74 ) - 8003d7e: 4013 ands r3, r2 - 8003d80: 60fb str r3, [r7, #12] - - tmpreg1 |= (uint32_t)(((uint32_t)((dmaconf->DropTCPIPChecksumErrorFrame == DISABLE) ? 1U : 0U) << 26U) | - 8003d82: 683b ldr r3, [r7, #0] - 8003d84: 7b1b ldrb r3, [r3, #12] - 8003d86: 2b00 cmp r3, #0 - 8003d88: d102 bne.n 8003d90 - 8003d8a: f04f 6280 mov.w r2, #67108864 @ 0x4000000 - 8003d8e: e000 b.n 8003d92 - 8003d90: 2200 movs r2, #0 - ((uint32_t)dmaconf->ReceiveStoreForward << 25U) | - 8003d92: 683b ldr r3, [r7, #0] - 8003d94: 7b5b ldrb r3, [r3, #13] - 8003d96: 065b lsls r3, r3, #25 - tmpreg1 |= (uint32_t)(((uint32_t)((dmaconf->DropTCPIPChecksumErrorFrame == DISABLE) ? 1U : 0U) << 26U) | - 8003d98: 4313 orrs r3, r2 - ((uint32_t)((dmaconf->FlushRxPacket == DISABLE) ? 1U : 0U) << 20U) | - 8003d9a: 683a ldr r2, [r7, #0] - 8003d9c: 7f52 ldrb r2, [r2, #29] - 8003d9e: 2a00 cmp r2, #0 - 8003da0: d102 bne.n 8003da8 - 8003da2: f44f 1280 mov.w r2, #1048576 @ 0x100000 - 8003da6: e000 b.n 8003daa - 8003da8: 2200 movs r2, #0 - ((uint32_t)dmaconf->ReceiveStoreForward << 25U) | - 8003daa: 431a orrs r2, r3 - ((uint32_t)dmaconf->TransmitStoreForward << 21U) | - 8003dac: 683b ldr r3, [r7, #0] - 8003dae: 7b9b ldrb r3, [r3, #14] - 8003db0: 055b lsls r3, r3, #21 - ((uint32_t)((dmaconf->FlushRxPacket == DISABLE) ? 1U : 0U) << 20U) | - 8003db2: 431a orrs r2, r3 - dmaconf->TransmitThresholdControl | - 8003db4: 683b ldr r3, [r7, #0] - 8003db6: 695b ldr r3, [r3, #20] - ((uint32_t)dmaconf->TransmitStoreForward << 21U) | - 8003db8: 431a orrs r2, r3 - ((uint32_t)dmaconf->ForwardErrorFrames << 7U) | - 8003dba: 683b ldr r3, [r7, #0] - 8003dbc: 7f1b ldrb r3, [r3, #28] - 8003dbe: 01db lsls r3, r3, #7 - dmaconf->TransmitThresholdControl | - 8003dc0: 431a orrs r2, r3 - ((uint32_t)dmaconf->ForwardUndersizedGoodFrames << 6U) | - 8003dc2: 683b ldr r3, [r7, #0] - 8003dc4: 7f9b ldrb r3, [r3, #30] - 8003dc6: 019b lsls r3, r3, #6 - ((uint32_t)dmaconf->ForwardErrorFrames << 7U) | - 8003dc8: 431a orrs r2, r3 - dmaconf->ReceiveThresholdControl | - 8003dca: 683b ldr r3, [r7, #0] - 8003dcc: 6a1b ldr r3, [r3, #32] - ((uint32_t)dmaconf->ForwardUndersizedGoodFrames << 6U) | - 8003dce: 431a orrs r2, r3 - ((uint32_t)dmaconf->SecondFrameOperate << 2U)); - 8003dd0: 683b ldr r3, [r7, #0] - 8003dd2: f893 3024 ldrb.w r3, [r3, #36] @ 0x24 - 8003dd6: 009b lsls r3, r3, #2 - tmpreg1 |= (uint32_t)(((uint32_t)((dmaconf->DropTCPIPChecksumErrorFrame == DISABLE) ? 1U : 0U) << 26U) | - 8003dd8: 4313 orrs r3, r2 - 8003dda: 68fa ldr r2, [r7, #12] - 8003ddc: 4313 orrs r3, r2 - 8003dde: 60fb str r3, [r7, #12] - - /* Write to ETHERNET DMAOMR */ - (heth->Instance)->DMAOMR = (uint32_t)tmpreg1; - 8003de0: 687b ldr r3, [r7, #4] - 8003de2: 681b ldr r3, [r3, #0] - 8003de4: f503 5380 add.w r3, r3, #4096 @ 0x1000 - 8003de8: 461a mov r2, r3 - 8003dea: 68fb ldr r3, [r7, #12] - 8003dec: 6193 str r3, [r2, #24] - - /* Wait until the write operation will be taken into account: - at least four TX_CLK/RX_CLK clock cycles */ - tmpreg1 = (heth->Instance)->DMAOMR; - 8003dee: 687b ldr r3, [r7, #4] - 8003df0: 681b ldr r3, [r3, #0] - 8003df2: f503 5380 add.w r3, r3, #4096 @ 0x1000 - 8003df6: 699b ldr r3, [r3, #24] - 8003df8: 60fb str r3, [r7, #12] - HAL_Delay(ETH_REG_WRITE_DELAY); - 8003dfa: 2001 movs r0, #1 - 8003dfc: f7ff f8b6 bl 8002f6c - (heth->Instance)->DMAOMR = tmpreg1; - 8003e00: 687b ldr r3, [r7, #4] - 8003e02: 681b ldr r3, [r3, #0] - 8003e04: f503 5380 add.w r3, r3, #4096 @ 0x1000 - 8003e08: 461a mov r2, r3 - 8003e0a: 68fb ldr r3, [r7, #12] - 8003e0c: 6193 str r3, [r2, #24] - - /*----------------------- ETHERNET DMABMR Configuration --------------------*/ - (heth->Instance)->DMABMR = (uint32_t)(((uint32_t)dmaconf->AddressAlignedBeats << 25U) | - 8003e0e: 683b ldr r3, [r7, #0] - 8003e10: 791b ldrb r3, [r3, #4] - 8003e12: 065a lsls r2, r3, #25 - dmaconf->BurstMode | - 8003e14: 683b ldr r3, [r7, #0] - 8003e16: 689b ldr r3, [r3, #8] - (heth->Instance)->DMABMR = (uint32_t)(((uint32_t)dmaconf->AddressAlignedBeats << 25U) | - 8003e18: 431a orrs r2, r3 - dmaconf->RxDMABurstLength | /* !! if 4xPBL is selected for Tx or - 8003e1a: 683b ldr r3, [r7, #0] - 8003e1c: 699b ldr r3, [r3, #24] - dmaconf->BurstMode | - 8003e1e: 431a orrs r2, r3 - Rx it is applied for the other */ - dmaconf->TxDMABurstLength | - 8003e20: 683b ldr r3, [r7, #0] - 8003e22: 691b ldr r3, [r3, #16] - dmaconf->RxDMABurstLength | /* !! if 4xPBL is selected for Tx or - 8003e24: 431a orrs r2, r3 - ((uint32_t)dmaconf->EnhancedDescriptorFormat << 7U) | - 8003e26: 683b ldr r3, [r7, #0] - 8003e28: f893 3025 ldrb.w r3, [r3, #37] @ 0x25 - 8003e2c: 01db lsls r3, r3, #7 - dmaconf->TxDMABurstLength | - 8003e2e: 431a orrs r2, r3 - (dmaconf->DescriptorSkipLength << 2U) | - 8003e30: 683b ldr r3, [r7, #0] - 8003e32: 6a9b ldr r3, [r3, #40] @ 0x28 - 8003e34: 009b lsls r3, r3, #2 - ((uint32_t)dmaconf->EnhancedDescriptorFormat << 7U) | - 8003e36: 431a orrs r2, r3 - dmaconf->DMAArbitration | - 8003e38: 683b ldr r3, [r7, #0] - 8003e3a: 681b ldr r3, [r3, #0] - (dmaconf->DescriptorSkipLength << 2U) | - 8003e3c: 4313 orrs r3, r2 - (heth->Instance)->DMABMR = (uint32_t)(((uint32_t)dmaconf->AddressAlignedBeats << 25U) | - 8003e3e: 687a ldr r2, [r7, #4] - 8003e40: 6812 ldr r2, [r2, #0] - 8003e42: f443 0300 orr.w r3, r3, #8388608 @ 0x800000 - 8003e46: f502 5280 add.w r2, r2, #4096 @ 0x1000 - 8003e4a: 6013 str r3, [r2, #0] - ETH_DMABMR_USP); /* Enable use of separate PBL for Rx and Tx */ - - /* Wait until the write operation will be taken into account: - at least four TX_CLK/RX_CLK clock cycles */ - tmpreg1 = (heth->Instance)->DMABMR; - 8003e4c: 687b ldr r3, [r7, #4] - 8003e4e: 681b ldr r3, [r3, #0] - 8003e50: f503 5380 add.w r3, r3, #4096 @ 0x1000 - 8003e54: 681b ldr r3, [r3, #0] - 8003e56: 60fb str r3, [r7, #12] - HAL_Delay(ETH_REG_WRITE_DELAY); - 8003e58: 2001 movs r0, #1 - 8003e5a: f7ff f887 bl 8002f6c - (heth->Instance)->DMABMR = tmpreg1; - 8003e5e: 687b ldr r3, [r7, #4] - 8003e60: 681b ldr r3, [r3, #0] - 8003e62: f503 5380 add.w r3, r3, #4096 @ 0x1000 - 8003e66: 461a mov r2, r3 - 8003e68: 68fb ldr r3, [r7, #12] - 8003e6a: 6013 str r3, [r2, #0] -} - 8003e6c: bf00 nop - 8003e6e: 3710 adds r7, #16 - 8003e70: 46bd mov sp, r7 - 8003e72: bd80 pop {r7, pc} - 8003e74: f8de3f23 .word 0xf8de3f23 - -08003e78 : - * @param heth: pointer to a ETH_HandleTypeDef structure that contains - * the configuration information for ETHERNET module - * @retval HAL status - */ -static void ETH_MACDMAConfig(ETH_HandleTypeDef *heth) -{ - 8003e78: b580 push {r7, lr} - 8003e7a: b0a6 sub sp, #152 @ 0x98 - 8003e7c: af00 add r7, sp, #0 - 8003e7e: 6078 str r0, [r7, #4] - ETH_MACConfigTypeDef macDefaultConf; - ETH_DMAConfigTypeDef dmaDefaultConf; - - /*--------------- ETHERNET MAC registers default Configuration --------------*/ - macDefaultConf.Watchdog = ENABLE; - 8003e80: 2301 movs r3, #1 - 8003e82: f887 3044 strb.w r3, [r7, #68] @ 0x44 - macDefaultConf.Jabber = ENABLE; - 8003e86: 2301 movs r3, #1 - 8003e88: f887 3045 strb.w r3, [r7, #69] @ 0x45 - macDefaultConf.InterPacketGapVal = ETH_INTERFRAMEGAP_96BIT; - 8003e8c: 2300 movs r3, #0 - 8003e8e: 63fb str r3, [r7, #60] @ 0x3c - macDefaultConf.CarrierSenseDuringTransmit = DISABLE; - 8003e90: 2300 movs r3, #0 - 8003e92: f887 3053 strb.w r3, [r7, #83] @ 0x53 - macDefaultConf.ReceiveOwn = ENABLE; - 8003e96: 2301 movs r3, #1 - 8003e98: f887 3052 strb.w r3, [r7, #82] @ 0x52 - macDefaultConf.LoopbackMode = DISABLE; - 8003e9c: 2300 movs r3, #0 - 8003e9e: f887 3050 strb.w r3, [r7, #80] @ 0x50 - macDefaultConf.ChecksumOffload = ENABLE; - 8003ea2: 2301 movs r3, #1 - 8003ea4: f887 3038 strb.w r3, [r7, #56] @ 0x38 - macDefaultConf.RetryTransmission = DISABLE; - 8003ea8: 2300 movs r3, #0 - 8003eaa: f887 3054 strb.w r3, [r7, #84] @ 0x54 - macDefaultConf.AutomaticPadCRCStrip = DISABLE; - 8003eae: 2300 movs r3, #0 - 8003eb0: f887 3043 strb.w r3, [r7, #67] @ 0x43 - macDefaultConf.BackOffLimit = ETH_BACKOFFLIMIT_10; - 8003eb4: 2300 movs r3, #0 - 8003eb6: 65bb str r3, [r7, #88] @ 0x58 - macDefaultConf.DeferralCheck = DISABLE; - 8003eb8: 2300 movs r3, #0 - 8003eba: f887 305c strb.w r3, [r7, #92] @ 0x5c - macDefaultConf.PauseTime = 0x0U; - 8003ebe: 2300 movs r3, #0 - 8003ec0: 67fb str r3, [r7, #124] @ 0x7c - macDefaultConf.ZeroQuantaPause = DISABLE; - 8003ec2: 2300 movs r3, #0 - 8003ec4: f887 3080 strb.w r3, [r7, #128] @ 0x80 - macDefaultConf.PauseLowThreshold = ETH_PAUSELOWTHRESHOLD_MINUS4; - 8003ec8: 2300 movs r3, #0 - 8003eca: f8c7 3084 str.w r3, [r7, #132] @ 0x84 - macDefaultConf.ReceiveFlowControl = DISABLE; - 8003ece: 2300 movs r3, #0 - 8003ed0: f887 308a strb.w r3, [r7, #138] @ 0x8a - macDefaultConf.TransmitFlowControl = DISABLE; - 8003ed4: 2300 movs r3, #0 - 8003ed6: f887 3088 strb.w r3, [r7, #136] @ 0x88 - macDefaultConf.Speed = ETH_SPEED_100M; - 8003eda: f44f 4380 mov.w r3, #16384 @ 0x4000 - 8003ede: 64bb str r3, [r7, #72] @ 0x48 - macDefaultConf.DuplexMode = ETH_FULLDUPLEX_MODE; - 8003ee0: f44f 6300 mov.w r3, #2048 @ 0x800 - 8003ee4: 64fb str r3, [r7, #76] @ 0x4c - macDefaultConf.UnicastPausePacketDetect = DISABLE; - 8003ee6: 2300 movs r3, #0 - 8003ee8: f887 3089 strb.w r3, [r7, #137] @ 0x89 - - /* MAC default configuration */ - ETH_SetMACConfig(heth, &macDefaultConf); - 8003eec: f107 0334 add.w r3, r7, #52 @ 0x34 - 8003ef0: 4619 mov r1, r3 - 8003ef2: 6878 ldr r0, [r7, #4] - 8003ef4: f7ff fe86 bl 8003c04 - - /*--------------- ETHERNET DMA registers default Configuration --------------*/ - dmaDefaultConf.DropTCPIPChecksumErrorFrame = ENABLE; - 8003ef8: 2301 movs r3, #1 - 8003efa: 753b strb r3, [r7, #20] - dmaDefaultConf.ReceiveStoreForward = ENABLE; - 8003efc: 2301 movs r3, #1 - 8003efe: 757b strb r3, [r7, #21] - dmaDefaultConf.FlushRxPacket = ENABLE; - 8003f00: 2301 movs r3, #1 - 8003f02: f887 3025 strb.w r3, [r7, #37] @ 0x25 - dmaDefaultConf.TransmitStoreForward = ENABLE; - 8003f06: 2301 movs r3, #1 - 8003f08: 75bb strb r3, [r7, #22] - dmaDefaultConf.TransmitThresholdControl = ETH_TRANSMITTHRESHOLDCONTROL_64BYTES; - 8003f0a: 2300 movs r3, #0 - 8003f0c: 61fb str r3, [r7, #28] - dmaDefaultConf.ForwardErrorFrames = DISABLE; - 8003f0e: 2300 movs r3, #0 - 8003f10: f887 3024 strb.w r3, [r7, #36] @ 0x24 - dmaDefaultConf.ForwardUndersizedGoodFrames = DISABLE; - 8003f14: 2300 movs r3, #0 - 8003f16: f887 3026 strb.w r3, [r7, #38] @ 0x26 - dmaDefaultConf.ReceiveThresholdControl = ETH_RECEIVEDTHRESHOLDCONTROL_64BYTES; - 8003f1a: 2300 movs r3, #0 - 8003f1c: 62bb str r3, [r7, #40] @ 0x28 - dmaDefaultConf.SecondFrameOperate = ENABLE; - 8003f1e: 2301 movs r3, #1 - 8003f20: f887 302c strb.w r3, [r7, #44] @ 0x2c - dmaDefaultConf.AddressAlignedBeats = ENABLE; - 8003f24: 2301 movs r3, #1 - 8003f26: 733b strb r3, [r7, #12] - dmaDefaultConf.BurstMode = ETH_BURSTLENGTH_FIXED; - 8003f28: f44f 3380 mov.w r3, #65536 @ 0x10000 - 8003f2c: 613b str r3, [r7, #16] - dmaDefaultConf.RxDMABurstLength = ETH_RXDMABURSTLENGTH_32BEAT; - 8003f2e: f44f 0380 mov.w r3, #4194304 @ 0x400000 - 8003f32: 623b str r3, [r7, #32] - dmaDefaultConf.TxDMABurstLength = ETH_TXDMABURSTLENGTH_32BEAT; - 8003f34: f44f 5300 mov.w r3, #8192 @ 0x2000 - 8003f38: 61bb str r3, [r7, #24] - dmaDefaultConf.EnhancedDescriptorFormat = ENABLE; - 8003f3a: 2301 movs r3, #1 - 8003f3c: f887 302d strb.w r3, [r7, #45] @ 0x2d - dmaDefaultConf.DescriptorSkipLength = 0x0U; - 8003f40: 2300 movs r3, #0 - 8003f42: 633b str r3, [r7, #48] @ 0x30 - dmaDefaultConf.DMAArbitration = ETH_DMAARBITRATION_ROUNDROBIN_RXTX_1_1; - 8003f44: 2300 movs r3, #0 - 8003f46: 60bb str r3, [r7, #8] - - /* DMA default configuration */ - ETH_SetDMAConfig(heth, &dmaDefaultConf); - 8003f48: f107 0308 add.w r3, r7, #8 - 8003f4c: 4619 mov r1, r3 - 8003f4e: 6878 ldr r0, [r7, #4] - 8003f50: f7ff ff08 bl 8003d64 -} - 8003f54: bf00 nop - 8003f56: 3798 adds r7, #152 @ 0x98 - 8003f58: 46bd mov sp, r7 - 8003f5a: bd80 pop {r7, pc} - -08003f5c : - * @arg ETH_MAC_Address3: MAC Address3 - * @param Addr Pointer to MAC address buffer data (6 bytes) - * @retval HAL status - */ -static void ETH_MACAddressConfig(ETH_HandleTypeDef *heth, uint32_t MacAddr, uint8_t *Addr) -{ - 8003f5c: b480 push {r7} - 8003f5e: b087 sub sp, #28 - 8003f60: af00 add r7, sp, #0 - 8003f62: 60f8 str r0, [r7, #12] - 8003f64: 60b9 str r1, [r7, #8] - 8003f66: 607a str r2, [r7, #4] - - /* Prevent unused argument(s) compilation warning */ - UNUSED(heth); - - /* Calculate the selected MAC address high register */ - tmpreg1 = ((uint32_t)Addr[5U] << 8U) | (uint32_t)Addr[4U]; - 8003f68: 687b ldr r3, [r7, #4] - 8003f6a: 3305 adds r3, #5 - 8003f6c: 781b ldrb r3, [r3, #0] - 8003f6e: 021b lsls r3, r3, #8 - 8003f70: 687a ldr r2, [r7, #4] - 8003f72: 3204 adds r2, #4 - 8003f74: 7812 ldrb r2, [r2, #0] - 8003f76: 4313 orrs r3, r2 - 8003f78: 617b str r3, [r7, #20] - /* Load the selected MAC address high register */ - (*(__IO uint32_t *)((uint32_t)(ETH_MAC_ADDR_HBASE + MacAddr))) = tmpreg1; - 8003f7a: 68ba ldr r2, [r7, #8] - 8003f7c: 4b11 ldr r3, [pc, #68] @ (8003fc4 ) - 8003f7e: 4413 add r3, r2 - 8003f80: 461a mov r2, r3 - 8003f82: 697b ldr r3, [r7, #20] - 8003f84: 6013 str r3, [r2, #0] - /* Calculate the selected MAC address low register */ - tmpreg1 = ((uint32_t)Addr[3U] << 24U) | ((uint32_t)Addr[2U] << 16U) | ((uint32_t)Addr[1U] << 8U) | Addr[0U]; - 8003f86: 687b ldr r3, [r7, #4] - 8003f88: 3303 adds r3, #3 - 8003f8a: 781b ldrb r3, [r3, #0] - 8003f8c: 061a lsls r2, r3, #24 - 8003f8e: 687b ldr r3, [r7, #4] - 8003f90: 3302 adds r3, #2 - 8003f92: 781b ldrb r3, [r3, #0] - 8003f94: 041b lsls r3, r3, #16 - 8003f96: 431a orrs r2, r3 - 8003f98: 687b ldr r3, [r7, #4] - 8003f9a: 3301 adds r3, #1 - 8003f9c: 781b ldrb r3, [r3, #0] - 8003f9e: 021b lsls r3, r3, #8 - 8003fa0: 4313 orrs r3, r2 - 8003fa2: 687a ldr r2, [r7, #4] - 8003fa4: 7812 ldrb r2, [r2, #0] - 8003fa6: 4313 orrs r3, r2 - 8003fa8: 617b str r3, [r7, #20] - - /* Load the selected MAC address low register */ - (*(__IO uint32_t *)((uint32_t)(ETH_MAC_ADDR_LBASE + MacAddr))) = tmpreg1; - 8003faa: 68ba ldr r2, [r7, #8] - 8003fac: 4b06 ldr r3, [pc, #24] @ (8003fc8 ) - 8003fae: 4413 add r3, r2 - 8003fb0: 461a mov r2, r3 - 8003fb2: 697b ldr r3, [r7, #20] - 8003fb4: 6013 str r3, [r2, #0] -} - 8003fb6: bf00 nop - 8003fb8: 371c adds r7, #28 - 8003fba: 46bd mov sp, r7 - 8003fbc: f85d 7b04 ldr.w r7, [sp], #4 - 8003fc0: 4770 bx lr - 8003fc2: bf00 nop - 8003fc4: 40028040 .word 0x40028040 - 8003fc8: 40028044 .word 0x40028044 - -08003fcc : - * @param heth: pointer to a ETH_HandleTypeDef structure that contains - * the configuration information for ETHERNET module - * @retval None - */ -static void ETH_DMATxDescListInit(ETH_HandleTypeDef *heth) -{ - 8003fcc: b480 push {r7} - 8003fce: b085 sub sp, #20 - 8003fd0: af00 add r7, sp, #0 - 8003fd2: 6078 str r0, [r7, #4] - ETH_DMADescTypeDef *dmatxdesc; - uint32_t i; - - /* Fill each DMATxDesc descriptor with the right values */ - for (i = 0; i < (uint32_t)ETH_TX_DESC_CNT; i++) - 8003fd4: 2300 movs r3, #0 - 8003fd6: 60fb str r3, [r7, #12] - 8003fd8: e03e b.n 8004058 - { - dmatxdesc = heth->Init.TxDesc + i; - 8003fda: 687b ldr r3, [r7, #4] - 8003fdc: 68d9 ldr r1, [r3, #12] - 8003fde: 68fa ldr r2, [r7, #12] - 8003fe0: 4613 mov r3, r2 - 8003fe2: 009b lsls r3, r3, #2 - 8003fe4: 4413 add r3, r2 - 8003fe6: 00db lsls r3, r3, #3 - 8003fe8: 440b add r3, r1 - 8003fea: 60bb str r3, [r7, #8] - - WRITE_REG(dmatxdesc->DESC0, 0x0); - 8003fec: 68bb ldr r3, [r7, #8] - 8003fee: 2200 movs r2, #0 - 8003ff0: 601a str r2, [r3, #0] - WRITE_REG(dmatxdesc->DESC1, 0x0); - 8003ff2: 68bb ldr r3, [r7, #8] - 8003ff4: 2200 movs r2, #0 - 8003ff6: 605a str r2, [r3, #4] - WRITE_REG(dmatxdesc->DESC2, 0x0); - 8003ff8: 68bb ldr r3, [r7, #8] - 8003ffa: 2200 movs r2, #0 - 8003ffc: 609a str r2, [r3, #8] - WRITE_REG(dmatxdesc->DESC3, 0x0); - 8003ffe: 68bb ldr r3, [r7, #8] - 8004000: 2200 movs r2, #0 - 8004002: 60da str r2, [r3, #12] - - WRITE_REG(heth->TxDescList.TxDesc[i], (uint32_t)dmatxdesc); - 8004004: 68b9 ldr r1, [r7, #8] - 8004006: 687b ldr r3, [r7, #4] - 8004008: 68fa ldr r2, [r7, #12] - 800400a: 3206 adds r2, #6 - 800400c: f843 1022 str.w r1, [r3, r2, lsl #2] - - /* Set Second Address Chained bit */ - SET_BIT(dmatxdesc->DESC0, ETH_DMATXDESC_TCH); - 8004010: 68bb ldr r3, [r7, #8] - 8004012: 681b ldr r3, [r3, #0] - 8004014: f443 1280 orr.w r2, r3, #1048576 @ 0x100000 - 8004018: 68bb ldr r3, [r7, #8] - 800401a: 601a str r2, [r3, #0] - - if (i < ((uint32_t)ETH_TX_DESC_CNT - 1U)) - 800401c: 68fb ldr r3, [r7, #12] - 800401e: 2b02 cmp r3, #2 - 8004020: d80c bhi.n 800403c - { - WRITE_REG(dmatxdesc->DESC3, (uint32_t)(heth->Init.TxDesc + i + 1U)); - 8004022: 687b ldr r3, [r7, #4] - 8004024: 68d9 ldr r1, [r3, #12] - 8004026: 68fb ldr r3, [r7, #12] - 8004028: 1c5a adds r2, r3, #1 - 800402a: 4613 mov r3, r2 - 800402c: 009b lsls r3, r3, #2 - 800402e: 4413 add r3, r2 - 8004030: 00db lsls r3, r3, #3 - 8004032: 440b add r3, r1 - 8004034: 461a mov r2, r3 - 8004036: 68bb ldr r3, [r7, #8] - 8004038: 60da str r2, [r3, #12] - 800403a: e004 b.n 8004046 - } - else - { - WRITE_REG(dmatxdesc->DESC3, (uint32_t)(heth->Init.TxDesc)); - 800403c: 687b ldr r3, [r7, #4] - 800403e: 68db ldr r3, [r3, #12] - 8004040: 461a mov r2, r3 - 8004042: 68bb ldr r3, [r7, #8] - 8004044: 60da str r2, [r3, #12] - } - - /* Set the DMA Tx descriptors checksum insertion */ - SET_BIT(dmatxdesc->DESC0, ETH_DMATXDESC_CHECKSUMTCPUDPICMPFULL); - 8004046: 68bb ldr r3, [r7, #8] - 8004048: 681b ldr r3, [r3, #0] - 800404a: f443 0240 orr.w r2, r3, #12582912 @ 0xc00000 - 800404e: 68bb ldr r3, [r7, #8] - 8004050: 601a str r2, [r3, #0] - for (i = 0; i < (uint32_t)ETH_TX_DESC_CNT; i++) - 8004052: 68fb ldr r3, [r7, #12] - 8004054: 3301 adds r3, #1 - 8004056: 60fb str r3, [r7, #12] - 8004058: 68fb ldr r3, [r7, #12] - 800405a: 2b03 cmp r3, #3 - 800405c: d9bd bls.n 8003fda - } - - heth->TxDescList.CurTxDesc = 0; - 800405e: 687b ldr r3, [r7, #4] - 8004060: 2200 movs r2, #0 - 8004062: 629a str r2, [r3, #40] @ 0x28 - - /* Set Transmit Descriptor List Address */ - WRITE_REG(heth->Instance->DMATDLAR, (uint32_t) heth->Init.TxDesc); - 8004064: 687b ldr r3, [r7, #4] - 8004066: 68da ldr r2, [r3, #12] - 8004068: 687b ldr r3, [r7, #4] - 800406a: 681b ldr r3, [r3, #0] - 800406c: f503 5380 add.w r3, r3, #4096 @ 0x1000 - 8004070: 611a str r2, [r3, #16] -} - 8004072: bf00 nop - 8004074: 3714 adds r7, #20 - 8004076: 46bd mov sp, r7 - 8004078: f85d 7b04 ldr.w r7, [sp], #4 - 800407c: 4770 bx lr - -0800407e : - * @param heth: pointer to a ETH_HandleTypeDef structure that contains - * the configuration information for ETHERNET module - * @retval None - */ -static void ETH_DMARxDescListInit(ETH_HandleTypeDef *heth) -{ - 800407e: b480 push {r7} - 8004080: b085 sub sp, #20 - 8004082: af00 add r7, sp, #0 - 8004084: 6078 str r0, [r7, #4] - ETH_DMADescTypeDef *dmarxdesc; - uint32_t i; - - for (i = 0; i < (uint32_t)ETH_RX_DESC_CNT; i++) - 8004086: 2300 movs r3, #0 - 8004088: 60fb str r3, [r7, #12] - 800408a: e046 b.n 800411a - { - dmarxdesc = heth->Init.RxDesc + i; - 800408c: 687b ldr r3, [r7, #4] - 800408e: 6919 ldr r1, [r3, #16] - 8004090: 68fa ldr r2, [r7, #12] - 8004092: 4613 mov r3, r2 - 8004094: 009b lsls r3, r3, #2 - 8004096: 4413 add r3, r2 - 8004098: 00db lsls r3, r3, #3 - 800409a: 440b add r3, r1 - 800409c: 60bb str r3, [r7, #8] - - WRITE_REG(dmarxdesc->DESC0, 0x0); - 800409e: 68bb ldr r3, [r7, #8] - 80040a0: 2200 movs r2, #0 - 80040a2: 601a str r2, [r3, #0] - WRITE_REG(dmarxdesc->DESC1, 0x0); - 80040a4: 68bb ldr r3, [r7, #8] - 80040a6: 2200 movs r2, #0 - 80040a8: 605a str r2, [r3, #4] - WRITE_REG(dmarxdesc->DESC2, 0x0); - 80040aa: 68bb ldr r3, [r7, #8] - 80040ac: 2200 movs r2, #0 - 80040ae: 609a str r2, [r3, #8] - WRITE_REG(dmarxdesc->DESC3, 0x0); - 80040b0: 68bb ldr r3, [r7, #8] - 80040b2: 2200 movs r2, #0 - 80040b4: 60da str r2, [r3, #12] - WRITE_REG(dmarxdesc->BackupAddr0, 0x0); - 80040b6: 68bb ldr r3, [r7, #8] - 80040b8: 2200 movs r2, #0 - 80040ba: 621a str r2, [r3, #32] - WRITE_REG(dmarxdesc->BackupAddr1, 0x0); - 80040bc: 68bb ldr r3, [r7, #8] - 80040be: 2200 movs r2, #0 - 80040c0: 625a str r2, [r3, #36] @ 0x24 - - /* Set Own bit of the Rx descriptor Status */ - dmarxdesc->DESC0 = ETH_DMARXDESC_OWN; - 80040c2: 68bb ldr r3, [r7, #8] - 80040c4: f04f 4200 mov.w r2, #2147483648 @ 0x80000000 - 80040c8: 601a str r2, [r3, #0] - - /* Set Buffer1 size and Second Address Chained bit */ - dmarxdesc->DESC1 = ETH_DMARXDESC_RCH | ETH_RX_BUF_SIZE; - 80040ca: 68bb ldr r3, [r7, #8] - 80040cc: f244 52f8 movw r2, #17912 @ 0x45f8 - 80040d0: 605a str r2, [r3, #4] - - /* Enable Ethernet DMA Rx Descriptor interrupt */ - dmarxdesc->DESC1 &= ~ETH_DMARXDESC_DIC; - 80040d2: 68bb ldr r3, [r7, #8] - 80040d4: 685b ldr r3, [r3, #4] - 80040d6: f023 4200 bic.w r2, r3, #2147483648 @ 0x80000000 - 80040da: 68bb ldr r3, [r7, #8] - 80040dc: 605a str r2, [r3, #4] - - /* Set Rx descritors addresses */ - WRITE_REG(heth->RxDescList.RxDesc[i], (uint32_t)dmarxdesc); - 80040de: 68b9 ldr r1, [r7, #8] - 80040e0: 687b ldr r3, [r7, #4] - 80040e2: 68fa ldr r2, [r7, #12] - 80040e4: 3212 adds r2, #18 - 80040e6: f843 1022 str.w r1, [r3, r2, lsl #2] - - if (i < ((uint32_t)ETH_RX_DESC_CNT - 1U)) - 80040ea: 68fb ldr r3, [r7, #12] - 80040ec: 2b02 cmp r3, #2 - 80040ee: d80c bhi.n 800410a - { - WRITE_REG(dmarxdesc->DESC3, (uint32_t)(heth->Init.RxDesc + i + 1U)); - 80040f0: 687b ldr r3, [r7, #4] - 80040f2: 6919 ldr r1, [r3, #16] - 80040f4: 68fb ldr r3, [r7, #12] - 80040f6: 1c5a adds r2, r3, #1 - 80040f8: 4613 mov r3, r2 - 80040fa: 009b lsls r3, r3, #2 - 80040fc: 4413 add r3, r2 - 80040fe: 00db lsls r3, r3, #3 - 8004100: 440b add r3, r1 - 8004102: 461a mov r2, r3 - 8004104: 68bb ldr r3, [r7, #8] - 8004106: 60da str r2, [r3, #12] - 8004108: e004 b.n 8004114 - } - else - { - WRITE_REG(dmarxdesc->DESC3, (uint32_t)(heth->Init.RxDesc)); - 800410a: 687b ldr r3, [r7, #4] - 800410c: 691b ldr r3, [r3, #16] - 800410e: 461a mov r2, r3 - 8004110: 68bb ldr r3, [r7, #8] - 8004112: 60da str r2, [r3, #12] - for (i = 0; i < (uint32_t)ETH_RX_DESC_CNT; i++) - 8004114: 68fb ldr r3, [r7, #12] - 8004116: 3301 adds r3, #1 - 8004118: 60fb str r3, [r7, #12] - 800411a: 68fb ldr r3, [r7, #12] - 800411c: 2b03 cmp r3, #3 - 800411e: d9b5 bls.n 800408c - } - } - - WRITE_REG(heth->RxDescList.RxDescIdx, 0); - 8004120: 687b ldr r3, [r7, #4] - 8004122: 2200 movs r2, #0 - 8004124: 65da str r2, [r3, #92] @ 0x5c - WRITE_REG(heth->RxDescList.RxDescCnt, 0); - 8004126: 687b ldr r3, [r7, #4] - 8004128: 2200 movs r2, #0 - 800412a: 661a str r2, [r3, #96] @ 0x60 - WRITE_REG(heth->RxDescList.RxBuildDescIdx, 0); - 800412c: 687b ldr r3, [r7, #4] - 800412e: 2200 movs r2, #0 - 8004130: 669a str r2, [r3, #104] @ 0x68 - WRITE_REG(heth->RxDescList.RxBuildDescCnt, 0); - 8004132: 687b ldr r3, [r7, #4] - 8004134: 2200 movs r2, #0 - 8004136: 66da str r2, [r3, #108] @ 0x6c - WRITE_REG(heth->RxDescList.ItMode, 0); - 8004138: 687b ldr r3, [r7, #4] - 800413a: 2200 movs r2, #0 - 800413c: 659a str r2, [r3, #88] @ 0x58 - - /* Set Receive Descriptor List Address */ - WRITE_REG(heth->Instance->DMARDLAR, (uint32_t) heth->Init.RxDesc); - 800413e: 687b ldr r3, [r7, #4] - 8004140: 691a ldr r2, [r3, #16] - 8004142: 687b ldr r3, [r7, #4] - 8004144: 681b ldr r3, [r3, #0] - 8004146: f503 5380 add.w r3, r3, #4096 @ 0x1000 - 800414a: 60da str r2, [r3, #12] -} - 800414c: bf00 nop - 800414e: 3714 adds r7, #20 - 8004150: 46bd mov sp, r7 - 8004152: f85d 7b04 ldr.w r7, [sp], #4 - 8004156: 4770 bx lr - -08004158 : - * @param pTxConfig: Tx packet configuration - * @param ItMode: Enable or disable Tx EOT interrept - * @retval Status - */ -static uint32_t ETH_Prepare_Tx_Descriptors(ETH_HandleTypeDef *heth, ETH_TxPacketConfig *pTxConfig, uint32_t ItMode) -{ - 8004158: b480 push {r7} - 800415a: b08d sub sp, #52 @ 0x34 - 800415c: af00 add r7, sp, #0 - 800415e: 60f8 str r0, [r7, #12] - 8004160: 60b9 str r1, [r7, #8] - 8004162: 607a str r2, [r7, #4] - ETH_TxDescListTypeDef *dmatxdesclist = &heth->TxDescList; - 8004164: 68fb ldr r3, [r7, #12] - 8004166: 3318 adds r3, #24 - 8004168: 617b str r3, [r7, #20] - uint32_t descidx = dmatxdesclist->CurTxDesc; - 800416a: 697b ldr r3, [r7, #20] - 800416c: 691b ldr r3, [r3, #16] - 800416e: 62fb str r3, [r7, #44] @ 0x2c - uint32_t firstdescidx = dmatxdesclist->CurTxDesc; - 8004170: 697b ldr r3, [r7, #20] - 8004172: 691b ldr r3, [r3, #16] - 8004174: 613b str r3, [r7, #16] - uint32_t idx; - uint32_t descnbr = 0; - 8004176: 2300 movs r3, #0 - 8004178: 627b str r3, [r7, #36] @ 0x24 - ETH_DMADescTypeDef *dmatxdesc = (ETH_DMADescTypeDef *)dmatxdesclist->TxDesc[descidx]; - 800417a: 697b ldr r3, [r7, #20] - 800417c: 6afa ldr r2, [r7, #44] @ 0x2c - 800417e: f853 3022 ldr.w r3, [r3, r2, lsl #2] - 8004182: 623b str r3, [r7, #32] - - ETH_BufferTypeDef *txbuffer = pTxConfig->TxBuffer; - 8004184: 68bb ldr r3, [r7, #8] - 8004186: 689b ldr r3, [r3, #8] - 8004188: 61fb str r3, [r7, #28] - uint32_t bd_count = 0; - 800418a: 2300 movs r3, #0 - 800418c: 61bb str r3, [r7, #24] - - /* Current Tx Descriptor Owned by DMA: cannot be used by the application */ - if ((READ_BIT(dmatxdesc->DESC0, ETH_DMATXDESC_OWN) == ETH_DMATXDESC_OWN) - 800418e: 6a3b ldr r3, [r7, #32] - 8004190: 681b ldr r3, [r3, #0] - 8004192: f003 4300 and.w r3, r3, #2147483648 @ 0x80000000 - 8004196: f1b3 4f00 cmp.w r3, #2147483648 @ 0x80000000 - 800419a: d007 beq.n 80041ac - || (dmatxdesclist->PacketAddress[descidx] != NULL)) - 800419c: 697a ldr r2, [r7, #20] - 800419e: 6afb ldr r3, [r7, #44] @ 0x2c - 80041a0: 3304 adds r3, #4 - 80041a2: 009b lsls r3, r3, #2 - 80041a4: 4413 add r3, r2 - 80041a6: 685b ldr r3, [r3, #4] - 80041a8: 2b00 cmp r3, #0 - 80041aa: d001 beq.n 80041b0 - { - return HAL_ETH_ERROR_BUSY; - 80041ac: 2302 movs r3, #2 - 80041ae: e103 b.n 80043b8 - } - - - descnbr += 1U; - 80041b0: 6a7b ldr r3, [r7, #36] @ 0x24 - 80041b2: 3301 adds r3, #1 - 80041b4: 627b str r3, [r7, #36] @ 0x24 - - /* Set header or buffer 1 address */ - WRITE_REG(dmatxdesc->DESC2, (uint32_t)txbuffer->buffer); - 80041b6: 69fb ldr r3, [r7, #28] - 80041b8: 681b ldr r3, [r3, #0] - 80041ba: 461a mov r2, r3 - 80041bc: 6a3b ldr r3, [r7, #32] - 80041be: 609a str r2, [r3, #8] - - /* Set header or buffer 1 Length */ - MODIFY_REG(dmatxdesc->DESC1, ETH_DMATXDESC_TBS1, txbuffer->len); - 80041c0: 6a3b ldr r3, [r7, #32] - 80041c2: 685b ldr r3, [r3, #4] - 80041c4: f423 53ff bic.w r3, r3, #8160 @ 0x1fe0 - 80041c8: f023 031f bic.w r3, r3, #31 - 80041cc: 69fa ldr r2, [r7, #28] - 80041ce: 6852 ldr r2, [r2, #4] - 80041d0: 431a orrs r2, r3 - 80041d2: 6a3b ldr r3, [r7, #32] - 80041d4: 605a str r2, [r3, #4] - - if (READ_BIT(pTxConfig->Attributes, ETH_TX_PACKETS_FEATURES_CSUM) != 0U) - 80041d6: 68bb ldr r3, [r7, #8] - 80041d8: 681b ldr r3, [r3, #0] - 80041da: f003 0301 and.w r3, r3, #1 - 80041de: 2b00 cmp r3, #0 - 80041e0: d008 beq.n 80041f4 - { - MODIFY_REG(dmatxdesc->DESC0, ETH_DMATXDESC_CIC, pTxConfig->ChecksumCtrl); - 80041e2: 6a3b ldr r3, [r7, #32] - 80041e4: 681b ldr r3, [r3, #0] - 80041e6: f423 0240 bic.w r2, r3, #12582912 @ 0xc00000 - 80041ea: 68bb ldr r3, [r7, #8] - 80041ec: 695b ldr r3, [r3, #20] - 80041ee: 431a orrs r2, r3 - 80041f0: 6a3b ldr r3, [r7, #32] - 80041f2: 601a str r2, [r3, #0] - } - - if (READ_BIT(pTxConfig->Attributes, ETH_TX_PACKETS_FEATURES_CRCPAD) != 0U) - 80041f4: 68bb ldr r3, [r7, #8] - 80041f6: 681b ldr r3, [r3, #0] - 80041f8: f003 0320 and.w r3, r3, #32 - 80041fc: 2b00 cmp r3, #0 - 80041fe: d008 beq.n 8004212 - { - MODIFY_REG(dmatxdesc->DESC0, ETH_CRC_PAD_DISABLE, pTxConfig->CRCPadCtrl); - 8004200: 6a3b ldr r3, [r7, #32] - 8004202: 681b ldr r3, [r3, #0] - 8004204: f023 6240 bic.w r2, r3, #201326592 @ 0xc000000 - 8004208: 68bb ldr r3, [r7, #8] - 800420a: 691b ldr r3, [r3, #16] - 800420c: 431a orrs r2, r3 - 800420e: 6a3b ldr r3, [r7, #32] - 8004210: 601a str r2, [r3, #0] - } - - - if (READ_BIT(pTxConfig->Attributes, ETH_TX_PACKETS_FEATURES_VLANTAG) != 0U) - 8004212: 68bb ldr r3, [r7, #8] - 8004214: 681b ldr r3, [r3, #0] - 8004216: f003 0304 and.w r3, r3, #4 - 800421a: 2b00 cmp r3, #0 - 800421c: d005 beq.n 800422a - { - /* Set Vlan Type */ - SET_BIT(dmatxdesc->DESC0, ETH_DMATXDESC_VF); - 800421e: 6a3b ldr r3, [r7, #32] - 8004220: 681b ldr r3, [r3, #0] - 8004222: f043 0280 orr.w r2, r3, #128 @ 0x80 - 8004226: 6a3b ldr r3, [r7, #32] - 8004228: 601a str r2, [r3, #0] - } - - /* Mark it as First Descriptor */ - SET_BIT(dmatxdesc->DESC0, ETH_DMATXDESC_FS); - 800422a: 6a3b ldr r3, [r7, #32] - 800422c: 681b ldr r3, [r3, #0] - 800422e: f043 5280 orr.w r2, r3, #268435456 @ 0x10000000 - 8004232: 6a3b ldr r3, [r7, #32] - 8004234: 601a str r2, [r3, #0] - __ASM volatile ("dmb 0xF":::"memory"); - 8004236: f3bf 8f5f dmb sy -} - 800423a: bf00 nop - - /* Ensure rest of descriptor is written to RAM before the OWN bit */ - __DMB(); - /* set OWN bit of FIRST descriptor */ - SET_BIT(dmatxdesc->DESC0, ETH_DMATXDESC_OWN); - 800423c: 6a3b ldr r3, [r7, #32] - 800423e: 681b ldr r3, [r3, #0] - 8004240: f043 4200 orr.w r2, r3, #2147483648 @ 0x80000000 - 8004244: 6a3b ldr r3, [r7, #32] - 8004246: 601a str r2, [r3, #0] - - /* only if the packet is split into more than one descriptors > 1 */ - while (txbuffer->next != NULL) - 8004248: e084 b.n 8004354 - { - /* Clear the LD bit of previous descriptor */ - CLEAR_BIT(dmatxdesc->DESC0, ETH_DMATXDESC_LS); - 800424a: 6a3b ldr r3, [r7, #32] - 800424c: 681b ldr r3, [r3, #0] - 800424e: f023 5200 bic.w r2, r3, #536870912 @ 0x20000000 - 8004252: 6a3b ldr r3, [r7, #32] - 8004254: 601a str r2, [r3, #0] - if (ItMode != ((uint32_t)RESET)) - 8004256: 687b ldr r3, [r7, #4] - 8004258: 2b00 cmp r3, #0 - 800425a: d006 beq.n 800426a - { - /* Set Interrupt on completion bit */ - SET_BIT(dmatxdesc->DESC0, ETH_DMATXDESC_IC); - 800425c: 6a3b ldr r3, [r7, #32] - 800425e: 681b ldr r3, [r3, #0] - 8004260: f043 4280 orr.w r2, r3, #1073741824 @ 0x40000000 - 8004264: 6a3b ldr r3, [r7, #32] - 8004266: 601a str r2, [r3, #0] - 8004268: e005 b.n 8004276 - } - else - { - /* Clear Interrupt on completion bit */ - CLEAR_BIT(dmatxdesc->DESC0, ETH_DMATXDESC_IC); - 800426a: 6a3b ldr r3, [r7, #32] - 800426c: 681b ldr r3, [r3, #0] - 800426e: f023 4280 bic.w r2, r3, #1073741824 @ 0x40000000 - 8004272: 6a3b ldr r3, [r7, #32] - 8004274: 601a str r2, [r3, #0] - } - /* Increment current tx descriptor index */ - INCR_TX_DESC_INDEX(descidx, 1U); - 8004276: 6afb ldr r3, [r7, #44] @ 0x2c - 8004278: 3301 adds r3, #1 - 800427a: 62fb str r3, [r7, #44] @ 0x2c - 800427c: 6afb ldr r3, [r7, #44] @ 0x2c - 800427e: 2b03 cmp r3, #3 - 8004280: d902 bls.n 8004288 - 8004282: 6afb ldr r3, [r7, #44] @ 0x2c - 8004284: 3b04 subs r3, #4 - 8004286: 62fb str r3, [r7, #44] @ 0x2c - /* Get current descriptor address */ - dmatxdesc = (ETH_DMADescTypeDef *)dmatxdesclist->TxDesc[descidx]; - 8004288: 697b ldr r3, [r7, #20] - 800428a: 6afa ldr r2, [r7, #44] @ 0x2c - 800428c: f853 3022 ldr.w r3, [r3, r2, lsl #2] - 8004290: 623b str r3, [r7, #32] - - /* Clear the FD bit of new Descriptor */ - CLEAR_BIT(dmatxdesc->DESC0, ETH_DMATXDESC_FS); - 8004292: 6a3b ldr r3, [r7, #32] - 8004294: 681b ldr r3, [r3, #0] - 8004296: f023 5280 bic.w r2, r3, #268435456 @ 0x10000000 - 800429a: 6a3b ldr r3, [r7, #32] - 800429c: 601a str r2, [r3, #0] - - /* Current Tx Descriptor Owned by DMA: cannot be used by the application */ - if ((READ_BIT(dmatxdesc->DESC0, ETH_DMATXDESC_OWN) == ETH_DMATXDESC_OWN) - 800429e: 6a3b ldr r3, [r7, #32] - 80042a0: 681b ldr r3, [r3, #0] - 80042a2: f003 4300 and.w r3, r3, #2147483648 @ 0x80000000 - 80042a6: f1b3 4f00 cmp.w r3, #2147483648 @ 0x80000000 - 80042aa: d007 beq.n 80042bc - || (dmatxdesclist->PacketAddress[descidx] != NULL)) - 80042ac: 697a ldr r2, [r7, #20] - 80042ae: 6afb ldr r3, [r7, #44] @ 0x2c - 80042b0: 3304 adds r3, #4 - 80042b2: 009b lsls r3, r3, #2 - 80042b4: 4413 add r3, r2 - 80042b6: 685b ldr r3, [r3, #4] - 80042b8: 2b00 cmp r3, #0 - 80042ba: d029 beq.n 8004310 - { - descidx = firstdescidx; - 80042bc: 693b ldr r3, [r7, #16] - 80042be: 62fb str r3, [r7, #44] @ 0x2c - dmatxdesc = (ETH_DMADescTypeDef *)dmatxdesclist->TxDesc[descidx]; - 80042c0: 697b ldr r3, [r7, #20] - 80042c2: 6afa ldr r2, [r7, #44] @ 0x2c - 80042c4: f853 3022 ldr.w r3, [r3, r2, lsl #2] - 80042c8: 623b str r3, [r7, #32] - - /* clear previous desc own bit */ - for (idx = 0; idx < descnbr; idx ++) - 80042ca: 2300 movs r3, #0 - 80042cc: 62bb str r3, [r7, #40] @ 0x28 - 80042ce: e019 b.n 8004304 - __ASM volatile ("dmb 0xF":::"memory"); - 80042d0: f3bf 8f5f dmb sy -} - 80042d4: bf00 nop - { - /* Ensure rest of descriptor is written to RAM before the OWN bit */ - __DMB(); - - CLEAR_BIT(dmatxdesc->DESC0, ETH_DMATXDESC_OWN); - 80042d6: 6a3b ldr r3, [r7, #32] - 80042d8: 681b ldr r3, [r3, #0] - 80042da: f023 4200 bic.w r2, r3, #2147483648 @ 0x80000000 - 80042de: 6a3b ldr r3, [r7, #32] - 80042e0: 601a str r2, [r3, #0] - - /* Increment current tx descriptor index */ - INCR_TX_DESC_INDEX(descidx, 1U); - 80042e2: 6afb ldr r3, [r7, #44] @ 0x2c - 80042e4: 3301 adds r3, #1 - 80042e6: 62fb str r3, [r7, #44] @ 0x2c - 80042e8: 6afb ldr r3, [r7, #44] @ 0x2c - 80042ea: 2b03 cmp r3, #3 - 80042ec: d902 bls.n 80042f4 - 80042ee: 6afb ldr r3, [r7, #44] @ 0x2c - 80042f0: 3b04 subs r3, #4 - 80042f2: 62fb str r3, [r7, #44] @ 0x2c - /* Get current descriptor address */ - dmatxdesc = (ETH_DMADescTypeDef *)dmatxdesclist->TxDesc[descidx]; - 80042f4: 697b ldr r3, [r7, #20] - 80042f6: 6afa ldr r2, [r7, #44] @ 0x2c - 80042f8: f853 3022 ldr.w r3, [r3, r2, lsl #2] - 80042fc: 623b str r3, [r7, #32] - for (idx = 0; idx < descnbr; idx ++) - 80042fe: 6abb ldr r3, [r7, #40] @ 0x28 - 8004300: 3301 adds r3, #1 - 8004302: 62bb str r3, [r7, #40] @ 0x28 - 8004304: 6aba ldr r2, [r7, #40] @ 0x28 - 8004306: 6a7b ldr r3, [r7, #36] @ 0x24 - 8004308: 429a cmp r2, r3 - 800430a: d3e1 bcc.n 80042d0 - } - - return HAL_ETH_ERROR_BUSY; - 800430c: 2302 movs r3, #2 - 800430e: e053 b.n 80043b8 - } - - descnbr += 1U; - 8004310: 6a7b ldr r3, [r7, #36] @ 0x24 - 8004312: 3301 adds r3, #1 - 8004314: 627b str r3, [r7, #36] @ 0x24 - - /* Get the next Tx buffer in the list */ - txbuffer = txbuffer->next; - 8004316: 69fb ldr r3, [r7, #28] - 8004318: 689b ldr r3, [r3, #8] - 800431a: 61fb str r3, [r7, #28] - - /* Set header or buffer 1 address */ - WRITE_REG(dmatxdesc->DESC2, (uint32_t)txbuffer->buffer); - 800431c: 69fb ldr r3, [r7, #28] - 800431e: 681b ldr r3, [r3, #0] - 8004320: 461a mov r2, r3 - 8004322: 6a3b ldr r3, [r7, #32] - 8004324: 609a str r2, [r3, #8] - - /* Set header or buffer 1 Length */ - MODIFY_REG(dmatxdesc->DESC1, ETH_DMATXDESC_TBS1, txbuffer->len); - 8004326: 6a3b ldr r3, [r7, #32] - 8004328: 685b ldr r3, [r3, #4] - 800432a: f423 53ff bic.w r3, r3, #8160 @ 0x1fe0 - 800432e: f023 031f bic.w r3, r3, #31 - 8004332: 69fa ldr r2, [r7, #28] - 8004334: 6852 ldr r2, [r2, #4] - 8004336: 431a orrs r2, r3 - 8004338: 6a3b ldr r3, [r7, #32] - 800433a: 605a str r2, [r3, #4] - - bd_count += 1U; - 800433c: 69bb ldr r3, [r7, #24] - 800433e: 3301 adds r3, #1 - 8004340: 61bb str r3, [r7, #24] - __ASM volatile ("dmb 0xF":::"memory"); - 8004342: f3bf 8f5f dmb sy -} - 8004346: bf00 nop - - /* Ensure rest of descriptor is written to RAM before the OWN bit */ - __DMB(); - /* Set Own bit */ - SET_BIT(dmatxdesc->DESC0, ETH_DMATXDESC_OWN); - 8004348: 6a3b ldr r3, [r7, #32] - 800434a: 681b ldr r3, [r3, #0] - 800434c: f043 4200 orr.w r2, r3, #2147483648 @ 0x80000000 - 8004350: 6a3b ldr r3, [r7, #32] - 8004352: 601a str r2, [r3, #0] - while (txbuffer->next != NULL) - 8004354: 69fb ldr r3, [r7, #28] - 8004356: 689b ldr r3, [r3, #8] - 8004358: 2b00 cmp r3, #0 - 800435a: f47f af76 bne.w 800424a - } - - if (ItMode != ((uint32_t)RESET)) - 800435e: 687b ldr r3, [r7, #4] - 8004360: 2b00 cmp r3, #0 - 8004362: d006 beq.n 8004372 - { - /* Set Interrupt on completion bit */ - SET_BIT(dmatxdesc->DESC0, ETH_DMATXDESC_IC); - 8004364: 6a3b ldr r3, [r7, #32] - 8004366: 681b ldr r3, [r3, #0] - 8004368: f043 4280 orr.w r2, r3, #1073741824 @ 0x40000000 - 800436c: 6a3b ldr r3, [r7, #32] - 800436e: 601a str r2, [r3, #0] - 8004370: e005 b.n 800437e - } - else - { - /* Clear Interrupt on completion bit */ - CLEAR_BIT(dmatxdesc->DESC0, ETH_DMATXDESC_IC); - 8004372: 6a3b ldr r3, [r7, #32] - 8004374: 681b ldr r3, [r3, #0] - 8004376: f023 4280 bic.w r2, r3, #1073741824 @ 0x40000000 - 800437a: 6a3b ldr r3, [r7, #32] - 800437c: 601a str r2, [r3, #0] - } - - /* Mark it as LAST descriptor */ - SET_BIT(dmatxdesc->DESC0, ETH_DMATXDESC_LS); - 800437e: 6a3b ldr r3, [r7, #32] - 8004380: 681b ldr r3, [r3, #0] - 8004382: f043 5200 orr.w r2, r3, #536870912 @ 0x20000000 - 8004386: 6a3b ldr r3, [r7, #32] - 8004388: 601a str r2, [r3, #0] - /* Save the current packet address to expose it to the application */ - dmatxdesclist->PacketAddress[descidx] = dmatxdesclist->CurrentPacketAddress; - 800438a: 697b ldr r3, [r7, #20] - 800438c: 6a5a ldr r2, [r3, #36] @ 0x24 - 800438e: 6979 ldr r1, [r7, #20] - 8004390: 6afb ldr r3, [r7, #44] @ 0x2c - 8004392: 3304 adds r3, #4 - 8004394: 009b lsls r3, r3, #2 - 8004396: 440b add r3, r1 - 8004398: 605a str r2, [r3, #4] - - dmatxdesclist->CurTxDesc = descidx; - 800439a: 697b ldr r3, [r7, #20] - 800439c: 6afa ldr r2, [r7, #44] @ 0x2c - 800439e: 611a str r2, [r3, #16] - __ASM volatile ("cpsid i" : : : "memory"); - 80043a0: b672 cpsid i -} - 80043a2: bf00 nop - - /* disable the interrupt */ - __disable_irq(); - - dmatxdesclist->BuffersInUse += bd_count + 1U; - 80043a4: 697b ldr r3, [r7, #20] - 80043a6: 6a9a ldr r2, [r3, #40] @ 0x28 - 80043a8: 69bb ldr r3, [r7, #24] - 80043aa: 4413 add r3, r2 - 80043ac: 1c5a adds r2, r3, #1 - 80043ae: 697b ldr r3, [r7, #20] - 80043b0: 629a str r2, [r3, #40] @ 0x28 - __ASM volatile ("cpsie i" : : : "memory"); - 80043b2: b662 cpsie i -} - 80043b4: bf00 nop - /* Enable interrupts back */ - __enable_irq(); - - - /* Return function status */ - return HAL_ETH_ERROR_NONE; - 80043b6: 2300 movs r3, #0 -} - 80043b8: 4618 mov r0, r3 - 80043ba: 3734 adds r7, #52 @ 0x34 - 80043bc: 46bd mov sp, r7 - 80043be: f85d 7b04 ldr.w r7, [sp], #4 - 80043c2: 4770 bx lr - -080043c4 : - * @param Data specifies the data to be programmed - * - * @retval HAL_StatusTypeDef HAL Status - */ -HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data) -{ - 80043c4: b580 push {r7, lr} - 80043c6: b086 sub sp, #24 - 80043c8: af00 add r7, sp, #0 - 80043ca: 60f8 str r0, [r7, #12] - 80043cc: 60b9 str r1, [r7, #8] - 80043ce: e9c7 2300 strd r2, r3, [r7] - HAL_StatusTypeDef status = HAL_ERROR; - 80043d2: 2301 movs r3, #1 - 80043d4: 75fb strb r3, [r7, #23] - - /* Process Locked */ - __HAL_LOCK(&pFlash); - 80043d6: 4b23 ldr r3, [pc, #140] @ (8004464 ) - 80043d8: 7e1b ldrb r3, [r3, #24] - 80043da: 2b01 cmp r3, #1 - 80043dc: d101 bne.n 80043e2 - 80043de: 2302 movs r3, #2 - 80043e0: e03b b.n 800445a - 80043e2: 4b20 ldr r3, [pc, #128] @ (8004464 ) - 80043e4: 2201 movs r2, #1 - 80043e6: 761a strb r2, [r3, #24] - - /* Check the parameters */ - assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram)); - - /* Wait for last operation to be completed */ - status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); - 80043e8: f24c 3050 movw r0, #50000 @ 0xc350 - 80043ec: f000 f87c bl 80044e8 - 80043f0: 4603 mov r3, r0 - 80043f2: 75fb strb r3, [r7, #23] - - if(status == HAL_OK) - 80043f4: 7dfb ldrb r3, [r7, #23] - 80043f6: 2b00 cmp r3, #0 - 80043f8: d12b bne.n 8004452 - { - if(TypeProgram == FLASH_TYPEPROGRAM_BYTE) - 80043fa: 68fb ldr r3, [r7, #12] - 80043fc: 2b00 cmp r3, #0 - 80043fe: d105 bne.n 800440c - { - /*Program byte (8-bit) at a specified address.*/ - FLASH_Program_Byte(Address, (uint8_t) Data); - 8004400: 783b ldrb r3, [r7, #0] - 8004402: 4619 mov r1, r3 - 8004404: 68b8 ldr r0, [r7, #8] - 8004406: f000 f927 bl 8004658 - 800440a: e016 b.n 800443a - } - else if(TypeProgram == FLASH_TYPEPROGRAM_HALFWORD) - 800440c: 68fb ldr r3, [r7, #12] - 800440e: 2b01 cmp r3, #1 - 8004410: d105 bne.n 800441e - { - /*Program halfword (16-bit) at a specified address.*/ - FLASH_Program_HalfWord(Address, (uint16_t) Data); - 8004412: 883b ldrh r3, [r7, #0] - 8004414: 4619 mov r1, r3 - 8004416: 68b8 ldr r0, [r7, #8] - 8004418: f000 f8fa bl 8004610 - 800441c: e00d b.n 800443a - } - else if(TypeProgram == FLASH_TYPEPROGRAM_WORD) - 800441e: 68fb ldr r3, [r7, #12] - 8004420: 2b02 cmp r3, #2 - 8004422: d105 bne.n 8004430 - { - /*Program word (32-bit) at a specified address.*/ - FLASH_Program_Word(Address, (uint32_t) Data); - 8004424: 683b ldr r3, [r7, #0] - 8004426: 4619 mov r1, r3 - 8004428: 68b8 ldr r0, [r7, #8] - 800442a: f000 f8cf bl 80045cc - 800442e: e004 b.n 800443a - } - else - { - /*Program double word (64-bit) at a specified address.*/ - FLASH_Program_DoubleWord(Address, Data); - 8004430: e9d7 2300 ldrd r2, r3, [r7] - 8004434: 68b8 ldr r0, [r7, #8] - 8004436: f000 f897 bl 8004568 - } - - /* Wait for last operation to be completed */ - status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); - 800443a: f24c 3050 movw r0, #50000 @ 0xc350 - 800443e: f000 f853 bl 80044e8 - 8004442: 4603 mov r3, r0 - 8004444: 75fb strb r3, [r7, #23] - - /* If the program operation is completed, disable the PG Bit */ - FLASH->CR &= (~FLASH_CR_PG); - 8004446: 4b08 ldr r3, [pc, #32] @ (8004468 ) - 8004448: 691b ldr r3, [r3, #16] - 800444a: 4a07 ldr r2, [pc, #28] @ (8004468 ) - 800444c: f023 0301 bic.w r3, r3, #1 - 8004450: 6113 str r3, [r2, #16] - } - - /* Process Unlocked */ - __HAL_UNLOCK(&pFlash); - 8004452: 4b04 ldr r3, [pc, #16] @ (8004464 ) - 8004454: 2200 movs r2, #0 - 8004456: 761a strb r2, [r3, #24] - - return status; - 8004458: 7dfb ldrb r3, [r7, #23] -} - 800445a: 4618 mov r0, r3 - 800445c: 3718 adds r7, #24 - 800445e: 46bd mov sp, r7 - 8004460: bd80 pop {r7, pc} - 8004462: bf00 nop - 8004464: 20001558 .word 0x20001558 - 8004468: 40023c00 .word 0x40023c00 - -0800446c : -/** - * @brief Unlock the FLASH control register access - * @retval HAL Status - */ -HAL_StatusTypeDef HAL_FLASH_Unlock(void) -{ - 800446c: b480 push {r7} - 800446e: b083 sub sp, #12 - 8004470: af00 add r7, sp, #0 - HAL_StatusTypeDef status = HAL_OK; - 8004472: 2300 movs r3, #0 - 8004474: 71fb strb r3, [r7, #7] - - if(READ_BIT(FLASH->CR, FLASH_CR_LOCK) != RESET) - 8004476: 4b0b ldr r3, [pc, #44] @ (80044a4 ) - 8004478: 691b ldr r3, [r3, #16] - 800447a: 2b00 cmp r3, #0 - 800447c: da0b bge.n 8004496 - { - /* Authorize the FLASH Registers access */ - WRITE_REG(FLASH->KEYR, FLASH_KEY1); - 800447e: 4b09 ldr r3, [pc, #36] @ (80044a4 ) - 8004480: 4a09 ldr r2, [pc, #36] @ (80044a8 ) - 8004482: 605a str r2, [r3, #4] - WRITE_REG(FLASH->KEYR, FLASH_KEY2); - 8004484: 4b07 ldr r3, [pc, #28] @ (80044a4 ) - 8004486: 4a09 ldr r2, [pc, #36] @ (80044ac ) - 8004488: 605a str r2, [r3, #4] - - /* Verify Flash is unlocked */ - if(READ_BIT(FLASH->CR, FLASH_CR_LOCK) != RESET) - 800448a: 4b06 ldr r3, [pc, #24] @ (80044a4 ) - 800448c: 691b ldr r3, [r3, #16] - 800448e: 2b00 cmp r3, #0 - 8004490: da01 bge.n 8004496 - { - status = HAL_ERROR; - 8004492: 2301 movs r3, #1 - 8004494: 71fb strb r3, [r7, #7] - } - } - - return status; - 8004496: 79fb ldrb r3, [r7, #7] -} - 8004498: 4618 mov r0, r3 - 800449a: 370c adds r7, #12 - 800449c: 46bd mov sp, r7 - 800449e: f85d 7b04 ldr.w r7, [sp], #4 - 80044a2: 4770 bx lr - 80044a4: 40023c00 .word 0x40023c00 - 80044a8: 45670123 .word 0x45670123 - 80044ac: cdef89ab .word 0xcdef89ab - -080044b0 : -/** - * @brief Locks the FLASH control register access - * @retval HAL Status - */ -HAL_StatusTypeDef HAL_FLASH_Lock(void) -{ - 80044b0: b480 push {r7} - 80044b2: af00 add r7, sp, #0 - /* Set the LOCK Bit to lock the FLASH Registers access */ - FLASH->CR |= FLASH_CR_LOCK; - 80044b4: 4b05 ldr r3, [pc, #20] @ (80044cc ) - 80044b6: 691b ldr r3, [r3, #16] - 80044b8: 4a04 ldr r2, [pc, #16] @ (80044cc ) - 80044ba: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 - 80044be: 6113 str r3, [r2, #16] - - return HAL_OK; - 80044c0: 2300 movs r3, #0 -} - 80044c2: 4618 mov r0, r3 - 80044c4: 46bd mov sp, r7 - 80044c6: f85d 7b04 ldr.w r7, [sp], #4 - 80044ca: 4770 bx lr - 80044cc: 40023c00 .word 0x40023c00 - -080044d0 : - * @arg HAL_FLASH_ERROR_PGA: FLASH Programming Alignment error flag - * @arg HAL_FLASH_ERROR_WRP: FLASH Write protected error flag - * @arg HAL_FLASH_ERROR_OPERATION: FLASH operation Error flag - */ -uint32_t HAL_FLASH_GetError(void) -{ - 80044d0: b480 push {r7} - 80044d2: af00 add r7, sp, #0 - return pFlash.ErrorCode; - 80044d4: 4b03 ldr r3, [pc, #12] @ (80044e4 ) - 80044d6: 69db ldr r3, [r3, #28] -} - 80044d8: 4618 mov r0, r3 - 80044da: 46bd mov sp, r7 - 80044dc: f85d 7b04 ldr.w r7, [sp], #4 - 80044e0: 4770 bx lr - 80044e2: bf00 nop - 80044e4: 20001558 .word 0x20001558 - -080044e8 : - * @brief Wait for a FLASH operation to complete. - * @param Timeout maximum flash operationtimeout - * @retval HAL Status - */ -HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout) -{ - 80044e8: b580 push {r7, lr} - 80044ea: b084 sub sp, #16 - 80044ec: af00 add r7, sp, #0 - 80044ee: 6078 str r0, [r7, #4] - uint32_t tickstart = 0U; - 80044f0: 2300 movs r3, #0 - 80044f2: 60fb str r3, [r7, #12] - - /* Clear Error Code */ - pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; - 80044f4: 4b1a ldr r3, [pc, #104] @ (8004560 ) - 80044f6: 2200 movs r2, #0 - 80044f8: 61da str r2, [r3, #28] - - /* Wait for the FLASH operation to complete by polling on BUSY flag to be reset. - Even if the FLASH operation fails, the BUSY flag will be reset and an error - flag will be set */ - /* Get tick */ - tickstart = HAL_GetTick(); - 80044fa: f7fe fd2b bl 8002f54 - 80044fe: 60f8 str r0, [r7, #12] - - while(__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY) != RESET) - 8004500: e010 b.n 8004524 - { - if(Timeout != HAL_MAX_DELAY) - 8004502: 687b ldr r3, [r7, #4] - 8004504: f1b3 3fff cmp.w r3, #4294967295 - 8004508: d00c beq.n 8004524 - { - if((Timeout == 0U)||((HAL_GetTick() - tickstart ) > Timeout)) - 800450a: 687b ldr r3, [r7, #4] - 800450c: 2b00 cmp r3, #0 - 800450e: d007 beq.n 8004520 - 8004510: f7fe fd20 bl 8002f54 - 8004514: 4602 mov r2, r0 - 8004516: 68fb ldr r3, [r7, #12] - 8004518: 1ad3 subs r3, r2, r3 - 800451a: 687a ldr r2, [r7, #4] - 800451c: 429a cmp r2, r3 - 800451e: d201 bcs.n 8004524 - { - return HAL_TIMEOUT; - 8004520: 2303 movs r3, #3 - 8004522: e019 b.n 8004558 - while(__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY) != RESET) - 8004524: 4b0f ldr r3, [pc, #60] @ (8004564 ) - 8004526: 68db ldr r3, [r3, #12] - 8004528: f403 3380 and.w r3, r3, #65536 @ 0x10000 - 800452c: 2b00 cmp r3, #0 - 800452e: d1e8 bne.n 8004502 - } - } - } - - /* Check FLASH End of Operation flag */ - if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP) != RESET) - 8004530: 4b0c ldr r3, [pc, #48] @ (8004564 ) - 8004532: 68db ldr r3, [r3, #12] - 8004534: f003 0301 and.w r3, r3, #1 - 8004538: 2b00 cmp r3, #0 - 800453a: d002 beq.n 8004542 - { - /* Clear FLASH End of Operation pending bit */ - __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP); - 800453c: 4b09 ldr r3, [pc, #36] @ (8004564 ) - 800453e: 2201 movs r2, #1 - 8004540: 60da str r2, [r3, #12] - } -#if defined(FLASH_SR_RDERR) - if(__HAL_FLASH_GET_FLAG((FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | \ - 8004542: 4b08 ldr r3, [pc, #32] @ (8004564 ) - 8004544: 68db ldr r3, [r3, #12] - 8004546: f403 73f9 and.w r3, r3, #498 @ 0x1f2 - 800454a: 2b00 cmp r3, #0 - 800454c: d003 beq.n 8004556 - if(__HAL_FLASH_GET_FLAG((FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | \ - FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR)) != RESET) -#endif /* FLASH_SR_RDERR */ - { - /*Save the error code*/ - FLASH_SetErrorCode(); - 800454e: f000 f8a5 bl 800469c - return HAL_ERROR; - 8004552: 2301 movs r3, #1 - 8004554: e000 b.n 8004558 - } - - /* If there is no error flag set */ - return HAL_OK; - 8004556: 2300 movs r3, #0 - -} - 8004558: 4618 mov r0, r3 - 800455a: 3710 adds r7, #16 - 800455c: 46bd mov sp, r7 - 800455e: bd80 pop {r7, pc} - 8004560: 20001558 .word 0x20001558 - 8004564: 40023c00 .word 0x40023c00 - -08004568 : - * @param Address specifies the address to be programmed. - * @param Data specifies the data to be programmed. - * @retval None - */ -static void FLASH_Program_DoubleWord(uint32_t Address, uint64_t Data) -{ - 8004568: b480 push {r7} - 800456a: b085 sub sp, #20 - 800456c: af00 add r7, sp, #0 - 800456e: 60f8 str r0, [r7, #12] - 8004570: e9c7 2300 strd r2, r3, [r7] - /* Check the parameters */ - assert_param(IS_FLASH_ADDRESS(Address)); - - /* If the previous operation is completed, proceed to program the new data */ - CLEAR_BIT(FLASH->CR, FLASH_CR_PSIZE); - 8004574: 4b14 ldr r3, [pc, #80] @ (80045c8 ) - 8004576: 691b ldr r3, [r3, #16] - 8004578: 4a13 ldr r2, [pc, #76] @ (80045c8 ) - 800457a: f423 7340 bic.w r3, r3, #768 @ 0x300 - 800457e: 6113 str r3, [r2, #16] - FLASH->CR |= FLASH_PSIZE_DOUBLE_WORD; - 8004580: 4b11 ldr r3, [pc, #68] @ (80045c8 ) - 8004582: 691b ldr r3, [r3, #16] - 8004584: 4a10 ldr r2, [pc, #64] @ (80045c8 ) - 8004586: f443 7340 orr.w r3, r3, #768 @ 0x300 - 800458a: 6113 str r3, [r2, #16] - FLASH->CR |= FLASH_CR_PG; - 800458c: 4b0e ldr r3, [pc, #56] @ (80045c8 ) - 800458e: 691b ldr r3, [r3, #16] - 8004590: 4a0d ldr r2, [pc, #52] @ (80045c8 ) - 8004592: f043 0301 orr.w r3, r3, #1 - 8004596: 6113 str r3, [r2, #16] - - /* Program first word */ - *(__IO uint32_t*)Address = (uint32_t)Data; - 8004598: 68fb ldr r3, [r7, #12] - 800459a: 683a ldr r2, [r7, #0] - 800459c: 601a str r2, [r3, #0] - __ASM volatile ("isb 0xF":::"memory"); - 800459e: f3bf 8f6f isb sy -} - 80045a2: bf00 nop - /* Barrier to ensure programming is performed in 2 steps, in right order - (independently of compiler optimization behavior) */ - __ISB(); - - /* Program second word */ - *(__IO uint32_t*)(Address+4) = (uint32_t)(Data >> 32); - 80045a4: e9d7 0100 ldrd r0, r1, [r7] - 80045a8: f04f 0200 mov.w r2, #0 - 80045ac: f04f 0300 mov.w r3, #0 - 80045b0: 000a movs r2, r1 - 80045b2: 2300 movs r3, #0 - 80045b4: 68f9 ldr r1, [r7, #12] - 80045b6: 3104 adds r1, #4 - 80045b8: 4613 mov r3, r2 - 80045ba: 600b str r3, [r1, #0] -} - 80045bc: bf00 nop - 80045be: 3714 adds r7, #20 - 80045c0: 46bd mov sp, r7 - 80045c2: f85d 7b04 ldr.w r7, [sp], #4 - 80045c6: 4770 bx lr - 80045c8: 40023c00 .word 0x40023c00 - -080045cc : - * @param Address specifies the address to be programmed. - * @param Data specifies the data to be programmed. - * @retval None - */ -static void FLASH_Program_Word(uint32_t Address, uint32_t Data) -{ - 80045cc: b480 push {r7} - 80045ce: b083 sub sp, #12 - 80045d0: af00 add r7, sp, #0 - 80045d2: 6078 str r0, [r7, #4] - 80045d4: 6039 str r1, [r7, #0] - /* Check the parameters */ - assert_param(IS_FLASH_ADDRESS(Address)); - - /* If the previous operation is completed, proceed to program the new data */ - CLEAR_BIT(FLASH->CR, FLASH_CR_PSIZE); - 80045d6: 4b0d ldr r3, [pc, #52] @ (800460c ) - 80045d8: 691b ldr r3, [r3, #16] - 80045da: 4a0c ldr r2, [pc, #48] @ (800460c ) - 80045dc: f423 7340 bic.w r3, r3, #768 @ 0x300 - 80045e0: 6113 str r3, [r2, #16] - FLASH->CR |= FLASH_PSIZE_WORD; - 80045e2: 4b0a ldr r3, [pc, #40] @ (800460c ) - 80045e4: 691b ldr r3, [r3, #16] - 80045e6: 4a09 ldr r2, [pc, #36] @ (800460c ) - 80045e8: f443 7300 orr.w r3, r3, #512 @ 0x200 - 80045ec: 6113 str r3, [r2, #16] - FLASH->CR |= FLASH_CR_PG; - 80045ee: 4b07 ldr r3, [pc, #28] @ (800460c ) - 80045f0: 691b ldr r3, [r3, #16] - 80045f2: 4a06 ldr r2, [pc, #24] @ (800460c ) - 80045f4: f043 0301 orr.w r3, r3, #1 - 80045f8: 6113 str r3, [r2, #16] - - *(__IO uint32_t*)Address = Data; - 80045fa: 687b ldr r3, [r7, #4] - 80045fc: 683a ldr r2, [r7, #0] - 80045fe: 601a str r2, [r3, #0] -} - 8004600: bf00 nop - 8004602: 370c adds r7, #12 - 8004604: 46bd mov sp, r7 - 8004606: f85d 7b04 ldr.w r7, [sp], #4 - 800460a: 4770 bx lr - 800460c: 40023c00 .word 0x40023c00 - -08004610 : - * @param Address specifies the address to be programmed. - * @param Data specifies the data to be programmed. - * @retval None - */ -static void FLASH_Program_HalfWord(uint32_t Address, uint16_t Data) -{ - 8004610: b480 push {r7} - 8004612: b083 sub sp, #12 - 8004614: af00 add r7, sp, #0 - 8004616: 6078 str r0, [r7, #4] - 8004618: 460b mov r3, r1 - 800461a: 807b strh r3, [r7, #2] - /* Check the parameters */ - assert_param(IS_FLASH_ADDRESS(Address)); - - /* If the previous operation is completed, proceed to program the new data */ - CLEAR_BIT(FLASH->CR, FLASH_CR_PSIZE); - 800461c: 4b0d ldr r3, [pc, #52] @ (8004654 ) - 800461e: 691b ldr r3, [r3, #16] - 8004620: 4a0c ldr r2, [pc, #48] @ (8004654 ) - 8004622: f423 7340 bic.w r3, r3, #768 @ 0x300 - 8004626: 6113 str r3, [r2, #16] - FLASH->CR |= FLASH_PSIZE_HALF_WORD; - 8004628: 4b0a ldr r3, [pc, #40] @ (8004654 ) - 800462a: 691b ldr r3, [r3, #16] - 800462c: 4a09 ldr r2, [pc, #36] @ (8004654 ) - 800462e: f443 7380 orr.w r3, r3, #256 @ 0x100 - 8004632: 6113 str r3, [r2, #16] - FLASH->CR |= FLASH_CR_PG; - 8004634: 4b07 ldr r3, [pc, #28] @ (8004654 ) - 8004636: 691b ldr r3, [r3, #16] - 8004638: 4a06 ldr r2, [pc, #24] @ (8004654 ) - 800463a: f043 0301 orr.w r3, r3, #1 - 800463e: 6113 str r3, [r2, #16] - - *(__IO uint16_t*)Address = Data; - 8004640: 687b ldr r3, [r7, #4] - 8004642: 887a ldrh r2, [r7, #2] - 8004644: 801a strh r2, [r3, #0] -} - 8004646: bf00 nop - 8004648: 370c adds r7, #12 - 800464a: 46bd mov sp, r7 - 800464c: f85d 7b04 ldr.w r7, [sp], #4 - 8004650: 4770 bx lr - 8004652: bf00 nop - 8004654: 40023c00 .word 0x40023c00 - -08004658 : - * @param Address specifies the address to be programmed. - * @param Data specifies the data to be programmed. - * @retval None - */ -static void FLASH_Program_Byte(uint32_t Address, uint8_t Data) -{ - 8004658: b480 push {r7} - 800465a: b083 sub sp, #12 - 800465c: af00 add r7, sp, #0 - 800465e: 6078 str r0, [r7, #4] - 8004660: 460b mov r3, r1 - 8004662: 70fb strb r3, [r7, #3] - /* Check the parameters */ - assert_param(IS_FLASH_ADDRESS(Address)); - - /* If the previous operation is completed, proceed to program the new data */ - CLEAR_BIT(FLASH->CR, FLASH_CR_PSIZE); - 8004664: 4b0c ldr r3, [pc, #48] @ (8004698 ) - 8004666: 691b ldr r3, [r3, #16] - 8004668: 4a0b ldr r2, [pc, #44] @ (8004698 ) - 800466a: f423 7340 bic.w r3, r3, #768 @ 0x300 - 800466e: 6113 str r3, [r2, #16] - FLASH->CR |= FLASH_PSIZE_BYTE; - 8004670: 4b09 ldr r3, [pc, #36] @ (8004698 ) - 8004672: 4a09 ldr r2, [pc, #36] @ (8004698 ) - 8004674: 691b ldr r3, [r3, #16] - 8004676: 6113 str r3, [r2, #16] - FLASH->CR |= FLASH_CR_PG; - 8004678: 4b07 ldr r3, [pc, #28] @ (8004698 ) - 800467a: 691b ldr r3, [r3, #16] - 800467c: 4a06 ldr r2, [pc, #24] @ (8004698 ) - 800467e: f043 0301 orr.w r3, r3, #1 - 8004682: 6113 str r3, [r2, #16] - - *(__IO uint8_t*)Address = Data; - 8004684: 687b ldr r3, [r7, #4] - 8004686: 78fa ldrb r2, [r7, #3] - 8004688: 701a strb r2, [r3, #0] -} - 800468a: bf00 nop - 800468c: 370c adds r7, #12 - 800468e: 46bd mov sp, r7 - 8004690: f85d 7b04 ldr.w r7, [sp], #4 - 8004694: 4770 bx lr - 8004696: bf00 nop - 8004698: 40023c00 .word 0x40023c00 - -0800469c : -/** - * @brief Set the specific FLASH error flag. - * @retval None - */ -static void FLASH_SetErrorCode(void) -{ - 800469c: b480 push {r7} - 800469e: af00 add r7, sp, #0 - if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR) != RESET) - 80046a0: 4b2f ldr r3, [pc, #188] @ (8004760 ) - 80046a2: 68db ldr r3, [r3, #12] - 80046a4: f003 0310 and.w r3, r3, #16 - 80046a8: 2b00 cmp r3, #0 - 80046aa: d008 beq.n 80046be - { - pFlash.ErrorCode |= HAL_FLASH_ERROR_WRP; - 80046ac: 4b2d ldr r3, [pc, #180] @ (8004764 ) - 80046ae: 69db ldr r3, [r3, #28] - 80046b0: f043 0310 orr.w r3, r3, #16 - 80046b4: 4a2b ldr r2, [pc, #172] @ (8004764 ) - 80046b6: 61d3 str r3, [r2, #28] - - /* Clear FLASH write protection error pending bit */ - __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_WRPERR); - 80046b8: 4b29 ldr r3, [pc, #164] @ (8004760 ) - 80046ba: 2210 movs r2, #16 - 80046bc: 60da str r2, [r3, #12] - } - - if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR) != RESET) - 80046be: 4b28 ldr r3, [pc, #160] @ (8004760 ) - 80046c0: 68db ldr r3, [r3, #12] - 80046c2: f003 0320 and.w r3, r3, #32 - 80046c6: 2b00 cmp r3, #0 - 80046c8: d008 beq.n 80046dc - { - pFlash.ErrorCode |= HAL_FLASH_ERROR_PGA; - 80046ca: 4b26 ldr r3, [pc, #152] @ (8004764 ) - 80046cc: 69db ldr r3, [r3, #28] - 80046ce: f043 0308 orr.w r3, r3, #8 - 80046d2: 4a24 ldr r2, [pc, #144] @ (8004764 ) - 80046d4: 61d3 str r3, [r2, #28] - - /* Clear FLASH Programming alignment error pending bit */ - __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_PGAERR); - 80046d6: 4b22 ldr r3, [pc, #136] @ (8004760 ) - 80046d8: 2220 movs r2, #32 - 80046da: 60da str r2, [r3, #12] - } - - if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGPERR) != RESET) - 80046dc: 4b20 ldr r3, [pc, #128] @ (8004760 ) - 80046de: 68db ldr r3, [r3, #12] - 80046e0: f003 0340 and.w r3, r3, #64 @ 0x40 - 80046e4: 2b00 cmp r3, #0 - 80046e6: d008 beq.n 80046fa - { - pFlash.ErrorCode |= HAL_FLASH_ERROR_PGP; - 80046e8: 4b1e ldr r3, [pc, #120] @ (8004764 ) - 80046ea: 69db ldr r3, [r3, #28] - 80046ec: f043 0304 orr.w r3, r3, #4 - 80046f0: 4a1c ldr r2, [pc, #112] @ (8004764 ) - 80046f2: 61d3 str r3, [r2, #28] - - /* Clear FLASH Programming parallelism error pending bit */ - __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_PGPERR); - 80046f4: 4b1a ldr r3, [pc, #104] @ (8004760 ) - 80046f6: 2240 movs r2, #64 @ 0x40 - 80046f8: 60da str r2, [r3, #12] - } - - if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGSERR) != RESET) - 80046fa: 4b19 ldr r3, [pc, #100] @ (8004760 ) - 80046fc: 68db ldr r3, [r3, #12] - 80046fe: f003 0380 and.w r3, r3, #128 @ 0x80 - 8004702: 2b00 cmp r3, #0 - 8004704: d008 beq.n 8004718 - { - pFlash.ErrorCode |= HAL_FLASH_ERROR_PGS; - 8004706: 4b17 ldr r3, [pc, #92] @ (8004764 ) - 8004708: 69db ldr r3, [r3, #28] - 800470a: f043 0302 orr.w r3, r3, #2 - 800470e: 4a15 ldr r2, [pc, #84] @ (8004764 ) - 8004710: 61d3 str r3, [r2, #28] - - /* Clear FLASH Programming sequence error pending bit */ - __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_PGSERR); - 8004712: 4b13 ldr r3, [pc, #76] @ (8004760 ) - 8004714: 2280 movs r2, #128 @ 0x80 - 8004716: 60da str r2, [r3, #12] - } -#if defined(FLASH_SR_RDERR) - if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR) != RESET) - 8004718: 4b11 ldr r3, [pc, #68] @ (8004760 ) - 800471a: 68db ldr r3, [r3, #12] - 800471c: f403 7380 and.w r3, r3, #256 @ 0x100 - 8004720: 2b00 cmp r3, #0 - 8004722: d009 beq.n 8004738 - { - pFlash.ErrorCode |= HAL_FLASH_ERROR_RD; - 8004724: 4b0f ldr r3, [pc, #60] @ (8004764 ) - 8004726: 69db ldr r3, [r3, #28] - 8004728: f043 0301 orr.w r3, r3, #1 - 800472c: 4a0d ldr r2, [pc, #52] @ (8004764 ) - 800472e: 61d3 str r3, [r2, #28] - - /* Clear FLASH Proprietary readout protection error pending bit */ - __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_RDERR); - 8004730: 4b0b ldr r3, [pc, #44] @ (8004760 ) - 8004732: f44f 7280 mov.w r2, #256 @ 0x100 - 8004736: 60da str r2, [r3, #12] - } -#endif /* FLASH_SR_RDERR */ - if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_OPERR) != RESET) - 8004738: 4b09 ldr r3, [pc, #36] @ (8004760 ) - 800473a: 68db ldr r3, [r3, #12] - 800473c: f003 0302 and.w r3, r3, #2 - 8004740: 2b00 cmp r3, #0 - 8004742: d008 beq.n 8004756 - { - pFlash.ErrorCode |= HAL_FLASH_ERROR_OPERATION; - 8004744: 4b07 ldr r3, [pc, #28] @ (8004764 ) - 8004746: 69db ldr r3, [r3, #28] - 8004748: f043 0320 orr.w r3, r3, #32 - 800474c: 4a05 ldr r2, [pc, #20] @ (8004764 ) - 800474e: 61d3 str r3, [r2, #28] - - /* Clear FLASH Operation error pending bit */ - __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_OPERR); - 8004750: 4b03 ldr r3, [pc, #12] @ (8004760 ) - 8004752: 2202 movs r2, #2 - 8004754: 60da str r2, [r3, #12] - } -} - 8004756: bf00 nop - 8004758: 46bd mov sp, r7 - 800475a: f85d 7b04 ldr.w r7, [sp], #4 - 800475e: 4770 bx lr - 8004760: 40023c00 .word 0x40023c00 - 8004764: 20001558 .word 0x20001558 - -08004768 : - * (0xFFFFFFFFU means that all the sectors have been correctly erased) - * - * @retval HAL Status - */ -HAL_StatusTypeDef HAL_FLASHEx_Erase(FLASH_EraseInitTypeDef *pEraseInit, uint32_t *SectorError) -{ - 8004768: b580 push {r7, lr} - 800476a: b084 sub sp, #16 - 800476c: af00 add r7, sp, #0 - 800476e: 6078 str r0, [r7, #4] - 8004770: 6039 str r1, [r7, #0] - HAL_StatusTypeDef status = HAL_ERROR; - 8004772: 2301 movs r3, #1 - 8004774: 73fb strb r3, [r7, #15] - uint32_t index = 0U; - 8004776: 2300 movs r3, #0 - 8004778: 60bb str r3, [r7, #8] - - /* Process Locked */ - __HAL_LOCK(&pFlash); - 800477a: 4b32 ldr r3, [pc, #200] @ (8004844 ) - 800477c: 7e1b ldrb r3, [r3, #24] - 800477e: 2b01 cmp r3, #1 - 8004780: d101 bne.n 8004786 - 8004782: 2302 movs r3, #2 - 8004784: e05a b.n 800483c - 8004786: 4b2f ldr r3, [pc, #188] @ (8004844 ) - 8004788: 2201 movs r2, #1 - 800478a: 761a strb r2, [r3, #24] - - /* Check the parameters */ - assert_param(IS_FLASH_TYPEERASE(pEraseInit->TypeErase)); - - /* Wait for last operation to be completed */ - status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); - 800478c: f24c 3050 movw r0, #50000 @ 0xc350 - 8004790: f7ff feaa bl 80044e8 - 8004794: 4603 mov r3, r0 - 8004796: 73fb strb r3, [r7, #15] - - if (status == HAL_OK) - 8004798: 7bfb ldrb r3, [r7, #15] - 800479a: 2b00 cmp r3, #0 - 800479c: d14a bne.n 8004834 - { - /*Initialization of SectorError variable*/ - *SectorError = 0xFFFFFFFFU; - 800479e: 683b ldr r3, [r7, #0] - 80047a0: f04f 32ff mov.w r2, #4294967295 - 80047a4: 601a str r2, [r3, #0] - - if (pEraseInit->TypeErase == FLASH_TYPEERASE_MASSERASE) - 80047a6: 687b ldr r3, [r7, #4] - 80047a8: 681b ldr r3, [r3, #0] - 80047aa: 2b01 cmp r3, #1 - 80047ac: d117 bne.n 80047de - { - /*Mass erase to be done*/ - FLASH_MassErase((uint8_t) pEraseInit->VoltageRange, pEraseInit->Banks); - 80047ae: 687b ldr r3, [r7, #4] - 80047b0: 691b ldr r3, [r3, #16] - 80047b2: b2da uxtb r2, r3 - 80047b4: 687b ldr r3, [r7, #4] - 80047b6: 685b ldr r3, [r3, #4] - 80047b8: 4619 mov r1, r3 - 80047ba: 4610 mov r0, r2 - 80047bc: f000 f846 bl 800484c - - /* Wait for last operation to be completed */ - status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); - 80047c0: f24c 3050 movw r0, #50000 @ 0xc350 - 80047c4: f7ff fe90 bl 80044e8 - 80047c8: 4603 mov r3, r0 - 80047ca: 73fb strb r3, [r7, #15] - - /* if the erase operation is completed, disable the MER Bit */ - FLASH->CR &= (~FLASH_MER_BIT); - 80047cc: 4b1e ldr r3, [pc, #120] @ (8004848 ) - 80047ce: 691b ldr r3, [r3, #16] - 80047d0: 4a1d ldr r2, [pc, #116] @ (8004848 ) - 80047d2: f423 4300 bic.w r3, r3, #32768 @ 0x8000 - 80047d6: f023 0304 bic.w r3, r3, #4 - 80047da: 6113 str r3, [r2, #16] - 80047dc: e028 b.n 8004830 - { - /* Check the parameters */ - assert_param(IS_FLASH_NBSECTORS(pEraseInit->NbSectors + pEraseInit->Sector)); - - /* Erase by sector by sector to be done*/ - for (index = pEraseInit->Sector; index < (pEraseInit->NbSectors + pEraseInit->Sector); index++) - 80047de: 687b ldr r3, [r7, #4] - 80047e0: 689b ldr r3, [r3, #8] - 80047e2: 60bb str r3, [r7, #8] - 80047e4: e01c b.n 8004820 - { - FLASH_Erase_Sector(index, (uint8_t) pEraseInit->VoltageRange); - 80047e6: 687b ldr r3, [r7, #4] - 80047e8: 691b ldr r3, [r3, #16] - 80047ea: b2db uxtb r3, r3 - 80047ec: 4619 mov r1, r3 - 80047ee: 68b8 ldr r0, [r7, #8] - 80047f0: f000 f866 bl 80048c0 - - /* Wait for last operation to be completed */ - status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); - 80047f4: f24c 3050 movw r0, #50000 @ 0xc350 - 80047f8: f7ff fe76 bl 80044e8 - 80047fc: 4603 mov r3, r0 - 80047fe: 73fb strb r3, [r7, #15] - - /* If the erase operation is completed, disable the SER and SNB Bits */ - CLEAR_BIT(FLASH->CR, (FLASH_CR_SER | FLASH_CR_SNB)); - 8004800: 4b11 ldr r3, [pc, #68] @ (8004848 ) - 8004802: 691b ldr r3, [r3, #16] - 8004804: 4a10 ldr r2, [pc, #64] @ (8004848 ) - 8004806: f023 03fa bic.w r3, r3, #250 @ 0xfa - 800480a: 6113 str r3, [r2, #16] - - if (status != HAL_OK) - 800480c: 7bfb ldrb r3, [r7, #15] - 800480e: 2b00 cmp r3, #0 - 8004810: d003 beq.n 800481a - { - /* In case of error, stop erase procedure and return the faulty sector*/ - *SectorError = index; - 8004812: 683b ldr r3, [r7, #0] - 8004814: 68ba ldr r2, [r7, #8] - 8004816: 601a str r2, [r3, #0] - break; - 8004818: e00a b.n 8004830 - for (index = pEraseInit->Sector; index < (pEraseInit->NbSectors + pEraseInit->Sector); index++) - 800481a: 68bb ldr r3, [r7, #8] - 800481c: 3301 adds r3, #1 - 800481e: 60bb str r3, [r7, #8] - 8004820: 687b ldr r3, [r7, #4] - 8004822: 68da ldr r2, [r3, #12] - 8004824: 687b ldr r3, [r7, #4] - 8004826: 689b ldr r3, [r3, #8] - 8004828: 4413 add r3, r2 - 800482a: 68ba ldr r2, [r7, #8] - 800482c: 429a cmp r2, r3 - 800482e: d3da bcc.n 80047e6 - } - } - } - /* Flush the caches to be sure of the data consistency */ - FLASH_FlushCaches(); - 8004830: f000 f894 bl 800495c - } - - /* Process Unlocked */ - __HAL_UNLOCK(&pFlash); - 8004834: 4b03 ldr r3, [pc, #12] @ (8004844 ) - 8004836: 2200 movs r2, #0 - 8004838: 761a strb r2, [r3, #24] - - return status; - 800483a: 7bfb ldrb r3, [r7, #15] -} - 800483c: 4618 mov r0, r3 - 800483e: 3710 adds r7, #16 - 8004840: 46bd mov sp, r7 - 8004842: bd80 pop {r7, pc} - 8004844: 20001558 .word 0x20001558 - 8004848: 40023c00 .word 0x40023c00 - -0800484c : - * @arg FLASH_BANK_BOTH: Bank1 and Bank2 to be erased - * - * @retval HAL Status - */ -static void FLASH_MassErase(uint8_t VoltageRange, uint32_t Banks) -{ - 800484c: b480 push {r7} - 800484e: b083 sub sp, #12 - 8004850: af00 add r7, sp, #0 - 8004852: 4603 mov r3, r0 - 8004854: 6039 str r1, [r7, #0] - 8004856: 71fb strb r3, [r7, #7] - /* Check the parameters */ - assert_param(IS_VOLTAGERANGE(VoltageRange)); - assert_param(IS_FLASH_BANK(Banks)); - - /* if the previous operation is completed, proceed to erase all sectors */ - CLEAR_BIT(FLASH->CR, FLASH_CR_PSIZE); - 8004858: 4b18 ldr r3, [pc, #96] @ (80048bc ) - 800485a: 691b ldr r3, [r3, #16] - 800485c: 4a17 ldr r2, [pc, #92] @ (80048bc ) - 800485e: f423 7340 bic.w r3, r3, #768 @ 0x300 - 8004862: 6113 str r3, [r2, #16] - - if (Banks == FLASH_BANK_BOTH) - 8004864: 683b ldr r3, [r7, #0] - 8004866: 2b03 cmp r3, #3 - 8004868: d108 bne.n 800487c - { - /* bank1 & bank2 will be erased*/ - FLASH->CR |= FLASH_MER_BIT; - 800486a: 4b14 ldr r3, [pc, #80] @ (80048bc ) - 800486c: 691b ldr r3, [r3, #16] - 800486e: 4a13 ldr r2, [pc, #76] @ (80048bc ) - 8004870: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8004874: f043 0304 orr.w r3, r3, #4 - 8004878: 6113 str r3, [r2, #16] - 800487a: e00f b.n 800489c - } - else if (Banks == FLASH_BANK_1) - 800487c: 683b ldr r3, [r7, #0] - 800487e: 2b01 cmp r3, #1 - 8004880: d106 bne.n 8004890 - { - /*Only bank1 will be erased*/ - FLASH->CR |= FLASH_CR_MER1; - 8004882: 4b0e ldr r3, [pc, #56] @ (80048bc ) - 8004884: 691b ldr r3, [r3, #16] - 8004886: 4a0d ldr r2, [pc, #52] @ (80048bc ) - 8004888: f043 0304 orr.w r3, r3, #4 - 800488c: 6113 str r3, [r2, #16] - 800488e: e005 b.n 800489c - } - else - { - /*Only bank2 will be erased*/ - FLASH->CR |= FLASH_CR_MER2; - 8004890: 4b0a ldr r3, [pc, #40] @ (80048bc ) - 8004892: 691b ldr r3, [r3, #16] - 8004894: 4a09 ldr r2, [pc, #36] @ (80048bc ) - 8004896: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 800489a: 6113 str r3, [r2, #16] - } - FLASH->CR |= FLASH_CR_STRT | ((uint32_t)VoltageRange << 8U); - 800489c: 4b07 ldr r3, [pc, #28] @ (80048bc ) - 800489e: 691a ldr r2, [r3, #16] - 80048a0: 79fb ldrb r3, [r7, #7] - 80048a2: 021b lsls r3, r3, #8 - 80048a4: 4313 orrs r3, r2 - 80048a6: 4a05 ldr r2, [pc, #20] @ (80048bc ) - 80048a8: f443 3380 orr.w r3, r3, #65536 @ 0x10000 - 80048ac: 6113 str r3, [r2, #16] -} - 80048ae: bf00 nop - 80048b0: 370c adds r7, #12 - 80048b2: 46bd mov sp, r7 - 80048b4: f85d 7b04 ldr.w r7, [sp], #4 - 80048b8: 4770 bx lr - 80048ba: bf00 nop - 80048bc: 40023c00 .word 0x40023c00 - -080048c0 : - * the operation will be done by double word (64-bit) - * - * @retval None - */ -void FLASH_Erase_Sector(uint32_t Sector, uint8_t VoltageRange) -{ - 80048c0: b480 push {r7} - 80048c2: b085 sub sp, #20 - 80048c4: af00 add r7, sp, #0 - 80048c6: 6078 str r0, [r7, #4] - 80048c8: 460b mov r3, r1 - 80048ca: 70fb strb r3, [r7, #3] - uint32_t tmp_psize = 0U; - 80048cc: 2300 movs r3, #0 - 80048ce: 60fb str r3, [r7, #12] - - /* Check the parameters */ - assert_param(IS_FLASH_SECTOR(Sector)); - assert_param(IS_VOLTAGERANGE(VoltageRange)); - - if (VoltageRange == FLASH_VOLTAGE_RANGE_1) - 80048d0: 78fb ldrb r3, [r7, #3] - 80048d2: 2b00 cmp r3, #0 - 80048d4: d102 bne.n 80048dc - { - tmp_psize = FLASH_PSIZE_BYTE; - 80048d6: 2300 movs r3, #0 - 80048d8: 60fb str r3, [r7, #12] - 80048da: e010 b.n 80048fe - } - else if (VoltageRange == FLASH_VOLTAGE_RANGE_2) - 80048dc: 78fb ldrb r3, [r7, #3] - 80048de: 2b01 cmp r3, #1 - 80048e0: d103 bne.n 80048ea - { - tmp_psize = FLASH_PSIZE_HALF_WORD; - 80048e2: f44f 7380 mov.w r3, #256 @ 0x100 - 80048e6: 60fb str r3, [r7, #12] - 80048e8: e009 b.n 80048fe - } - else if (VoltageRange == FLASH_VOLTAGE_RANGE_3) - 80048ea: 78fb ldrb r3, [r7, #3] - 80048ec: 2b02 cmp r3, #2 - 80048ee: d103 bne.n 80048f8 - { - tmp_psize = FLASH_PSIZE_WORD; - 80048f0: f44f 7300 mov.w r3, #512 @ 0x200 - 80048f4: 60fb str r3, [r7, #12] - 80048f6: e002 b.n 80048fe - } - else - { - tmp_psize = FLASH_PSIZE_DOUBLE_WORD; - 80048f8: f44f 7340 mov.w r3, #768 @ 0x300 - 80048fc: 60fb str r3, [r7, #12] - } - - /* Need to add offset of 4 when sector higher than FLASH_SECTOR_11 */ - if (Sector > FLASH_SECTOR_11) - 80048fe: 687b ldr r3, [r7, #4] - 8004900: 2b0b cmp r3, #11 - 8004902: d902 bls.n 800490a - { - Sector += 4U; - 8004904: 687b ldr r3, [r7, #4] - 8004906: 3304 adds r3, #4 - 8004908: 607b str r3, [r7, #4] - } - /* If the previous operation is completed, proceed to erase the sector */ - CLEAR_BIT(FLASH->CR, FLASH_CR_PSIZE); - 800490a: 4b13 ldr r3, [pc, #76] @ (8004958 ) - 800490c: 691b ldr r3, [r3, #16] - 800490e: 4a12 ldr r2, [pc, #72] @ (8004958 ) - 8004910: f423 7340 bic.w r3, r3, #768 @ 0x300 - 8004914: 6113 str r3, [r2, #16] - FLASH->CR |= tmp_psize; - 8004916: 4b10 ldr r3, [pc, #64] @ (8004958 ) - 8004918: 691a ldr r2, [r3, #16] - 800491a: 490f ldr r1, [pc, #60] @ (8004958 ) - 800491c: 68fb ldr r3, [r7, #12] - 800491e: 4313 orrs r3, r2 - 8004920: 610b str r3, [r1, #16] - CLEAR_BIT(FLASH->CR, FLASH_CR_SNB); - 8004922: 4b0d ldr r3, [pc, #52] @ (8004958 ) - 8004924: 691b ldr r3, [r3, #16] - 8004926: 4a0c ldr r2, [pc, #48] @ (8004958 ) - 8004928: f023 03f8 bic.w r3, r3, #248 @ 0xf8 - 800492c: 6113 str r3, [r2, #16] - FLASH->CR |= FLASH_CR_SER | (Sector << FLASH_CR_SNB_Pos); - 800492e: 4b0a ldr r3, [pc, #40] @ (8004958 ) - 8004930: 691a ldr r2, [r3, #16] - 8004932: 687b ldr r3, [r7, #4] - 8004934: 00db lsls r3, r3, #3 - 8004936: 4313 orrs r3, r2 - 8004938: 4a07 ldr r2, [pc, #28] @ (8004958 ) - 800493a: f043 0302 orr.w r3, r3, #2 - 800493e: 6113 str r3, [r2, #16] - FLASH->CR |= FLASH_CR_STRT; - 8004940: 4b05 ldr r3, [pc, #20] @ (8004958 ) - 8004942: 691b ldr r3, [r3, #16] - 8004944: 4a04 ldr r2, [pc, #16] @ (8004958 ) - 8004946: f443 3380 orr.w r3, r3, #65536 @ 0x10000 - 800494a: 6113 str r3, [r2, #16] -} - 800494c: bf00 nop - 800494e: 3714 adds r7, #20 - 8004950: 46bd mov sp, r7 - 8004952: f85d 7b04 ldr.w r7, [sp], #4 - 8004956: 4770 bx lr - 8004958: 40023c00 .word 0x40023c00 - -0800495c : -/** - * @brief Flush the instruction and data caches - * @retval None - */ -void FLASH_FlushCaches(void) -{ - 800495c: b480 push {r7} - 800495e: af00 add r7, sp, #0 - /* Flush instruction cache */ - if (READ_BIT(FLASH->ACR, FLASH_ACR_ICEN) != RESET) - 8004960: 4b20 ldr r3, [pc, #128] @ (80049e4 ) - 8004962: 681b ldr r3, [r3, #0] - 8004964: f403 7300 and.w r3, r3, #512 @ 0x200 - 8004968: 2b00 cmp r3, #0 - 800496a: d017 beq.n 800499c - { - /* Disable instruction cache */ - __HAL_FLASH_INSTRUCTION_CACHE_DISABLE(); - 800496c: 4b1d ldr r3, [pc, #116] @ (80049e4 ) - 800496e: 681b ldr r3, [r3, #0] - 8004970: 4a1c ldr r2, [pc, #112] @ (80049e4 ) - 8004972: f423 7300 bic.w r3, r3, #512 @ 0x200 - 8004976: 6013 str r3, [r2, #0] - /* Reset instruction cache */ - __HAL_FLASH_INSTRUCTION_CACHE_RESET(); - 8004978: 4b1a ldr r3, [pc, #104] @ (80049e4 ) - 800497a: 681b ldr r3, [r3, #0] - 800497c: 4a19 ldr r2, [pc, #100] @ (80049e4 ) - 800497e: f443 6300 orr.w r3, r3, #2048 @ 0x800 - 8004982: 6013 str r3, [r2, #0] - 8004984: 4b17 ldr r3, [pc, #92] @ (80049e4 ) - 8004986: 681b ldr r3, [r3, #0] - 8004988: 4a16 ldr r2, [pc, #88] @ (80049e4 ) - 800498a: f423 6300 bic.w r3, r3, #2048 @ 0x800 - 800498e: 6013 str r3, [r2, #0] - /* Enable instruction cache */ - __HAL_FLASH_INSTRUCTION_CACHE_ENABLE(); - 8004990: 4b14 ldr r3, [pc, #80] @ (80049e4 ) - 8004992: 681b ldr r3, [r3, #0] - 8004994: 4a13 ldr r2, [pc, #76] @ (80049e4 ) - 8004996: f443 7300 orr.w r3, r3, #512 @ 0x200 - 800499a: 6013 str r3, [r2, #0] - } - - /* Flush data cache */ - if (READ_BIT(FLASH->ACR, FLASH_ACR_DCEN) != RESET) - 800499c: 4b11 ldr r3, [pc, #68] @ (80049e4 ) - 800499e: 681b ldr r3, [r3, #0] - 80049a0: f403 6380 and.w r3, r3, #1024 @ 0x400 - 80049a4: 2b00 cmp r3, #0 - 80049a6: d017 beq.n 80049d8 - { - /* Disable data cache */ - __HAL_FLASH_DATA_CACHE_DISABLE(); - 80049a8: 4b0e ldr r3, [pc, #56] @ (80049e4 ) - 80049aa: 681b ldr r3, [r3, #0] - 80049ac: 4a0d ldr r2, [pc, #52] @ (80049e4 ) - 80049ae: f423 6380 bic.w r3, r3, #1024 @ 0x400 - 80049b2: 6013 str r3, [r2, #0] - /* Reset data cache */ - __HAL_FLASH_DATA_CACHE_RESET(); - 80049b4: 4b0b ldr r3, [pc, #44] @ (80049e4 ) - 80049b6: 681b ldr r3, [r3, #0] - 80049b8: 4a0a ldr r2, [pc, #40] @ (80049e4 ) - 80049ba: f443 5380 orr.w r3, r3, #4096 @ 0x1000 - 80049be: 6013 str r3, [r2, #0] - 80049c0: 4b08 ldr r3, [pc, #32] @ (80049e4 ) - 80049c2: 681b ldr r3, [r3, #0] - 80049c4: 4a07 ldr r2, [pc, #28] @ (80049e4 ) - 80049c6: f423 5380 bic.w r3, r3, #4096 @ 0x1000 - 80049ca: 6013 str r3, [r2, #0] - /* Enable data cache */ - __HAL_FLASH_DATA_CACHE_ENABLE(); - 80049cc: 4b05 ldr r3, [pc, #20] @ (80049e4 ) - 80049ce: 681b ldr r3, [r3, #0] - 80049d0: 4a04 ldr r2, [pc, #16] @ (80049e4 ) - 80049d2: f443 6380 orr.w r3, r3, #1024 @ 0x400 - 80049d6: 6013 str r3, [r2, #0] - } -} - 80049d8: bf00 nop - 80049da: 46bd mov sp, r7 - 80049dc: f85d 7b04 ldr.w r7, [sp], #4 - 80049e0: 4770 bx lr - 80049e2: bf00 nop - 80049e4: 40023c00 .word 0x40023c00 - -080049e8 : - * @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) -{ - 80049e8: b480 push {r7} - 80049ea: b089 sub sp, #36 @ 0x24 - 80049ec: af00 add r7, sp, #0 - 80049ee: 6078 str r0, [r7, #4] - 80049f0: 6039 str r1, [r7, #0] - uint32_t position; - uint32_t ioposition = 0x00U; - 80049f2: 2300 movs r3, #0 - 80049f4: 617b str r3, [r7, #20] - uint32_t iocurrent = 0x00U; - 80049f6: 2300 movs r3, #0 - 80049f8: 613b str r3, [r7, #16] - uint32_t temp = 0x00U; - 80049fa: 2300 movs r3, #0 - 80049fc: 61bb str r3, [r7, #24] - 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 */ - for(position = 0U; position < GPIO_NUMBER; position++) - 80049fe: 2300 movs r3, #0 - 8004a00: 61fb str r3, [r7, #28] - 8004a02: e177 b.n 8004cf4 - { - /* Get the IO position */ - ioposition = 0x01U << position; - 8004a04: 2201 movs r2, #1 - 8004a06: 69fb ldr r3, [r7, #28] - 8004a08: fa02 f303 lsl.w r3, r2, r3 - 8004a0c: 617b str r3, [r7, #20] - /* Get the current IO position */ - iocurrent = (uint32_t)(GPIO_Init->Pin) & ioposition; - 8004a0e: 683b ldr r3, [r7, #0] - 8004a10: 681b ldr r3, [r3, #0] - 8004a12: 697a ldr r2, [r7, #20] - 8004a14: 4013 ands r3, r2 - 8004a16: 613b str r3, [r7, #16] - - if(iocurrent == ioposition) - 8004a18: 693a ldr r2, [r7, #16] - 8004a1a: 697b ldr r3, [r7, #20] - 8004a1c: 429a cmp r2, r3 - 8004a1e: f040 8166 bne.w 8004cee - { - /*--------------------- GPIO Mode Configuration ------------------------*/ - /* In case of Output or Alternate function mode selection */ - if(((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || \ - 8004a22: 683b ldr r3, [r7, #0] - 8004a24: 685b ldr r3, [r3, #4] - 8004a26: f003 0303 and.w r3, r3, #3 - 8004a2a: 2b01 cmp r3, #1 - 8004a2c: d005 beq.n 8004a3a - (GPIO_Init->Mode & GPIO_MODE) == MODE_AF) - 8004a2e: 683b ldr r3, [r7, #0] - 8004a30: 685b ldr r3, [r3, #4] - 8004a32: f003 0303 and.w r3, r3, #3 - if(((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || \ - 8004a36: 2b02 cmp r3, #2 - 8004a38: d130 bne.n 8004a9c - { - /* Check the Speed parameter */ - assert_param(IS_GPIO_SPEED(GPIO_Init->Speed)); - /* Configure the IO Speed */ - temp = GPIOx->OSPEEDR; - 8004a3a: 687b ldr r3, [r7, #4] - 8004a3c: 689b ldr r3, [r3, #8] - 8004a3e: 61bb str r3, [r7, #24] - temp &= ~(GPIO_OSPEEDER_OSPEEDR0 << (position * 2U)); - 8004a40: 69fb ldr r3, [r7, #28] - 8004a42: 005b lsls r3, r3, #1 - 8004a44: 2203 movs r2, #3 - 8004a46: fa02 f303 lsl.w r3, r2, r3 - 8004a4a: 43db mvns r3, r3 - 8004a4c: 69ba ldr r2, [r7, #24] - 8004a4e: 4013 ands r3, r2 - 8004a50: 61bb str r3, [r7, #24] - temp |= (GPIO_Init->Speed << (position * 2U)); - 8004a52: 683b ldr r3, [r7, #0] - 8004a54: 68da ldr r2, [r3, #12] - 8004a56: 69fb ldr r3, [r7, #28] - 8004a58: 005b lsls r3, r3, #1 - 8004a5a: fa02 f303 lsl.w r3, r2, r3 - 8004a5e: 69ba ldr r2, [r7, #24] - 8004a60: 4313 orrs r3, r2 - 8004a62: 61bb str r3, [r7, #24] - GPIOx->OSPEEDR = temp; - 8004a64: 687b ldr r3, [r7, #4] - 8004a66: 69ba ldr r2, [r7, #24] - 8004a68: 609a str r2, [r3, #8] - - /* Configure the IO Output Type */ - temp = GPIOx->OTYPER; - 8004a6a: 687b ldr r3, [r7, #4] - 8004a6c: 685b ldr r3, [r3, #4] - 8004a6e: 61bb str r3, [r7, #24] - temp &= ~(GPIO_OTYPER_OT_0 << position) ; - 8004a70: 2201 movs r2, #1 - 8004a72: 69fb ldr r3, [r7, #28] - 8004a74: fa02 f303 lsl.w r3, r2, r3 - 8004a78: 43db mvns r3, r3 - 8004a7a: 69ba ldr r2, [r7, #24] - 8004a7c: 4013 ands r3, r2 - 8004a7e: 61bb str r3, [r7, #24] - temp |= (((GPIO_Init->Mode & OUTPUT_TYPE) >> OUTPUT_TYPE_Pos) << position); - 8004a80: 683b ldr r3, [r7, #0] - 8004a82: 685b ldr r3, [r3, #4] - 8004a84: 091b lsrs r3, r3, #4 - 8004a86: f003 0201 and.w r2, r3, #1 - 8004a8a: 69fb ldr r3, [r7, #28] - 8004a8c: fa02 f303 lsl.w r3, r2, r3 - 8004a90: 69ba ldr r2, [r7, #24] - 8004a92: 4313 orrs r3, r2 - 8004a94: 61bb str r3, [r7, #24] - GPIOx->OTYPER = temp; - 8004a96: 687b ldr r3, [r7, #4] - 8004a98: 69ba ldr r2, [r7, #24] - 8004a9a: 605a str r2, [r3, #4] - } - - if((GPIO_Init->Mode & GPIO_MODE) != MODE_ANALOG) - 8004a9c: 683b ldr r3, [r7, #0] - 8004a9e: 685b ldr r3, [r3, #4] - 8004aa0: f003 0303 and.w r3, r3, #3 - 8004aa4: 2b03 cmp r3, #3 - 8004aa6: d017 beq.n 8004ad8 - { - /* Check the parameters */ - assert_param(IS_GPIO_PULL(GPIO_Init->Pull)); - - /* Activate the Pull-up or Pull down resistor for the current IO */ - temp = GPIOx->PUPDR; - 8004aa8: 687b ldr r3, [r7, #4] - 8004aaa: 68db ldr r3, [r3, #12] - 8004aac: 61bb str r3, [r7, #24] - temp &= ~(GPIO_PUPDR_PUPDR0 << (position * 2U)); - 8004aae: 69fb ldr r3, [r7, #28] - 8004ab0: 005b lsls r3, r3, #1 - 8004ab2: 2203 movs r2, #3 - 8004ab4: fa02 f303 lsl.w r3, r2, r3 - 8004ab8: 43db mvns r3, r3 - 8004aba: 69ba ldr r2, [r7, #24] - 8004abc: 4013 ands r3, r2 - 8004abe: 61bb str r3, [r7, #24] - temp |= ((GPIO_Init->Pull) << (position * 2U)); - 8004ac0: 683b ldr r3, [r7, #0] - 8004ac2: 689a ldr r2, [r3, #8] - 8004ac4: 69fb ldr r3, [r7, #28] - 8004ac6: 005b lsls r3, r3, #1 - 8004ac8: fa02 f303 lsl.w r3, r2, r3 - 8004acc: 69ba ldr r2, [r7, #24] - 8004ace: 4313 orrs r3, r2 - 8004ad0: 61bb str r3, [r7, #24] - GPIOx->PUPDR = temp; - 8004ad2: 687b ldr r3, [r7, #4] - 8004ad4: 69ba ldr r2, [r7, #24] - 8004ad6: 60da str r2, [r3, #12] - } - - /* In case of Alternate function mode selection */ - if((GPIO_Init->Mode & GPIO_MODE) == MODE_AF) - 8004ad8: 683b ldr r3, [r7, #0] - 8004ada: 685b ldr r3, [r3, #4] - 8004adc: f003 0303 and.w r3, r3, #3 - 8004ae0: 2b02 cmp r3, #2 - 8004ae2: d123 bne.n 8004b2c - { - /* Check the Alternate function parameter */ - assert_param(IS_GPIO_AF(GPIO_Init->Alternate)); - /* Configure Alternate function mapped with the current IO */ - temp = GPIOx->AFR[position >> 3U]; - 8004ae4: 69fb ldr r3, [r7, #28] - 8004ae6: 08da lsrs r2, r3, #3 - 8004ae8: 687b ldr r3, [r7, #4] - 8004aea: 3208 adds r2, #8 - 8004aec: f853 3022 ldr.w r3, [r3, r2, lsl #2] - 8004af0: 61bb str r3, [r7, #24] - temp &= ~(0xFU << ((uint32_t)(position & 0x07U) * 4U)) ; - 8004af2: 69fb ldr r3, [r7, #28] - 8004af4: f003 0307 and.w r3, r3, #7 - 8004af8: 009b lsls r3, r3, #2 - 8004afa: 220f movs r2, #15 - 8004afc: fa02 f303 lsl.w r3, r2, r3 - 8004b00: 43db mvns r3, r3 - 8004b02: 69ba ldr r2, [r7, #24] - 8004b04: 4013 ands r3, r2 - 8004b06: 61bb str r3, [r7, #24] - temp |= ((uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & 0x07U) * 4U)); - 8004b08: 683b ldr r3, [r7, #0] - 8004b0a: 691a ldr r2, [r3, #16] - 8004b0c: 69fb ldr r3, [r7, #28] - 8004b0e: f003 0307 and.w r3, r3, #7 - 8004b12: 009b lsls r3, r3, #2 - 8004b14: fa02 f303 lsl.w r3, r2, r3 - 8004b18: 69ba ldr r2, [r7, #24] - 8004b1a: 4313 orrs r3, r2 - 8004b1c: 61bb str r3, [r7, #24] - GPIOx->AFR[position >> 3U] = temp; - 8004b1e: 69fb ldr r3, [r7, #28] - 8004b20: 08da lsrs r2, r3, #3 - 8004b22: 687b ldr r3, [r7, #4] - 8004b24: 3208 adds r2, #8 - 8004b26: 69b9 ldr r1, [r7, #24] - 8004b28: f843 1022 str.w r1, [r3, r2, lsl #2] - } - - /* Configure IO Direction mode (Input, Output, Alternate or Analog) */ - temp = GPIOx->MODER; - 8004b2c: 687b ldr r3, [r7, #4] - 8004b2e: 681b ldr r3, [r3, #0] - 8004b30: 61bb str r3, [r7, #24] - temp &= ~(GPIO_MODER_MODER0 << (position * 2U)); - 8004b32: 69fb ldr r3, [r7, #28] - 8004b34: 005b lsls r3, r3, #1 - 8004b36: 2203 movs r2, #3 - 8004b38: fa02 f303 lsl.w r3, r2, r3 - 8004b3c: 43db mvns r3, r3 - 8004b3e: 69ba ldr r2, [r7, #24] - 8004b40: 4013 ands r3, r2 - 8004b42: 61bb str r3, [r7, #24] - temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2U)); - 8004b44: 683b ldr r3, [r7, #0] - 8004b46: 685b ldr r3, [r3, #4] - 8004b48: f003 0203 and.w r2, r3, #3 - 8004b4c: 69fb ldr r3, [r7, #28] - 8004b4e: 005b lsls r3, r3, #1 - 8004b50: fa02 f303 lsl.w r3, r2, r3 - 8004b54: 69ba ldr r2, [r7, #24] - 8004b56: 4313 orrs r3, r2 - 8004b58: 61bb str r3, [r7, #24] - GPIOx->MODER = temp; - 8004b5a: 687b ldr r3, [r7, #4] - 8004b5c: 69ba ldr r2, [r7, #24] - 8004b5e: 601a str r2, [r3, #0] - - /*--------------------- EXTI Mode Configuration ------------------------*/ - /* Configure the External Interrupt or event for the current IO */ - if((GPIO_Init->Mode & EXTI_MODE) != 0x00U) - 8004b60: 683b ldr r3, [r7, #0] - 8004b62: 685b ldr r3, [r3, #4] - 8004b64: f403 3340 and.w r3, r3, #196608 @ 0x30000 - 8004b68: 2b00 cmp r3, #0 - 8004b6a: f000 80c0 beq.w 8004cee - { - /* Enable SYSCFG Clock */ - __HAL_RCC_SYSCFG_CLK_ENABLE(); - 8004b6e: 2300 movs r3, #0 - 8004b70: 60fb str r3, [r7, #12] - 8004b72: 4b66 ldr r3, [pc, #408] @ (8004d0c ) - 8004b74: 6c5b ldr r3, [r3, #68] @ 0x44 - 8004b76: 4a65 ldr r2, [pc, #404] @ (8004d0c ) - 8004b78: f443 4380 orr.w r3, r3, #16384 @ 0x4000 - 8004b7c: 6453 str r3, [r2, #68] @ 0x44 - 8004b7e: 4b63 ldr r3, [pc, #396] @ (8004d0c ) - 8004b80: 6c5b ldr r3, [r3, #68] @ 0x44 - 8004b82: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 8004b86: 60fb str r3, [r7, #12] - 8004b88: 68fb ldr r3, [r7, #12] - - temp = SYSCFG->EXTICR[position >> 2U]; - 8004b8a: 4a61 ldr r2, [pc, #388] @ (8004d10 ) - 8004b8c: 69fb ldr r3, [r7, #28] - 8004b8e: 089b lsrs r3, r3, #2 - 8004b90: 3302 adds r3, #2 - 8004b92: f852 3023 ldr.w r3, [r2, r3, lsl #2] - 8004b96: 61bb str r3, [r7, #24] - temp &= ~(0x0FU << (4U * (position & 0x03U))); - 8004b98: 69fb ldr r3, [r7, #28] - 8004b9a: f003 0303 and.w r3, r3, #3 - 8004b9e: 009b lsls r3, r3, #2 - 8004ba0: 220f movs r2, #15 - 8004ba2: fa02 f303 lsl.w r3, r2, r3 - 8004ba6: 43db mvns r3, r3 - 8004ba8: 69ba ldr r2, [r7, #24] - 8004baa: 4013 ands r3, r2 - 8004bac: 61bb str r3, [r7, #24] - temp |= ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4U * (position & 0x03U))); - 8004bae: 687b ldr r3, [r7, #4] - 8004bb0: 4a58 ldr r2, [pc, #352] @ (8004d14 ) - 8004bb2: 4293 cmp r3, r2 - 8004bb4: d037 beq.n 8004c26 - 8004bb6: 687b ldr r3, [r7, #4] - 8004bb8: 4a57 ldr r2, [pc, #348] @ (8004d18 ) - 8004bba: 4293 cmp r3, r2 - 8004bbc: d031 beq.n 8004c22 - 8004bbe: 687b ldr r3, [r7, #4] - 8004bc0: 4a56 ldr r2, [pc, #344] @ (8004d1c ) - 8004bc2: 4293 cmp r3, r2 - 8004bc4: d02b beq.n 8004c1e - 8004bc6: 687b ldr r3, [r7, #4] - 8004bc8: 4a55 ldr r2, [pc, #340] @ (8004d20 ) - 8004bca: 4293 cmp r3, r2 - 8004bcc: d025 beq.n 8004c1a - 8004bce: 687b ldr r3, [r7, #4] - 8004bd0: 4a54 ldr r2, [pc, #336] @ (8004d24 ) - 8004bd2: 4293 cmp r3, r2 - 8004bd4: d01f beq.n 8004c16 - 8004bd6: 687b ldr r3, [r7, #4] - 8004bd8: 4a53 ldr r2, [pc, #332] @ (8004d28 ) - 8004bda: 4293 cmp r3, r2 - 8004bdc: d019 beq.n 8004c12 - 8004bde: 687b ldr r3, [r7, #4] - 8004be0: 4a52 ldr r2, [pc, #328] @ (8004d2c ) - 8004be2: 4293 cmp r3, r2 - 8004be4: d013 beq.n 8004c0e - 8004be6: 687b ldr r3, [r7, #4] - 8004be8: 4a51 ldr r2, [pc, #324] @ (8004d30 ) - 8004bea: 4293 cmp r3, r2 - 8004bec: d00d beq.n 8004c0a - 8004bee: 687b ldr r3, [r7, #4] - 8004bf0: 4a50 ldr r2, [pc, #320] @ (8004d34 ) - 8004bf2: 4293 cmp r3, r2 - 8004bf4: d007 beq.n 8004c06 - 8004bf6: 687b ldr r3, [r7, #4] - 8004bf8: 4a4f ldr r2, [pc, #316] @ (8004d38 ) - 8004bfa: 4293 cmp r3, r2 - 8004bfc: d101 bne.n 8004c02 - 8004bfe: 2309 movs r3, #9 - 8004c00: e012 b.n 8004c28 - 8004c02: 230a movs r3, #10 - 8004c04: e010 b.n 8004c28 - 8004c06: 2308 movs r3, #8 - 8004c08: e00e b.n 8004c28 - 8004c0a: 2307 movs r3, #7 - 8004c0c: e00c b.n 8004c28 - 8004c0e: 2306 movs r3, #6 - 8004c10: e00a b.n 8004c28 - 8004c12: 2305 movs r3, #5 - 8004c14: e008 b.n 8004c28 - 8004c16: 2304 movs r3, #4 - 8004c18: e006 b.n 8004c28 - 8004c1a: 2303 movs r3, #3 - 8004c1c: e004 b.n 8004c28 - 8004c1e: 2302 movs r3, #2 - 8004c20: e002 b.n 8004c28 - 8004c22: 2301 movs r3, #1 - 8004c24: e000 b.n 8004c28 - 8004c26: 2300 movs r3, #0 - 8004c28: 69fa ldr r2, [r7, #28] - 8004c2a: f002 0203 and.w r2, r2, #3 - 8004c2e: 0092 lsls r2, r2, #2 - 8004c30: 4093 lsls r3, r2 - 8004c32: 69ba ldr r2, [r7, #24] - 8004c34: 4313 orrs r3, r2 - 8004c36: 61bb str r3, [r7, #24] - SYSCFG->EXTICR[position >> 2U] = temp; - 8004c38: 4935 ldr r1, [pc, #212] @ (8004d10 ) - 8004c3a: 69fb ldr r3, [r7, #28] - 8004c3c: 089b lsrs r3, r3, #2 - 8004c3e: 3302 adds r3, #2 - 8004c40: 69ba ldr r2, [r7, #24] - 8004c42: f841 2023 str.w r2, [r1, r3, lsl #2] - - /* Clear Rising Falling edge configuration */ - temp = EXTI->RTSR; - 8004c46: 4b3d ldr r3, [pc, #244] @ (8004d3c ) - 8004c48: 689b ldr r3, [r3, #8] - 8004c4a: 61bb str r3, [r7, #24] - temp &= ~((uint32_t)iocurrent); - 8004c4c: 693b ldr r3, [r7, #16] - 8004c4e: 43db mvns r3, r3 - 8004c50: 69ba ldr r2, [r7, #24] - 8004c52: 4013 ands r3, r2 - 8004c54: 61bb str r3, [r7, #24] - if((GPIO_Init->Mode & TRIGGER_RISING) != 0x00U) - 8004c56: 683b ldr r3, [r7, #0] - 8004c58: 685b ldr r3, [r3, #4] - 8004c5a: f403 1380 and.w r3, r3, #1048576 @ 0x100000 - 8004c5e: 2b00 cmp r3, #0 - 8004c60: d003 beq.n 8004c6a - { - temp |= iocurrent; - 8004c62: 69ba ldr r2, [r7, #24] - 8004c64: 693b ldr r3, [r7, #16] - 8004c66: 4313 orrs r3, r2 - 8004c68: 61bb str r3, [r7, #24] - } - EXTI->RTSR = temp; - 8004c6a: 4a34 ldr r2, [pc, #208] @ (8004d3c ) - 8004c6c: 69bb ldr r3, [r7, #24] - 8004c6e: 6093 str r3, [r2, #8] - - temp = EXTI->FTSR; - 8004c70: 4b32 ldr r3, [pc, #200] @ (8004d3c ) - 8004c72: 68db ldr r3, [r3, #12] - 8004c74: 61bb str r3, [r7, #24] - temp &= ~((uint32_t)iocurrent); - 8004c76: 693b ldr r3, [r7, #16] - 8004c78: 43db mvns r3, r3 - 8004c7a: 69ba ldr r2, [r7, #24] - 8004c7c: 4013 ands r3, r2 - 8004c7e: 61bb str r3, [r7, #24] - if((GPIO_Init->Mode & TRIGGER_FALLING) != 0x00U) - 8004c80: 683b ldr r3, [r7, #0] - 8004c82: 685b ldr r3, [r3, #4] - 8004c84: f403 1300 and.w r3, r3, #2097152 @ 0x200000 - 8004c88: 2b00 cmp r3, #0 - 8004c8a: d003 beq.n 8004c94 - { - temp |= iocurrent; - 8004c8c: 69ba ldr r2, [r7, #24] - 8004c8e: 693b ldr r3, [r7, #16] - 8004c90: 4313 orrs r3, r2 - 8004c92: 61bb str r3, [r7, #24] - } - EXTI->FTSR = temp; - 8004c94: 4a29 ldr r2, [pc, #164] @ (8004d3c ) - 8004c96: 69bb ldr r3, [r7, #24] - 8004c98: 60d3 str r3, [r2, #12] - - temp = EXTI->EMR; - 8004c9a: 4b28 ldr r3, [pc, #160] @ (8004d3c ) - 8004c9c: 685b ldr r3, [r3, #4] - 8004c9e: 61bb str r3, [r7, #24] - temp &= ~((uint32_t)iocurrent); - 8004ca0: 693b ldr r3, [r7, #16] - 8004ca2: 43db mvns r3, r3 - 8004ca4: 69ba ldr r2, [r7, #24] - 8004ca6: 4013 ands r3, r2 - 8004ca8: 61bb str r3, [r7, #24] - if((GPIO_Init->Mode & EXTI_EVT) != 0x00U) - 8004caa: 683b ldr r3, [r7, #0] - 8004cac: 685b ldr r3, [r3, #4] - 8004cae: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 8004cb2: 2b00 cmp r3, #0 - 8004cb4: d003 beq.n 8004cbe - { - temp |= iocurrent; - 8004cb6: 69ba ldr r2, [r7, #24] - 8004cb8: 693b ldr r3, [r7, #16] - 8004cba: 4313 orrs r3, r2 - 8004cbc: 61bb str r3, [r7, #24] - } - EXTI->EMR = temp; - 8004cbe: 4a1f ldr r2, [pc, #124] @ (8004d3c ) - 8004cc0: 69bb ldr r3, [r7, #24] - 8004cc2: 6053 str r3, [r2, #4] - - /* Clear EXTI line configuration */ - temp = EXTI->IMR; - 8004cc4: 4b1d ldr r3, [pc, #116] @ (8004d3c ) - 8004cc6: 681b ldr r3, [r3, #0] - 8004cc8: 61bb str r3, [r7, #24] - temp &= ~((uint32_t)iocurrent); - 8004cca: 693b ldr r3, [r7, #16] - 8004ccc: 43db mvns r3, r3 - 8004cce: 69ba ldr r2, [r7, #24] - 8004cd0: 4013 ands r3, r2 - 8004cd2: 61bb str r3, [r7, #24] - if((GPIO_Init->Mode & EXTI_IT) != 0x00U) - 8004cd4: 683b ldr r3, [r7, #0] - 8004cd6: 685b ldr r3, [r3, #4] - 8004cd8: f403 3380 and.w r3, r3, #65536 @ 0x10000 - 8004cdc: 2b00 cmp r3, #0 - 8004cde: d003 beq.n 8004ce8 - { - temp |= iocurrent; - 8004ce0: 69ba ldr r2, [r7, #24] - 8004ce2: 693b ldr r3, [r7, #16] - 8004ce4: 4313 orrs r3, r2 - 8004ce6: 61bb str r3, [r7, #24] - } - EXTI->IMR = temp; - 8004ce8: 4a14 ldr r2, [pc, #80] @ (8004d3c ) - 8004cea: 69bb ldr r3, [r7, #24] - 8004cec: 6013 str r3, [r2, #0] - for(position = 0U; position < GPIO_NUMBER; position++) - 8004cee: 69fb ldr r3, [r7, #28] - 8004cf0: 3301 adds r3, #1 - 8004cf2: 61fb str r3, [r7, #28] - 8004cf4: 69fb ldr r3, [r7, #28] - 8004cf6: 2b0f cmp r3, #15 - 8004cf8: f67f ae84 bls.w 8004a04 - } - } - } -} - 8004cfc: bf00 nop - 8004cfe: bf00 nop - 8004d00: 3724 adds r7, #36 @ 0x24 - 8004d02: 46bd mov sp, r7 - 8004d04: f85d 7b04 ldr.w r7, [sp], #4 - 8004d08: 4770 bx lr - 8004d0a: bf00 nop - 8004d0c: 40023800 .word 0x40023800 - 8004d10: 40013800 .word 0x40013800 - 8004d14: 40020000 .word 0x40020000 - 8004d18: 40020400 .word 0x40020400 - 8004d1c: 40020800 .word 0x40020800 - 8004d20: 40020c00 .word 0x40020c00 - 8004d24: 40021000 .word 0x40021000 - 8004d28: 40021400 .word 0x40021400 - 8004d2c: 40021800 .word 0x40021800 - 8004d30: 40021c00 .word 0x40021c00 - 8004d34: 40022000 .word 0x40022000 - 8004d38: 40022400 .word 0x40022400 - 8004d3c: 40013c00 .word 0x40013c00 - -08004d40 : - * @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) -{ - 8004d40: b480 push {r7} - 8004d42: b083 sub sp, #12 - 8004d44: af00 add r7, sp, #0 - 8004d46: 6078 str r0, [r7, #4] - 8004d48: 460b mov r3, r1 - 8004d4a: 807b strh r3, [r7, #2] - 8004d4c: 4613 mov r3, r2 - 8004d4e: 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) - 8004d50: 787b ldrb r3, [r7, #1] - 8004d52: 2b00 cmp r3, #0 - 8004d54: d003 beq.n 8004d5e - { - GPIOx->BSRR = GPIO_Pin; - 8004d56: 887a ldrh r2, [r7, #2] - 8004d58: 687b ldr r3, [r7, #4] - 8004d5a: 619a str r2, [r3, #24] - } - else - { - GPIOx->BSRR = (uint32_t)GPIO_Pin << 16U; - } -} - 8004d5c: e003 b.n 8004d66 - GPIOx->BSRR = (uint32_t)GPIO_Pin << 16U; - 8004d5e: 887b ldrh r3, [r7, #2] - 8004d60: 041a lsls r2, r3, #16 - 8004d62: 687b ldr r3, [r7, #4] - 8004d64: 619a str r2, [r3, #24] -} - 8004d66: bf00 nop - 8004d68: 370c adds r7, #12 - 8004d6a: 46bd mov sp, r7 - 8004d6c: f85d 7b04 ldr.w r7, [sp], #4 - 8004d70: 4770 bx lr - ... - -08004d74 : - * supported by this API. User should request a transition to HSE Off - * first and then HSE On or HSE Bypass. - * @retval HAL status - */ -__weak HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct) -{ - 8004d74: b580 push {r7, lr} - 8004d76: b086 sub sp, #24 - 8004d78: af00 add r7, sp, #0 - 8004d7a: 6078 str r0, [r7, #4] - uint32_t tickstart, pll_config; - - /* Check Null pointer */ - if(RCC_OscInitStruct == NULL) - 8004d7c: 687b ldr r3, [r7, #4] - 8004d7e: 2b00 cmp r3, #0 - 8004d80: d101 bne.n 8004d86 - { - return HAL_ERROR; - 8004d82: 2301 movs r3, #1 - 8004d84: e267 b.n 8005256 - } - - /* Check the parameters */ - assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType)); - /*------------------------------- HSE Configuration ------------------------*/ - if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) - 8004d86: 687b ldr r3, [r7, #4] - 8004d88: 681b ldr r3, [r3, #0] - 8004d8a: f003 0301 and.w r3, r3, #1 - 8004d8e: 2b00 cmp r3, #0 - 8004d90: d075 beq.n 8004e7e - { - /* Check the parameters */ - assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState)); - /* When the HSE is used as system clock or clock source for PLL in these cases HSE will not disabled */ - if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_HSE) ||\ - 8004d92: 4b88 ldr r3, [pc, #544] @ (8004fb4 ) - 8004d94: 689b ldr r3, [r3, #8] - 8004d96: f003 030c and.w r3, r3, #12 - 8004d9a: 2b04 cmp r3, #4 - 8004d9c: d00c beq.n 8004db8 - ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLL) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSE))) - 8004d9e: 4b85 ldr r3, [pc, #532] @ (8004fb4 ) - 8004da0: 689b ldr r3, [r3, #8] - 8004da2: f003 030c and.w r3, r3, #12 - if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_HSE) ||\ - 8004da6: 2b08 cmp r3, #8 - 8004da8: d112 bne.n 8004dd0 - ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLL) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSE))) - 8004daa: 4b82 ldr r3, [pc, #520] @ (8004fb4 ) - 8004dac: 685b ldr r3, [r3, #4] - 8004dae: f403 0380 and.w r3, r3, #4194304 @ 0x400000 - 8004db2: f5b3 0f80 cmp.w r3, #4194304 @ 0x400000 - 8004db6: d10b bne.n 8004dd0 - { - if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) - 8004db8: 4b7e ldr r3, [pc, #504] @ (8004fb4 ) - 8004dba: 681b ldr r3, [r3, #0] - 8004dbc: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 8004dc0: 2b00 cmp r3, #0 - 8004dc2: d05b beq.n 8004e7c - 8004dc4: 687b ldr r3, [r7, #4] - 8004dc6: 685b ldr r3, [r3, #4] - 8004dc8: 2b00 cmp r3, #0 - 8004dca: d157 bne.n 8004e7c - { - return HAL_ERROR; - 8004dcc: 2301 movs r3, #1 - 8004dce: e242 b.n 8005256 - } - } - else - { - /* Set the new HSE configuration ---------------------------------------*/ - __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); - 8004dd0: 687b ldr r3, [r7, #4] - 8004dd2: 685b ldr r3, [r3, #4] - 8004dd4: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8004dd8: d106 bne.n 8004de8 - 8004dda: 4b76 ldr r3, [pc, #472] @ (8004fb4 ) - 8004ddc: 681b ldr r3, [r3, #0] - 8004dde: 4a75 ldr r2, [pc, #468] @ (8004fb4 ) - 8004de0: f443 3380 orr.w r3, r3, #65536 @ 0x10000 - 8004de4: 6013 str r3, [r2, #0] - 8004de6: e01d b.n 8004e24 - 8004de8: 687b ldr r3, [r7, #4] - 8004dea: 685b ldr r3, [r3, #4] - 8004dec: f5b3 2fa0 cmp.w r3, #327680 @ 0x50000 - 8004df0: d10c bne.n 8004e0c - 8004df2: 4b70 ldr r3, [pc, #448] @ (8004fb4 ) - 8004df4: 681b ldr r3, [r3, #0] - 8004df6: 4a6f ldr r2, [pc, #444] @ (8004fb4 ) - 8004df8: f443 2380 orr.w r3, r3, #262144 @ 0x40000 - 8004dfc: 6013 str r3, [r2, #0] - 8004dfe: 4b6d ldr r3, [pc, #436] @ (8004fb4 ) - 8004e00: 681b ldr r3, [r3, #0] - 8004e02: 4a6c ldr r2, [pc, #432] @ (8004fb4 ) - 8004e04: f443 3380 orr.w r3, r3, #65536 @ 0x10000 - 8004e08: 6013 str r3, [r2, #0] - 8004e0a: e00b b.n 8004e24 - 8004e0c: 4b69 ldr r3, [pc, #420] @ (8004fb4 ) - 8004e0e: 681b ldr r3, [r3, #0] - 8004e10: 4a68 ldr r2, [pc, #416] @ (8004fb4 ) - 8004e12: f423 3380 bic.w r3, r3, #65536 @ 0x10000 - 8004e16: 6013 str r3, [r2, #0] - 8004e18: 4b66 ldr r3, [pc, #408] @ (8004fb4 ) - 8004e1a: 681b ldr r3, [r3, #0] - 8004e1c: 4a65 ldr r2, [pc, #404] @ (8004fb4 ) - 8004e1e: f423 2380 bic.w r3, r3, #262144 @ 0x40000 - 8004e22: 6013 str r3, [r2, #0] - - /* Check the HSE State */ - if((RCC_OscInitStruct->HSEState) != RCC_HSE_OFF) - 8004e24: 687b ldr r3, [r7, #4] - 8004e26: 685b ldr r3, [r3, #4] - 8004e28: 2b00 cmp r3, #0 - 8004e2a: d013 beq.n 8004e54 - { - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 8004e2c: f7fe f892 bl 8002f54 - 8004e30: 6138 str r0, [r7, #16] - - /* Wait till HSE is ready */ - while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) - 8004e32: e008 b.n 8004e46 - { - if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE) - 8004e34: f7fe f88e bl 8002f54 - 8004e38: 4602 mov r2, r0 - 8004e3a: 693b ldr r3, [r7, #16] - 8004e3c: 1ad3 subs r3, r2, r3 - 8004e3e: 2b64 cmp r3, #100 @ 0x64 - 8004e40: d901 bls.n 8004e46 - { - return HAL_TIMEOUT; - 8004e42: 2303 movs r3, #3 - 8004e44: e207 b.n 8005256 - while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) - 8004e46: 4b5b ldr r3, [pc, #364] @ (8004fb4 ) - 8004e48: 681b ldr r3, [r3, #0] - 8004e4a: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 8004e4e: 2b00 cmp r3, #0 - 8004e50: d0f0 beq.n 8004e34 - 8004e52: e014 b.n 8004e7e - } - } - else - { - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 8004e54: f7fe f87e bl 8002f54 - 8004e58: 6138 str r0, [r7, #16] - - /* Wait till HSE is bypassed or disabled */ - while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) - 8004e5a: e008 b.n 8004e6e - { - if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE) - 8004e5c: f7fe f87a bl 8002f54 - 8004e60: 4602 mov r2, r0 - 8004e62: 693b ldr r3, [r7, #16] - 8004e64: 1ad3 subs r3, r2, r3 - 8004e66: 2b64 cmp r3, #100 @ 0x64 - 8004e68: d901 bls.n 8004e6e - { - return HAL_TIMEOUT; - 8004e6a: 2303 movs r3, #3 - 8004e6c: e1f3 b.n 8005256 - while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) - 8004e6e: 4b51 ldr r3, [pc, #324] @ (8004fb4 ) - 8004e70: 681b ldr r3, [r3, #0] - 8004e72: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 8004e76: 2b00 cmp r3, #0 - 8004e78: d1f0 bne.n 8004e5c - 8004e7a: e000 b.n 8004e7e - if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) - 8004e7c: bf00 nop - } - } - } - } - /*----------------------------- HSI Configuration --------------------------*/ - if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) - 8004e7e: 687b ldr r3, [r7, #4] - 8004e80: 681b ldr r3, [r3, #0] - 8004e82: f003 0302 and.w r3, r3, #2 - 8004e86: 2b00 cmp r3, #0 - 8004e88: d063 beq.n 8004f52 - /* Check the parameters */ - assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState)); - assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue)); - - /* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */ - if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_HSI) ||\ - 8004e8a: 4b4a ldr r3, [pc, #296] @ (8004fb4 ) - 8004e8c: 689b ldr r3, [r3, #8] - 8004e8e: f003 030c and.w r3, r3, #12 - 8004e92: 2b00 cmp r3, #0 - 8004e94: d00b beq.n 8004eae - ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLL) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSI))) - 8004e96: 4b47 ldr r3, [pc, #284] @ (8004fb4 ) - 8004e98: 689b ldr r3, [r3, #8] - 8004e9a: f003 030c and.w r3, r3, #12 - if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_HSI) ||\ - 8004e9e: 2b08 cmp r3, #8 - 8004ea0: d11c bne.n 8004edc - ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLL) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSI))) - 8004ea2: 4b44 ldr r3, [pc, #272] @ (8004fb4 ) - 8004ea4: 685b ldr r3, [r3, #4] - 8004ea6: f403 0380 and.w r3, r3, #4194304 @ 0x400000 - 8004eaa: 2b00 cmp r3, #0 - 8004eac: d116 bne.n 8004edc - { - /* When HSI is used as system clock it will not disabled */ - if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) - 8004eae: 4b41 ldr r3, [pc, #260] @ (8004fb4 ) - 8004eb0: 681b ldr r3, [r3, #0] - 8004eb2: f003 0302 and.w r3, r3, #2 - 8004eb6: 2b00 cmp r3, #0 - 8004eb8: d005 beq.n 8004ec6 - 8004eba: 687b ldr r3, [r7, #4] - 8004ebc: 68db ldr r3, [r3, #12] - 8004ebe: 2b01 cmp r3, #1 - 8004ec0: d001 beq.n 8004ec6 - { - return HAL_ERROR; - 8004ec2: 2301 movs r3, #1 - 8004ec4: e1c7 b.n 8005256 - } - /* Otherwise, just the calibration is allowed */ - else - { - /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ - __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); - 8004ec6: 4b3b ldr r3, [pc, #236] @ (8004fb4 ) - 8004ec8: 681b ldr r3, [r3, #0] - 8004eca: f023 02f8 bic.w r2, r3, #248 @ 0xf8 - 8004ece: 687b ldr r3, [r7, #4] - 8004ed0: 691b ldr r3, [r3, #16] - 8004ed2: 00db lsls r3, r3, #3 - 8004ed4: 4937 ldr r1, [pc, #220] @ (8004fb4 ) - 8004ed6: 4313 orrs r3, r2 - 8004ed8: 600b str r3, [r1, #0] - if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) - 8004eda: e03a b.n 8004f52 - } - } - else - { - /* Check the HSI State */ - if((RCC_OscInitStruct->HSIState)!= RCC_HSI_OFF) - 8004edc: 687b ldr r3, [r7, #4] - 8004ede: 68db ldr r3, [r3, #12] - 8004ee0: 2b00 cmp r3, #0 - 8004ee2: d020 beq.n 8004f26 - { - /* Enable the Internal High Speed oscillator (HSI). */ - __HAL_RCC_HSI_ENABLE(); - 8004ee4: 4b34 ldr r3, [pc, #208] @ (8004fb8 ) - 8004ee6: 2201 movs r2, #1 - 8004ee8: 601a str r2, [r3, #0] - - /* Get Start Tick*/ - tickstart = HAL_GetTick(); - 8004eea: f7fe f833 bl 8002f54 - 8004eee: 6138 str r0, [r7, #16] - - /* Wait till HSI is ready */ - while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) - 8004ef0: e008 b.n 8004f04 - { - if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) - 8004ef2: f7fe f82f bl 8002f54 - 8004ef6: 4602 mov r2, r0 - 8004ef8: 693b ldr r3, [r7, #16] - 8004efa: 1ad3 subs r3, r2, r3 - 8004efc: 2b02 cmp r3, #2 - 8004efe: d901 bls.n 8004f04 - { - return HAL_TIMEOUT; - 8004f00: 2303 movs r3, #3 - 8004f02: e1a8 b.n 8005256 - while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) - 8004f04: 4b2b ldr r3, [pc, #172] @ (8004fb4 ) - 8004f06: 681b ldr r3, [r3, #0] - 8004f08: f003 0302 and.w r3, r3, #2 - 8004f0c: 2b00 cmp r3, #0 - 8004f0e: d0f0 beq.n 8004ef2 - } - } - - /* Adjusts the Internal High Speed oscillator (HSI) calibration value. */ - __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); - 8004f10: 4b28 ldr r3, [pc, #160] @ (8004fb4 ) - 8004f12: 681b ldr r3, [r3, #0] - 8004f14: f023 02f8 bic.w r2, r3, #248 @ 0xf8 - 8004f18: 687b ldr r3, [r7, #4] - 8004f1a: 691b ldr r3, [r3, #16] - 8004f1c: 00db lsls r3, r3, #3 - 8004f1e: 4925 ldr r1, [pc, #148] @ (8004fb4 ) - 8004f20: 4313 orrs r3, r2 - 8004f22: 600b str r3, [r1, #0] - 8004f24: e015 b.n 8004f52 - } - else - { - /* Disable the Internal High Speed oscillator (HSI). */ - __HAL_RCC_HSI_DISABLE(); - 8004f26: 4b24 ldr r3, [pc, #144] @ (8004fb8 ) - 8004f28: 2200 movs r2, #0 - 8004f2a: 601a str r2, [r3, #0] - - /* Get Start Tick*/ - tickstart = HAL_GetTick(); - 8004f2c: f7fe f812 bl 8002f54 - 8004f30: 6138 str r0, [r7, #16] - - /* Wait till HSI is ready */ - while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) - 8004f32: e008 b.n 8004f46 - { - if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) - 8004f34: f7fe f80e bl 8002f54 - 8004f38: 4602 mov r2, r0 - 8004f3a: 693b ldr r3, [r7, #16] - 8004f3c: 1ad3 subs r3, r2, r3 - 8004f3e: 2b02 cmp r3, #2 - 8004f40: d901 bls.n 8004f46 - { - return HAL_TIMEOUT; - 8004f42: 2303 movs r3, #3 - 8004f44: e187 b.n 8005256 - while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) - 8004f46: 4b1b ldr r3, [pc, #108] @ (8004fb4 ) - 8004f48: 681b ldr r3, [r3, #0] - 8004f4a: f003 0302 and.w r3, r3, #2 - 8004f4e: 2b00 cmp r3, #0 - 8004f50: d1f0 bne.n 8004f34 - } - } - } - } - /*------------------------------ LSI Configuration -------------------------*/ - if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) - 8004f52: 687b ldr r3, [r7, #4] - 8004f54: 681b ldr r3, [r3, #0] - 8004f56: f003 0308 and.w r3, r3, #8 - 8004f5a: 2b00 cmp r3, #0 - 8004f5c: d036 beq.n 8004fcc - { - /* Check the parameters */ - assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState)); - - /* Check the LSI State */ - if((RCC_OscInitStruct->LSIState)!= RCC_LSI_OFF) - 8004f5e: 687b ldr r3, [r7, #4] - 8004f60: 695b ldr r3, [r3, #20] - 8004f62: 2b00 cmp r3, #0 - 8004f64: d016 beq.n 8004f94 - { - /* Enable the Internal Low Speed oscillator (LSI). */ - __HAL_RCC_LSI_ENABLE(); - 8004f66: 4b15 ldr r3, [pc, #84] @ (8004fbc ) - 8004f68: 2201 movs r2, #1 - 8004f6a: 601a str r2, [r3, #0] - - /* Get Start Tick*/ - tickstart = HAL_GetTick(); - 8004f6c: f7fd fff2 bl 8002f54 - 8004f70: 6138 str r0, [r7, #16] - - /* Wait till LSI is ready */ - while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET) - 8004f72: e008 b.n 8004f86 - { - if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE) - 8004f74: f7fd ffee bl 8002f54 - 8004f78: 4602 mov r2, r0 - 8004f7a: 693b ldr r3, [r7, #16] - 8004f7c: 1ad3 subs r3, r2, r3 - 8004f7e: 2b02 cmp r3, #2 - 8004f80: d901 bls.n 8004f86 - { - return HAL_TIMEOUT; - 8004f82: 2303 movs r3, #3 - 8004f84: e167 b.n 8005256 - while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET) - 8004f86: 4b0b ldr r3, [pc, #44] @ (8004fb4 ) - 8004f88: 6f5b ldr r3, [r3, #116] @ 0x74 - 8004f8a: f003 0302 and.w r3, r3, #2 - 8004f8e: 2b00 cmp r3, #0 - 8004f90: d0f0 beq.n 8004f74 - 8004f92: e01b b.n 8004fcc - } - } - else - { - /* Disable the Internal Low Speed oscillator (LSI). */ - __HAL_RCC_LSI_DISABLE(); - 8004f94: 4b09 ldr r3, [pc, #36] @ (8004fbc ) - 8004f96: 2200 movs r2, #0 - 8004f98: 601a str r2, [r3, #0] - - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 8004f9a: f7fd ffdb bl 8002f54 - 8004f9e: 6138 str r0, [r7, #16] - - /* Wait till LSI is ready */ - while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET) - 8004fa0: e00e b.n 8004fc0 - { - if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE) - 8004fa2: f7fd ffd7 bl 8002f54 - 8004fa6: 4602 mov r2, r0 - 8004fa8: 693b ldr r3, [r7, #16] - 8004faa: 1ad3 subs r3, r2, r3 - 8004fac: 2b02 cmp r3, #2 - 8004fae: d907 bls.n 8004fc0 - { - return HAL_TIMEOUT; - 8004fb0: 2303 movs r3, #3 - 8004fb2: e150 b.n 8005256 - 8004fb4: 40023800 .word 0x40023800 - 8004fb8: 42470000 .word 0x42470000 - 8004fbc: 42470e80 .word 0x42470e80 - while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET) - 8004fc0: 4b88 ldr r3, [pc, #544] @ (80051e4 ) - 8004fc2: 6f5b ldr r3, [r3, #116] @ 0x74 - 8004fc4: f003 0302 and.w r3, r3, #2 - 8004fc8: 2b00 cmp r3, #0 - 8004fca: d1ea bne.n 8004fa2 - } - } - } - } - /*------------------------------ LSE Configuration -------------------------*/ - if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) - 8004fcc: 687b ldr r3, [r7, #4] - 8004fce: 681b ldr r3, [r3, #0] - 8004fd0: f003 0304 and.w r3, r3, #4 - 8004fd4: 2b00 cmp r3, #0 - 8004fd6: f000 8097 beq.w 8005108 - { - FlagStatus pwrclkchanged = RESET; - 8004fda: 2300 movs r3, #0 - 8004fdc: 75fb strb r3, [r7, #23] - /* Check the parameters */ - assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState)); - - /* Update LSE configuration in Backup Domain control register */ - /* Requires to enable write access to Backup Domain of necessary */ - if(__HAL_RCC_PWR_IS_CLK_DISABLED()) - 8004fde: 4b81 ldr r3, [pc, #516] @ (80051e4 ) - 8004fe0: 6c1b ldr r3, [r3, #64] @ 0x40 - 8004fe2: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 8004fe6: 2b00 cmp r3, #0 - 8004fe8: d10f bne.n 800500a - { - __HAL_RCC_PWR_CLK_ENABLE(); - 8004fea: 2300 movs r3, #0 - 8004fec: 60bb str r3, [r7, #8] - 8004fee: 4b7d ldr r3, [pc, #500] @ (80051e4 ) - 8004ff0: 6c1b ldr r3, [r3, #64] @ 0x40 - 8004ff2: 4a7c ldr r2, [pc, #496] @ (80051e4 ) - 8004ff4: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 - 8004ff8: 6413 str r3, [r2, #64] @ 0x40 - 8004ffa: 4b7a ldr r3, [pc, #488] @ (80051e4 ) - 8004ffc: 6c1b ldr r3, [r3, #64] @ 0x40 - 8004ffe: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 8005002: 60bb str r3, [r7, #8] - 8005004: 68bb ldr r3, [r7, #8] - pwrclkchanged = SET; - 8005006: 2301 movs r3, #1 - 8005008: 75fb strb r3, [r7, #23] - } - - if(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 800500a: 4b77 ldr r3, [pc, #476] @ (80051e8 ) - 800500c: 681b ldr r3, [r3, #0] - 800500e: f403 7380 and.w r3, r3, #256 @ 0x100 - 8005012: 2b00 cmp r3, #0 - 8005014: d118 bne.n 8005048 - { - /* Enable write access to Backup domain */ - SET_BIT(PWR->CR, PWR_CR_DBP); - 8005016: 4b74 ldr r3, [pc, #464] @ (80051e8 ) - 8005018: 681b ldr r3, [r3, #0] - 800501a: 4a73 ldr r2, [pc, #460] @ (80051e8 ) - 800501c: f443 7380 orr.w r3, r3, #256 @ 0x100 - 8005020: 6013 str r3, [r2, #0] - - /* Wait for Backup domain Write protection disable */ - tickstart = HAL_GetTick(); - 8005022: f7fd ff97 bl 8002f54 - 8005026: 6138 str r0, [r7, #16] - - while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 8005028: e008 b.n 800503c - { - if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) - 800502a: f7fd ff93 bl 8002f54 - 800502e: 4602 mov r2, r0 - 8005030: 693b ldr r3, [r7, #16] - 8005032: 1ad3 subs r3, r2, r3 - 8005034: 2b02 cmp r3, #2 - 8005036: d901 bls.n 800503c - { - return HAL_TIMEOUT; - 8005038: 2303 movs r3, #3 - 800503a: e10c b.n 8005256 - while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 800503c: 4b6a ldr r3, [pc, #424] @ (80051e8 ) - 800503e: 681b ldr r3, [r3, #0] - 8005040: f403 7380 and.w r3, r3, #256 @ 0x100 - 8005044: 2b00 cmp r3, #0 - 8005046: d0f0 beq.n 800502a - } - } - } - - /* Set the new LSE configuration -----------------------------------------*/ - __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState); - 8005048: 687b ldr r3, [r7, #4] - 800504a: 689b ldr r3, [r3, #8] - 800504c: 2b01 cmp r3, #1 - 800504e: d106 bne.n 800505e - 8005050: 4b64 ldr r3, [pc, #400] @ (80051e4 ) - 8005052: 6f1b ldr r3, [r3, #112] @ 0x70 - 8005054: 4a63 ldr r2, [pc, #396] @ (80051e4 ) - 8005056: f043 0301 orr.w r3, r3, #1 - 800505a: 6713 str r3, [r2, #112] @ 0x70 - 800505c: e01c b.n 8005098 - 800505e: 687b ldr r3, [r7, #4] - 8005060: 689b ldr r3, [r3, #8] - 8005062: 2b05 cmp r3, #5 - 8005064: d10c bne.n 8005080 - 8005066: 4b5f ldr r3, [pc, #380] @ (80051e4 ) - 8005068: 6f1b ldr r3, [r3, #112] @ 0x70 - 800506a: 4a5e ldr r2, [pc, #376] @ (80051e4 ) - 800506c: f043 0304 orr.w r3, r3, #4 - 8005070: 6713 str r3, [r2, #112] @ 0x70 - 8005072: 4b5c ldr r3, [pc, #368] @ (80051e4 ) - 8005074: 6f1b ldr r3, [r3, #112] @ 0x70 - 8005076: 4a5b ldr r2, [pc, #364] @ (80051e4 ) - 8005078: f043 0301 orr.w r3, r3, #1 - 800507c: 6713 str r3, [r2, #112] @ 0x70 - 800507e: e00b b.n 8005098 - 8005080: 4b58 ldr r3, [pc, #352] @ (80051e4 ) - 8005082: 6f1b ldr r3, [r3, #112] @ 0x70 - 8005084: 4a57 ldr r2, [pc, #348] @ (80051e4 ) - 8005086: f023 0301 bic.w r3, r3, #1 - 800508a: 6713 str r3, [r2, #112] @ 0x70 - 800508c: 4b55 ldr r3, [pc, #340] @ (80051e4 ) - 800508e: 6f1b ldr r3, [r3, #112] @ 0x70 - 8005090: 4a54 ldr r2, [pc, #336] @ (80051e4 ) - 8005092: f023 0304 bic.w r3, r3, #4 - 8005096: 6713 str r3, [r2, #112] @ 0x70 - /* Check the LSE State */ - if((RCC_OscInitStruct->LSEState) != RCC_LSE_OFF) - 8005098: 687b ldr r3, [r7, #4] - 800509a: 689b ldr r3, [r3, #8] - 800509c: 2b00 cmp r3, #0 - 800509e: d015 beq.n 80050cc - { - /* Get Start Tick*/ - tickstart = HAL_GetTick(); - 80050a0: f7fd ff58 bl 8002f54 - 80050a4: 6138 str r0, [r7, #16] - - /* Wait till LSE is ready */ - while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) - 80050a6: e00a b.n 80050be - { - if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) - 80050a8: f7fd ff54 bl 8002f54 - 80050ac: 4602 mov r2, r0 - 80050ae: 693b ldr r3, [r7, #16] - 80050b0: 1ad3 subs r3, r2, r3 - 80050b2: f241 3288 movw r2, #5000 @ 0x1388 - 80050b6: 4293 cmp r3, r2 - 80050b8: d901 bls.n 80050be - { - return HAL_TIMEOUT; - 80050ba: 2303 movs r3, #3 - 80050bc: e0cb b.n 8005256 - while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) - 80050be: 4b49 ldr r3, [pc, #292] @ (80051e4 ) - 80050c0: 6f1b ldr r3, [r3, #112] @ 0x70 - 80050c2: f003 0302 and.w r3, r3, #2 - 80050c6: 2b00 cmp r3, #0 - 80050c8: d0ee beq.n 80050a8 - 80050ca: e014 b.n 80050f6 - } - } - else - { - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 80050cc: f7fd ff42 bl 8002f54 - 80050d0: 6138 str r0, [r7, #16] - - /* Wait till LSE is ready */ - while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET) - 80050d2: e00a b.n 80050ea - { - if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) - 80050d4: f7fd ff3e bl 8002f54 - 80050d8: 4602 mov r2, r0 - 80050da: 693b ldr r3, [r7, #16] - 80050dc: 1ad3 subs r3, r2, r3 - 80050de: f241 3288 movw r2, #5000 @ 0x1388 - 80050e2: 4293 cmp r3, r2 - 80050e4: d901 bls.n 80050ea - { - return HAL_TIMEOUT; - 80050e6: 2303 movs r3, #3 - 80050e8: e0b5 b.n 8005256 - while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET) - 80050ea: 4b3e ldr r3, [pc, #248] @ (80051e4 ) - 80050ec: 6f1b ldr r3, [r3, #112] @ 0x70 - 80050ee: f003 0302 and.w r3, r3, #2 - 80050f2: 2b00 cmp r3, #0 - 80050f4: d1ee bne.n 80050d4 - } - } - } - - /* Restore clock configuration if changed */ - if(pwrclkchanged == SET) - 80050f6: 7dfb ldrb r3, [r7, #23] - 80050f8: 2b01 cmp r3, #1 - 80050fa: d105 bne.n 8005108 - { - __HAL_RCC_PWR_CLK_DISABLE(); - 80050fc: 4b39 ldr r3, [pc, #228] @ (80051e4 ) - 80050fe: 6c1b ldr r3, [r3, #64] @ 0x40 - 8005100: 4a38 ldr r2, [pc, #224] @ (80051e4 ) - 8005102: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 - 8005106: 6413 str r3, [r2, #64] @ 0x40 - } - } - /*-------------------------------- PLL Configuration -----------------------*/ - /* Check the parameters */ - assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState)); - if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE) - 8005108: 687b ldr r3, [r7, #4] - 800510a: 699b ldr r3, [r3, #24] - 800510c: 2b00 cmp r3, #0 - 800510e: f000 80a1 beq.w 8005254 - { - /* Check if the PLL is used as system clock or not */ - if(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_CFGR_SWS_PLL) - 8005112: 4b34 ldr r3, [pc, #208] @ (80051e4 ) - 8005114: 689b ldr r3, [r3, #8] - 8005116: f003 030c and.w r3, r3, #12 - 800511a: 2b08 cmp r3, #8 - 800511c: d05c beq.n 80051d8 - { - if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON) - 800511e: 687b ldr r3, [r7, #4] - 8005120: 699b ldr r3, [r3, #24] - 8005122: 2b02 cmp r3, #2 - 8005124: d141 bne.n 80051aa - assert_param(IS_RCC_PLLN_VALUE(RCC_OscInitStruct->PLL.PLLN)); - assert_param(IS_RCC_PLLP_VALUE(RCC_OscInitStruct->PLL.PLLP)); - assert_param(IS_RCC_PLLQ_VALUE(RCC_OscInitStruct->PLL.PLLQ)); - - /* Disable the main PLL. */ - __HAL_RCC_PLL_DISABLE(); - 8005126: 4b31 ldr r3, [pc, #196] @ (80051ec ) - 8005128: 2200 movs r2, #0 - 800512a: 601a str r2, [r3, #0] - - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 800512c: f7fd ff12 bl 8002f54 - 8005130: 6138 str r0, [r7, #16] - - /* Wait till PLL is ready */ - while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) - 8005132: e008 b.n 8005146 - { - if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) - 8005134: f7fd ff0e bl 8002f54 - 8005138: 4602 mov r2, r0 - 800513a: 693b ldr r3, [r7, #16] - 800513c: 1ad3 subs r3, r2, r3 - 800513e: 2b02 cmp r3, #2 - 8005140: d901 bls.n 8005146 - { - return HAL_TIMEOUT; - 8005142: 2303 movs r3, #3 - 8005144: e087 b.n 8005256 - while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) - 8005146: 4b27 ldr r3, [pc, #156] @ (80051e4 ) - 8005148: 681b ldr r3, [r3, #0] - 800514a: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 - 800514e: 2b00 cmp r3, #0 - 8005150: d1f0 bne.n 8005134 - } - } - - /* Configure the main PLL clock source, multiplication and division factors. */ - WRITE_REG(RCC->PLLCFGR, (RCC_OscInitStruct->PLL.PLLSource | \ - 8005152: 687b ldr r3, [r7, #4] - 8005154: 69da ldr r2, [r3, #28] - 8005156: 687b ldr r3, [r7, #4] - 8005158: 6a1b ldr r3, [r3, #32] - 800515a: 431a orrs r2, r3 - 800515c: 687b ldr r3, [r7, #4] - 800515e: 6a5b ldr r3, [r3, #36] @ 0x24 - 8005160: 019b lsls r3, r3, #6 - 8005162: 431a orrs r2, r3 - 8005164: 687b ldr r3, [r7, #4] - 8005166: 6a9b ldr r3, [r3, #40] @ 0x28 - 8005168: 085b lsrs r3, r3, #1 - 800516a: 3b01 subs r3, #1 - 800516c: 041b lsls r3, r3, #16 - 800516e: 431a orrs r2, r3 - 8005170: 687b ldr r3, [r7, #4] - 8005172: 6adb ldr r3, [r3, #44] @ 0x2c - 8005174: 061b lsls r3, r3, #24 - 8005176: 491b ldr r1, [pc, #108] @ (80051e4 ) - 8005178: 4313 orrs r3, r2 - 800517a: 604b str r3, [r1, #4] - RCC_OscInitStruct->PLL.PLLM | \ - (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PLLN_Pos) | \ - (((RCC_OscInitStruct->PLL.PLLP >> 1U) - 1U) << RCC_PLLCFGR_PLLP_Pos) | \ - (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PLLQ_Pos))); - /* Enable the main PLL. */ - __HAL_RCC_PLL_ENABLE(); - 800517c: 4b1b ldr r3, [pc, #108] @ (80051ec ) - 800517e: 2201 movs r2, #1 - 8005180: 601a str r2, [r3, #0] - - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 8005182: f7fd fee7 bl 8002f54 - 8005186: 6138 str r0, [r7, #16] - - /* Wait till PLL is ready */ - while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) - 8005188: e008 b.n 800519c - { - if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) - 800518a: f7fd fee3 bl 8002f54 - 800518e: 4602 mov r2, r0 - 8005190: 693b ldr r3, [r7, #16] - 8005192: 1ad3 subs r3, r2, r3 - 8005194: 2b02 cmp r3, #2 - 8005196: d901 bls.n 800519c - { - return HAL_TIMEOUT; - 8005198: 2303 movs r3, #3 - 800519a: e05c b.n 8005256 - while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) - 800519c: 4b11 ldr r3, [pc, #68] @ (80051e4 ) - 800519e: 681b ldr r3, [r3, #0] - 80051a0: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 - 80051a4: 2b00 cmp r3, #0 - 80051a6: d0f0 beq.n 800518a - 80051a8: e054 b.n 8005254 - } - } - else - { - /* Disable the main PLL. */ - __HAL_RCC_PLL_DISABLE(); - 80051aa: 4b10 ldr r3, [pc, #64] @ (80051ec ) - 80051ac: 2200 movs r2, #0 - 80051ae: 601a str r2, [r3, #0] - - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 80051b0: f7fd fed0 bl 8002f54 - 80051b4: 6138 str r0, [r7, #16] - - /* Wait till PLL is ready */ - while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) - 80051b6: e008 b.n 80051ca - { - if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) - 80051b8: f7fd fecc bl 8002f54 - 80051bc: 4602 mov r2, r0 - 80051be: 693b ldr r3, [r7, #16] - 80051c0: 1ad3 subs r3, r2, r3 - 80051c2: 2b02 cmp r3, #2 - 80051c4: d901 bls.n 80051ca - { - return HAL_TIMEOUT; - 80051c6: 2303 movs r3, #3 - 80051c8: e045 b.n 8005256 - while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) - 80051ca: 4b06 ldr r3, [pc, #24] @ (80051e4 ) - 80051cc: 681b ldr r3, [r3, #0] - 80051ce: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 - 80051d2: 2b00 cmp r3, #0 - 80051d4: d1f0 bne.n 80051b8 - 80051d6: e03d b.n 8005254 - } - } - else - { - /* Check if there is a request to disable the PLL used as System clock source */ - if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) - 80051d8: 687b ldr r3, [r7, #4] - 80051da: 699b ldr r3, [r3, #24] - 80051dc: 2b01 cmp r3, #1 - 80051de: d107 bne.n 80051f0 - { - return HAL_ERROR; - 80051e0: 2301 movs r3, #1 - 80051e2: e038 b.n 8005256 - 80051e4: 40023800 .word 0x40023800 - 80051e8: 40007000 .word 0x40007000 - 80051ec: 42470060 .word 0x42470060 - } - else - { - /* Do not return HAL_ERROR if request repeats the current configuration */ - pll_config = RCC->PLLCFGR; - 80051f0: 4b1b ldr r3, [pc, #108] @ (8005260 ) - 80051f2: 685b ldr r3, [r3, #4] - 80051f4: 60fb str r3, [r7, #12] - (READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN) << RCC_PLLCFGR_PLLN_Pos) || - (READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != (((RCC_OscInitStruct->PLL.PLLP >> 1U) - 1U)) << RCC_PLLCFGR_PLLP_Pos) || - (READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PLLQ_Pos)) || - (READ_BIT(pll_config, RCC_PLLCFGR_PLLR) != (RCC_OscInitStruct->PLL.PLLR << RCC_PLLCFGR_PLLR_Pos))) -#else - if (((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) || - 80051f6: 687b ldr r3, [r7, #4] - 80051f8: 699b ldr r3, [r3, #24] - 80051fa: 2b01 cmp r3, #1 - 80051fc: d028 beq.n 8005250 - (READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || - 80051fe: 68fb ldr r3, [r7, #12] - 8005200: f403 0280 and.w r2, r3, #4194304 @ 0x400000 - 8005204: 687b ldr r3, [r7, #4] - 8005206: 69db ldr r3, [r3, #28] - if (((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) || - 8005208: 429a cmp r2, r3 - 800520a: d121 bne.n 8005250 - (READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != (RCC_OscInitStruct->PLL.PLLM) << RCC_PLLCFGR_PLLM_Pos) || - 800520c: 68fb ldr r3, [r7, #12] - 800520e: f003 023f and.w r2, r3, #63 @ 0x3f - 8005212: 687b ldr r3, [r7, #4] - 8005214: 6a1b ldr r3, [r3, #32] - (READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || - 8005216: 429a cmp r2, r3 - 8005218: d11a bne.n 8005250 - (READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN) << RCC_PLLCFGR_PLLN_Pos) || - 800521a: 68fa ldr r2, [r7, #12] - 800521c: f647 73c0 movw r3, #32704 @ 0x7fc0 - 8005220: 4013 ands r3, r2 - 8005222: 687a ldr r2, [r7, #4] - 8005224: 6a52 ldr r2, [r2, #36] @ 0x24 - 8005226: 0192 lsls r2, r2, #6 - (READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != (RCC_OscInitStruct->PLL.PLLM) << RCC_PLLCFGR_PLLM_Pos) || - 8005228: 4293 cmp r3, r2 - 800522a: d111 bne.n 8005250 - (READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != (((RCC_OscInitStruct->PLL.PLLP >> 1U) - 1U)) << RCC_PLLCFGR_PLLP_Pos) || - 800522c: 68fb ldr r3, [r7, #12] - 800522e: f403 3240 and.w r2, r3, #196608 @ 0x30000 - 8005232: 687b ldr r3, [r7, #4] - 8005234: 6a9b ldr r3, [r3, #40] @ 0x28 - 8005236: 085b lsrs r3, r3, #1 - 8005238: 3b01 subs r3, #1 - 800523a: 041b lsls r3, r3, #16 - (READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN) << RCC_PLLCFGR_PLLN_Pos) || - 800523c: 429a cmp r2, r3 - 800523e: d107 bne.n 8005250 - (READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PLLQ_Pos))) - 8005240: 68fb ldr r3, [r7, #12] - 8005242: f003 6270 and.w r2, r3, #251658240 @ 0xf000000 - 8005246: 687b ldr r3, [r7, #4] - 8005248: 6adb ldr r3, [r3, #44] @ 0x2c - 800524a: 061b lsls r3, r3, #24 - (READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != (((RCC_OscInitStruct->PLL.PLLP >> 1U) - 1U)) << RCC_PLLCFGR_PLLP_Pos) || - 800524c: 429a cmp r2, r3 - 800524e: d001 beq.n 8005254 -#endif - { - return HAL_ERROR; - 8005250: 2301 movs r3, #1 - 8005252: e000 b.n 8005256 - } - } - } - } - return HAL_OK; - 8005254: 2300 movs r3, #0 -} - 8005256: 4618 mov r0, r3 - 8005258: 3718 adds r7, #24 - 800525a: 46bd mov sp, r7 - 800525c: bd80 pop {r7, pc} - 800525e: bf00 nop - 8005260: 40023800 .word 0x40023800 - -08005264 : - * HPRE[3:0] bits to ensure that HCLK not exceed the maximum allowed frequency - * (for more details refer to section above "Initialization/de-initialization functions") - * @retval None - */ -HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency) -{ - 8005264: b580 push {r7, lr} - 8005266: b084 sub sp, #16 - 8005268: af00 add r7, sp, #0 - 800526a: 6078 str r0, [r7, #4] - 800526c: 6039 str r1, [r7, #0] - uint32_t tickstart; - - /* Check Null pointer */ - if(RCC_ClkInitStruct == NULL) - 800526e: 687b ldr r3, [r7, #4] - 8005270: 2b00 cmp r3, #0 - 8005272: d101 bne.n 8005278 - { - return HAL_ERROR; - 8005274: 2301 movs r3, #1 - 8005276: e0cc b.n 8005412 - /* To correctly read data from FLASH memory, the number of wait states (LATENCY) - must be correctly programmed according to the frequency of the CPU clock - (HCLK) and the supply voltage of the device. */ - - /* Increasing the number of wait states because of higher CPU frequency */ - if(FLatency > __HAL_FLASH_GET_LATENCY()) - 8005278: 4b68 ldr r3, [pc, #416] @ (800541c ) - 800527a: 681b ldr r3, [r3, #0] - 800527c: f003 030f and.w r3, r3, #15 - 8005280: 683a ldr r2, [r7, #0] - 8005282: 429a cmp r2, r3 - 8005284: d90c bls.n 80052a0 - { - /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ - __HAL_FLASH_SET_LATENCY(FLatency); - 8005286: 4b65 ldr r3, [pc, #404] @ (800541c ) - 8005288: 683a ldr r2, [r7, #0] - 800528a: b2d2 uxtb r2, r2 - 800528c: 701a strb r2, [r3, #0] - - /* Check that the new number of wait states is taken into account to access the Flash - memory by reading the FLASH_ACR register */ - if(__HAL_FLASH_GET_LATENCY() != FLatency) - 800528e: 4b63 ldr r3, [pc, #396] @ (800541c ) - 8005290: 681b ldr r3, [r3, #0] - 8005292: f003 030f and.w r3, r3, #15 - 8005296: 683a ldr r2, [r7, #0] - 8005298: 429a cmp r2, r3 - 800529a: d001 beq.n 80052a0 - { - return HAL_ERROR; - 800529c: 2301 movs r3, #1 - 800529e: e0b8 b.n 8005412 - } - } - - /*-------------------------- HCLK Configuration --------------------------*/ - if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) - 80052a0: 687b ldr r3, [r7, #4] - 80052a2: 681b ldr r3, [r3, #0] - 80052a4: f003 0302 and.w r3, r3, #2 - 80052a8: 2b00 cmp r3, #0 - 80052aa: d020 beq.n 80052ee - { - /* Set the highest APBx dividers in order to ensure that we do not go through - a non-spec phase whatever we decrease or increase HCLK. */ - if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) - 80052ac: 687b ldr r3, [r7, #4] - 80052ae: 681b ldr r3, [r3, #0] - 80052b0: f003 0304 and.w r3, r3, #4 - 80052b4: 2b00 cmp r3, #0 - 80052b6: d005 beq.n 80052c4 - { - MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_HCLK_DIV16); - 80052b8: 4b59 ldr r3, [pc, #356] @ (8005420 ) - 80052ba: 689b ldr r3, [r3, #8] - 80052bc: 4a58 ldr r2, [pc, #352] @ (8005420 ) - 80052be: f443 53e0 orr.w r3, r3, #7168 @ 0x1c00 - 80052c2: 6093 str r3, [r2, #8] - } - - if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) - 80052c4: 687b ldr r3, [r7, #4] - 80052c6: 681b ldr r3, [r3, #0] - 80052c8: f003 0308 and.w r3, r3, #8 - 80052cc: 2b00 cmp r3, #0 - 80052ce: d005 beq.n 80052dc - { - MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, (RCC_HCLK_DIV16 << 3)); - 80052d0: 4b53 ldr r3, [pc, #332] @ (8005420 ) - 80052d2: 689b ldr r3, [r3, #8] - 80052d4: 4a52 ldr r2, [pc, #328] @ (8005420 ) - 80052d6: f443 4360 orr.w r3, r3, #57344 @ 0xe000 - 80052da: 6093 str r3, [r2, #8] - } - - assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider)); - MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); - 80052dc: 4b50 ldr r3, [pc, #320] @ (8005420 ) - 80052de: 689b ldr r3, [r3, #8] - 80052e0: f023 02f0 bic.w r2, r3, #240 @ 0xf0 - 80052e4: 687b ldr r3, [r7, #4] - 80052e6: 689b ldr r3, [r3, #8] - 80052e8: 494d ldr r1, [pc, #308] @ (8005420 ) - 80052ea: 4313 orrs r3, r2 - 80052ec: 608b str r3, [r1, #8] - } - - /*------------------------- SYSCLK Configuration ---------------------------*/ - if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) - 80052ee: 687b ldr r3, [r7, #4] - 80052f0: 681b ldr r3, [r3, #0] - 80052f2: f003 0301 and.w r3, r3, #1 - 80052f6: 2b00 cmp r3, #0 - 80052f8: d044 beq.n 8005384 - { - assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource)); - - /* HSE is selected as System Clock Source */ - if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) - 80052fa: 687b ldr r3, [r7, #4] - 80052fc: 685b ldr r3, [r3, #4] - 80052fe: 2b01 cmp r3, #1 - 8005300: d107 bne.n 8005312 - { - /* Check the HSE ready flag */ - if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) - 8005302: 4b47 ldr r3, [pc, #284] @ (8005420 ) - 8005304: 681b ldr r3, [r3, #0] - 8005306: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 800530a: 2b00 cmp r3, #0 - 800530c: d119 bne.n 8005342 - { - return HAL_ERROR; - 800530e: 2301 movs r3, #1 - 8005310: e07f b.n 8005412 - } - } - /* PLL is selected as System Clock Source */ - else if((RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) || - 8005312: 687b ldr r3, [r7, #4] - 8005314: 685b ldr r3, [r3, #4] - 8005316: 2b02 cmp r3, #2 - 8005318: d003 beq.n 8005322 - (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLRCLK)) - 800531a: 687b ldr r3, [r7, #4] - 800531c: 685b ldr r3, [r3, #4] - else if((RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) || - 800531e: 2b03 cmp r3, #3 - 8005320: d107 bne.n 8005332 - { - /* Check the PLL ready flag */ - if(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) - 8005322: 4b3f ldr r3, [pc, #252] @ (8005420 ) - 8005324: 681b ldr r3, [r3, #0] - 8005326: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 - 800532a: 2b00 cmp r3, #0 - 800532c: d109 bne.n 8005342 - { - return HAL_ERROR; - 800532e: 2301 movs r3, #1 - 8005330: e06f b.n 8005412 - } - /* HSI is selected as System Clock Source */ - else - { - /* Check the HSI ready flag */ - if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) - 8005332: 4b3b ldr r3, [pc, #236] @ (8005420 ) - 8005334: 681b ldr r3, [r3, #0] - 8005336: f003 0302 and.w r3, r3, #2 - 800533a: 2b00 cmp r3, #0 - 800533c: d101 bne.n 8005342 - { - return HAL_ERROR; - 800533e: 2301 movs r3, #1 - 8005340: e067 b.n 8005412 - } - } - - __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource); - 8005342: 4b37 ldr r3, [pc, #220] @ (8005420 ) - 8005344: 689b ldr r3, [r3, #8] - 8005346: f023 0203 bic.w r2, r3, #3 - 800534a: 687b ldr r3, [r7, #4] - 800534c: 685b ldr r3, [r3, #4] - 800534e: 4934 ldr r1, [pc, #208] @ (8005420 ) - 8005350: 4313 orrs r3, r2 - 8005352: 608b str r3, [r1, #8] - - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 8005354: f7fd fdfe bl 8002f54 - 8005358: 60f8 str r0, [r7, #12] - - while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) - 800535a: e00a b.n 8005372 - { - if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) - 800535c: f7fd fdfa bl 8002f54 - 8005360: 4602 mov r2, r0 - 8005362: 68fb ldr r3, [r7, #12] - 8005364: 1ad3 subs r3, r2, r3 - 8005366: f241 3288 movw r2, #5000 @ 0x1388 - 800536a: 4293 cmp r3, r2 - 800536c: d901 bls.n 8005372 - { - return HAL_TIMEOUT; - 800536e: 2303 movs r3, #3 - 8005370: e04f b.n 8005412 - while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) - 8005372: 4b2b ldr r3, [pc, #172] @ (8005420 ) - 8005374: 689b ldr r3, [r3, #8] - 8005376: f003 020c and.w r2, r3, #12 - 800537a: 687b ldr r3, [r7, #4] - 800537c: 685b ldr r3, [r3, #4] - 800537e: 009b lsls r3, r3, #2 - 8005380: 429a cmp r2, r3 - 8005382: d1eb bne.n 800535c - } - } - } - - /* Decreasing the number of wait states because of lower CPU frequency */ - if(FLatency < __HAL_FLASH_GET_LATENCY()) - 8005384: 4b25 ldr r3, [pc, #148] @ (800541c ) - 8005386: 681b ldr r3, [r3, #0] - 8005388: f003 030f and.w r3, r3, #15 - 800538c: 683a ldr r2, [r7, #0] - 800538e: 429a cmp r2, r3 - 8005390: d20c bcs.n 80053ac - { - /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ - __HAL_FLASH_SET_LATENCY(FLatency); - 8005392: 4b22 ldr r3, [pc, #136] @ (800541c ) - 8005394: 683a ldr r2, [r7, #0] - 8005396: b2d2 uxtb r2, r2 - 8005398: 701a strb r2, [r3, #0] - - /* Check that the new number of wait states is taken into account to access the Flash - memory by reading the FLASH_ACR register */ - if(__HAL_FLASH_GET_LATENCY() != FLatency) - 800539a: 4b20 ldr r3, [pc, #128] @ (800541c ) - 800539c: 681b ldr r3, [r3, #0] - 800539e: f003 030f and.w r3, r3, #15 - 80053a2: 683a ldr r2, [r7, #0] - 80053a4: 429a cmp r2, r3 - 80053a6: d001 beq.n 80053ac - { - return HAL_ERROR; - 80053a8: 2301 movs r3, #1 - 80053aa: e032 b.n 8005412 - } - } - - /*-------------------------- PCLK1 Configuration ---------------------------*/ - if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) - 80053ac: 687b ldr r3, [r7, #4] - 80053ae: 681b ldr r3, [r3, #0] - 80053b0: f003 0304 and.w r3, r3, #4 - 80053b4: 2b00 cmp r3, #0 - 80053b6: d008 beq.n 80053ca - { - assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider)); - MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider); - 80053b8: 4b19 ldr r3, [pc, #100] @ (8005420 ) - 80053ba: 689b ldr r3, [r3, #8] - 80053bc: f423 52e0 bic.w r2, r3, #7168 @ 0x1c00 - 80053c0: 687b ldr r3, [r7, #4] - 80053c2: 68db ldr r3, [r3, #12] - 80053c4: 4916 ldr r1, [pc, #88] @ (8005420 ) - 80053c6: 4313 orrs r3, r2 - 80053c8: 608b str r3, [r1, #8] - } - - /*-------------------------- PCLK2 Configuration ---------------------------*/ - if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) - 80053ca: 687b ldr r3, [r7, #4] - 80053cc: 681b ldr r3, [r3, #0] - 80053ce: f003 0308 and.w r3, r3, #8 - 80053d2: 2b00 cmp r3, #0 - 80053d4: d009 beq.n 80053ea - { - assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider)); - MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3U)); - 80053d6: 4b12 ldr r3, [pc, #72] @ (8005420 ) - 80053d8: 689b ldr r3, [r3, #8] - 80053da: f423 4260 bic.w r2, r3, #57344 @ 0xe000 - 80053de: 687b ldr r3, [r7, #4] - 80053e0: 691b ldr r3, [r3, #16] - 80053e2: 00db lsls r3, r3, #3 - 80053e4: 490e ldr r1, [pc, #56] @ (8005420 ) - 80053e6: 4313 orrs r3, r2 - 80053e8: 608b str r3, [r1, #8] - } - - /* Update the SystemCoreClock global variable */ - SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE)>> RCC_CFGR_HPRE_Pos]; - 80053ea: f000 f821 bl 8005430 - 80053ee: 4602 mov r2, r0 - 80053f0: 4b0b ldr r3, [pc, #44] @ (8005420 ) - 80053f2: 689b ldr r3, [r3, #8] - 80053f4: 091b lsrs r3, r3, #4 - 80053f6: f003 030f and.w r3, r3, #15 - 80053fa: 490a ldr r1, [pc, #40] @ (8005424 ) - 80053fc: 5ccb ldrb r3, [r1, r3] - 80053fe: fa22 f303 lsr.w r3, r2, r3 - 8005402: 4a09 ldr r2, [pc, #36] @ (8005428 ) - 8005404: 6013 str r3, [r2, #0] - - /* Configure the source of time base considering new system clocks settings */ - HAL_InitTick (uwTickPrio); - 8005406: 4b09 ldr r3, [pc, #36] @ (800542c ) - 8005408: 681b ldr r3, [r3, #0] - 800540a: 4618 mov r0, r3 - 800540c: f7fd fd5e bl 8002ecc - - return HAL_OK; - 8005410: 2300 movs r3, #0 -} - 8005412: 4618 mov r0, r3 - 8005414: 3710 adds r7, #16 - 8005416: 46bd mov sp, r7 - 8005418: bd80 pop {r7, pc} - 800541a: bf00 nop - 800541c: 40023c00 .word 0x40023c00 - 8005420: 40023800 .word 0x40023800 - 8005424: 0801a4e8 .word 0x0801a4e8 - 8005428: 20000000 .word 0x20000000 - 800542c: 20000004 .word 0x20000004 - -08005430 : - * - * - * @retval SYSCLK frequency - */ -__weak uint32_t HAL_RCC_GetSysClockFreq(void) -{ - 8005430: e92d 4fb0 stmdb sp!, {r4, r5, r7, r8, r9, sl, fp, lr} - 8005434: b090 sub sp, #64 @ 0x40 - 8005436: af00 add r7, sp, #0 - uint32_t pllm = 0U, pllvco = 0U, pllp = 0U; - 8005438: 2300 movs r3, #0 - 800543a: 637b str r3, [r7, #52] @ 0x34 - 800543c: 2300 movs r3, #0 - 800543e: 63fb str r3, [r7, #60] @ 0x3c - 8005440: 2300 movs r3, #0 - 8005442: 633b str r3, [r7, #48] @ 0x30 - uint32_t sysclockfreq = 0U; - 8005444: 2300 movs r3, #0 - 8005446: 63bb str r3, [r7, #56] @ 0x38 - - /* Get SYSCLK source -------------------------------------------------------*/ - switch (RCC->CFGR & RCC_CFGR_SWS) - 8005448: 4b59 ldr r3, [pc, #356] @ (80055b0 ) - 800544a: 689b ldr r3, [r3, #8] - 800544c: f003 030c and.w r3, r3, #12 - 8005450: 2b08 cmp r3, #8 - 8005452: d00d beq.n 8005470 - 8005454: 2b08 cmp r3, #8 - 8005456: f200 80a1 bhi.w 800559c - 800545a: 2b00 cmp r3, #0 - 800545c: d002 beq.n 8005464 - 800545e: 2b04 cmp r3, #4 - 8005460: d003 beq.n 800546a - 8005462: e09b b.n 800559c - { - case RCC_CFGR_SWS_HSI: /* HSI used as system clock source */ - { - sysclockfreq = HSI_VALUE; - 8005464: 4b53 ldr r3, [pc, #332] @ (80055b4 ) - 8005466: 63bb str r3, [r7, #56] @ 0x38 - break; - 8005468: e09b b.n 80055a2 - } - case RCC_CFGR_SWS_HSE: /* HSE used as system clock source */ - { - sysclockfreq = HSE_VALUE; - 800546a: 4b53 ldr r3, [pc, #332] @ (80055b8 ) - 800546c: 63bb str r3, [r7, #56] @ 0x38 - break; - 800546e: e098 b.n 80055a2 - } - case RCC_CFGR_SWS_PLL: /* PLL used as system clock source */ - { - /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLN - SYSCLK = PLL_VCO / PLLP */ - pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM; - 8005470: 4b4f ldr r3, [pc, #316] @ (80055b0 ) - 8005472: 685b ldr r3, [r3, #4] - 8005474: f003 033f and.w r3, r3, #63 @ 0x3f - 8005478: 637b str r3, [r7, #52] @ 0x34 - if(__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLSOURCE_HSI) - 800547a: 4b4d ldr r3, [pc, #308] @ (80055b0 ) - 800547c: 685b ldr r3, [r3, #4] - 800547e: f403 0380 and.w r3, r3, #4194304 @ 0x400000 - 8005482: 2b00 cmp r3, #0 - 8005484: d028 beq.n 80054d8 - { - /* HSE used as PLL clock source */ - pllvco = (uint32_t) ((((uint64_t) HSE_VALUE * ((uint64_t) ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm); - 8005486: 4b4a ldr r3, [pc, #296] @ (80055b0 ) - 8005488: 685b ldr r3, [r3, #4] - 800548a: 099b lsrs r3, r3, #6 - 800548c: 2200 movs r2, #0 - 800548e: 623b str r3, [r7, #32] - 8005490: 627a str r2, [r7, #36] @ 0x24 - 8005492: 6a3b ldr r3, [r7, #32] - 8005494: f3c3 0008 ubfx r0, r3, #0, #9 - 8005498: 2100 movs r1, #0 - 800549a: 4b47 ldr r3, [pc, #284] @ (80055b8 ) - 800549c: fb03 f201 mul.w r2, r3, r1 - 80054a0: 2300 movs r3, #0 - 80054a2: fb00 f303 mul.w r3, r0, r3 - 80054a6: 4413 add r3, r2 - 80054a8: 4a43 ldr r2, [pc, #268] @ (80055b8 ) - 80054aa: fba0 1202 umull r1, r2, r0, r2 - 80054ae: 62fa str r2, [r7, #44] @ 0x2c - 80054b0: 460a mov r2, r1 - 80054b2: 62ba str r2, [r7, #40] @ 0x28 - 80054b4: 6afa ldr r2, [r7, #44] @ 0x2c - 80054b6: 4413 add r3, r2 - 80054b8: 62fb str r3, [r7, #44] @ 0x2c - 80054ba: 6b7b ldr r3, [r7, #52] @ 0x34 - 80054bc: 2200 movs r2, #0 - 80054be: 61bb str r3, [r7, #24] - 80054c0: 61fa str r2, [r7, #28] - 80054c2: e9d7 2306 ldrd r2, r3, [r7, #24] - 80054c6: e9d7 010a ldrd r0, r1, [r7, #40] @ 0x28 - 80054ca: f7fb fb7d bl 8000bc8 <__aeabi_uldivmod> - 80054ce: 4602 mov r2, r0 - 80054d0: 460b mov r3, r1 - 80054d2: 4613 mov r3, r2 - 80054d4: 63fb str r3, [r7, #60] @ 0x3c - 80054d6: e053 b.n 8005580 - } - else - { - /* HSI used as PLL clock source */ - pllvco = (uint32_t) ((((uint64_t) HSI_VALUE * ((uint64_t) ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm); - 80054d8: 4b35 ldr r3, [pc, #212] @ (80055b0 ) - 80054da: 685b ldr r3, [r3, #4] - 80054dc: 099b lsrs r3, r3, #6 - 80054de: 2200 movs r2, #0 - 80054e0: 613b str r3, [r7, #16] - 80054e2: 617a str r2, [r7, #20] - 80054e4: 693b ldr r3, [r7, #16] - 80054e6: f3c3 0a08 ubfx sl, r3, #0, #9 - 80054ea: f04f 0b00 mov.w fp, #0 - 80054ee: 4652 mov r2, sl - 80054f0: 465b mov r3, fp - 80054f2: f04f 0000 mov.w r0, #0 - 80054f6: f04f 0100 mov.w r1, #0 - 80054fa: 0159 lsls r1, r3, #5 - 80054fc: ea41 61d2 orr.w r1, r1, r2, lsr #27 - 8005500: 0150 lsls r0, r2, #5 - 8005502: 4602 mov r2, r0 - 8005504: 460b mov r3, r1 - 8005506: ebb2 080a subs.w r8, r2, sl - 800550a: eb63 090b sbc.w r9, r3, fp - 800550e: f04f 0200 mov.w r2, #0 - 8005512: f04f 0300 mov.w r3, #0 - 8005516: ea4f 1389 mov.w r3, r9, lsl #6 - 800551a: ea43 6398 orr.w r3, r3, r8, lsr #26 - 800551e: ea4f 1288 mov.w r2, r8, lsl #6 - 8005522: ebb2 0408 subs.w r4, r2, r8 - 8005526: eb63 0509 sbc.w r5, r3, r9 - 800552a: f04f 0200 mov.w r2, #0 - 800552e: f04f 0300 mov.w r3, #0 - 8005532: 00eb lsls r3, r5, #3 - 8005534: ea43 7354 orr.w r3, r3, r4, lsr #29 - 8005538: 00e2 lsls r2, r4, #3 - 800553a: 4614 mov r4, r2 - 800553c: 461d mov r5, r3 - 800553e: eb14 030a adds.w r3, r4, sl - 8005542: 603b str r3, [r7, #0] - 8005544: eb45 030b adc.w r3, r5, fp - 8005548: 607b str r3, [r7, #4] - 800554a: f04f 0200 mov.w r2, #0 - 800554e: f04f 0300 mov.w r3, #0 - 8005552: e9d7 4500 ldrd r4, r5, [r7] - 8005556: 4629 mov r1, r5 - 8005558: 028b lsls r3, r1, #10 - 800555a: 4621 mov r1, r4 - 800555c: ea43 5391 orr.w r3, r3, r1, lsr #22 - 8005560: 4621 mov r1, r4 - 8005562: 028a lsls r2, r1, #10 - 8005564: 4610 mov r0, r2 - 8005566: 4619 mov r1, r3 - 8005568: 6b7b ldr r3, [r7, #52] @ 0x34 - 800556a: 2200 movs r2, #0 - 800556c: 60bb str r3, [r7, #8] - 800556e: 60fa str r2, [r7, #12] - 8005570: e9d7 2302 ldrd r2, r3, [r7, #8] - 8005574: f7fb fb28 bl 8000bc8 <__aeabi_uldivmod> - 8005578: 4602 mov r2, r0 - 800557a: 460b mov r3, r1 - 800557c: 4613 mov r3, r2 - 800557e: 63fb str r3, [r7, #60] @ 0x3c - } - pllp = ((((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >> RCC_PLLCFGR_PLLP_Pos) + 1U) *2U); - 8005580: 4b0b ldr r3, [pc, #44] @ (80055b0 ) - 8005582: 685b ldr r3, [r3, #4] - 8005584: 0c1b lsrs r3, r3, #16 - 8005586: f003 0303 and.w r3, r3, #3 - 800558a: 3301 adds r3, #1 - 800558c: 005b lsls r3, r3, #1 - 800558e: 633b str r3, [r7, #48] @ 0x30 - - sysclockfreq = pllvco/pllp; - 8005590: 6bfa ldr r2, [r7, #60] @ 0x3c - 8005592: 6b3b ldr r3, [r7, #48] @ 0x30 - 8005594: fbb2 f3f3 udiv r3, r2, r3 - 8005598: 63bb str r3, [r7, #56] @ 0x38 - break; - 800559a: e002 b.n 80055a2 - } - default: - { - sysclockfreq = HSI_VALUE; - 800559c: 4b05 ldr r3, [pc, #20] @ (80055b4 ) - 800559e: 63bb str r3, [r7, #56] @ 0x38 - break; - 80055a0: bf00 nop - } - } - return sysclockfreq; - 80055a2: 6bbb ldr r3, [r7, #56] @ 0x38 -} - 80055a4: 4618 mov r0, r3 - 80055a6: 3740 adds r7, #64 @ 0x40 - 80055a8: 46bd mov sp, r7 - 80055aa: e8bd 8fb0 ldmia.w sp!, {r4, r5, r7, r8, r9, sl, fp, pc} - 80055ae: bf00 nop - 80055b0: 40023800 .word 0x40023800 - 80055b4: 00f42400 .word 0x00f42400 - 80055b8: 017d7840 .word 0x017d7840 - -080055bc : - * @note The SystemCoreClock CMSIS variable is used to store System Clock Frequency - * and updated within this function - * @retval HCLK frequency - */ -uint32_t HAL_RCC_GetHCLKFreq(void) -{ - 80055bc: b480 push {r7} - 80055be: af00 add r7, sp, #0 - return SystemCoreClock; - 80055c0: 4b03 ldr r3, [pc, #12] @ (80055d0 ) - 80055c2: 681b ldr r3, [r3, #0] -} - 80055c4: 4618 mov r0, r3 - 80055c6: 46bd mov sp, r7 - 80055c8: f85d 7b04 ldr.w r7, [sp], #4 - 80055cc: 4770 bx lr - 80055ce: bf00 nop - 80055d0: 20000000 .word 0x20000000 - -080055d4 : - * @param ExtTiming Pointer to SRAM extended mode timing structure - * @retval HAL status - */ -HAL_StatusTypeDef HAL_SRAM_Init(SRAM_HandleTypeDef *hsram, FMC_NORSRAM_TimingTypeDef *Timing, - FMC_NORSRAM_TimingTypeDef *ExtTiming) -{ - 80055d4: b580 push {r7, lr} - 80055d6: b084 sub sp, #16 - 80055d8: af00 add r7, sp, #0 - 80055da: 60f8 str r0, [r7, #12] - 80055dc: 60b9 str r1, [r7, #8] - 80055de: 607a str r2, [r7, #4] - /* Check the SRAM handle parameter */ - if (hsram == NULL) - 80055e0: 68fb ldr r3, [r7, #12] - 80055e2: 2b00 cmp r3, #0 - 80055e4: d101 bne.n 80055ea - { - return HAL_ERROR; - 80055e6: 2301 movs r3, #1 - 80055e8: e038 b.n 800565c - } - - if (hsram->State == HAL_SRAM_STATE_RESET) - 80055ea: 68fb ldr r3, [r7, #12] - 80055ec: f893 3049 ldrb.w r3, [r3, #73] @ 0x49 - 80055f0: b2db uxtb r3, r3 - 80055f2: 2b00 cmp r3, #0 - 80055f4: d106 bne.n 8005604 - { - /* Allocate lock resource and initialize it */ - hsram->Lock = HAL_UNLOCKED; - 80055f6: 68fb ldr r3, [r7, #12] - 80055f8: 2200 movs r2, #0 - 80055fa: f883 2048 strb.w r2, [r3, #72] @ 0x48 - - /* Init the low level hardware */ - hsram->MspInitCallback(hsram); -#else - /* Initialize the low level hardware (MSP) */ - HAL_SRAM_MspInit(hsram); - 80055fe: 68f8 ldr r0, [r7, #12] - 8005600: f7fd fa44 bl 8002a8c -#endif /* USE_HAL_SRAM_REGISTER_CALLBACKS */ - } - - /* Initialize SRAM control Interface */ - (void)FMC_NORSRAM_Init(hsram->Instance, &(hsram->Init)); - 8005604: 68fb ldr r3, [r7, #12] - 8005606: 681a ldr r2, [r3, #0] - 8005608: 68fb ldr r3, [r7, #12] - 800560a: 3308 adds r3, #8 - 800560c: 4619 mov r1, r3 - 800560e: 4610 mov r0, r2 - 8005610: f000 fcb4 bl 8005f7c - - /* Initialize SRAM timing Interface */ - (void)FMC_NORSRAM_Timing_Init(hsram->Instance, Timing, hsram->Init.NSBank); - 8005614: 68fb ldr r3, [r7, #12] - 8005616: 6818 ldr r0, [r3, #0] - 8005618: 68fb ldr r3, [r7, #12] - 800561a: 689b ldr r3, [r3, #8] - 800561c: 461a mov r2, r3 - 800561e: 68b9 ldr r1, [r7, #8] - 8005620: f000 fd32 bl 8006088 - - /* Initialize SRAM extended mode timing Interface */ - (void)FMC_NORSRAM_Extended_Timing_Init(hsram->Extended, ExtTiming, hsram->Init.NSBank, - 8005624: 68fb ldr r3, [r7, #12] - 8005626: 6858 ldr r0, [r3, #4] - 8005628: 68fb ldr r3, [r7, #12] - 800562a: 689a ldr r2, [r3, #8] - 800562c: 68fb ldr r3, [r7, #12] - 800562e: 6b1b ldr r3, [r3, #48] @ 0x30 - 8005630: 6879 ldr r1, [r7, #4] - 8005632: f000 fd79 bl 8006128 - hsram->Init.ExtendedMode); - - /* Enable the NORSRAM device */ - __FMC_NORSRAM_ENABLE(hsram->Instance, hsram->Init.NSBank); - 8005636: 68fb ldr r3, [r7, #12] - 8005638: 681b ldr r3, [r3, #0] - 800563a: 68fa ldr r2, [r7, #12] - 800563c: 6892 ldr r2, [r2, #8] - 800563e: f853 1022 ldr.w r1, [r3, r2, lsl #2] - 8005642: 68fb ldr r3, [r7, #12] - 8005644: 681b ldr r3, [r3, #0] - 8005646: 68fa ldr r2, [r7, #12] - 8005648: 6892 ldr r2, [r2, #8] - 800564a: f041 0101 orr.w r1, r1, #1 - 800564e: f843 1022 str.w r1, [r3, r2, lsl #2] - - /* Initialize the SRAM controller state */ - hsram->State = HAL_SRAM_STATE_READY; - 8005652: 68fb ldr r3, [r7, #12] - 8005654: 2201 movs r2, #1 - 8005656: f883 2049 strb.w r2, [r3, #73] @ 0x49 - - return HAL_OK; - 800565a: 2300 movs r3, #0 -} - 800565c: 4618 mov r0, r3 - 800565e: 3710 adds r7, #16 - 8005660: 46bd mov sp, r7 - 8005662: bd80 pop {r7, pc} - -08005664 : - * Ex: call @ref HAL_TIM_Base_DeInit() before HAL_TIM_Base_Init() - * @param htim TIM Base handle - * @retval HAL status - */ -HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim) -{ - 8005664: b580 push {r7, lr} - 8005666: b082 sub sp, #8 - 8005668: af00 add r7, sp, #0 - 800566a: 6078 str r0, [r7, #4] - /* Check the TIM handle allocation */ - if (htim == NULL) - 800566c: 687b ldr r3, [r7, #4] - 800566e: 2b00 cmp r3, #0 - 8005670: d101 bne.n 8005676 - { - return HAL_ERROR; - 8005672: 2301 movs r3, #1 - 8005674: e041 b.n 80056fa - assert_param(IS_TIM_INSTANCE(htim->Instance)); - assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); - assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); - assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); - - if (htim->State == HAL_TIM_STATE_RESET) - 8005676: 687b ldr r3, [r7, #4] - 8005678: f893 303d ldrb.w r3, [r3, #61] @ 0x3d - 800567c: b2db uxtb r3, r3 - 800567e: 2b00 cmp r3, #0 - 8005680: d106 bne.n 8005690 - { - /* Allocate lock resource and initialize it */ - htim->Lock = HAL_UNLOCKED; - 8005682: 687b ldr r3, [r7, #4] - 8005684: 2200 movs r2, #0 - 8005686: f883 203c strb.w r2, [r3, #60] @ 0x3c - } - /* Init the low level hardware : GPIO, CLOCK, NVIC */ - htim->Base_MspInitCallback(htim); -#else - /* Init the low level hardware : GPIO, CLOCK, NVIC */ - HAL_TIM_Base_MspInit(htim); - 800568a: 6878 ldr r0, [r7, #4] - 800568c: f7fd f966 bl 800295c -#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ - } - - /* Set the TIM state */ - htim->State = HAL_TIM_STATE_BUSY; - 8005690: 687b ldr r3, [r7, #4] - 8005692: 2202 movs r2, #2 - 8005694: f883 203d strb.w r2, [r3, #61] @ 0x3d - - /* Set the Time Base configuration */ - TIM_Base_SetConfig(htim->Instance, &htim->Init); - 8005698: 687b ldr r3, [r7, #4] - 800569a: 681a ldr r2, [r3, #0] - 800569c: 687b ldr r3, [r7, #4] - 800569e: 3304 adds r3, #4 - 80056a0: 4619 mov r1, r3 - 80056a2: 4610 mov r0, r2 - 80056a4: f000 faa0 bl 8005be8 - - /* Initialize the DMA burst operation state */ - htim->DMABurstState = HAL_DMA_BURST_STATE_READY; - 80056a8: 687b ldr r3, [r7, #4] - 80056aa: 2201 movs r2, #1 - 80056ac: f883 2046 strb.w r2, [r3, #70] @ 0x46 - - /* Initialize the TIM channels state */ - TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); - 80056b0: 687b ldr r3, [r7, #4] - 80056b2: 2201 movs r2, #1 - 80056b4: f883 203e strb.w r2, [r3, #62] @ 0x3e - 80056b8: 687b ldr r3, [r7, #4] - 80056ba: 2201 movs r2, #1 - 80056bc: f883 203f strb.w r2, [r3, #63] @ 0x3f - 80056c0: 687b ldr r3, [r7, #4] - 80056c2: 2201 movs r2, #1 - 80056c4: f883 2040 strb.w r2, [r3, #64] @ 0x40 - 80056c8: 687b ldr r3, [r7, #4] - 80056ca: 2201 movs r2, #1 - 80056cc: f883 2041 strb.w r2, [r3, #65] @ 0x41 - TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); - 80056d0: 687b ldr r3, [r7, #4] - 80056d2: 2201 movs r2, #1 - 80056d4: f883 2042 strb.w r2, [r3, #66] @ 0x42 - 80056d8: 687b ldr r3, [r7, #4] - 80056da: 2201 movs r2, #1 - 80056dc: f883 2043 strb.w r2, [r3, #67] @ 0x43 - 80056e0: 687b ldr r3, [r7, #4] - 80056e2: 2201 movs r2, #1 - 80056e4: f883 2044 strb.w r2, [r3, #68] @ 0x44 - 80056e8: 687b ldr r3, [r7, #4] - 80056ea: 2201 movs r2, #1 - 80056ec: f883 2045 strb.w r2, [r3, #69] @ 0x45 - - /* Initialize the TIM state*/ - htim->State = HAL_TIM_STATE_READY; - 80056f0: 687b ldr r3, [r7, #4] - 80056f2: 2201 movs r2, #1 - 80056f4: f883 203d strb.w r2, [r3, #61] @ 0x3d - - return HAL_OK; - 80056f8: 2300 movs r3, #0 -} - 80056fa: 4618 mov r0, r3 - 80056fc: 3708 adds r7, #8 - 80056fe: 46bd mov sp, r7 - 8005700: bd80 pop {r7, pc} - ... - -08005704 : - * @brief Starts the TIM Base generation in interrupt mode. - * @param htim TIM Base handle - * @retval HAL status - */ -HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim) -{ - 8005704: b480 push {r7} - 8005706: b085 sub sp, #20 - 8005708: af00 add r7, sp, #0 - 800570a: 6078 str r0, [r7, #4] - - /* Check the parameters */ - assert_param(IS_TIM_INSTANCE(htim->Instance)); - - /* Check the TIM state */ - if (htim->State != HAL_TIM_STATE_READY) - 800570c: 687b ldr r3, [r7, #4] - 800570e: f893 303d ldrb.w r3, [r3, #61] @ 0x3d - 8005712: b2db uxtb r3, r3 - 8005714: 2b01 cmp r3, #1 - 8005716: d001 beq.n 800571c - { - return HAL_ERROR; - 8005718: 2301 movs r3, #1 - 800571a: e04e b.n 80057ba - } - - /* Set the TIM state */ - htim->State = HAL_TIM_STATE_BUSY; - 800571c: 687b ldr r3, [r7, #4] - 800571e: 2202 movs r2, #2 - 8005720: f883 203d strb.w r2, [r3, #61] @ 0x3d - - /* Enable the TIM Update interrupt */ - __HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE); - 8005724: 687b ldr r3, [r7, #4] - 8005726: 681b ldr r3, [r3, #0] - 8005728: 68da ldr r2, [r3, #12] - 800572a: 687b ldr r3, [r7, #4] - 800572c: 681b ldr r3, [r3, #0] - 800572e: f042 0201 orr.w r2, r2, #1 - 8005732: 60da str r2, [r3, #12] - - /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ - if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) - 8005734: 687b ldr r3, [r7, #4] - 8005736: 681b ldr r3, [r3, #0] - 8005738: 4a23 ldr r2, [pc, #140] @ (80057c8 ) - 800573a: 4293 cmp r3, r2 - 800573c: d022 beq.n 8005784 - 800573e: 687b ldr r3, [r7, #4] - 8005740: 681b ldr r3, [r3, #0] - 8005742: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8005746: d01d beq.n 8005784 - 8005748: 687b ldr r3, [r7, #4] - 800574a: 681b ldr r3, [r3, #0] - 800574c: 4a1f ldr r2, [pc, #124] @ (80057cc ) - 800574e: 4293 cmp r3, r2 - 8005750: d018 beq.n 8005784 - 8005752: 687b ldr r3, [r7, #4] - 8005754: 681b ldr r3, [r3, #0] - 8005756: 4a1e ldr r2, [pc, #120] @ (80057d0 ) - 8005758: 4293 cmp r3, r2 - 800575a: d013 beq.n 8005784 - 800575c: 687b ldr r3, [r7, #4] - 800575e: 681b ldr r3, [r3, #0] - 8005760: 4a1c ldr r2, [pc, #112] @ (80057d4 ) - 8005762: 4293 cmp r3, r2 - 8005764: d00e beq.n 8005784 - 8005766: 687b ldr r3, [r7, #4] - 8005768: 681b ldr r3, [r3, #0] - 800576a: 4a1b ldr r2, [pc, #108] @ (80057d8 ) - 800576c: 4293 cmp r3, r2 - 800576e: d009 beq.n 8005784 - 8005770: 687b ldr r3, [r7, #4] - 8005772: 681b ldr r3, [r3, #0] - 8005774: 4a19 ldr r2, [pc, #100] @ (80057dc ) - 8005776: 4293 cmp r3, r2 - 8005778: d004 beq.n 8005784 - 800577a: 687b ldr r3, [r7, #4] - 800577c: 681b ldr r3, [r3, #0] - 800577e: 4a18 ldr r2, [pc, #96] @ (80057e0 ) - 8005780: 4293 cmp r3, r2 - 8005782: d111 bne.n 80057a8 - { - tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; - 8005784: 687b ldr r3, [r7, #4] - 8005786: 681b ldr r3, [r3, #0] - 8005788: 689b ldr r3, [r3, #8] - 800578a: f003 0307 and.w r3, r3, #7 - 800578e: 60fb str r3, [r7, #12] - if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) - 8005790: 68fb ldr r3, [r7, #12] - 8005792: 2b06 cmp r3, #6 - 8005794: d010 beq.n 80057b8 - { - __HAL_TIM_ENABLE(htim); - 8005796: 687b ldr r3, [r7, #4] - 8005798: 681b ldr r3, [r3, #0] - 800579a: 681a ldr r2, [r3, #0] - 800579c: 687b ldr r3, [r7, #4] - 800579e: 681b ldr r3, [r3, #0] - 80057a0: f042 0201 orr.w r2, r2, #1 - 80057a4: 601a str r2, [r3, #0] - if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) - 80057a6: e007 b.n 80057b8 - } - } - else - { - __HAL_TIM_ENABLE(htim); - 80057a8: 687b ldr r3, [r7, #4] - 80057aa: 681b ldr r3, [r3, #0] - 80057ac: 681a ldr r2, [r3, #0] - 80057ae: 687b ldr r3, [r7, #4] - 80057b0: 681b ldr r3, [r3, #0] - 80057b2: f042 0201 orr.w r2, r2, #1 - 80057b6: 601a str r2, [r3, #0] - } - - /* Return function status */ - return HAL_OK; - 80057b8: 2300 movs r3, #0 -} - 80057ba: 4618 mov r0, r3 - 80057bc: 3714 adds r7, #20 - 80057be: 46bd mov sp, r7 - 80057c0: f85d 7b04 ldr.w r7, [sp], #4 - 80057c4: 4770 bx lr - 80057c6: bf00 nop - 80057c8: 40010000 .word 0x40010000 - 80057cc: 40000400 .word 0x40000400 - 80057d0: 40000800 .word 0x40000800 - 80057d4: 40000c00 .word 0x40000c00 - 80057d8: 40010400 .word 0x40010400 - 80057dc: 40014000 .word 0x40014000 - 80057e0: 40001800 .word 0x40001800 - -080057e4 : - * @brief This function handles TIM interrupts requests. - * @param htim TIM handle - * @retval None - */ -void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim) -{ - 80057e4: b580 push {r7, lr} - 80057e6: b082 sub sp, #8 - 80057e8: af00 add r7, sp, #0 - 80057ea: 6078 str r0, [r7, #4] - /* Capture compare 1 event */ - if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC1) != RESET) - 80057ec: 687b ldr r3, [r7, #4] - 80057ee: 681b ldr r3, [r3, #0] - 80057f0: 691b ldr r3, [r3, #16] - 80057f2: f003 0302 and.w r3, r3, #2 - 80057f6: 2b02 cmp r3, #2 - 80057f8: d122 bne.n 8005840 - { - if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC1) != RESET) - 80057fa: 687b ldr r3, [r7, #4] - 80057fc: 681b ldr r3, [r3, #0] - 80057fe: 68db ldr r3, [r3, #12] - 8005800: f003 0302 and.w r3, r3, #2 - 8005804: 2b02 cmp r3, #2 - 8005806: d11b bne.n 8005840 - { - { - __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC1); - 8005808: 687b ldr r3, [r7, #4] - 800580a: 681b ldr r3, [r3, #0] - 800580c: f06f 0202 mvn.w r2, #2 - 8005810: 611a str r2, [r3, #16] - htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; - 8005812: 687b ldr r3, [r7, #4] - 8005814: 2201 movs r2, #1 - 8005816: 771a strb r2, [r3, #28] - - /* Input capture event */ - if ((htim->Instance->CCMR1 & TIM_CCMR1_CC1S) != 0x00U) - 8005818: 687b ldr r3, [r7, #4] - 800581a: 681b ldr r3, [r3, #0] - 800581c: 699b ldr r3, [r3, #24] - 800581e: f003 0303 and.w r3, r3, #3 - 8005822: 2b00 cmp r3, #0 - 8005824: d003 beq.n 800582e - { -#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) - htim->IC_CaptureCallback(htim); -#else - HAL_TIM_IC_CaptureCallback(htim); - 8005826: 6878 ldr r0, [r7, #4] - 8005828: f000 f9bf bl 8005baa - 800582c: e005 b.n 800583a - { -#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) - htim->OC_DelayElapsedCallback(htim); - htim->PWM_PulseFinishedCallback(htim); -#else - HAL_TIM_OC_DelayElapsedCallback(htim); - 800582e: 6878 ldr r0, [r7, #4] - 8005830: f000 f9b1 bl 8005b96 - HAL_TIM_PWM_PulseFinishedCallback(htim); - 8005834: 6878 ldr r0, [r7, #4] - 8005836: f000 f9c2 bl 8005bbe -#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ - } - htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; - 800583a: 687b ldr r3, [r7, #4] - 800583c: 2200 movs r2, #0 - 800583e: 771a strb r2, [r3, #28] - } - } - } - /* Capture compare 2 event */ - if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC2) != RESET) - 8005840: 687b ldr r3, [r7, #4] - 8005842: 681b ldr r3, [r3, #0] - 8005844: 691b ldr r3, [r3, #16] - 8005846: f003 0304 and.w r3, r3, #4 - 800584a: 2b04 cmp r3, #4 - 800584c: d122 bne.n 8005894 - { - if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC2) != RESET) - 800584e: 687b ldr r3, [r7, #4] - 8005850: 681b ldr r3, [r3, #0] - 8005852: 68db ldr r3, [r3, #12] - 8005854: f003 0304 and.w r3, r3, #4 - 8005858: 2b04 cmp r3, #4 - 800585a: d11b bne.n 8005894 - { - __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC2); - 800585c: 687b ldr r3, [r7, #4] - 800585e: 681b ldr r3, [r3, #0] - 8005860: f06f 0204 mvn.w r2, #4 - 8005864: 611a str r2, [r3, #16] - htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; - 8005866: 687b ldr r3, [r7, #4] - 8005868: 2202 movs r2, #2 - 800586a: 771a strb r2, [r3, #28] - /* Input capture event */ - if ((htim->Instance->CCMR1 & TIM_CCMR1_CC2S) != 0x00U) - 800586c: 687b ldr r3, [r7, #4] - 800586e: 681b ldr r3, [r3, #0] - 8005870: 699b ldr r3, [r3, #24] - 8005872: f403 7340 and.w r3, r3, #768 @ 0x300 - 8005876: 2b00 cmp r3, #0 - 8005878: d003 beq.n 8005882 - { -#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) - htim->IC_CaptureCallback(htim); -#else - HAL_TIM_IC_CaptureCallback(htim); - 800587a: 6878 ldr r0, [r7, #4] - 800587c: f000 f995 bl 8005baa - 8005880: e005 b.n 800588e - { -#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) - htim->OC_DelayElapsedCallback(htim); - htim->PWM_PulseFinishedCallback(htim); -#else - HAL_TIM_OC_DelayElapsedCallback(htim); - 8005882: 6878 ldr r0, [r7, #4] - 8005884: f000 f987 bl 8005b96 - HAL_TIM_PWM_PulseFinishedCallback(htim); - 8005888: 6878 ldr r0, [r7, #4] - 800588a: f000 f998 bl 8005bbe -#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ - } - htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; - 800588e: 687b ldr r3, [r7, #4] - 8005890: 2200 movs r2, #0 - 8005892: 771a strb r2, [r3, #28] - } - } - /* Capture compare 3 event */ - if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC3) != RESET) - 8005894: 687b ldr r3, [r7, #4] - 8005896: 681b ldr r3, [r3, #0] - 8005898: 691b ldr r3, [r3, #16] - 800589a: f003 0308 and.w r3, r3, #8 - 800589e: 2b08 cmp r3, #8 - 80058a0: d122 bne.n 80058e8 - { - if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC3) != RESET) - 80058a2: 687b ldr r3, [r7, #4] - 80058a4: 681b ldr r3, [r3, #0] - 80058a6: 68db ldr r3, [r3, #12] - 80058a8: f003 0308 and.w r3, r3, #8 - 80058ac: 2b08 cmp r3, #8 - 80058ae: d11b bne.n 80058e8 - { - __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC3); - 80058b0: 687b ldr r3, [r7, #4] - 80058b2: 681b ldr r3, [r3, #0] - 80058b4: f06f 0208 mvn.w r2, #8 - 80058b8: 611a str r2, [r3, #16] - htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; - 80058ba: 687b ldr r3, [r7, #4] - 80058bc: 2204 movs r2, #4 - 80058be: 771a strb r2, [r3, #28] - /* Input capture event */ - if ((htim->Instance->CCMR2 & TIM_CCMR2_CC3S) != 0x00U) - 80058c0: 687b ldr r3, [r7, #4] - 80058c2: 681b ldr r3, [r3, #0] - 80058c4: 69db ldr r3, [r3, #28] - 80058c6: f003 0303 and.w r3, r3, #3 - 80058ca: 2b00 cmp r3, #0 - 80058cc: d003 beq.n 80058d6 - { -#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) - htim->IC_CaptureCallback(htim); -#else - HAL_TIM_IC_CaptureCallback(htim); - 80058ce: 6878 ldr r0, [r7, #4] - 80058d0: f000 f96b bl 8005baa - 80058d4: e005 b.n 80058e2 - { -#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) - htim->OC_DelayElapsedCallback(htim); - htim->PWM_PulseFinishedCallback(htim); -#else - HAL_TIM_OC_DelayElapsedCallback(htim); - 80058d6: 6878 ldr r0, [r7, #4] - 80058d8: f000 f95d bl 8005b96 - HAL_TIM_PWM_PulseFinishedCallback(htim); - 80058dc: 6878 ldr r0, [r7, #4] - 80058de: f000 f96e bl 8005bbe -#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ - } - htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; - 80058e2: 687b ldr r3, [r7, #4] - 80058e4: 2200 movs r2, #0 - 80058e6: 771a strb r2, [r3, #28] - } - } - /* Capture compare 4 event */ - if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC4) != RESET) - 80058e8: 687b ldr r3, [r7, #4] - 80058ea: 681b ldr r3, [r3, #0] - 80058ec: 691b ldr r3, [r3, #16] - 80058ee: f003 0310 and.w r3, r3, #16 - 80058f2: 2b10 cmp r3, #16 - 80058f4: d122 bne.n 800593c - { - if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC4) != RESET) - 80058f6: 687b ldr r3, [r7, #4] - 80058f8: 681b ldr r3, [r3, #0] - 80058fa: 68db ldr r3, [r3, #12] - 80058fc: f003 0310 and.w r3, r3, #16 - 8005900: 2b10 cmp r3, #16 - 8005902: d11b bne.n 800593c - { - __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC4); - 8005904: 687b ldr r3, [r7, #4] - 8005906: 681b ldr r3, [r3, #0] - 8005908: f06f 0210 mvn.w r2, #16 - 800590c: 611a str r2, [r3, #16] - htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; - 800590e: 687b ldr r3, [r7, #4] - 8005910: 2208 movs r2, #8 - 8005912: 771a strb r2, [r3, #28] - /* Input capture event */ - if ((htim->Instance->CCMR2 & TIM_CCMR2_CC4S) != 0x00U) - 8005914: 687b ldr r3, [r7, #4] - 8005916: 681b ldr r3, [r3, #0] - 8005918: 69db ldr r3, [r3, #28] - 800591a: f403 7340 and.w r3, r3, #768 @ 0x300 - 800591e: 2b00 cmp r3, #0 - 8005920: d003 beq.n 800592a - { -#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) - htim->IC_CaptureCallback(htim); -#else - HAL_TIM_IC_CaptureCallback(htim); - 8005922: 6878 ldr r0, [r7, #4] - 8005924: f000 f941 bl 8005baa - 8005928: e005 b.n 8005936 - { -#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) - htim->OC_DelayElapsedCallback(htim); - htim->PWM_PulseFinishedCallback(htim); -#else - HAL_TIM_OC_DelayElapsedCallback(htim); - 800592a: 6878 ldr r0, [r7, #4] - 800592c: f000 f933 bl 8005b96 - HAL_TIM_PWM_PulseFinishedCallback(htim); - 8005930: 6878 ldr r0, [r7, #4] - 8005932: f000 f944 bl 8005bbe -#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ - } - htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; - 8005936: 687b ldr r3, [r7, #4] - 8005938: 2200 movs r2, #0 - 800593a: 771a strb r2, [r3, #28] - } - } - /* TIM Update event */ - if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_UPDATE) != RESET) - 800593c: 687b ldr r3, [r7, #4] - 800593e: 681b ldr r3, [r3, #0] - 8005940: 691b ldr r3, [r3, #16] - 8005942: f003 0301 and.w r3, r3, #1 - 8005946: 2b01 cmp r3, #1 - 8005948: d10e bne.n 8005968 - { - if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_UPDATE) != RESET) - 800594a: 687b ldr r3, [r7, #4] - 800594c: 681b ldr r3, [r3, #0] - 800594e: 68db ldr r3, [r3, #12] - 8005950: f003 0301 and.w r3, r3, #1 - 8005954: 2b01 cmp r3, #1 - 8005956: d107 bne.n 8005968 - { - __HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE); - 8005958: 687b ldr r3, [r7, #4] - 800595a: 681b ldr r3, [r3, #0] - 800595c: f06f 0201 mvn.w r2, #1 - 8005960: 611a str r2, [r3, #16] -#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) - htim->PeriodElapsedCallback(htim); -#else - HAL_TIM_PeriodElapsedCallback(htim); - 8005962: 6878 ldr r0, [r7, #4] - 8005964: f000 f90d bl 8005b82 -#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ - } - } - /* TIM Break input event */ - if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_BREAK) != RESET) - 8005968: 687b ldr r3, [r7, #4] - 800596a: 681b ldr r3, [r3, #0] - 800596c: 691b ldr r3, [r3, #16] - 800596e: f003 0380 and.w r3, r3, #128 @ 0x80 - 8005972: 2b80 cmp r3, #128 @ 0x80 - 8005974: d10e bne.n 8005994 - { - if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_BREAK) != RESET) - 8005976: 687b ldr r3, [r7, #4] - 8005978: 681b ldr r3, [r3, #0] - 800597a: 68db ldr r3, [r3, #12] - 800597c: f003 0380 and.w r3, r3, #128 @ 0x80 - 8005980: 2b80 cmp r3, #128 @ 0x80 - 8005982: d107 bne.n 8005994 - { - __HAL_TIM_CLEAR_IT(htim, TIM_IT_BREAK); - 8005984: 687b ldr r3, [r7, #4] - 8005986: 681b ldr r3, [r3, #0] - 8005988: f06f 0280 mvn.w r2, #128 @ 0x80 - 800598c: 611a str r2, [r3, #16] -#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) - htim->BreakCallback(htim); -#else - HAL_TIMEx_BreakCallback(htim); - 800598e: 6878 ldr r0, [r7, #4] - 8005990: f000 faea bl 8005f68 -#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ - } - } - /* TIM Trigger detection event */ - if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_TRIGGER) != RESET) - 8005994: 687b ldr r3, [r7, #4] - 8005996: 681b ldr r3, [r3, #0] - 8005998: 691b ldr r3, [r3, #16] - 800599a: f003 0340 and.w r3, r3, #64 @ 0x40 - 800599e: 2b40 cmp r3, #64 @ 0x40 - 80059a0: d10e bne.n 80059c0 - { - if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_TRIGGER) != RESET) - 80059a2: 687b ldr r3, [r7, #4] - 80059a4: 681b ldr r3, [r3, #0] - 80059a6: 68db ldr r3, [r3, #12] - 80059a8: f003 0340 and.w r3, r3, #64 @ 0x40 - 80059ac: 2b40 cmp r3, #64 @ 0x40 - 80059ae: d107 bne.n 80059c0 - { - __HAL_TIM_CLEAR_IT(htim, TIM_IT_TRIGGER); - 80059b0: 687b ldr r3, [r7, #4] - 80059b2: 681b ldr r3, [r3, #0] - 80059b4: f06f 0240 mvn.w r2, #64 @ 0x40 - 80059b8: 611a str r2, [r3, #16] -#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) - htim->TriggerCallback(htim); -#else - HAL_TIM_TriggerCallback(htim); - 80059ba: 6878 ldr r0, [r7, #4] - 80059bc: f000 f909 bl 8005bd2 -#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ - } - } - /* TIM commutation event */ - if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_COM) != RESET) - 80059c0: 687b ldr r3, [r7, #4] - 80059c2: 681b ldr r3, [r3, #0] - 80059c4: 691b ldr r3, [r3, #16] - 80059c6: f003 0320 and.w r3, r3, #32 - 80059ca: 2b20 cmp r3, #32 - 80059cc: d10e bne.n 80059ec - { - if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_COM) != RESET) - 80059ce: 687b ldr r3, [r7, #4] - 80059d0: 681b ldr r3, [r3, #0] - 80059d2: 68db ldr r3, [r3, #12] - 80059d4: f003 0320 and.w r3, r3, #32 - 80059d8: 2b20 cmp r3, #32 - 80059da: d107 bne.n 80059ec - { - __HAL_TIM_CLEAR_IT(htim, TIM_FLAG_COM); - 80059dc: 687b ldr r3, [r7, #4] - 80059de: 681b ldr r3, [r3, #0] - 80059e0: f06f 0220 mvn.w r2, #32 - 80059e4: 611a str r2, [r3, #16] -#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) - htim->CommutationCallback(htim); -#else - HAL_TIMEx_CommutCallback(htim); - 80059e6: 6878 ldr r0, [r7, #4] - 80059e8: f000 fab4 bl 8005f54 -#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ - } - } -} - 80059ec: bf00 nop - 80059ee: 3708 adds r7, #8 - 80059f0: 46bd mov sp, r7 - 80059f2: bd80 pop {r7, pc} - -080059f4 : - * @param sClockSourceConfig pointer to a TIM_ClockConfigTypeDef structure that - * contains the clock source information for the TIM peripheral. - * @retval HAL status - */ -HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, TIM_ClockConfigTypeDef *sClockSourceConfig) -{ - 80059f4: b580 push {r7, lr} - 80059f6: b084 sub sp, #16 - 80059f8: af00 add r7, sp, #0 - 80059fa: 6078 str r0, [r7, #4] - 80059fc: 6039 str r1, [r7, #0] - HAL_StatusTypeDef status = HAL_OK; - 80059fe: 2300 movs r3, #0 - 8005a00: 73fb strb r3, [r7, #15] - uint32_t tmpsmcr; - - /* Process Locked */ - __HAL_LOCK(htim); - 8005a02: 687b ldr r3, [r7, #4] - 8005a04: f893 303c ldrb.w r3, [r3, #60] @ 0x3c - 8005a08: 2b01 cmp r3, #1 - 8005a0a: d101 bne.n 8005a10 - 8005a0c: 2302 movs r3, #2 - 8005a0e: e0b4 b.n 8005b7a - 8005a10: 687b ldr r3, [r7, #4] - 8005a12: 2201 movs r2, #1 - 8005a14: f883 203c strb.w r2, [r3, #60] @ 0x3c - - htim->State = HAL_TIM_STATE_BUSY; - 8005a18: 687b ldr r3, [r7, #4] - 8005a1a: 2202 movs r2, #2 - 8005a1c: f883 203d strb.w r2, [r3, #61] @ 0x3d - - /* Check the parameters */ - assert_param(IS_TIM_CLOCKSOURCE(sClockSourceConfig->ClockSource)); - - /* Reset the SMS, TS, ECE, ETPS and ETRF bits */ - tmpsmcr = htim->Instance->SMCR; - 8005a20: 687b ldr r3, [r7, #4] - 8005a22: 681b ldr r3, [r3, #0] - 8005a24: 689b ldr r3, [r3, #8] - 8005a26: 60bb str r3, [r7, #8] - tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS); - 8005a28: 68bb ldr r3, [r7, #8] - 8005a2a: f023 0377 bic.w r3, r3, #119 @ 0x77 - 8005a2e: 60bb str r3, [r7, #8] - tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); - 8005a30: 68bb ldr r3, [r7, #8] - 8005a32: f423 437f bic.w r3, r3, #65280 @ 0xff00 - 8005a36: 60bb str r3, [r7, #8] - htim->Instance->SMCR = tmpsmcr; - 8005a38: 687b ldr r3, [r7, #4] - 8005a3a: 681b ldr r3, [r3, #0] - 8005a3c: 68ba ldr r2, [r7, #8] - 8005a3e: 609a str r2, [r3, #8] - - switch (sClockSourceConfig->ClockSource) - 8005a40: 683b ldr r3, [r7, #0] - 8005a42: 681b ldr r3, [r3, #0] - 8005a44: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 - 8005a48: d03e beq.n 8005ac8 - 8005a4a: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 - 8005a4e: f200 8087 bhi.w 8005b60 - 8005a52: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 - 8005a56: f000 8086 beq.w 8005b66 - 8005a5a: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 - 8005a5e: d87f bhi.n 8005b60 - 8005a60: 2b70 cmp r3, #112 @ 0x70 - 8005a62: d01a beq.n 8005a9a - 8005a64: 2b70 cmp r3, #112 @ 0x70 - 8005a66: d87b bhi.n 8005b60 - 8005a68: 2b60 cmp r3, #96 @ 0x60 - 8005a6a: d050 beq.n 8005b0e - 8005a6c: 2b60 cmp r3, #96 @ 0x60 - 8005a6e: d877 bhi.n 8005b60 - 8005a70: 2b50 cmp r3, #80 @ 0x50 - 8005a72: d03c beq.n 8005aee - 8005a74: 2b50 cmp r3, #80 @ 0x50 - 8005a76: d873 bhi.n 8005b60 - 8005a78: 2b40 cmp r3, #64 @ 0x40 - 8005a7a: d058 beq.n 8005b2e - 8005a7c: 2b40 cmp r3, #64 @ 0x40 - 8005a7e: d86f bhi.n 8005b60 - 8005a80: 2b30 cmp r3, #48 @ 0x30 - 8005a82: d064 beq.n 8005b4e - 8005a84: 2b30 cmp r3, #48 @ 0x30 - 8005a86: d86b bhi.n 8005b60 - 8005a88: 2b20 cmp r3, #32 - 8005a8a: d060 beq.n 8005b4e - 8005a8c: 2b20 cmp r3, #32 - 8005a8e: d867 bhi.n 8005b60 - 8005a90: 2b00 cmp r3, #0 - 8005a92: d05c beq.n 8005b4e - 8005a94: 2b10 cmp r3, #16 - 8005a96: d05a beq.n 8005b4e - 8005a98: e062 b.n 8005b60 - assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler)); - assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); - assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); - - /* Configure the ETR Clock source */ - TIM_ETR_SetConfig(htim->Instance, - 8005a9a: 687b ldr r3, [r7, #4] - 8005a9c: 6818 ldr r0, [r3, #0] - 8005a9e: 683b ldr r3, [r7, #0] - 8005aa0: 6899 ldr r1, [r3, #8] - 8005aa2: 683b ldr r3, [r7, #0] - 8005aa4: 685a ldr r2, [r3, #4] - 8005aa6: 683b ldr r3, [r7, #0] - 8005aa8: 68db ldr r3, [r3, #12] - 8005aaa: f000 f9b7 bl 8005e1c - sClockSourceConfig->ClockPrescaler, - sClockSourceConfig->ClockPolarity, - sClockSourceConfig->ClockFilter); - - /* Select the External clock mode1 and the ETRF trigger */ - tmpsmcr = htim->Instance->SMCR; - 8005aae: 687b ldr r3, [r7, #4] - 8005ab0: 681b ldr r3, [r3, #0] - 8005ab2: 689b ldr r3, [r3, #8] - 8005ab4: 60bb str r3, [r7, #8] - tmpsmcr |= (TIM_SLAVEMODE_EXTERNAL1 | TIM_CLOCKSOURCE_ETRMODE1); - 8005ab6: 68bb ldr r3, [r7, #8] - 8005ab8: f043 0377 orr.w r3, r3, #119 @ 0x77 - 8005abc: 60bb str r3, [r7, #8] - /* Write to TIMx SMCR */ - htim->Instance->SMCR = tmpsmcr; - 8005abe: 687b ldr r3, [r7, #4] - 8005ac0: 681b ldr r3, [r3, #0] - 8005ac2: 68ba ldr r2, [r7, #8] - 8005ac4: 609a str r2, [r3, #8] - break; - 8005ac6: e04f b.n 8005b68 - assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler)); - assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); - assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); - - /* Configure the ETR Clock source */ - TIM_ETR_SetConfig(htim->Instance, - 8005ac8: 687b ldr r3, [r7, #4] - 8005aca: 6818 ldr r0, [r3, #0] - 8005acc: 683b ldr r3, [r7, #0] - 8005ace: 6899 ldr r1, [r3, #8] - 8005ad0: 683b ldr r3, [r7, #0] - 8005ad2: 685a ldr r2, [r3, #4] - 8005ad4: 683b ldr r3, [r7, #0] - 8005ad6: 68db ldr r3, [r3, #12] - 8005ad8: f000 f9a0 bl 8005e1c - sClockSourceConfig->ClockPrescaler, - sClockSourceConfig->ClockPolarity, - sClockSourceConfig->ClockFilter); - /* Enable the External clock mode2 */ - htim->Instance->SMCR |= TIM_SMCR_ECE; - 8005adc: 687b ldr r3, [r7, #4] - 8005ade: 681b ldr r3, [r3, #0] - 8005ae0: 689a ldr r2, [r3, #8] - 8005ae2: 687b ldr r3, [r7, #4] - 8005ae4: 681b ldr r3, [r3, #0] - 8005ae6: f442 4280 orr.w r2, r2, #16384 @ 0x4000 - 8005aea: 609a str r2, [r3, #8] - break; - 8005aec: e03c b.n 8005b68 - - /* Check TI1 input conditioning related parameters */ - assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); - assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); - - TIM_TI1_ConfigInputStage(htim->Instance, - 8005aee: 687b ldr r3, [r7, #4] - 8005af0: 6818 ldr r0, [r3, #0] - 8005af2: 683b ldr r3, [r7, #0] - 8005af4: 6859 ldr r1, [r3, #4] - 8005af6: 683b ldr r3, [r7, #0] - 8005af8: 68db ldr r3, [r3, #12] - 8005afa: 461a mov r2, r3 - 8005afc: f000 f914 bl 8005d28 - sClockSourceConfig->ClockPolarity, - sClockSourceConfig->ClockFilter); - TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1); - 8005b00: 687b ldr r3, [r7, #4] - 8005b02: 681b ldr r3, [r3, #0] - 8005b04: 2150 movs r1, #80 @ 0x50 - 8005b06: 4618 mov r0, r3 - 8005b08: f000 f96d bl 8005de6 - break; - 8005b0c: e02c b.n 8005b68 - - /* Check TI2 input conditioning related parameters */ - assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); - assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); - - TIM_TI2_ConfigInputStage(htim->Instance, - 8005b0e: 687b ldr r3, [r7, #4] - 8005b10: 6818 ldr r0, [r3, #0] - 8005b12: 683b ldr r3, [r7, #0] - 8005b14: 6859 ldr r1, [r3, #4] - 8005b16: 683b ldr r3, [r7, #0] - 8005b18: 68db ldr r3, [r3, #12] - 8005b1a: 461a mov r2, r3 - 8005b1c: f000 f933 bl 8005d86 - sClockSourceConfig->ClockPolarity, - sClockSourceConfig->ClockFilter); - TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI2); - 8005b20: 687b ldr r3, [r7, #4] - 8005b22: 681b ldr r3, [r3, #0] - 8005b24: 2160 movs r1, #96 @ 0x60 - 8005b26: 4618 mov r0, r3 - 8005b28: f000 f95d bl 8005de6 - break; - 8005b2c: e01c b.n 8005b68 - - /* Check TI1 input conditioning related parameters */ - assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); - assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); - - TIM_TI1_ConfigInputStage(htim->Instance, - 8005b2e: 687b ldr r3, [r7, #4] - 8005b30: 6818 ldr r0, [r3, #0] - 8005b32: 683b ldr r3, [r7, #0] - 8005b34: 6859 ldr r1, [r3, #4] - 8005b36: 683b ldr r3, [r7, #0] - 8005b38: 68db ldr r3, [r3, #12] - 8005b3a: 461a mov r2, r3 - 8005b3c: f000 f8f4 bl 8005d28 - sClockSourceConfig->ClockPolarity, - sClockSourceConfig->ClockFilter); - TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1ED); - 8005b40: 687b ldr r3, [r7, #4] - 8005b42: 681b ldr r3, [r3, #0] - 8005b44: 2140 movs r1, #64 @ 0x40 - 8005b46: 4618 mov r0, r3 - 8005b48: f000 f94d bl 8005de6 - break; - 8005b4c: e00c b.n 8005b68 - case TIM_CLOCKSOURCE_ITR3: - { - /* Check whether or not the timer instance supports internal trigger input */ - assert_param(IS_TIM_CLOCKSOURCE_ITRX_INSTANCE(htim->Instance)); - - TIM_ITRx_SetConfig(htim->Instance, sClockSourceConfig->ClockSource); - 8005b4e: 687b ldr r3, [r7, #4] - 8005b50: 681a ldr r2, [r3, #0] - 8005b52: 683b ldr r3, [r7, #0] - 8005b54: 681b ldr r3, [r3, #0] - 8005b56: 4619 mov r1, r3 - 8005b58: 4610 mov r0, r2 - 8005b5a: f000 f944 bl 8005de6 - break; - 8005b5e: e003 b.n 8005b68 - } - - default: - status = HAL_ERROR; - 8005b60: 2301 movs r3, #1 - 8005b62: 73fb strb r3, [r7, #15] - break; - 8005b64: e000 b.n 8005b68 - break; - 8005b66: bf00 nop - } - htim->State = HAL_TIM_STATE_READY; - 8005b68: 687b ldr r3, [r7, #4] - 8005b6a: 2201 movs r2, #1 - 8005b6c: f883 203d strb.w r2, [r3, #61] @ 0x3d - - __HAL_UNLOCK(htim); - 8005b70: 687b ldr r3, [r7, #4] - 8005b72: 2200 movs r2, #0 - 8005b74: f883 203c strb.w r2, [r3, #60] @ 0x3c - - return status; - 8005b78: 7bfb ldrb r3, [r7, #15] -} - 8005b7a: 4618 mov r0, r3 - 8005b7c: 3710 adds r7, #16 - 8005b7e: 46bd mov sp, r7 - 8005b80: bd80 pop {r7, pc} - -08005b82 : - * @brief Period elapsed callback in non-blocking mode - * @param htim TIM handle - * @retval None - */ -__weak void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) -{ - 8005b82: b480 push {r7} - 8005b84: b083 sub sp, #12 - 8005b86: af00 add r7, sp, #0 - 8005b88: 6078 str r0, [r7, #4] - UNUSED(htim); - - /* NOTE : This function should not be modified, when the callback is needed, - the HAL_TIM_PeriodElapsedCallback could be implemented in the user file - */ -} - 8005b8a: bf00 nop - 8005b8c: 370c adds r7, #12 - 8005b8e: 46bd mov sp, r7 - 8005b90: f85d 7b04 ldr.w r7, [sp], #4 - 8005b94: 4770 bx lr - -08005b96 : - * @brief Output Compare callback in non-blocking mode - * @param htim TIM OC handle - * @retval None - */ -__weak void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim) -{ - 8005b96: b480 push {r7} - 8005b98: b083 sub sp, #12 - 8005b9a: af00 add r7, sp, #0 - 8005b9c: 6078 str r0, [r7, #4] - UNUSED(htim); - - /* NOTE : This function should not be modified, when the callback is needed, - the HAL_TIM_OC_DelayElapsedCallback could be implemented in the user file - */ -} - 8005b9e: bf00 nop - 8005ba0: 370c adds r7, #12 - 8005ba2: 46bd mov sp, r7 - 8005ba4: f85d 7b04 ldr.w r7, [sp], #4 - 8005ba8: 4770 bx lr - -08005baa : - * @brief Input Capture callback in non-blocking mode - * @param htim TIM IC handle - * @retval None - */ -__weak void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) -{ - 8005baa: b480 push {r7} - 8005bac: b083 sub sp, #12 - 8005bae: af00 add r7, sp, #0 - 8005bb0: 6078 str r0, [r7, #4] - UNUSED(htim); - - /* NOTE : This function should not be modified, when the callback is needed, - the HAL_TIM_IC_CaptureCallback could be implemented in the user file - */ -} - 8005bb2: bf00 nop - 8005bb4: 370c adds r7, #12 - 8005bb6: 46bd mov sp, r7 - 8005bb8: f85d 7b04 ldr.w r7, [sp], #4 - 8005bbc: 4770 bx lr - -08005bbe : - * @brief PWM Pulse finished callback in non-blocking mode - * @param htim TIM handle - * @retval None - */ -__weak void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) -{ - 8005bbe: b480 push {r7} - 8005bc0: b083 sub sp, #12 - 8005bc2: af00 add r7, sp, #0 - 8005bc4: 6078 str r0, [r7, #4] - UNUSED(htim); - - /* NOTE : This function should not be modified, when the callback is needed, - the HAL_TIM_PWM_PulseFinishedCallback could be implemented in the user file - */ -} - 8005bc6: bf00 nop - 8005bc8: 370c adds r7, #12 - 8005bca: 46bd mov sp, r7 - 8005bcc: f85d 7b04 ldr.w r7, [sp], #4 - 8005bd0: 4770 bx lr - -08005bd2 : - * @brief Hall Trigger detection callback in non-blocking mode - * @param htim TIM handle - * @retval None - */ -__weak void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim) -{ - 8005bd2: b480 push {r7} - 8005bd4: b083 sub sp, #12 - 8005bd6: af00 add r7, sp, #0 - 8005bd8: 6078 str r0, [r7, #4] - UNUSED(htim); - - /* NOTE : This function should not be modified, when the callback is needed, - the HAL_TIM_TriggerCallback could be implemented in the user file - */ -} - 8005bda: bf00 nop - 8005bdc: 370c adds r7, #12 - 8005bde: 46bd mov sp, r7 - 8005be0: f85d 7b04 ldr.w r7, [sp], #4 - 8005be4: 4770 bx lr - ... - -08005be8 : - * @param TIMx TIM peripheral - * @param Structure TIM Base configuration structure - * @retval None - */ -void TIM_Base_SetConfig(TIM_TypeDef *TIMx, TIM_Base_InitTypeDef *Structure) -{ - 8005be8: b480 push {r7} - 8005bea: b085 sub sp, #20 - 8005bec: af00 add r7, sp, #0 - 8005bee: 6078 str r0, [r7, #4] - 8005bf0: 6039 str r1, [r7, #0] - uint32_t tmpcr1; - tmpcr1 = TIMx->CR1; - 8005bf2: 687b ldr r3, [r7, #4] - 8005bf4: 681b ldr r3, [r3, #0] - 8005bf6: 60fb str r3, [r7, #12] - - /* Set TIM Time Base Unit parameters ---------------------------------------*/ - if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx)) - 8005bf8: 687b ldr r3, [r7, #4] - 8005bfa: 4a40 ldr r2, [pc, #256] @ (8005cfc ) - 8005bfc: 4293 cmp r3, r2 - 8005bfe: d013 beq.n 8005c28 - 8005c00: 687b ldr r3, [r7, #4] - 8005c02: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8005c06: d00f beq.n 8005c28 - 8005c08: 687b ldr r3, [r7, #4] - 8005c0a: 4a3d ldr r2, [pc, #244] @ (8005d00 ) - 8005c0c: 4293 cmp r3, r2 - 8005c0e: d00b beq.n 8005c28 - 8005c10: 687b ldr r3, [r7, #4] - 8005c12: 4a3c ldr r2, [pc, #240] @ (8005d04 ) - 8005c14: 4293 cmp r3, r2 - 8005c16: d007 beq.n 8005c28 - 8005c18: 687b ldr r3, [r7, #4] - 8005c1a: 4a3b ldr r2, [pc, #236] @ (8005d08 ) - 8005c1c: 4293 cmp r3, r2 - 8005c1e: d003 beq.n 8005c28 - 8005c20: 687b ldr r3, [r7, #4] - 8005c22: 4a3a ldr r2, [pc, #232] @ (8005d0c ) - 8005c24: 4293 cmp r3, r2 - 8005c26: d108 bne.n 8005c3a - { - /* Select the Counter Mode */ - tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS); - 8005c28: 68fb ldr r3, [r7, #12] - 8005c2a: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8005c2e: 60fb str r3, [r7, #12] - tmpcr1 |= Structure->CounterMode; - 8005c30: 683b ldr r3, [r7, #0] - 8005c32: 685b ldr r3, [r3, #4] - 8005c34: 68fa ldr r2, [r7, #12] - 8005c36: 4313 orrs r3, r2 - 8005c38: 60fb str r3, [r7, #12] - } - - if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx)) - 8005c3a: 687b ldr r3, [r7, #4] - 8005c3c: 4a2f ldr r2, [pc, #188] @ (8005cfc ) - 8005c3e: 4293 cmp r3, r2 - 8005c40: d02b beq.n 8005c9a - 8005c42: 687b ldr r3, [r7, #4] - 8005c44: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8005c48: d027 beq.n 8005c9a - 8005c4a: 687b ldr r3, [r7, #4] - 8005c4c: 4a2c ldr r2, [pc, #176] @ (8005d00 ) - 8005c4e: 4293 cmp r3, r2 - 8005c50: d023 beq.n 8005c9a - 8005c52: 687b ldr r3, [r7, #4] - 8005c54: 4a2b ldr r2, [pc, #172] @ (8005d04 ) - 8005c56: 4293 cmp r3, r2 - 8005c58: d01f beq.n 8005c9a - 8005c5a: 687b ldr r3, [r7, #4] - 8005c5c: 4a2a ldr r2, [pc, #168] @ (8005d08 ) - 8005c5e: 4293 cmp r3, r2 - 8005c60: d01b beq.n 8005c9a - 8005c62: 687b ldr r3, [r7, #4] - 8005c64: 4a29 ldr r2, [pc, #164] @ (8005d0c ) - 8005c66: 4293 cmp r3, r2 - 8005c68: d017 beq.n 8005c9a - 8005c6a: 687b ldr r3, [r7, #4] - 8005c6c: 4a28 ldr r2, [pc, #160] @ (8005d10 ) - 8005c6e: 4293 cmp r3, r2 - 8005c70: d013 beq.n 8005c9a - 8005c72: 687b ldr r3, [r7, #4] - 8005c74: 4a27 ldr r2, [pc, #156] @ (8005d14 ) - 8005c76: 4293 cmp r3, r2 - 8005c78: d00f beq.n 8005c9a - 8005c7a: 687b ldr r3, [r7, #4] - 8005c7c: 4a26 ldr r2, [pc, #152] @ (8005d18 ) - 8005c7e: 4293 cmp r3, r2 - 8005c80: d00b beq.n 8005c9a - 8005c82: 687b ldr r3, [r7, #4] - 8005c84: 4a25 ldr r2, [pc, #148] @ (8005d1c ) - 8005c86: 4293 cmp r3, r2 - 8005c88: d007 beq.n 8005c9a - 8005c8a: 687b ldr r3, [r7, #4] - 8005c8c: 4a24 ldr r2, [pc, #144] @ (8005d20 ) - 8005c8e: 4293 cmp r3, r2 - 8005c90: d003 beq.n 8005c9a - 8005c92: 687b ldr r3, [r7, #4] - 8005c94: 4a23 ldr r2, [pc, #140] @ (8005d24 ) - 8005c96: 4293 cmp r3, r2 - 8005c98: d108 bne.n 8005cac - { - /* Set the clock division */ - tmpcr1 &= ~TIM_CR1_CKD; - 8005c9a: 68fb ldr r3, [r7, #12] - 8005c9c: f423 7340 bic.w r3, r3, #768 @ 0x300 - 8005ca0: 60fb str r3, [r7, #12] - tmpcr1 |= (uint32_t)Structure->ClockDivision; - 8005ca2: 683b ldr r3, [r7, #0] - 8005ca4: 68db ldr r3, [r3, #12] - 8005ca6: 68fa ldr r2, [r7, #12] - 8005ca8: 4313 orrs r3, r2 - 8005caa: 60fb str r3, [r7, #12] - } - - /* Set the auto-reload preload */ - MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload); - 8005cac: 68fb ldr r3, [r7, #12] - 8005cae: f023 0280 bic.w r2, r3, #128 @ 0x80 - 8005cb2: 683b ldr r3, [r7, #0] - 8005cb4: 695b ldr r3, [r3, #20] - 8005cb6: 4313 orrs r3, r2 - 8005cb8: 60fb str r3, [r7, #12] - - TIMx->CR1 = tmpcr1; - 8005cba: 687b ldr r3, [r7, #4] - 8005cbc: 68fa ldr r2, [r7, #12] - 8005cbe: 601a str r2, [r3, #0] - - /* Set the Autoreload value */ - TIMx->ARR = (uint32_t)Structure->Period ; - 8005cc0: 683b ldr r3, [r7, #0] - 8005cc2: 689a ldr r2, [r3, #8] - 8005cc4: 687b ldr r3, [r7, #4] - 8005cc6: 62da str r2, [r3, #44] @ 0x2c - - /* Set the Prescaler value */ - TIMx->PSC = Structure->Prescaler; - 8005cc8: 683b ldr r3, [r7, #0] - 8005cca: 681a ldr r2, [r3, #0] - 8005ccc: 687b ldr r3, [r7, #4] - 8005cce: 629a str r2, [r3, #40] @ 0x28 - - if (IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx)) - 8005cd0: 687b ldr r3, [r7, #4] - 8005cd2: 4a0a ldr r2, [pc, #40] @ (8005cfc ) - 8005cd4: 4293 cmp r3, r2 - 8005cd6: d003 beq.n 8005ce0 - 8005cd8: 687b ldr r3, [r7, #4] - 8005cda: 4a0c ldr r2, [pc, #48] @ (8005d0c ) - 8005cdc: 4293 cmp r3, r2 - 8005cde: d103 bne.n 8005ce8 - { - /* Set the Repetition Counter value */ - TIMx->RCR = Structure->RepetitionCounter; - 8005ce0: 683b ldr r3, [r7, #0] - 8005ce2: 691a ldr r2, [r3, #16] - 8005ce4: 687b ldr r3, [r7, #4] - 8005ce6: 631a str r2, [r3, #48] @ 0x30 - } - - /* Generate an update event to reload the Prescaler - and the repetition counter (only for advanced timer) value immediately */ - TIMx->EGR = TIM_EGR_UG; - 8005ce8: 687b ldr r3, [r7, #4] - 8005cea: 2201 movs r2, #1 - 8005cec: 615a str r2, [r3, #20] -} - 8005cee: bf00 nop - 8005cf0: 3714 adds r7, #20 - 8005cf2: 46bd mov sp, r7 - 8005cf4: f85d 7b04 ldr.w r7, [sp], #4 - 8005cf8: 4770 bx lr - 8005cfa: bf00 nop - 8005cfc: 40010000 .word 0x40010000 - 8005d00: 40000400 .word 0x40000400 - 8005d04: 40000800 .word 0x40000800 - 8005d08: 40000c00 .word 0x40000c00 - 8005d0c: 40010400 .word 0x40010400 - 8005d10: 40014000 .word 0x40014000 - 8005d14: 40014400 .word 0x40014400 - 8005d18: 40014800 .word 0x40014800 - 8005d1c: 40001800 .word 0x40001800 - 8005d20: 40001c00 .word 0x40001c00 - 8005d24: 40002000 .word 0x40002000 - -08005d28 : - * @param TIM_ICFilter Specifies the Input Capture Filter. - * This parameter must be a value between 0x00 and 0x0F. - * @retval None - */ -static void TIM_TI1_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter) -{ - 8005d28: b480 push {r7} - 8005d2a: b087 sub sp, #28 - 8005d2c: af00 add r7, sp, #0 - 8005d2e: 60f8 str r0, [r7, #12] - 8005d30: 60b9 str r1, [r7, #8] - 8005d32: 607a str r2, [r7, #4] - uint32_t tmpccmr1; - uint32_t tmpccer; - - /* Disable the Channel 1: Reset the CC1E Bit */ - tmpccer = TIMx->CCER; - 8005d34: 68fb ldr r3, [r7, #12] - 8005d36: 6a1b ldr r3, [r3, #32] - 8005d38: 617b str r3, [r7, #20] - TIMx->CCER &= ~TIM_CCER_CC1E; - 8005d3a: 68fb ldr r3, [r7, #12] - 8005d3c: 6a1b ldr r3, [r3, #32] - 8005d3e: f023 0201 bic.w r2, r3, #1 - 8005d42: 68fb ldr r3, [r7, #12] - 8005d44: 621a str r2, [r3, #32] - tmpccmr1 = TIMx->CCMR1; - 8005d46: 68fb ldr r3, [r7, #12] - 8005d48: 699b ldr r3, [r3, #24] - 8005d4a: 613b str r3, [r7, #16] - - /* Set the filter */ - tmpccmr1 &= ~TIM_CCMR1_IC1F; - 8005d4c: 693b ldr r3, [r7, #16] - 8005d4e: f023 03f0 bic.w r3, r3, #240 @ 0xf0 - 8005d52: 613b str r3, [r7, #16] - tmpccmr1 |= (TIM_ICFilter << 4U); - 8005d54: 687b ldr r3, [r7, #4] - 8005d56: 011b lsls r3, r3, #4 - 8005d58: 693a ldr r2, [r7, #16] - 8005d5a: 4313 orrs r3, r2 - 8005d5c: 613b str r3, [r7, #16] - - /* Select the Polarity and set the CC1E Bit */ - tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP); - 8005d5e: 697b ldr r3, [r7, #20] - 8005d60: f023 030a bic.w r3, r3, #10 - 8005d64: 617b str r3, [r7, #20] - tmpccer |= TIM_ICPolarity; - 8005d66: 697a ldr r2, [r7, #20] - 8005d68: 68bb ldr r3, [r7, #8] - 8005d6a: 4313 orrs r3, r2 - 8005d6c: 617b str r3, [r7, #20] - - /* Write to TIMx CCMR1 and CCER registers */ - TIMx->CCMR1 = tmpccmr1; - 8005d6e: 68fb ldr r3, [r7, #12] - 8005d70: 693a ldr r2, [r7, #16] - 8005d72: 619a str r2, [r3, #24] - TIMx->CCER = tmpccer; - 8005d74: 68fb ldr r3, [r7, #12] - 8005d76: 697a ldr r2, [r7, #20] - 8005d78: 621a str r2, [r3, #32] -} - 8005d7a: bf00 nop - 8005d7c: 371c adds r7, #28 - 8005d7e: 46bd mov sp, r7 - 8005d80: f85d 7b04 ldr.w r7, [sp], #4 - 8005d84: 4770 bx lr - -08005d86 : - * @param TIM_ICFilter Specifies the Input Capture Filter. - * This parameter must be a value between 0x00 and 0x0F. - * @retval None - */ -static void TIM_TI2_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter) -{ - 8005d86: b480 push {r7} - 8005d88: b087 sub sp, #28 - 8005d8a: af00 add r7, sp, #0 - 8005d8c: 60f8 str r0, [r7, #12] - 8005d8e: 60b9 str r1, [r7, #8] - 8005d90: 607a str r2, [r7, #4] - uint32_t tmpccmr1; - uint32_t tmpccer; - - /* Disable the Channel 2: Reset the CC2E Bit */ - TIMx->CCER &= ~TIM_CCER_CC2E; - 8005d92: 68fb ldr r3, [r7, #12] - 8005d94: 6a1b ldr r3, [r3, #32] - 8005d96: f023 0210 bic.w r2, r3, #16 - 8005d9a: 68fb ldr r3, [r7, #12] - 8005d9c: 621a str r2, [r3, #32] - tmpccmr1 = TIMx->CCMR1; - 8005d9e: 68fb ldr r3, [r7, #12] - 8005da0: 699b ldr r3, [r3, #24] - 8005da2: 617b str r3, [r7, #20] - tmpccer = TIMx->CCER; - 8005da4: 68fb ldr r3, [r7, #12] - 8005da6: 6a1b ldr r3, [r3, #32] - 8005da8: 613b str r3, [r7, #16] - - /* Set the filter */ - tmpccmr1 &= ~TIM_CCMR1_IC2F; - 8005daa: 697b ldr r3, [r7, #20] - 8005dac: f423 4370 bic.w r3, r3, #61440 @ 0xf000 - 8005db0: 617b str r3, [r7, #20] - tmpccmr1 |= (TIM_ICFilter << 12U); - 8005db2: 687b ldr r3, [r7, #4] - 8005db4: 031b lsls r3, r3, #12 - 8005db6: 697a ldr r2, [r7, #20] - 8005db8: 4313 orrs r3, r2 - 8005dba: 617b str r3, [r7, #20] - - /* Select the Polarity and set the CC2E Bit */ - tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP); - 8005dbc: 693b ldr r3, [r7, #16] - 8005dbe: f023 03a0 bic.w r3, r3, #160 @ 0xa0 - 8005dc2: 613b str r3, [r7, #16] - tmpccer |= (TIM_ICPolarity << 4U); - 8005dc4: 68bb ldr r3, [r7, #8] - 8005dc6: 011b lsls r3, r3, #4 - 8005dc8: 693a ldr r2, [r7, #16] - 8005dca: 4313 orrs r3, r2 - 8005dcc: 613b str r3, [r7, #16] - - /* Write to TIMx CCMR1 and CCER registers */ - TIMx->CCMR1 = tmpccmr1 ; - 8005dce: 68fb ldr r3, [r7, #12] - 8005dd0: 697a ldr r2, [r7, #20] - 8005dd2: 619a str r2, [r3, #24] - TIMx->CCER = tmpccer; - 8005dd4: 68fb ldr r3, [r7, #12] - 8005dd6: 693a ldr r2, [r7, #16] - 8005dd8: 621a str r2, [r3, #32] -} - 8005dda: bf00 nop - 8005ddc: 371c adds r7, #28 - 8005dde: 46bd mov sp, r7 - 8005de0: f85d 7b04 ldr.w r7, [sp], #4 - 8005de4: 4770 bx lr - -08005de6 : - * @arg TIM_TS_TI2FP2: Filtered Timer Input 2 - * @arg TIM_TS_ETRF: External Trigger input - * @retval None - */ -static void TIM_ITRx_SetConfig(TIM_TypeDef *TIMx, uint32_t InputTriggerSource) -{ - 8005de6: b480 push {r7} - 8005de8: b085 sub sp, #20 - 8005dea: af00 add r7, sp, #0 - 8005dec: 6078 str r0, [r7, #4] - 8005dee: 6039 str r1, [r7, #0] - uint32_t tmpsmcr; - - /* Get the TIMx SMCR register value */ - tmpsmcr = TIMx->SMCR; - 8005df0: 687b ldr r3, [r7, #4] - 8005df2: 689b ldr r3, [r3, #8] - 8005df4: 60fb str r3, [r7, #12] - /* Reset the TS Bits */ - tmpsmcr &= ~TIM_SMCR_TS; - 8005df6: 68fb ldr r3, [r7, #12] - 8005df8: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8005dfc: 60fb str r3, [r7, #12] - /* Set the Input Trigger source and the slave mode*/ - tmpsmcr |= (InputTriggerSource | TIM_SLAVEMODE_EXTERNAL1); - 8005dfe: 683a ldr r2, [r7, #0] - 8005e00: 68fb ldr r3, [r7, #12] - 8005e02: 4313 orrs r3, r2 - 8005e04: f043 0307 orr.w r3, r3, #7 - 8005e08: 60fb str r3, [r7, #12] - /* Write to TIMx SMCR */ - TIMx->SMCR = tmpsmcr; - 8005e0a: 687b ldr r3, [r7, #4] - 8005e0c: 68fa ldr r2, [r7, #12] - 8005e0e: 609a str r2, [r3, #8] -} - 8005e10: bf00 nop - 8005e12: 3714 adds r7, #20 - 8005e14: 46bd mov sp, r7 - 8005e16: f85d 7b04 ldr.w r7, [sp], #4 - 8005e1a: 4770 bx lr - -08005e1c : - * This parameter must be a value between 0x00 and 0x0F - * @retval None - */ -void TIM_ETR_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ExtTRGPrescaler, - uint32_t TIM_ExtTRGPolarity, uint32_t ExtTRGFilter) -{ - 8005e1c: b480 push {r7} - 8005e1e: b087 sub sp, #28 - 8005e20: af00 add r7, sp, #0 - 8005e22: 60f8 str r0, [r7, #12] - 8005e24: 60b9 str r1, [r7, #8] - 8005e26: 607a str r2, [r7, #4] - 8005e28: 603b str r3, [r7, #0] - uint32_t tmpsmcr; - - tmpsmcr = TIMx->SMCR; - 8005e2a: 68fb ldr r3, [r7, #12] - 8005e2c: 689b ldr r3, [r3, #8] - 8005e2e: 617b str r3, [r7, #20] - - /* Reset the ETR Bits */ - tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); - 8005e30: 697b ldr r3, [r7, #20] - 8005e32: f423 437f bic.w r3, r3, #65280 @ 0xff00 - 8005e36: 617b str r3, [r7, #20] - - /* Set the Prescaler, the Filter value and the Polarity */ - tmpsmcr |= (uint32_t)(TIM_ExtTRGPrescaler | (TIM_ExtTRGPolarity | (ExtTRGFilter << 8U))); - 8005e38: 683b ldr r3, [r7, #0] - 8005e3a: 021a lsls r2, r3, #8 - 8005e3c: 687b ldr r3, [r7, #4] - 8005e3e: 431a orrs r2, r3 - 8005e40: 68bb ldr r3, [r7, #8] - 8005e42: 4313 orrs r3, r2 - 8005e44: 697a ldr r2, [r7, #20] - 8005e46: 4313 orrs r3, r2 - 8005e48: 617b str r3, [r7, #20] - - /* Write to TIMx SMCR */ - TIMx->SMCR = tmpsmcr; - 8005e4a: 68fb ldr r3, [r7, #12] - 8005e4c: 697a ldr r2, [r7, #20] - 8005e4e: 609a str r2, [r3, #8] -} - 8005e50: bf00 nop - 8005e52: 371c adds r7, #28 - 8005e54: 46bd mov sp, r7 - 8005e56: f85d 7b04 ldr.w r7, [sp], #4 - 8005e5a: 4770 bx lr - -08005e5c : - * mode. - * @retval HAL status - */ -HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, - TIM_MasterConfigTypeDef *sMasterConfig) -{ - 8005e5c: b480 push {r7} - 8005e5e: b085 sub sp, #20 - 8005e60: af00 add r7, sp, #0 - 8005e62: 6078 str r0, [r7, #4] - 8005e64: 6039 str r1, [r7, #0] - assert_param(IS_TIM_MASTER_INSTANCE(htim->Instance)); - assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger)); - assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode)); - - /* Check input state */ - __HAL_LOCK(htim); - 8005e66: 687b ldr r3, [r7, #4] - 8005e68: f893 303c ldrb.w r3, [r3, #60] @ 0x3c - 8005e6c: 2b01 cmp r3, #1 - 8005e6e: d101 bne.n 8005e74 - 8005e70: 2302 movs r3, #2 - 8005e72: e05a b.n 8005f2a - 8005e74: 687b ldr r3, [r7, #4] - 8005e76: 2201 movs r2, #1 - 8005e78: f883 203c strb.w r2, [r3, #60] @ 0x3c - - /* Change the handler state */ - htim->State = HAL_TIM_STATE_BUSY; - 8005e7c: 687b ldr r3, [r7, #4] - 8005e7e: 2202 movs r2, #2 - 8005e80: f883 203d strb.w r2, [r3, #61] @ 0x3d - - /* Get the TIMx CR2 register value */ - tmpcr2 = htim->Instance->CR2; - 8005e84: 687b ldr r3, [r7, #4] - 8005e86: 681b ldr r3, [r3, #0] - 8005e88: 685b ldr r3, [r3, #4] - 8005e8a: 60fb str r3, [r7, #12] - - /* Get the TIMx SMCR register value */ - tmpsmcr = htim->Instance->SMCR; - 8005e8c: 687b ldr r3, [r7, #4] - 8005e8e: 681b ldr r3, [r3, #0] - 8005e90: 689b ldr r3, [r3, #8] - 8005e92: 60bb str r3, [r7, #8] - - /* Reset the MMS Bits */ - tmpcr2 &= ~TIM_CR2_MMS; - 8005e94: 68fb ldr r3, [r7, #12] - 8005e96: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8005e9a: 60fb str r3, [r7, #12] - /* Select the TRGO source */ - tmpcr2 |= sMasterConfig->MasterOutputTrigger; - 8005e9c: 683b ldr r3, [r7, #0] - 8005e9e: 681b ldr r3, [r3, #0] - 8005ea0: 68fa ldr r2, [r7, #12] - 8005ea2: 4313 orrs r3, r2 - 8005ea4: 60fb str r3, [r7, #12] - - /* Update TIMx CR2 */ - htim->Instance->CR2 = tmpcr2; - 8005ea6: 687b ldr r3, [r7, #4] - 8005ea8: 681b ldr r3, [r3, #0] - 8005eaa: 68fa ldr r2, [r7, #12] - 8005eac: 605a str r2, [r3, #4] - - if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) - 8005eae: 687b ldr r3, [r7, #4] - 8005eb0: 681b ldr r3, [r3, #0] - 8005eb2: 4a21 ldr r2, [pc, #132] @ (8005f38 ) - 8005eb4: 4293 cmp r3, r2 - 8005eb6: d022 beq.n 8005efe - 8005eb8: 687b ldr r3, [r7, #4] - 8005eba: 681b ldr r3, [r3, #0] - 8005ebc: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8005ec0: d01d beq.n 8005efe - 8005ec2: 687b ldr r3, [r7, #4] - 8005ec4: 681b ldr r3, [r3, #0] - 8005ec6: 4a1d ldr r2, [pc, #116] @ (8005f3c ) - 8005ec8: 4293 cmp r3, r2 - 8005eca: d018 beq.n 8005efe - 8005ecc: 687b ldr r3, [r7, #4] - 8005ece: 681b ldr r3, [r3, #0] - 8005ed0: 4a1b ldr r2, [pc, #108] @ (8005f40 ) - 8005ed2: 4293 cmp r3, r2 - 8005ed4: d013 beq.n 8005efe - 8005ed6: 687b ldr r3, [r7, #4] - 8005ed8: 681b ldr r3, [r3, #0] - 8005eda: 4a1a ldr r2, [pc, #104] @ (8005f44 ) - 8005edc: 4293 cmp r3, r2 - 8005ede: d00e beq.n 8005efe - 8005ee0: 687b ldr r3, [r7, #4] - 8005ee2: 681b ldr r3, [r3, #0] - 8005ee4: 4a18 ldr r2, [pc, #96] @ (8005f48 ) - 8005ee6: 4293 cmp r3, r2 - 8005ee8: d009 beq.n 8005efe - 8005eea: 687b ldr r3, [r7, #4] - 8005eec: 681b ldr r3, [r3, #0] - 8005eee: 4a17 ldr r2, [pc, #92] @ (8005f4c ) - 8005ef0: 4293 cmp r3, r2 - 8005ef2: d004 beq.n 8005efe - 8005ef4: 687b ldr r3, [r7, #4] - 8005ef6: 681b ldr r3, [r3, #0] - 8005ef8: 4a15 ldr r2, [pc, #84] @ (8005f50 ) - 8005efa: 4293 cmp r3, r2 - 8005efc: d10c bne.n 8005f18 - { - /* Reset the MSM Bit */ - tmpsmcr &= ~TIM_SMCR_MSM; - 8005efe: 68bb ldr r3, [r7, #8] - 8005f00: f023 0380 bic.w r3, r3, #128 @ 0x80 - 8005f04: 60bb str r3, [r7, #8] - /* Set master mode */ - tmpsmcr |= sMasterConfig->MasterSlaveMode; - 8005f06: 683b ldr r3, [r7, #0] - 8005f08: 685b ldr r3, [r3, #4] - 8005f0a: 68ba ldr r2, [r7, #8] - 8005f0c: 4313 orrs r3, r2 - 8005f0e: 60bb str r3, [r7, #8] - - /* Update TIMx SMCR */ - htim->Instance->SMCR = tmpsmcr; - 8005f10: 687b ldr r3, [r7, #4] - 8005f12: 681b ldr r3, [r3, #0] - 8005f14: 68ba ldr r2, [r7, #8] - 8005f16: 609a str r2, [r3, #8] - } - - /* Change the htim state */ - htim->State = HAL_TIM_STATE_READY; - 8005f18: 687b ldr r3, [r7, #4] - 8005f1a: 2201 movs r2, #1 - 8005f1c: f883 203d strb.w r2, [r3, #61] @ 0x3d - - __HAL_UNLOCK(htim); - 8005f20: 687b ldr r3, [r7, #4] - 8005f22: 2200 movs r2, #0 - 8005f24: f883 203c strb.w r2, [r3, #60] @ 0x3c - - return HAL_OK; - 8005f28: 2300 movs r3, #0 -} - 8005f2a: 4618 mov r0, r3 - 8005f2c: 3714 adds r7, #20 - 8005f2e: 46bd mov sp, r7 - 8005f30: f85d 7b04 ldr.w r7, [sp], #4 - 8005f34: 4770 bx lr - 8005f36: bf00 nop - 8005f38: 40010000 .word 0x40010000 - 8005f3c: 40000400 .word 0x40000400 - 8005f40: 40000800 .word 0x40000800 - 8005f44: 40000c00 .word 0x40000c00 - 8005f48: 40010400 .word 0x40010400 - 8005f4c: 40014000 .word 0x40014000 - 8005f50: 40001800 .word 0x40001800 - -08005f54 : - * @brief Hall commutation changed callback in non-blocking mode - * @param htim TIM handle - * @retval None - */ -__weak void HAL_TIMEx_CommutCallback(TIM_HandleTypeDef *htim) -{ - 8005f54: b480 push {r7} - 8005f56: b083 sub sp, #12 - 8005f58: af00 add r7, sp, #0 - 8005f5a: 6078 str r0, [r7, #4] - UNUSED(htim); - - /* NOTE : This function should not be modified, when the callback is needed, - the HAL_TIMEx_CommutCallback could be implemented in the user file - */ -} - 8005f5c: bf00 nop - 8005f5e: 370c adds r7, #12 - 8005f60: 46bd mov sp, r7 - 8005f62: f85d 7b04 ldr.w r7, [sp], #4 - 8005f66: 4770 bx lr - -08005f68 : - * @brief Hall Break detection callback in non-blocking mode - * @param htim TIM handle - * @retval None - */ -__weak void HAL_TIMEx_BreakCallback(TIM_HandleTypeDef *htim) -{ - 8005f68: b480 push {r7} - 8005f6a: b083 sub sp, #12 - 8005f6c: af00 add r7, sp, #0 - 8005f6e: 6078 str r0, [r7, #4] - UNUSED(htim); - - /* NOTE : This function should not be modified, when the callback is needed, - the HAL_TIMEx_BreakCallback could be implemented in the user file - */ -} - 8005f70: bf00 nop - 8005f72: 370c adds r7, #12 - 8005f74: 46bd mov sp, r7 - 8005f76: f85d 7b04 ldr.w r7, [sp], #4 - 8005f7a: 4770 bx lr - -08005f7c : - * @param Init Pointer to NORSRAM Initialization structure - * @retval HAL status - */ -HAL_StatusTypeDef FMC_NORSRAM_Init(FMC_NORSRAM_TypeDef *Device, - FMC_NORSRAM_InitTypeDef *Init) -{ - 8005f7c: b480 push {r7} - 8005f7e: b087 sub sp, #28 - 8005f80: af00 add r7, sp, #0 - 8005f82: 6078 str r0, [r7, #4] - 8005f84: 6039 str r1, [r7, #0] - assert_param(IS_FMC_WRITE_FIFO(Init->WriteFifo)); -#endif /* FMC_BCR1_WFDIS */ - assert_param(IS_FMC_PAGESIZE(Init->PageSize)); - - /* Disable NORSRAM Device */ - __FMC_NORSRAM_DISABLE(Device, Init->NSBank); - 8005f86: 683b ldr r3, [r7, #0] - 8005f88: 681a ldr r2, [r3, #0] - 8005f8a: 687b ldr r3, [r7, #4] - 8005f8c: f853 3022 ldr.w r3, [r3, r2, lsl #2] - 8005f90: 683a ldr r2, [r7, #0] - 8005f92: 6812 ldr r2, [r2, #0] - 8005f94: f023 0101 bic.w r1, r3, #1 - 8005f98: 687b ldr r3, [r7, #4] - 8005f9a: f843 1022 str.w r1, [r3, r2, lsl #2] - - /* Set NORSRAM device control parameters */ - if (Init->MemoryType == FMC_MEMORY_TYPE_NOR) - 8005f9e: 683b ldr r3, [r7, #0] - 8005fa0: 689b ldr r3, [r3, #8] - 8005fa2: 2b08 cmp r3, #8 - 8005fa4: d102 bne.n 8005fac - { - flashaccess = FMC_NORSRAM_FLASH_ACCESS_ENABLE; - 8005fa6: 2340 movs r3, #64 @ 0x40 - 8005fa8: 617b str r3, [r7, #20] - 8005faa: e001 b.n 8005fb0 - } - else - { - flashaccess = FMC_NORSRAM_FLASH_ACCESS_DISABLE; - 8005fac: 2300 movs r3, #0 - 8005fae: 617b str r3, [r7, #20] - } - - btcr_reg = (flashaccess | \ - Init->DataAddressMux | \ - 8005fb0: 683b ldr r3, [r7, #0] - 8005fb2: 685a ldr r2, [r3, #4] - btcr_reg = (flashaccess | \ - 8005fb4: 697b ldr r3, [r7, #20] - 8005fb6: 431a orrs r2, r3 - Init->MemoryType | \ - 8005fb8: 683b ldr r3, [r7, #0] - 8005fba: 689b ldr r3, [r3, #8] - Init->DataAddressMux | \ - 8005fbc: 431a orrs r2, r3 - Init->MemoryDataWidth | \ - 8005fbe: 683b ldr r3, [r7, #0] - 8005fc0: 68db ldr r3, [r3, #12] - Init->MemoryType | \ - 8005fc2: 431a orrs r2, r3 - Init->BurstAccessMode | \ - 8005fc4: 683b ldr r3, [r7, #0] - 8005fc6: 691b ldr r3, [r3, #16] - Init->MemoryDataWidth | \ - 8005fc8: 431a orrs r2, r3 - Init->WaitSignalPolarity | \ - 8005fca: 683b ldr r3, [r7, #0] - 8005fcc: 695b ldr r3, [r3, #20] - Init->BurstAccessMode | \ - 8005fce: 431a orrs r2, r3 - Init->WaitSignalActive | \ - 8005fd0: 683b ldr r3, [r7, #0] - 8005fd2: 69db ldr r3, [r3, #28] - Init->WaitSignalPolarity | \ - 8005fd4: 431a orrs r2, r3 - Init->WriteOperation | \ - 8005fd6: 683b ldr r3, [r7, #0] - 8005fd8: 6a1b ldr r3, [r3, #32] - Init->WaitSignalActive | \ - 8005fda: 431a orrs r2, r3 - Init->WaitSignal | \ - 8005fdc: 683b ldr r3, [r7, #0] - 8005fde: 6a5b ldr r3, [r3, #36] @ 0x24 - Init->WriteOperation | \ - 8005fe0: 431a orrs r2, r3 - Init->ExtendedMode | \ - 8005fe2: 683b ldr r3, [r7, #0] - 8005fe4: 6a9b ldr r3, [r3, #40] @ 0x28 - Init->WaitSignal | \ - 8005fe6: 431a orrs r2, r3 - Init->AsynchronousWait | \ - 8005fe8: 683b ldr r3, [r7, #0] - 8005fea: 6adb ldr r3, [r3, #44] @ 0x2c - Init->ExtendedMode | \ - 8005fec: 431a orrs r2, r3 - Init->WriteBurst); - 8005fee: 683b ldr r3, [r7, #0] - 8005ff0: 6b1b ldr r3, [r3, #48] @ 0x30 - btcr_reg = (flashaccess | \ - 8005ff2: 4313 orrs r3, r2 - 8005ff4: 613b str r3, [r7, #16] - -#if defined(FMC_BCR1_WRAPMOD) - btcr_reg |= Init->WrapMode; - 8005ff6: 683b ldr r3, [r7, #0] - 8005ff8: 699b ldr r3, [r3, #24] - 8005ffa: 693a ldr r2, [r7, #16] - 8005ffc: 4313 orrs r3, r2 - 8005ffe: 613b str r3, [r7, #16] -#endif /* FMC_BCR1_WRAPMOD */ -#if defined(FMC_BCR1_CCLKEN) - btcr_reg |= Init->ContinuousClock; - 8006000: 683b ldr r3, [r7, #0] - 8006002: 6b5b ldr r3, [r3, #52] @ 0x34 - 8006004: 693a ldr r2, [r7, #16] - 8006006: 4313 orrs r3, r2 - 8006008: 613b str r3, [r7, #16] -#endif /* FMC_BCR1_CCLKEN */ -#if defined(FMC_BCR1_WFDIS) - btcr_reg |= Init->WriteFifo; -#endif /* FMC_BCR1_WFDIS */ - btcr_reg |= Init->PageSize; - 800600a: 683b ldr r3, [r7, #0] - 800600c: 6bdb ldr r3, [r3, #60] @ 0x3c - 800600e: 693a ldr r2, [r7, #16] - 8006010: 4313 orrs r3, r2 - 8006012: 613b str r3, [r7, #16] - - mask = (FMC_BCR1_MBKEN | - 8006014: 4b1b ldr r3, [pc, #108] @ (8006084 ) - 8006016: 60fb str r3, [r7, #12] - FMC_BCR1_EXTMOD | - FMC_BCR1_ASYNCWAIT | - FMC_BCR1_CBURSTRW); - -#if defined(FMC_BCR1_WRAPMOD) - mask |= FMC_BCR1_WRAPMOD; - 8006018: 68fb ldr r3, [r7, #12] - 800601a: f443 6380 orr.w r3, r3, #1024 @ 0x400 - 800601e: 60fb str r3, [r7, #12] -#endif /* FMC_BCR1_WRAPMOD */ -#if defined(FMC_BCR1_CCLKEN) - mask |= FMC_BCR1_CCLKEN; - 8006020: 68fb ldr r3, [r7, #12] - 8006022: f443 1380 orr.w r3, r3, #1048576 @ 0x100000 - 8006026: 60fb str r3, [r7, #12] -#endif -#if defined(FMC_BCR1_WFDIS) - mask |= FMC_BCR1_WFDIS; -#endif /* FMC_BCR1_WFDIS */ - mask |= FMC_BCR1_CPSIZE; - 8006028: 68fb ldr r3, [r7, #12] - 800602a: f443 23e0 orr.w r3, r3, #458752 @ 0x70000 - 800602e: 60fb str r3, [r7, #12] - - MODIFY_REG(Device->BTCR[Init->NSBank], mask, btcr_reg); - 8006030: 683b ldr r3, [r7, #0] - 8006032: 681a ldr r2, [r3, #0] - 8006034: 687b ldr r3, [r7, #4] - 8006036: f853 2022 ldr.w r2, [r3, r2, lsl #2] - 800603a: 68fb ldr r3, [r7, #12] - 800603c: 43db mvns r3, r3 - 800603e: ea02 0103 and.w r1, r2, r3 - 8006042: 683b ldr r3, [r7, #0] - 8006044: 681a ldr r2, [r3, #0] - 8006046: 693b ldr r3, [r7, #16] - 8006048: 4319 orrs r1, r3 - 800604a: 687b ldr r3, [r7, #4] - 800604c: f843 1022 str.w r1, [r3, r2, lsl #2] - -#if defined(FMC_BCR1_CCLKEN) - /* Configure synchronous mode when Continuous clock is enabled for bank2..4 */ - if ((Init->ContinuousClock == FMC_CONTINUOUS_CLOCK_SYNC_ASYNC) && (Init->NSBank != FMC_NORSRAM_BANK1)) - 8006050: 683b ldr r3, [r7, #0] - 8006052: 6b5b ldr r3, [r3, #52] @ 0x34 - 8006054: f5b3 1f80 cmp.w r3, #1048576 @ 0x100000 - 8006058: d10c bne.n 8006074 - 800605a: 683b ldr r3, [r7, #0] - 800605c: 681b ldr r3, [r3, #0] - 800605e: 2b00 cmp r3, #0 - 8006060: d008 beq.n 8006074 - { - MODIFY_REG(Device->BTCR[FMC_NORSRAM_BANK1], FMC_BCR1_CCLKEN, Init->ContinuousClock); - 8006062: 687b ldr r3, [r7, #4] - 8006064: 681b ldr r3, [r3, #0] - 8006066: f423 1280 bic.w r2, r3, #1048576 @ 0x100000 - 800606a: 683b ldr r3, [r7, #0] - 800606c: 6b5b ldr r3, [r3, #52] @ 0x34 - 800606e: 431a orrs r2, r3 - 8006070: 687b ldr r3, [r7, #4] - 8006072: 601a str r2, [r3, #0] - /* Configure Write FIFO mode when Write Fifo is enabled for bank2..4 */ - SET_BIT(Device->BTCR[FMC_NORSRAM_BANK1], (uint32_t)(Init->WriteFifo)); - } -#endif /* FMC_BCR1_WFDIS */ - - return HAL_OK; - 8006074: 2300 movs r3, #0 -} - 8006076: 4618 mov r0, r3 - 8006078: 371c adds r7, #28 - 800607a: 46bd mov sp, r7 - 800607c: f85d 7b04 ldr.w r7, [sp], #4 - 8006080: 4770 bx lr - 8006082: bf00 nop - 8006084: 0008fb7f .word 0x0008fb7f - -08006088 : - * @param Bank NORSRAM bank number - * @retval HAL status - */ -HAL_StatusTypeDef FMC_NORSRAM_Timing_Init(FMC_NORSRAM_TypeDef *Device, - FMC_NORSRAM_TimingTypeDef *Timing, uint32_t Bank) -{ - 8006088: b480 push {r7} - 800608a: b087 sub sp, #28 - 800608c: af00 add r7, sp, #0 - 800608e: 60f8 str r0, [r7, #12] - 8006090: 60b9 str r1, [r7, #8] - 8006092: 607a str r2, [r7, #4] - assert_param(IS_FMC_DATA_LATENCY(Timing->DataLatency)); - assert_param(IS_FMC_ACCESS_MODE(Timing->AccessMode)); - assert_param(IS_FMC_NORSRAM_BANK(Bank)); - - /* Set FMC_NORSRAM device timing parameters */ - MODIFY_REG(Device->BTCR[Bank + 1U], BTR_CLEAR_MASK, (Timing->AddressSetupTime | - 8006094: 687b ldr r3, [r7, #4] - 8006096: 1c5a adds r2, r3, #1 - 8006098: 68fb ldr r3, [r7, #12] - 800609a: f853 3022 ldr.w r3, [r3, r2, lsl #2] - 800609e: f003 4140 and.w r1, r3, #3221225472 @ 0xc0000000 - 80060a2: 68bb ldr r3, [r7, #8] - 80060a4: 681a ldr r2, [r3, #0] - 80060a6: 68bb ldr r3, [r7, #8] - 80060a8: 685b ldr r3, [r3, #4] - 80060aa: 011b lsls r3, r3, #4 - 80060ac: 431a orrs r2, r3 - 80060ae: 68bb ldr r3, [r7, #8] - 80060b0: 689b ldr r3, [r3, #8] - 80060b2: 021b lsls r3, r3, #8 - 80060b4: 431a orrs r2, r3 - 80060b6: 68bb ldr r3, [r7, #8] - 80060b8: 68db ldr r3, [r3, #12] - 80060ba: 041b lsls r3, r3, #16 - 80060bc: 431a orrs r2, r3 - 80060be: 68bb ldr r3, [r7, #8] - 80060c0: 691b ldr r3, [r3, #16] - 80060c2: 3b01 subs r3, #1 - 80060c4: 051b lsls r3, r3, #20 - 80060c6: 431a orrs r2, r3 - 80060c8: 68bb ldr r3, [r7, #8] - 80060ca: 695b ldr r3, [r3, #20] - 80060cc: 3b02 subs r3, #2 - 80060ce: 061b lsls r3, r3, #24 - 80060d0: 431a orrs r2, r3 - 80060d2: 68bb ldr r3, [r7, #8] - 80060d4: 699b ldr r3, [r3, #24] - 80060d6: 4313 orrs r3, r2 - 80060d8: 687a ldr r2, [r7, #4] - 80060da: 3201 adds r2, #1 - 80060dc: 4319 orrs r1, r3 - 80060de: 68fb ldr r3, [r7, #12] - 80060e0: f843 1022 str.w r1, [r3, r2, lsl #2] - (((Timing->DataLatency) - 2U) << FMC_BTR1_DATLAT_Pos) | - (Timing->AccessMode))); - -#if defined(FMC_BCR1_CCLKEN) - /* Configure Clock division value (in NORSRAM bank 1) when continuous clock is enabled */ - if (HAL_IS_BIT_SET(Device->BTCR[FMC_NORSRAM_BANK1], FMC_BCR1_CCLKEN)) - 80060e4: 68fb ldr r3, [r7, #12] - 80060e6: 681b ldr r3, [r3, #0] - 80060e8: f403 1380 and.w r3, r3, #1048576 @ 0x100000 - 80060ec: f5b3 1f80 cmp.w r3, #1048576 @ 0x100000 - 80060f0: d113 bne.n 800611a - { - tmpr = (uint32_t)(Device->BTCR[FMC_NORSRAM_BANK1 + 1U] & ~((0x0FU) << FMC_BTR1_CLKDIV_Pos)); - 80060f2: 68fb ldr r3, [r7, #12] - 80060f4: 685b ldr r3, [r3, #4] - 80060f6: f423 0370 bic.w r3, r3, #15728640 @ 0xf00000 - 80060fa: 617b str r3, [r7, #20] - tmpr |= (uint32_t)(((Timing->CLKDivision) - 1U) << FMC_BTR1_CLKDIV_Pos); - 80060fc: 68bb ldr r3, [r7, #8] - 80060fe: 691b ldr r3, [r3, #16] - 8006100: 3b01 subs r3, #1 - 8006102: 051b lsls r3, r3, #20 - 8006104: 697a ldr r2, [r7, #20] - 8006106: 4313 orrs r3, r2 - 8006108: 617b str r3, [r7, #20] - MODIFY_REG(Device->BTCR[FMC_NORSRAM_BANK1 + 1U], FMC_BTR1_CLKDIV, tmpr); - 800610a: 68fb ldr r3, [r7, #12] - 800610c: 685b ldr r3, [r3, #4] - 800610e: f423 0270 bic.w r2, r3, #15728640 @ 0xf00000 - 8006112: 697b ldr r3, [r7, #20] - 8006114: 431a orrs r2, r3 - 8006116: 68fb ldr r3, [r7, #12] - 8006118: 605a str r2, [r3, #4] - } - -#endif - return HAL_OK; - 800611a: 2300 movs r3, #0 -} - 800611c: 4618 mov r0, r3 - 800611e: 371c adds r7, #28 - 8006120: 46bd mov sp, r7 - 8006122: f85d 7b04 ldr.w r7, [sp], #4 - 8006126: 4770 bx lr - -08006128 : - * @retval HAL status - */ -HAL_StatusTypeDef FMC_NORSRAM_Extended_Timing_Init(FMC_NORSRAM_EXTENDED_TypeDef *Device, - FMC_NORSRAM_TimingTypeDef *Timing, uint32_t Bank, - uint32_t ExtendedMode) -{ - 8006128: b480 push {r7} - 800612a: b085 sub sp, #20 - 800612c: af00 add r7, sp, #0 - 800612e: 60f8 str r0, [r7, #12] - 8006130: 60b9 str r1, [r7, #8] - 8006132: 607a str r2, [r7, #4] - 8006134: 603b str r3, [r7, #0] - /* Check the parameters */ - assert_param(IS_FMC_EXTENDED_MODE(ExtendedMode)); - - /* Set NORSRAM device timing register for write configuration, if extended mode is used */ - if (ExtendedMode == FMC_EXTENDED_MODE_ENABLE) - 8006136: 683b ldr r3, [r7, #0] - 8006138: f5b3 4f80 cmp.w r3, #16384 @ 0x4000 - 800613c: d11d bne.n 800617a - assert_param(IS_FMC_TURNAROUND_TIME(Timing->BusTurnAroundDuration)); - assert_param(IS_FMC_ACCESS_MODE(Timing->AccessMode)); - assert_param(IS_FMC_NORSRAM_BANK(Bank)); - - /* Set NORSRAM device timing register for write configuration, if extended mode is used */ - MODIFY_REG(Device->BWTR[Bank], BWTR_CLEAR_MASK, (Timing->AddressSetupTime | - 800613e: 68fb ldr r3, [r7, #12] - 8006140: 687a ldr r2, [r7, #4] - 8006142: f853 2022 ldr.w r2, [r3, r2, lsl #2] - 8006146: 4b13 ldr r3, [pc, #76] @ (8006194 ) - 8006148: 4013 ands r3, r2 - 800614a: 68ba ldr r2, [r7, #8] - 800614c: 6811 ldr r1, [r2, #0] - 800614e: 68ba ldr r2, [r7, #8] - 8006150: 6852 ldr r2, [r2, #4] - 8006152: 0112 lsls r2, r2, #4 - 8006154: 4311 orrs r1, r2 - 8006156: 68ba ldr r2, [r7, #8] - 8006158: 6892 ldr r2, [r2, #8] - 800615a: 0212 lsls r2, r2, #8 - 800615c: 4311 orrs r1, r2 - 800615e: 68ba ldr r2, [r7, #8] - 8006160: 6992 ldr r2, [r2, #24] - 8006162: 4311 orrs r1, r2 - 8006164: 68ba ldr r2, [r7, #8] - 8006166: 68d2 ldr r2, [r2, #12] - 8006168: 0412 lsls r2, r2, #16 - 800616a: 430a orrs r2, r1 - 800616c: ea43 0102 orr.w r1, r3, r2 - 8006170: 68fb ldr r3, [r7, #12] - 8006172: 687a ldr r2, [r7, #4] - 8006174: f843 1022 str.w r1, [r3, r2, lsl #2] - 8006178: e005 b.n 8006186 - Timing->AccessMode | - ((Timing->BusTurnAroundDuration) << FMC_BWTR1_BUSTURN_Pos))); - } - else - { - Device->BWTR[Bank] = 0x0FFFFFFFU; - 800617a: 68fb ldr r3, [r7, #12] - 800617c: 687a ldr r2, [r7, #4] - 800617e: f06f 4170 mvn.w r1, #4026531840 @ 0xf0000000 - 8006182: f843 1022 str.w r1, [r3, r2, lsl #2] - } - - return HAL_OK; - 8006186: 2300 movs r3, #0 -} - 8006188: 4618 mov r0, r3 - 800618a: 3714 adds r7, #20 - 800618c: 46bd mov sp, r7 - 800618e: f85d 7b04 ldr.w r7, [sp], #4 - 8006192: 4770 bx lr - 8006194: cff00000 .word 0xcff00000 - -08006198 : - -/** - * LwIP initialization function - */ -void MX_LWIP_Init(void) -{ - 8006198: b580 push {r7, lr} - 800619a: b084 sub sp, #16 - 800619c: af04 add r7, sp, #16 - /* Initilialize the LwIP stack without RTOS */ - lwip_init(); - 800619e: f000 fc61 bl 8006a64 - - /* IP addresses initialization with DHCP (IPv4) */ - ipaddr.addr = get_ip(); - 80061a2: f7fb ffd5 bl 8002150 - 80061a6: 4603 mov r3, r0 - 80061a8: 4a1b ldr r2, [pc, #108] @ (8006218 ) - 80061aa: 6013 str r3, [r2, #0] - netmask.addr = ipaddr_addr("255.255.255.0"); - 80061ac: 481b ldr r0, [pc, #108] @ (800621c ) - 80061ae: f00b fc32 bl 8011a16 - 80061b2: 4603 mov r3, r0 - 80061b4: 4a1a ldr r2, [pc, #104] @ (8006220 ) - 80061b6: 6013 str r3, [r2, #0] - gw.addr = ipaddr_addr("10.1.1.1"); - 80061b8: 481a ldr r0, [pc, #104] @ (8006224 ) - 80061ba: f00b fc2c bl 8011a16 - 80061be: 4603 mov r3, r0 - 80061c0: 4a19 ldr r2, [pc, #100] @ (8006228 ) - 80061c2: 6013 str r3, [r2, #0] - - /* add the network interface (IPv4/IPv6) without RTOS */ - netif_add(&gnetif, &ipaddr, &netmask, &gw, NULL, ðernetif_init, ðernet_input); - 80061c4: 4b19 ldr r3, [pc, #100] @ (800622c ) - 80061c6: 9302 str r3, [sp, #8] - 80061c8: 4b19 ldr r3, [pc, #100] @ (8006230 ) - 80061ca: 9301 str r3, [sp, #4] - 80061cc: 2300 movs r3, #0 - 80061ce: 9300 str r3, [sp, #0] - 80061d0: 4b15 ldr r3, [pc, #84] @ (8006228 ) - 80061d2: 4a13 ldr r2, [pc, #76] @ (8006220 ) - 80061d4: 4910 ldr r1, [pc, #64] @ (8006218 ) - 80061d6: 4817 ldr r0, [pc, #92] @ (8006234 ) - 80061d8: f001 f918 bl 800740c - - /* Registers the default network interface */ - netif_set_default(&gnetif); - 80061dc: 4815 ldr r0, [pc, #84] @ (8006234 ) - 80061de: f001 facf bl 8007780 - - if (netif_is_link_up(&gnetif)) - 80061e2: 4b14 ldr r3, [pc, #80] @ (8006234 ) - 80061e4: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 - 80061e8: 089b lsrs r3, r3, #2 - 80061ea: f003 0301 and.w r3, r3, #1 - 80061ee: b2db uxtb r3, r3 - 80061f0: 2b00 cmp r3, #0 - 80061f2: d003 beq.n 80061fc - { - /* When the netif is fully configured this function must be called */ - netif_set_up(&gnetif); - 80061f4: 480f ldr r0, [pc, #60] @ (8006234 ) - 80061f6: f001 fad3 bl 80077a0 - 80061fa: e002 b.n 8006202 - } - else - { - /* When the netif link is down this function must be called */ - netif_set_down(&gnetif); - 80061fc: 480d ldr r0, [pc, #52] @ (8006234 ) - 80061fe: f001 fb3b bl 8007878 - } - - /* Set the link callback function, this function is called on change of link status*/ - netif_set_link_callback(&gnetif, ethernet_link_status_updated); - 8006202: 490d ldr r1, [pc, #52] @ (8006238 ) - 8006204: 480b ldr r0, [pc, #44] @ (8006234 ) - 8006206: f001 fbd1 bl 80079ac - - /* Create the Ethernet link handler thread */ - - /* Start DHCP negotiation for a network interface (IPv4) */ - dhcp_start(&gnetif); - 800620a: 480a ldr r0, [pc, #40] @ (8006234 ) - 800620c: f008 fd20 bl 800ec50 - -/* USER CODE BEGIN 3 */ - -/* USER CODE END 3 */ -} - 8006210: bf00 nop - 8006212: 46bd mov sp, r7 - 8006214: bd80 pop {r7, pc} - 8006216: bf00 nop - 8006218: 200015b4 .word 0x200015b4 - 800621c: 080176dc .word 0x080176dc - 8006220: 200015b8 .word 0x200015b8 - 8006224: 080176ec .word 0x080176ec - 8006228: 200015bc .word 0x200015bc - 800622c: 08012911 .word 0x08012911 - 8006230: 08006549 .word 0x08006549 - 8006234: 2000157c .word 0x2000157c - 8006238: 0800628d .word 0x0800628d - -0800623c : - * @brief Ethernet Link periodic check - * @param netif - * @retval None - */ -static void Ethernet_Link_Periodic_Handle(struct netif *netif) -{ - 800623c: b580 push {r7, lr} - 800623e: b082 sub sp, #8 - 8006240: af00 add r7, sp, #0 - 8006242: 6078 str r0, [r7, #4] -/* USER CODE BEGIN 4_4_1 */ -/* USER CODE END 4_4_1 */ - - /* Ethernet Link every 100ms */ - if (HAL_GetTick() - EthernetLinkTimer >= 100) - 8006244: f7fc fe86 bl 8002f54 - 8006248: 4602 mov r2, r0 - 800624a: 4b08 ldr r3, [pc, #32] @ (800626c ) - 800624c: 681b ldr r3, [r3, #0] - 800624e: 1ad3 subs r3, r2, r3 - 8006250: 2b63 cmp r3, #99 @ 0x63 - 8006252: d907 bls.n 8006264 - { - EthernetLinkTimer = HAL_GetTick(); - 8006254: f7fc fe7e bl 8002f54 - 8006258: 4603 mov r3, r0 - 800625a: 4a04 ldr r2, [pc, #16] @ (800626c ) - 800625c: 6013 str r3, [r2, #0] - ethernet_link_check_state(netif); - 800625e: 6878 ldr r0, [r7, #4] - 8006260: f000 fad6 bl 8006810 - } -/* USER CODE BEGIN 4_4 */ -/* USER CODE END 4_4 */ -} - 8006264: bf00 nop - 8006266: 3708 adds r7, #8 - 8006268: 46bd mov sp, r7 - 800626a: bd80 pop {r7, pc} - 800626c: 20001578 .word 0x20001578 - -08006270 : - * Send it to the lwIP stack for handling - * Handle timeouts if LWIP_TIMERS is set and without RTOS - * Handle the llink status if LWIP_NETIF_LINK_CALLBACK is set and without RTOS - */ -void MX_LWIP_Process(void) -{ - 8006270: b580 push {r7, lr} - 8006272: af00 add r7, sp, #0 -/* USER CODE BEGIN 4_1 */ -/* USER CODE END 4_1 */ - ethernetif_input(&gnetif); - 8006274: 4804 ldr r0, [pc, #16] @ (8006288 ) - 8006276: f000 f947 bl 8006508 - -/* USER CODE BEGIN 4_2 */ -/* USER CODE END 4_2 */ - /* Handle timeouts */ - sys_check_timeouts(); - 800627a: f007 fc13 bl 800daa4 - - Ethernet_Link_Periodic_Handle(&gnetif); - 800627e: 4802 ldr r0, [pc, #8] @ (8006288 ) - 8006280: f7ff ffdc bl 800623c - - -/* USER CODE BEGIN 4_3 */ -/* USER CODE END 4_3 */ -} - 8006284: bf00 nop - 8006286: bd80 pop {r7, pc} - 8006288: 2000157c .word 0x2000157c - -0800628c : - * @brief Notify the User about the network interface config status - * @param netif: the network interface - * @retval None - */ -static void ethernet_link_status_updated(struct netif *netif) -{ - 800628c: b480 push {r7} - 800628e: b083 sub sp, #12 - 8006290: af00 add r7, sp, #0 - 8006292: 6078 str r0, [r7, #4] - else /* netif is down */ - { -/* USER CODE BEGIN 6 */ -/* USER CODE END 6 */ - } -} - 8006294: bf00 nop - 8006296: 370c adds r7, #12 - 8006298: 46bd mov sp, r7 - 800629a: f85d 7b04 ldr.w r7, [sp], #4 - 800629e: 4770 bx lr - -080062a0 : - * - * @param netif the already initialized lwip network interface structure - * for this ethernetif - */ -static void low_level_init(struct netif *netif) -{ - 80062a0: b580 push {r7, lr} - 80062a2: b084 sub sp, #16 - 80062a4: af00 add r7, sp, #0 - 80062a6: 6078 str r0, [r7, #4] - HAL_StatusTypeDef hal_eth_init_status = HAL_OK; - 80062a8: 2300 movs r3, #0 - 80062aa: 73fb strb r3, [r7, #15] - /* Start ETH HAL Init */ - - uint8_t MACAddr[6] ; - heth.Instance = ETH; - 80062ac: 4b40 ldr r3, [pc, #256] @ (80063b0 ) - 80062ae: 4a41 ldr r2, [pc, #260] @ (80063b4 ) - 80062b0: 601a str r2, [r3, #0] - MACAddr[0] = 0x00; - 80062b2: 2300 movs r3, #0 - 80062b4: 723b strb r3, [r7, #8] - MACAddr[1] = 0x80; - 80062b6: 2380 movs r3, #128 @ 0x80 - 80062b8: 727b strb r3, [r7, #9] - MACAddr[2] = 0xE1; - 80062ba: 23e1 movs r3, #225 @ 0xe1 - 80062bc: 72bb strb r3, [r7, #10] - MACAddr[3] = 0x00; - 80062be: 2300 movs r3, #0 - 80062c0: 72fb strb r3, [r7, #11] - MACAddr[4] = 0x00; - 80062c2: 2300 movs r3, #0 - 80062c4: 733b strb r3, [r7, #12] - MACAddr[5] = 0x00; - 80062c6: 2300 movs r3, #0 - 80062c8: 737b strb r3, [r7, #13] - heth.Init.MACAddr = &MACAddr[0]; - 80062ca: 4a39 ldr r2, [pc, #228] @ (80063b0 ) - 80062cc: f107 0308 add.w r3, r7, #8 - 80062d0: 6053 str r3, [r2, #4] - heth.Init.MediaInterface = HAL_ETH_RMII_MODE; - 80062d2: 4b37 ldr r3, [pc, #220] @ (80063b0 ) - 80062d4: f44f 0200 mov.w r2, #8388608 @ 0x800000 - 80062d8: 609a str r2, [r3, #8] - heth.Init.TxDesc = DMATxDscrTab; - 80062da: 4b35 ldr r3, [pc, #212] @ (80063b0 ) - 80062dc: 4a36 ldr r2, [pc, #216] @ (80063b8 ) - 80062de: 60da str r2, [r3, #12] - heth.Init.RxDesc = DMARxDscrTab; - 80062e0: 4b33 ldr r3, [pc, #204] @ (80063b0 ) - 80062e2: 4a36 ldr r2, [pc, #216] @ (80063bc ) - 80062e4: 611a str r2, [r3, #16] - heth.Init.RxBuffLen = 1536; - 80062e6: 4b32 ldr r3, [pc, #200] @ (80063b0 ) - 80062e8: f44f 62c0 mov.w r2, #1536 @ 0x600 - 80062ec: 615a str r2, [r3, #20] - - /* USER CODE BEGIN MACADDRESS */ - - /* USER CODE END MACADDRESS */ - - hal_eth_init_status = HAL_ETH_Init(&heth); - 80062ee: 4830 ldr r0, [pc, #192] @ (80063b0 ) - 80062f0: f7fc ff72 bl 80031d8 - 80062f4: 4603 mov r3, r0 - 80062f6: 73fb strb r3, [r7, #15] - - memset(&TxConfig, 0 , sizeof(ETH_TxPacketConfig)); - 80062f8: 2238 movs r2, #56 @ 0x38 - 80062fa: 2100 movs r1, #0 - 80062fc: 4830 ldr r0, [pc, #192] @ (80063c0 ) - 80062fe: f00c fd3a bl 8012d76 - TxConfig.Attributes = ETH_TX_PACKETS_FEATURES_CSUM | ETH_TX_PACKETS_FEATURES_CRCPAD; - 8006302: 4b2f ldr r3, [pc, #188] @ (80063c0 ) - 8006304: 2221 movs r2, #33 @ 0x21 - 8006306: 601a str r2, [r3, #0] - TxConfig.ChecksumCtrl = ETH_CHECKSUM_IPHDR_PAYLOAD_INSERT_PHDR_CALC; - 8006308: 4b2d ldr r3, [pc, #180] @ (80063c0 ) - 800630a: f44f 0240 mov.w r2, #12582912 @ 0xc00000 - 800630e: 615a str r2, [r3, #20] - TxConfig.CRCPadCtrl = ETH_CRC_PAD_INSERT; - 8006310: 4b2b ldr r3, [pc, #172] @ (80063c0 ) - 8006312: 2200 movs r2, #0 - 8006314: 611a str r2, [r3, #16] - - /* End ETH HAL Init */ - - /* Initialize the RX POOL */ - LWIP_MEMPOOL_INIT(RX_POOL); - 8006316: 482b ldr r0, [pc, #172] @ (80063c4 ) - 8006318: f000 ff40 bl 800719c - -#if LWIP_ARP || LWIP_ETHERNET - - /* set MAC hardware address length */ - netif->hwaddr_len = ETH_HWADDR_LEN; - 800631c: 687b ldr r3, [r7, #4] - 800631e: 2206 movs r2, #6 - 8006320: f883 2030 strb.w r2, [r3, #48] @ 0x30 - - /* set MAC hardware address */ - netif->hwaddr[0] = heth.Init.MACAddr[0]; - 8006324: 4b22 ldr r3, [pc, #136] @ (80063b0 ) - 8006326: 685b ldr r3, [r3, #4] - 8006328: 781a ldrb r2, [r3, #0] - 800632a: 687b ldr r3, [r7, #4] - 800632c: f883 202a strb.w r2, [r3, #42] @ 0x2a - netif->hwaddr[1] = heth.Init.MACAddr[1]; - 8006330: 4b1f ldr r3, [pc, #124] @ (80063b0 ) - 8006332: 685b ldr r3, [r3, #4] - 8006334: 785a ldrb r2, [r3, #1] - 8006336: 687b ldr r3, [r7, #4] - 8006338: f883 202b strb.w r2, [r3, #43] @ 0x2b - netif->hwaddr[2] = heth.Init.MACAddr[2]; - 800633c: 4b1c ldr r3, [pc, #112] @ (80063b0 ) - 800633e: 685b ldr r3, [r3, #4] - 8006340: 789a ldrb r2, [r3, #2] - 8006342: 687b ldr r3, [r7, #4] - 8006344: f883 202c strb.w r2, [r3, #44] @ 0x2c - netif->hwaddr[3] = heth.Init.MACAddr[3]; - 8006348: 4b19 ldr r3, [pc, #100] @ (80063b0 ) - 800634a: 685b ldr r3, [r3, #4] - 800634c: 78da ldrb r2, [r3, #3] - 800634e: 687b ldr r3, [r7, #4] - 8006350: f883 202d strb.w r2, [r3, #45] @ 0x2d - netif->hwaddr[4] = heth.Init.MACAddr[4]; - 8006354: 4b16 ldr r3, [pc, #88] @ (80063b0 ) - 8006356: 685b ldr r3, [r3, #4] - 8006358: 791a ldrb r2, [r3, #4] - 800635a: 687b ldr r3, [r7, #4] - 800635c: f883 202e strb.w r2, [r3, #46] @ 0x2e - netif->hwaddr[5] = heth.Init.MACAddr[5]; - 8006360: 4b13 ldr r3, [pc, #76] @ (80063b0 ) - 8006362: 685b ldr r3, [r3, #4] - 8006364: 795a ldrb r2, [r3, #5] - 8006366: 687b ldr r3, [r7, #4] - 8006368: f883 202f strb.w r2, [r3, #47] @ 0x2f - - /* maximum transfer unit */ - netif->mtu = ETH_MAX_PAYLOAD; - 800636c: 687b ldr r3, [r7, #4] - 800636e: f240 52dc movw r2, #1500 @ 0x5dc - 8006372: 851a strh r2, [r3, #40] @ 0x28 - - /* Accept broadcast address and ARP traffic */ - /* don't set NETIF_FLAG_ETHARP if this device is not an ethernet one */ - #if LWIP_ARP - netif->flags |= NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP; - 8006374: 687b ldr r3, [r7, #4] - 8006376: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 - 800637a: f043 030a orr.w r3, r3, #10 - 800637e: b2da uxtb r2, r3 - 8006380: 687b ldr r3, [r7, #4] - 8006382: f883 2031 strb.w r2, [r3, #49] @ 0x31 - -/* USER CODE BEGIN PHY_PRE_CONFIG */ - -/* USER CODE END PHY_PRE_CONFIG */ - /* Set PHY IO functions */ - DP83848_RegisterBusIO(&DP83848, &DP83848_IOCtx); - 8006386: 4910 ldr r1, [pc, #64] @ (80063c8 ) - 8006388: 4810 ldr r0, [pc, #64] @ (80063cc ) - 800638a: f7fc fc1c bl 8002bc6 - - /* Initialize the DP83848 ETH PHY */ - DP83848_Init(&DP83848); - 800638e: 480f ldr r0, [pc, #60] @ (80063cc ) - 8006390: f7fc fc4b bl 8002c2a - - if (hal_eth_init_status == HAL_OK) - 8006394: 7bfb ldrb r3, [r7, #15] - 8006396: 2b00 cmp r3, #0 - 8006398: d103 bne.n 80063a2 - { - /* Get link state */ - ethernet_link_check_state(netif); - 800639a: 6878 ldr r0, [r7, #4] - 800639c: f000 fa38 bl 8006810 -#endif /* LWIP_ARP || LWIP_ETHERNET */ - -/* USER CODE BEGIN LOW_LEVEL_INIT */ - -/* USER CODE END LOW_LEVEL_INIT */ -} - 80063a0: e001 b.n 80063a6 - Error_Handler(); - 80063a2: f7fb fecf bl 8002144 -} - 80063a6: bf00 nop - 80063a8: 3710 adds r7, #16 - 80063aa: 46bd mov sp, r7 - 80063ac: bd80 pop {r7, pc} - 80063ae: bf00 nop - 80063b0: 2000608c .word 0x2000608c - 80063b4: 40028000 .word 0x40028000 - 80063b8: 20005fec .word 0x20005fec - 80063bc: 20005f4c .word 0x20005f4c - 80063c0: 2000613c .word 0x2000613c - 80063c4: 0801a4f8 .word 0x0801a4f8 - 80063c8: 2000000c .word 0x2000000c - 80063cc: 20006174 .word 0x20006174 - -080063d0 : - * to become available since the stack doesn't retry to send a packet - * dropped because of memory failure (except for the TCP timers). - */ - -static err_t low_level_output(struct netif *netif, struct pbuf *p) -{ - 80063d0: b580 push {r7, lr} - 80063d2: b092 sub sp, #72 @ 0x48 - 80063d4: af00 add r7, sp, #0 - 80063d6: 6078 str r0, [r7, #4] - 80063d8: 6039 str r1, [r7, #0] - uint32_t i = 0U; - 80063da: 2300 movs r3, #0 - 80063dc: 647b str r3, [r7, #68] @ 0x44 - struct pbuf *q = NULL; - 80063de: 2300 movs r3, #0 - 80063e0: 643b str r3, [r7, #64] @ 0x40 - err_t errval = ERR_OK; - 80063e2: 2300 movs r3, #0 - 80063e4: f887 303f strb.w r3, [r7, #63] @ 0x3f - ETH_BufferTypeDef Txbuffer[ETH_TX_DESC_CNT] = {0}; - 80063e8: f107 030c add.w r3, r7, #12 - 80063ec: 2230 movs r2, #48 @ 0x30 - 80063ee: 2100 movs r1, #0 - 80063f0: 4618 mov r0, r3 - 80063f2: f00c fcc0 bl 8012d76 - - memset(Txbuffer, 0 , ETH_TX_DESC_CNT*sizeof(ETH_BufferTypeDef)); - 80063f6: f107 030c add.w r3, r7, #12 - 80063fa: 2230 movs r2, #48 @ 0x30 - 80063fc: 2100 movs r1, #0 - 80063fe: 4618 mov r0, r3 - 8006400: f00c fcb9 bl 8012d76 - - for(q = p; q != NULL; q = q->next) - 8006404: 683b ldr r3, [r7, #0] - 8006406: 643b str r3, [r7, #64] @ 0x40 - 8006408: e045 b.n 8006496 - { - if(i >= ETH_TX_DESC_CNT) - 800640a: 6c7b ldr r3, [r7, #68] @ 0x44 - 800640c: 2b03 cmp r3, #3 - 800640e: d902 bls.n 8006416 - return ERR_IF; - 8006410: f06f 030b mvn.w r3, #11 - 8006414: e055 b.n 80064c2 - - Txbuffer[i].buffer = q->payload; - 8006416: 6c3b ldr r3, [r7, #64] @ 0x40 - 8006418: 6859 ldr r1, [r3, #4] - 800641a: 6c7a ldr r2, [r7, #68] @ 0x44 - 800641c: 4613 mov r3, r2 - 800641e: 005b lsls r3, r3, #1 - 8006420: 4413 add r3, r2 - 8006422: 009b lsls r3, r3, #2 - 8006424: 3348 adds r3, #72 @ 0x48 - 8006426: 443b add r3, r7 - 8006428: 3b3c subs r3, #60 @ 0x3c - 800642a: 6019 str r1, [r3, #0] - Txbuffer[i].len = q->len; - 800642c: 6c3b ldr r3, [r7, #64] @ 0x40 - 800642e: 895b ldrh r3, [r3, #10] - 8006430: 4619 mov r1, r3 - 8006432: 6c7a ldr r2, [r7, #68] @ 0x44 - 8006434: 4613 mov r3, r2 - 8006436: 005b lsls r3, r3, #1 - 8006438: 4413 add r3, r2 - 800643a: 009b lsls r3, r3, #2 - 800643c: 3348 adds r3, #72 @ 0x48 - 800643e: 443b add r3, r7 - 8006440: 3b38 subs r3, #56 @ 0x38 - 8006442: 6019 str r1, [r3, #0] - - if(i>0) - 8006444: 6c7b ldr r3, [r7, #68] @ 0x44 - 8006446: 2b00 cmp r3, #0 - 8006448: d011 beq.n 800646e - { - Txbuffer[i-1].next = &Txbuffer[i]; - 800644a: 6c7b ldr r3, [r7, #68] @ 0x44 - 800644c: 1e5a subs r2, r3, #1 - 800644e: f107 000c add.w r0, r7, #12 - 8006452: 6c79 ldr r1, [r7, #68] @ 0x44 - 8006454: 460b mov r3, r1 - 8006456: 005b lsls r3, r3, #1 - 8006458: 440b add r3, r1 - 800645a: 009b lsls r3, r3, #2 - 800645c: 18c1 adds r1, r0, r3 - 800645e: 4613 mov r3, r2 - 8006460: 005b lsls r3, r3, #1 - 8006462: 4413 add r3, r2 - 8006464: 009b lsls r3, r3, #2 - 8006466: 3348 adds r3, #72 @ 0x48 - 8006468: 443b add r3, r7 - 800646a: 3b34 subs r3, #52 @ 0x34 - 800646c: 6019 str r1, [r3, #0] - } - - if(q->next == NULL) - 800646e: 6c3b ldr r3, [r7, #64] @ 0x40 - 8006470: 681b ldr r3, [r3, #0] - 8006472: 2b00 cmp r3, #0 - 8006474: d109 bne.n 800648a - { - Txbuffer[i].next = NULL; - 8006476: 6c7a ldr r2, [r7, #68] @ 0x44 - 8006478: 4613 mov r3, r2 - 800647a: 005b lsls r3, r3, #1 - 800647c: 4413 add r3, r2 - 800647e: 009b lsls r3, r3, #2 - 8006480: 3348 adds r3, #72 @ 0x48 - 8006482: 443b add r3, r7 - 8006484: 3b34 subs r3, #52 @ 0x34 - 8006486: 2200 movs r2, #0 - 8006488: 601a str r2, [r3, #0] - } - - i++; - 800648a: 6c7b ldr r3, [r7, #68] @ 0x44 - 800648c: 3301 adds r3, #1 - 800648e: 647b str r3, [r7, #68] @ 0x44 - for(q = p; q != NULL; q = q->next) - 8006490: 6c3b ldr r3, [r7, #64] @ 0x40 - 8006492: 681b ldr r3, [r3, #0] - 8006494: 643b str r3, [r7, #64] @ 0x40 - 8006496: 6c3b ldr r3, [r7, #64] @ 0x40 - 8006498: 2b00 cmp r3, #0 - 800649a: d1b6 bne.n 800640a - } - - TxConfig.Length = p->tot_len; - 800649c: 683b ldr r3, [r7, #0] - 800649e: 891b ldrh r3, [r3, #8] - 80064a0: 461a mov r2, r3 - 80064a2: 4b0a ldr r3, [pc, #40] @ (80064cc ) - 80064a4: 605a str r2, [r3, #4] - TxConfig.TxBuffer = Txbuffer; - 80064a6: 4a09 ldr r2, [pc, #36] @ (80064cc ) - 80064a8: f107 030c add.w r3, r7, #12 - 80064ac: 6093 str r3, [r2, #8] - TxConfig.pData = p; - 80064ae: 4a07 ldr r2, [pc, #28] @ (80064cc ) - 80064b0: 683b ldr r3, [r7, #0] - 80064b2: 6353 str r3, [r2, #52] @ 0x34 - - HAL_ETH_Transmit(&heth, &TxConfig, ETH_DMA_TRANSMIT_TIMEOUT); - 80064b4: 2214 movs r2, #20 - 80064b6: 4905 ldr r1, [pc, #20] @ (80064cc ) - 80064b8: 4805 ldr r0, [pc, #20] @ (80064d0 ) - 80064ba: f7fc ffc3 bl 8003444 - - return errval; - 80064be: f997 303f ldrsb.w r3, [r7, #63] @ 0x3f -} - 80064c2: 4618 mov r0, r3 - 80064c4: 3748 adds r7, #72 @ 0x48 - 80064c6: 46bd mov sp, r7 - 80064c8: bd80 pop {r7, pc} - 80064ca: bf00 nop - 80064cc: 2000613c .word 0x2000613c - 80064d0: 2000608c .word 0x2000608c - -080064d4 : - * @param netif the lwip network interface structure for this ethernetif - * @return a pbuf filled with the received packet (including MAC header) - * NULL on memory error - */ -static struct pbuf * low_level_input(struct netif *netif) -{ - 80064d4: b580 push {r7, lr} - 80064d6: b084 sub sp, #16 - 80064d8: af00 add r7, sp, #0 - 80064da: 6078 str r0, [r7, #4] - struct pbuf *p = NULL; - 80064dc: 2300 movs r3, #0 - 80064de: 60fb str r3, [r7, #12] - - if(RxAllocStatus == RX_ALLOC_OK) - 80064e0: 4b07 ldr r3, [pc, #28] @ (8006500 ) - 80064e2: 781b ldrb r3, [r3, #0] - 80064e4: 2b00 cmp r3, #0 - 80064e6: d105 bne.n 80064f4 - { - HAL_ETH_ReadData(&heth, (void **)&p); - 80064e8: f107 030c add.w r3, r7, #12 - 80064ec: 4619 mov r1, r3 - 80064ee: 4805 ldr r0, [pc, #20] @ (8006504 ) - 80064f0: f7fd f83c bl 800356c - } - - return p; - 80064f4: 68fb ldr r3, [r7, #12] -} - 80064f6: 4618 mov r0, r3 - 80064f8: 3710 adds r7, #16 - 80064fa: 46bd mov sp, r7 - 80064fc: bd80 pop {r7, pc} - 80064fe: bf00 nop - 8006500: 20005f48 .word 0x20005f48 - 8006504: 2000608c .word 0x2000608c - -08006508 : - * the appropriate input function is called. - * - * @param netif the lwip network interface structure for this ethernetif - */ -void ethernetif_input(struct netif *netif) -{ - 8006508: b580 push {r7, lr} - 800650a: b084 sub sp, #16 - 800650c: af00 add r7, sp, #0 - 800650e: 6078 str r0, [r7, #4] - struct pbuf *p = NULL; - 8006510: 2300 movs r3, #0 - 8006512: 60fb str r3, [r7, #12] - - do - { - p = low_level_input( netif ); - 8006514: 6878 ldr r0, [r7, #4] - 8006516: f7ff ffdd bl 80064d4 - 800651a: 60f8 str r0, [r7, #12] - if (p != NULL) - 800651c: 68fb ldr r3, [r7, #12] - 800651e: 2b00 cmp r3, #0 - 8006520: d00a beq.n 8006538 - { - if (netif->input( p, netif) != ERR_OK ) - 8006522: 687b ldr r3, [r7, #4] - 8006524: 691b ldr r3, [r3, #16] - 8006526: 6879 ldr r1, [r7, #4] - 8006528: 68f8 ldr r0, [r7, #12] - 800652a: 4798 blx r3 - 800652c: 4603 mov r3, r0 - 800652e: 2b00 cmp r3, #0 - 8006530: d002 beq.n 8006538 - { - pbuf_free(p); - 8006532: 68f8 ldr r0, [r7, #12] - 8006534: f001 fdb8 bl 80080a8 - } - } - } while(p!=NULL); - 8006538: 68fb ldr r3, [r7, #12] - 800653a: 2b00 cmp r3, #0 - 800653c: d1ea bne.n 8006514 -} - 800653e: bf00 nop - 8006540: bf00 nop - 8006542: 3710 adds r7, #16 - 8006544: 46bd mov sp, r7 - 8006546: bd80 pop {r7, pc} - -08006548 : - * @return ERR_OK if the loopif is initialized - * ERR_MEM if private data couldn't be allocated - * any other err_t on error - */ -err_t ethernetif_init(struct netif *netif) -{ - 8006548: b580 push {r7, lr} - 800654a: b082 sub sp, #8 - 800654c: af00 add r7, sp, #0 - 800654e: 6078 str r0, [r7, #4] - LWIP_ASSERT("netif != NULL", (netif != NULL)); - 8006550: 687b ldr r3, [r7, #4] - 8006552: 2b00 cmp r3, #0 - 8006554: d106 bne.n 8006564 - 8006556: 4b0e ldr r3, [pc, #56] @ (8006590 ) - 8006558: f240 126b movw r2, #363 @ 0x16b - 800655c: 490d ldr r1, [pc, #52] @ (8006594 ) - 800655e: 480e ldr r0, [pc, #56] @ (8006598 ) - 8006560: f00c fb8a bl 8012c78 - * The last argument should be replaced with your link speed, in units - * of bits per second. - */ - // MIB2_INIT_NETIF(netif, snmp_ifType_ethernet_csmacd, LINK_SPEED_OF_YOUR_NETIF_IN_BPS); - - netif->name[0] = IFNAME0; - 8006564: 687b ldr r3, [r7, #4] - 8006566: 2273 movs r2, #115 @ 0x73 - 8006568: f883 2032 strb.w r2, [r3, #50] @ 0x32 - netif->name[1] = IFNAME1; - 800656c: 687b ldr r3, [r7, #4] - 800656e: 2274 movs r2, #116 @ 0x74 - 8006570: f883 2033 strb.w r2, [r3, #51] @ 0x33 - * is available...) */ - -#if LWIP_IPV4 -#if LWIP_ARP || LWIP_ETHERNET -#if LWIP_ARP - netif->output = etharp_output; - 8006574: 687b ldr r3, [r7, #4] - 8006576: 4a09 ldr r2, [pc, #36] @ (800659c ) - 8006578: 615a str r2, [r3, #20] - -#if LWIP_IPV6 - netif->output_ip6 = ethip6_output; -#endif /* LWIP_IPV6 */ - - netif->linkoutput = low_level_output; - 800657a: 687b ldr r3, [r7, #4] - 800657c: 4a08 ldr r2, [pc, #32] @ (80065a0 ) - 800657e: 619a str r2, [r3, #24] - - /* initialize the hardware */ - low_level_init(netif); - 8006580: 6878 ldr r0, [r7, #4] - 8006582: f7ff fe8d bl 80062a0 - - return ERR_OK; - 8006586: 2300 movs r3, #0 -} - 8006588: 4618 mov r0, r3 - 800658a: 3708 adds r7, #8 - 800658c: 46bd mov sp, r7 - 800658e: bd80 pop {r7, pc} - 8006590: 080176f8 .word 0x080176f8 - 8006594: 08017714 .word 0x08017714 - 8006598: 08017724 .word 0x08017724 - 800659c: 08010b11 .word 0x08010b11 - 80065a0: 080063d1 .word 0x080063d1 - -080065a4 : - * @brief Custom Rx pbuf free callback - * @param pbuf: pbuf to be freed - * @retval None - */ -void pbuf_free_custom(struct pbuf *p) -{ - 80065a4: b580 push {r7, lr} - 80065a6: b084 sub sp, #16 - 80065a8: af00 add r7, sp, #0 - 80065aa: 6078 str r0, [r7, #4] - struct pbuf_custom* custom_pbuf = (struct pbuf_custom*)p; - 80065ac: 687b ldr r3, [r7, #4] - 80065ae: 60fb str r3, [r7, #12] - LWIP_MEMPOOL_FREE(RX_POOL, custom_pbuf); - 80065b0: 68f9 ldr r1, [r7, #12] - 80065b2: 4807 ldr r0, [pc, #28] @ (80065d0 ) - 80065b4: f000 fed4 bl 8007360 - - /* If the Rx Buffer Pool was exhausted, signal the ethernetif_input task to - * call HAL_ETH_GetRxDataBuffer to rebuild the Rx descriptors. */ - - if (RxAllocStatus == RX_ALLOC_ERROR) - 80065b8: 4b06 ldr r3, [pc, #24] @ (80065d4 ) - 80065ba: 781b ldrb r3, [r3, #0] - 80065bc: 2b01 cmp r3, #1 - 80065be: d102 bne.n 80065c6 - { - RxAllocStatus = RX_ALLOC_OK; - 80065c0: 4b04 ldr r3, [pc, #16] @ (80065d4 ) - 80065c2: 2200 movs r2, #0 - 80065c4: 701a strb r2, [r3, #0] - } -} - 80065c6: bf00 nop - 80065c8: 3710 adds r7, #16 - 80065ca: 46bd mov sp, r7 - 80065cc: bd80 pop {r7, pc} - 80065ce: bf00 nop - 80065d0: 0801a4f8 .word 0x0801a4f8 - 80065d4: 20005f48 .word 0x20005f48 - -080065d8 : -* when LWIP_TIMERS == 1 and NO_SYS == 1 -* @param None -* @retval Current Time value -*/ -u32_t sys_now(void) -{ - 80065d8: b580 push {r7, lr} - 80065da: af00 add r7, sp, #0 - return HAL_GetTick(); - 80065dc: f7fc fcba bl 8002f54 - 80065e0: 4603 mov r3, r0 -} - 80065e2: 4618 mov r0, r3 - 80065e4: bd80 pop {r7, pc} - ... - -080065e8 : - * @param ethHandle: ETH handle - * @retval None - */ - -void HAL_ETH_MspInit(ETH_HandleTypeDef* ethHandle) -{ - 80065e8: b580 push {r7, lr} - 80065ea: b08e sub sp, #56 @ 0x38 - 80065ec: af00 add r7, sp, #0 - 80065ee: 6078 str r0, [r7, #4] - GPIO_InitTypeDef GPIO_InitStruct = {0}; - 80065f0: f107 0324 add.w r3, r7, #36 @ 0x24 - 80065f4: 2200 movs r2, #0 - 80065f6: 601a str r2, [r3, #0] - 80065f8: 605a str r2, [r3, #4] - 80065fa: 609a str r2, [r3, #8] - 80065fc: 60da str r2, [r3, #12] - 80065fe: 611a str r2, [r3, #16] - if(ethHandle->Instance==ETH) - 8006600: 687b ldr r3, [r7, #4] - 8006602: 681b ldr r3, [r3, #0] - 8006604: 4a55 ldr r2, [pc, #340] @ (800675c ) - 8006606: 4293 cmp r3, r2 - 8006608: f040 80a4 bne.w 8006754 - { - /* USER CODE BEGIN ETH_MspInit 0 */ - - /* USER CODE END ETH_MspInit 0 */ - /* Enable Peripheral clock */ - __HAL_RCC_ETH_CLK_ENABLE(); - 800660c: 2300 movs r3, #0 - 800660e: 623b str r3, [r7, #32] - 8006610: 4b53 ldr r3, [pc, #332] @ (8006760 ) - 8006612: 6b1b ldr r3, [r3, #48] @ 0x30 - 8006614: 4a52 ldr r2, [pc, #328] @ (8006760 ) - 8006616: f043 7300 orr.w r3, r3, #33554432 @ 0x2000000 - 800661a: 6313 str r3, [r2, #48] @ 0x30 - 800661c: 4b50 ldr r3, [pc, #320] @ (8006760 ) - 800661e: 6b1b ldr r3, [r3, #48] @ 0x30 - 8006620: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 - 8006624: 623b str r3, [r7, #32] - 8006626: 6a3b ldr r3, [r7, #32] - 8006628: 2300 movs r3, #0 - 800662a: 61fb str r3, [r7, #28] - 800662c: 4b4c ldr r3, [pc, #304] @ (8006760 ) - 800662e: 6b1b ldr r3, [r3, #48] @ 0x30 - 8006630: 4a4b ldr r2, [pc, #300] @ (8006760 ) - 8006632: f043 6380 orr.w r3, r3, #67108864 @ 0x4000000 - 8006636: 6313 str r3, [r2, #48] @ 0x30 - 8006638: 4b49 ldr r3, [pc, #292] @ (8006760 ) - 800663a: 6b1b ldr r3, [r3, #48] @ 0x30 - 800663c: f003 6380 and.w r3, r3, #67108864 @ 0x4000000 - 8006640: 61fb str r3, [r7, #28] - 8006642: 69fb ldr r3, [r7, #28] - 8006644: 2300 movs r3, #0 - 8006646: 61bb str r3, [r7, #24] - 8006648: 4b45 ldr r3, [pc, #276] @ (8006760 ) - 800664a: 6b1b ldr r3, [r3, #48] @ 0x30 - 800664c: 4a44 ldr r2, [pc, #272] @ (8006760 ) - 800664e: f043 6300 orr.w r3, r3, #134217728 @ 0x8000000 - 8006652: 6313 str r3, [r2, #48] @ 0x30 - 8006654: 4b42 ldr r3, [pc, #264] @ (8006760 ) - 8006656: 6b1b ldr r3, [r3, #48] @ 0x30 - 8006658: f003 6300 and.w r3, r3, #134217728 @ 0x8000000 - 800665c: 61bb str r3, [r7, #24] - 800665e: 69bb ldr r3, [r7, #24] - - __HAL_RCC_GPIOC_CLK_ENABLE(); - 8006660: 2300 movs r3, #0 - 8006662: 617b str r3, [r7, #20] - 8006664: 4b3e ldr r3, [pc, #248] @ (8006760 ) - 8006666: 6b1b ldr r3, [r3, #48] @ 0x30 - 8006668: 4a3d ldr r2, [pc, #244] @ (8006760 ) - 800666a: f043 0304 orr.w r3, r3, #4 - 800666e: 6313 str r3, [r2, #48] @ 0x30 - 8006670: 4b3b ldr r3, [pc, #236] @ (8006760 ) - 8006672: 6b1b ldr r3, [r3, #48] @ 0x30 - 8006674: f003 0304 and.w r3, r3, #4 - 8006678: 617b str r3, [r7, #20] - 800667a: 697b ldr r3, [r7, #20] - __HAL_RCC_GPIOA_CLK_ENABLE(); - 800667c: 2300 movs r3, #0 - 800667e: 613b str r3, [r7, #16] - 8006680: 4b37 ldr r3, [pc, #220] @ (8006760 ) - 8006682: 6b1b ldr r3, [r3, #48] @ 0x30 - 8006684: 4a36 ldr r2, [pc, #216] @ (8006760 ) - 8006686: f043 0301 orr.w r3, r3, #1 - 800668a: 6313 str r3, [r2, #48] @ 0x30 - 800668c: 4b34 ldr r3, [pc, #208] @ (8006760 ) - 800668e: 6b1b ldr r3, [r3, #48] @ 0x30 - 8006690: f003 0301 and.w r3, r3, #1 - 8006694: 613b str r3, [r7, #16] - 8006696: 693b ldr r3, [r7, #16] - __HAL_RCC_GPIOB_CLK_ENABLE(); - 8006698: 2300 movs r3, #0 - 800669a: 60fb str r3, [r7, #12] - 800669c: 4b30 ldr r3, [pc, #192] @ (8006760 ) - 800669e: 6b1b ldr r3, [r3, #48] @ 0x30 - 80066a0: 4a2f ldr r2, [pc, #188] @ (8006760 ) - 80066a2: f043 0302 orr.w r3, r3, #2 - 80066a6: 6313 str r3, [r2, #48] @ 0x30 - 80066a8: 4b2d ldr r3, [pc, #180] @ (8006760 ) - 80066aa: 6b1b ldr r3, [r3, #48] @ 0x30 - 80066ac: f003 0302 and.w r3, r3, #2 - 80066b0: 60fb str r3, [r7, #12] - 80066b2: 68fb ldr r3, [r7, #12] - __HAL_RCC_GPIOG_CLK_ENABLE(); - 80066b4: 2300 movs r3, #0 - 80066b6: 60bb str r3, [r7, #8] - 80066b8: 4b29 ldr r3, [pc, #164] @ (8006760 ) - 80066ba: 6b1b ldr r3, [r3, #48] @ 0x30 - 80066bc: 4a28 ldr r2, [pc, #160] @ (8006760 ) - 80066be: f043 0340 orr.w r3, r3, #64 @ 0x40 - 80066c2: 6313 str r3, [r2, #48] @ 0x30 - 80066c4: 4b26 ldr r3, [pc, #152] @ (8006760 ) - 80066c6: 6b1b ldr r3, [r3, #48] @ 0x30 - 80066c8: f003 0340 and.w r3, r3, #64 @ 0x40 - 80066cc: 60bb str r3, [r7, #8] - 80066ce: 68bb ldr r3, [r7, #8] - PC5 ------> ETH_RXD1 - PB11 ------> ETH_TX_EN - PB12 ------> ETH_TXD0 - PG14 ------> ETH_TXD1 - */ - GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5; - 80066d0: 2332 movs r3, #50 @ 0x32 - 80066d2: 627b str r3, [r7, #36] @ 0x24 - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 80066d4: 2302 movs r3, #2 - 80066d6: 62bb str r3, [r7, #40] @ 0x28 - GPIO_InitStruct.Pull = GPIO_NOPULL; - 80066d8: 2300 movs r3, #0 - 80066da: 62fb str r3, [r7, #44] @ 0x2c - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 80066dc: 2303 movs r3, #3 - 80066de: 633b str r3, [r7, #48] @ 0x30 - GPIO_InitStruct.Alternate = GPIO_AF11_ETH; - 80066e0: 230b movs r3, #11 - 80066e2: 637b str r3, [r7, #52] @ 0x34 - HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - 80066e4: f107 0324 add.w r3, r7, #36 @ 0x24 - 80066e8: 4619 mov r1, r3 - 80066ea: 481e ldr r0, [pc, #120] @ (8006764 ) - 80066ec: f7fe f97c bl 80049e8 - - GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_7; - 80066f0: 2386 movs r3, #134 @ 0x86 - 80066f2: 627b str r3, [r7, #36] @ 0x24 - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 80066f4: 2302 movs r3, #2 - 80066f6: 62bb str r3, [r7, #40] @ 0x28 - GPIO_InitStruct.Pull = GPIO_NOPULL; - 80066f8: 2300 movs r3, #0 - 80066fa: 62fb str r3, [r7, #44] @ 0x2c - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 80066fc: 2303 movs r3, #3 - 80066fe: 633b str r3, [r7, #48] @ 0x30 - GPIO_InitStruct.Alternate = GPIO_AF11_ETH; - 8006700: 230b movs r3, #11 - 8006702: 637b str r3, [r7, #52] @ 0x34 - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 8006704: f107 0324 add.w r3, r7, #36 @ 0x24 - 8006708: 4619 mov r1, r3 - 800670a: 4817 ldr r0, [pc, #92] @ (8006768 ) - 800670c: f7fe f96c bl 80049e8 - - GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12; - 8006710: f44f 53c0 mov.w r3, #6144 @ 0x1800 - 8006714: 627b str r3, [r7, #36] @ 0x24 - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8006716: 2302 movs r3, #2 - 8006718: 62bb str r3, [r7, #40] @ 0x28 - GPIO_InitStruct.Pull = GPIO_NOPULL; - 800671a: 2300 movs r3, #0 - 800671c: 62fb str r3, [r7, #44] @ 0x2c - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 800671e: 2303 movs r3, #3 - 8006720: 633b str r3, [r7, #48] @ 0x30 - GPIO_InitStruct.Alternate = GPIO_AF11_ETH; - 8006722: 230b movs r3, #11 - 8006724: 637b str r3, [r7, #52] @ 0x34 - HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 8006726: f107 0324 add.w r3, r7, #36 @ 0x24 - 800672a: 4619 mov r1, r3 - 800672c: 480f ldr r0, [pc, #60] @ (800676c ) - 800672e: f7fe f95b bl 80049e8 - - GPIO_InitStruct.Pin = GPIO_PIN_14; - 8006732: f44f 4380 mov.w r3, #16384 @ 0x4000 - 8006736: 627b str r3, [r7, #36] @ 0x24 - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8006738: 2302 movs r3, #2 - 800673a: 62bb str r3, [r7, #40] @ 0x28 - GPIO_InitStruct.Pull = GPIO_NOPULL; - 800673c: 2300 movs r3, #0 - 800673e: 62fb str r3, [r7, #44] @ 0x2c - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 8006740: 2303 movs r3, #3 - 8006742: 633b str r3, [r7, #48] @ 0x30 - GPIO_InitStruct.Alternate = GPIO_AF11_ETH; - 8006744: 230b movs r3, #11 - 8006746: 637b str r3, [r7, #52] @ 0x34 - HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); - 8006748: f107 0324 add.w r3, r7, #36 @ 0x24 - 800674c: 4619 mov r1, r3 - 800674e: 4808 ldr r0, [pc, #32] @ (8006770 ) - 8006750: f7fe f94a bl 80049e8 - - /* USER CODE BEGIN ETH_MspInit 1 */ - - /* USER CODE END ETH_MspInit 1 */ - } -} - 8006754: bf00 nop - 8006756: 3738 adds r7, #56 @ 0x38 - 8006758: 46bd mov sp, r7 - 800675a: bd80 pop {r7, pc} - 800675c: 40028000 .word 0x40028000 - 8006760: 40023800 .word 0x40023800 - 8006764: 40020800 .word 0x40020800 - 8006768: 40020000 .word 0x40020000 - 800676c: 40020400 .word 0x40020400 - 8006770: 40021800 .word 0x40021800 - -08006774 : - * @brief Initializes the MDIO interface GPIO and clocks. - * @param None - * @retval 0 if OK, -1 if ERROR - */ -int32_t ETH_PHY_IO_Init(void) -{ - 8006774: b580 push {r7, lr} - 8006776: af00 add r7, sp, #0 - /* We assume that MDIO GPIO configuration is already done - in the ETH_MspInit() else it should be done here - */ - - /* Configure the MDIO Clock */ - HAL_ETH_SetMDIOClockRange(&heth); - 8006778: 4802 ldr r0, [pc, #8] @ (8006784 ) - 800677a: f7fd f9c7 bl 8003b0c - - return 0; - 800677e: 2300 movs r3, #0 -} - 8006780: 4618 mov r0, r3 - 8006782: bd80 pop {r7, pc} - 8006784: 2000608c .word 0x2000608c - -08006788 : - * @brief De-Initializes the MDIO interface . - * @param None - * @retval 0 if OK, -1 if ERROR - */ -int32_t ETH_PHY_IO_DeInit (void) -{ - 8006788: b480 push {r7} - 800678a: af00 add r7, sp, #0 - return 0; - 800678c: 2300 movs r3, #0 -} - 800678e: 4618 mov r0, r3 - 8006790: 46bd mov sp, r7 - 8006792: f85d 7b04 ldr.w r7, [sp], #4 - 8006796: 4770 bx lr - -08006798 : - * @param RegAddr: PHY register address - * @param pRegVal: pointer to hold the register value - * @retval 0 if OK -1 if Error - */ -int32_t ETH_PHY_IO_ReadReg(uint32_t DevAddr, uint32_t RegAddr, uint32_t *pRegVal) -{ - 8006798: b580 push {r7, lr} - 800679a: b084 sub sp, #16 - 800679c: af00 add r7, sp, #0 - 800679e: 60f8 str r0, [r7, #12] - 80067a0: 60b9 str r1, [r7, #8] - 80067a2: 607a str r2, [r7, #4] - if(HAL_ETH_ReadPHYRegister(&heth, DevAddr, RegAddr, pRegVal) != HAL_OK) - 80067a4: 687b ldr r3, [r7, #4] - 80067a6: 68ba ldr r2, [r7, #8] - 80067a8: 68f9 ldr r1, [r7, #12] - 80067aa: 4807 ldr r0, [pc, #28] @ (80067c8 ) - 80067ac: f7fd f816 bl 80037dc - 80067b0: 4603 mov r3, r0 - 80067b2: 2b00 cmp r3, #0 - 80067b4: d002 beq.n 80067bc - { - return -1; - 80067b6: f04f 33ff mov.w r3, #4294967295 - 80067ba: e000 b.n 80067be - } - - return 0; - 80067bc: 2300 movs r3, #0 -} - 80067be: 4618 mov r0, r3 - 80067c0: 3710 adds r7, #16 - 80067c2: 46bd mov sp, r7 - 80067c4: bd80 pop {r7, pc} - 80067c6: bf00 nop - 80067c8: 2000608c .word 0x2000608c - -080067cc : - * @param RegAddr: PHY register address - * @param RegVal: Value to be written - * @retval 0 if OK -1 if Error - */ -int32_t ETH_PHY_IO_WriteReg(uint32_t DevAddr, uint32_t RegAddr, uint32_t RegVal) -{ - 80067cc: b580 push {r7, lr} - 80067ce: b084 sub sp, #16 - 80067d0: af00 add r7, sp, #0 - 80067d2: 60f8 str r0, [r7, #12] - 80067d4: 60b9 str r1, [r7, #8] - 80067d6: 607a str r2, [r7, #4] - if(HAL_ETH_WritePHYRegister(&heth, DevAddr, RegAddr, RegVal) != HAL_OK) - 80067d8: 687b ldr r3, [r7, #4] - 80067da: 68ba ldr r2, [r7, #8] - 80067dc: 68f9 ldr r1, [r7, #12] - 80067de: 4807 ldr r0, [pc, #28] @ (80067fc ) - 80067e0: f7fd f847 bl 8003872 - 80067e4: 4603 mov r3, r0 - 80067e6: 2b00 cmp r3, #0 - 80067e8: d002 beq.n 80067f0 - { - return -1; - 80067ea: f04f 33ff mov.w r3, #4294967295 - 80067ee: e000 b.n 80067f2 - } - - return 0; - 80067f0: 2300 movs r3, #0 -} - 80067f2: 4618 mov r0, r3 - 80067f4: 3710 adds r7, #16 - 80067f6: 46bd mov sp, r7 - 80067f8: bd80 pop {r7, pc} - 80067fa: bf00 nop - 80067fc: 2000608c .word 0x2000608c - -08006800 : -/** - * @brief Get the time in millisecons used for internal PHY driver process. - * @retval Time value - */ -int32_t ETH_PHY_IO_GetTick(void) -{ - 8006800: b580 push {r7, lr} - 8006802: af00 add r7, sp, #0 - return HAL_GetTick(); - 8006804: f7fc fba6 bl 8002f54 - 8006808: 4603 mov r3, r0 -} - 800680a: 4618 mov r0, r3 - 800680c: bd80 pop {r7, pc} - ... - -08006810 : -/** - * @brief Check the ETH link state then update ETH driver and netif link accordingly. - * @retval None - */ -void ethernet_link_check_state(struct netif *netif) -{ - 8006810: b580 push {r7, lr} - 8006812: b0a0 sub sp, #128 @ 0x80 - 8006814: af00 add r7, sp, #0 - 8006816: 6078 str r0, [r7, #4] - ETH_MACConfigTypeDef MACConf = {0}; - 8006818: f107 030c add.w r3, r7, #12 - 800681c: 2264 movs r2, #100 @ 0x64 - 800681e: 2100 movs r1, #0 - 8006820: 4618 mov r0, r3 - 8006822: f00c faa8 bl 8012d76 - int32_t PHYLinkState = 0; - 8006826: 2300 movs r3, #0 - 8006828: 673b str r3, [r7, #112] @ 0x70 - uint32_t linkchanged = 0U, speed = 0U, duplex = 0U; - 800682a: 2300 movs r3, #0 - 800682c: 67fb str r3, [r7, #124] @ 0x7c - 800682e: 2300 movs r3, #0 - 8006830: 67bb str r3, [r7, #120] @ 0x78 - 8006832: 2300 movs r3, #0 - 8006834: 677b str r3, [r7, #116] @ 0x74 - - PHYLinkState = DP83848_GetLinkState(&DP83848); - 8006836: 483a ldr r0, [pc, #232] @ (8006920 ) - 8006838: f7fc fa9f bl 8002d7a - 800683c: 6738 str r0, [r7, #112] @ 0x70 - - if(netif_is_link_up(netif) && (PHYLinkState <= DP83848_STATUS_LINK_DOWN)) - 800683e: 687b ldr r3, [r7, #4] - 8006840: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 - 8006844: 089b lsrs r3, r3, #2 - 8006846: f003 0301 and.w r3, r3, #1 - 800684a: b2db uxtb r3, r3 - 800684c: 2b00 cmp r3, #0 - 800684e: d00c beq.n 800686a - 8006850: 6f3b ldr r3, [r7, #112] @ 0x70 - 8006852: 2b01 cmp r3, #1 - 8006854: dc09 bgt.n 800686a - { - HAL_ETH_Stop(&heth); - 8006856: 4833 ldr r0, [pc, #204] @ (8006924 ) - 8006858: f7fc fd9b bl 8003392 - netif_set_down(netif); - 800685c: 6878 ldr r0, [r7, #4] - 800685e: f001 f80b bl 8007878 - netif_set_link_down(netif); - 8006862: 6878 ldr r0, [r7, #4] - 8006864: f001 f872 bl 800794c - netif_set_up(netif); - netif_set_link_up(netif); - } - } - -} - 8006868: e055 b.n 8006916 - else if(!netif_is_link_up(netif) && (PHYLinkState > DP83848_STATUS_LINK_DOWN)) - 800686a: 687b ldr r3, [r7, #4] - 800686c: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 - 8006870: f003 0304 and.w r3, r3, #4 - 8006874: 2b00 cmp r3, #0 - 8006876: d14e bne.n 8006916 - 8006878: 6f3b ldr r3, [r7, #112] @ 0x70 - 800687a: 2b01 cmp r3, #1 - 800687c: dd4b ble.n 8006916 - switch (PHYLinkState) - 800687e: 6f3b ldr r3, [r7, #112] @ 0x70 - 8006880: 3b02 subs r3, #2 - 8006882: 2b03 cmp r3, #3 - 8006884: d82a bhi.n 80068dc - 8006886: a201 add r2, pc, #4 @ (adr r2, 800688c ) - 8006888: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 800688c: 0800689d .word 0x0800689d - 8006890: 080068af .word 0x080068af - 8006894: 080068bf .word 0x080068bf - 8006898: 080068cf .word 0x080068cf - duplex = ETH_FULLDUPLEX_MODE; - 800689c: f44f 6300 mov.w r3, #2048 @ 0x800 - 80068a0: 677b str r3, [r7, #116] @ 0x74 - speed = ETH_SPEED_100M; - 80068a2: f44f 4380 mov.w r3, #16384 @ 0x4000 - 80068a6: 67bb str r3, [r7, #120] @ 0x78 - linkchanged = 1; - 80068a8: 2301 movs r3, #1 - 80068aa: 67fb str r3, [r7, #124] @ 0x7c - break; - 80068ac: e017 b.n 80068de - duplex = ETH_HALFDUPLEX_MODE; - 80068ae: 2300 movs r3, #0 - 80068b0: 677b str r3, [r7, #116] @ 0x74 - speed = ETH_SPEED_100M; - 80068b2: f44f 4380 mov.w r3, #16384 @ 0x4000 - 80068b6: 67bb str r3, [r7, #120] @ 0x78 - linkchanged = 1; - 80068b8: 2301 movs r3, #1 - 80068ba: 67fb str r3, [r7, #124] @ 0x7c - break; - 80068bc: e00f b.n 80068de - duplex = ETH_FULLDUPLEX_MODE; - 80068be: f44f 6300 mov.w r3, #2048 @ 0x800 - 80068c2: 677b str r3, [r7, #116] @ 0x74 - speed = ETH_SPEED_10M; - 80068c4: 2300 movs r3, #0 - 80068c6: 67bb str r3, [r7, #120] @ 0x78 - linkchanged = 1; - 80068c8: 2301 movs r3, #1 - 80068ca: 67fb str r3, [r7, #124] @ 0x7c - break; - 80068cc: e007 b.n 80068de - duplex = ETH_HALFDUPLEX_MODE; - 80068ce: 2300 movs r3, #0 - 80068d0: 677b str r3, [r7, #116] @ 0x74 - speed = ETH_SPEED_10M; - 80068d2: 2300 movs r3, #0 - 80068d4: 67bb str r3, [r7, #120] @ 0x78 - linkchanged = 1; - 80068d6: 2301 movs r3, #1 - 80068d8: 67fb str r3, [r7, #124] @ 0x7c - break; - 80068da: e000 b.n 80068de - break; - 80068dc: bf00 nop - if(linkchanged) - 80068de: 6ffb ldr r3, [r7, #124] @ 0x7c - 80068e0: 2b00 cmp r3, #0 - 80068e2: d018 beq.n 8006916 - HAL_ETH_GetMACConfig(&heth, &MACConf); - 80068e4: f107 030c add.w r3, r7, #12 - 80068e8: 4619 mov r1, r3 - 80068ea: 480e ldr r0, [pc, #56] @ (8006924 ) - 80068ec: f7fd f80a bl 8003904 - MACConf.DuplexMode = duplex; - 80068f0: 6f7b ldr r3, [r7, #116] @ 0x74 - 80068f2: 627b str r3, [r7, #36] @ 0x24 - MACConf.Speed = speed; - 80068f4: 6fbb ldr r3, [r7, #120] @ 0x78 - 80068f6: 623b str r3, [r7, #32] - HAL_ETH_SetMACConfig(&heth, &MACConf); - 80068f8: f107 030c add.w r3, r7, #12 - 80068fc: 4619 mov r1, r3 - 80068fe: 4809 ldr r0, [pc, #36] @ (8006924 ) - 8006900: f7fd f8ea bl 8003ad8 - HAL_ETH_Start(&heth); - 8006904: 4807 ldr r0, [pc, #28] @ (8006924 ) - 8006906: f7fc fce5 bl 80032d4 - netif_set_up(netif); - 800690a: 6878 ldr r0, [r7, #4] - 800690c: f000 ff48 bl 80077a0 - netif_set_link_up(netif); - 8006910: 6878 ldr r0, [r7, #4] - 8006912: f000 ffe3 bl 80078dc -} - 8006916: bf00 nop - 8006918: 3780 adds r7, #128 @ 0x80 - 800691a: 46bd mov sp, r7 - 800691c: bd80 pop {r7, pc} - 800691e: bf00 nop - 8006920: 20006174 .word 0x20006174 - 8006924: 2000608c .word 0x2000608c - -08006928 : - -void HAL_ETH_RxAllocateCallback(uint8_t **buff) -{ - 8006928: b580 push {r7, lr} - 800692a: b086 sub sp, #24 - 800692c: af02 add r7, sp, #8 - 800692e: 6078 str r0, [r7, #4] -/* USER CODE BEGIN HAL ETH RxAllocateCallback */ - struct pbuf_custom *p = LWIP_MEMPOOL_ALLOC(RX_POOL); - 8006930: 4812 ldr r0, [pc, #72] @ (800697c ) - 8006932: f000 fca7 bl 8007284 - 8006936: 60f8 str r0, [r7, #12] - if (p) - 8006938: 68fb ldr r3, [r7, #12] - 800693a: 2b00 cmp r3, #0 - 800693c: d014 beq.n 8006968 - { - /* Get the buff from the struct pbuf address. */ - *buff = (uint8_t *)p + offsetof(RxBuff_t, buff); - 800693e: 68fb ldr r3, [r7, #12] - 8006940: f103 0220 add.w r2, r3, #32 - 8006944: 687b ldr r3, [r7, #4] - 8006946: 601a str r2, [r3, #0] - p->custom_free_function = pbuf_free_custom; - 8006948: 68fb ldr r3, [r7, #12] - 800694a: 4a0d ldr r2, [pc, #52] @ (8006980 ) - 800694c: 611a str r2, [r3, #16] - /* Initialize the struct pbuf. - * This must be performed whenever a buffer's allocated because it may be - * changed by lwIP or the app, e.g., pbuf_free decrements ref. */ - pbuf_alloced_custom(PBUF_RAW, 0, PBUF_REF, p, *buff, ETH_RX_BUFFER_SIZE); - 800694e: 687b ldr r3, [r7, #4] - 8006950: 681b ldr r3, [r3, #0] - 8006952: f44f 62c0 mov.w r2, #1536 @ 0x600 - 8006956: 9201 str r2, [sp, #4] - 8006958: 9300 str r3, [sp, #0] - 800695a: 68fb ldr r3, [r7, #12] - 800695c: 2241 movs r2, #65 @ 0x41 - 800695e: 2100 movs r1, #0 - 8006960: 2000 movs r0, #0 - 8006962: f001 f9e9 bl 8007d38 - { - RxAllocStatus = RX_ALLOC_ERROR; - *buff = NULL; - } -/* USER CODE END HAL ETH RxAllocateCallback */ -} - 8006966: e005 b.n 8006974 - RxAllocStatus = RX_ALLOC_ERROR; - 8006968: 4b06 ldr r3, [pc, #24] @ (8006984 ) - 800696a: 2201 movs r2, #1 - 800696c: 701a strb r2, [r3, #0] - *buff = NULL; - 800696e: 687b ldr r3, [r7, #4] - 8006970: 2200 movs r2, #0 - 8006972: 601a str r2, [r3, #0] -} - 8006974: bf00 nop - 8006976: 3710 adds r7, #16 - 8006978: 46bd mov sp, r7 - 800697a: bd80 pop {r7, pc} - 800697c: 0801a4f8 .word 0x0801a4f8 - 8006980: 080065a5 .word 0x080065a5 - 8006984: 20005f48 .word 0x20005f48 - -08006988 : - -void HAL_ETH_RxLinkCallback(void **pStart, void **pEnd, uint8_t *buff, uint16_t Length) -{ - 8006988: b480 push {r7} - 800698a: b089 sub sp, #36 @ 0x24 - 800698c: af00 add r7, sp, #0 - 800698e: 60f8 str r0, [r7, #12] - 8006990: 60b9 str r1, [r7, #8] - 8006992: 607a str r2, [r7, #4] - 8006994: 807b strh r3, [r7, #2] -/* USER CODE BEGIN HAL ETH RxLinkCallback */ - - struct pbuf **ppStart = (struct pbuf **)pStart; - 8006996: 68fb ldr r3, [r7, #12] - 8006998: 61bb str r3, [r7, #24] - struct pbuf **ppEnd = (struct pbuf **)pEnd; - 800699a: 68bb ldr r3, [r7, #8] - 800699c: 617b str r3, [r7, #20] - struct pbuf *p = NULL; - 800699e: 2300 movs r3, #0 - 80069a0: 61fb str r3, [r7, #28] - - /* Get the struct pbuf from the buff address. */ - p = (struct pbuf *)(buff - offsetof(RxBuff_t, buff)); - 80069a2: 687b ldr r3, [r7, #4] - 80069a4: 3b20 subs r3, #32 - 80069a6: 61fb str r3, [r7, #28] - p->next = NULL; - 80069a8: 69fb ldr r3, [r7, #28] - 80069aa: 2200 movs r2, #0 - 80069ac: 601a str r2, [r3, #0] - p->tot_len = 0; - 80069ae: 69fb ldr r3, [r7, #28] - 80069b0: 2200 movs r2, #0 - 80069b2: 811a strh r2, [r3, #8] - p->len = Length; - 80069b4: 69fb ldr r3, [r7, #28] - 80069b6: 887a ldrh r2, [r7, #2] - 80069b8: 815a strh r2, [r3, #10] - - /* Chain the buffer. */ - if (!*ppStart) - 80069ba: 69bb ldr r3, [r7, #24] - 80069bc: 681b ldr r3, [r3, #0] - 80069be: 2b00 cmp r3, #0 - 80069c0: d103 bne.n 80069ca - { - /* The first buffer of the packet. */ - *ppStart = p; - 80069c2: 69bb ldr r3, [r7, #24] - 80069c4: 69fa ldr r2, [r7, #28] - 80069c6: 601a str r2, [r3, #0] - 80069c8: e003 b.n 80069d2 - } - else - { - /* Chain the buffer to the end of the packet. */ - (*ppEnd)->next = p; - 80069ca: 697b ldr r3, [r7, #20] - 80069cc: 681b ldr r3, [r3, #0] - 80069ce: 69fa ldr r2, [r7, #28] - 80069d0: 601a str r2, [r3, #0] - } - *ppEnd = p; - 80069d2: 697b ldr r3, [r7, #20] - 80069d4: 69fa ldr r2, [r7, #28] - 80069d6: 601a str r2, [r3, #0] - - /* Update the total length of all the buffers of the chain. Each pbuf in the chain should have its tot_len - * set to its own length, plus the length of all the following pbufs in the chain. */ - for (p = *ppStart; p != NULL; p = p->next) - 80069d8: 69bb ldr r3, [r7, #24] - 80069da: 681b ldr r3, [r3, #0] - 80069dc: 61fb str r3, [r7, #28] - 80069de: e009 b.n 80069f4 - { - p->tot_len += Length; - 80069e0: 69fb ldr r3, [r7, #28] - 80069e2: 891a ldrh r2, [r3, #8] - 80069e4: 887b ldrh r3, [r7, #2] - 80069e6: 4413 add r3, r2 - 80069e8: b29a uxth r2, r3 - 80069ea: 69fb ldr r3, [r7, #28] - 80069ec: 811a strh r2, [r3, #8] - for (p = *ppStart; p != NULL; p = p->next) - 80069ee: 69fb ldr r3, [r7, #28] - 80069f0: 681b ldr r3, [r3, #0] - 80069f2: 61fb str r3, [r7, #28] - 80069f4: 69fb ldr r3, [r7, #28] - 80069f6: 2b00 cmp r3, #0 - 80069f8: d1f2 bne.n 80069e0 - } - -/* USER CODE END HAL ETH RxLinkCallback */ -} - 80069fa: bf00 nop - 80069fc: bf00 nop - 80069fe: 3724 adds r7, #36 @ 0x24 - 8006a00: 46bd mov sp, r7 - 8006a02: f85d 7b04 ldr.w r7, [sp], #4 - 8006a06: 4770 bx lr - -08006a08 : - * @param n u16_t in host byte order - * @return n in network byte order - */ -u16_t -lwip_htons(u16_t n) -{ - 8006a08: b480 push {r7} - 8006a0a: b083 sub sp, #12 - 8006a0c: af00 add r7, sp, #0 - 8006a0e: 4603 mov r3, r0 - 8006a10: 80fb strh r3, [r7, #6] - return PP_HTONS(n); - 8006a12: 88fb ldrh r3, [r7, #6] - 8006a14: 021b lsls r3, r3, #8 - 8006a16: b21a sxth r2, r3 - 8006a18: 88fb ldrh r3, [r7, #6] - 8006a1a: 0a1b lsrs r3, r3, #8 - 8006a1c: b29b uxth r3, r3 - 8006a1e: b21b sxth r3, r3 - 8006a20: 4313 orrs r3, r2 - 8006a22: b21b sxth r3, r3 - 8006a24: b29b uxth r3, r3 -} - 8006a26: 4618 mov r0, r3 - 8006a28: 370c adds r7, #12 - 8006a2a: 46bd mov sp, r7 - 8006a2c: f85d 7b04 ldr.w r7, [sp], #4 - 8006a30: 4770 bx lr - -08006a32 : - * @param n u32_t in host byte order - * @return n in network byte order - */ -u32_t -lwip_htonl(u32_t n) -{ - 8006a32: b480 push {r7} - 8006a34: b083 sub sp, #12 - 8006a36: af00 add r7, sp, #0 - 8006a38: 6078 str r0, [r7, #4] - return PP_HTONL(n); - 8006a3a: 687b ldr r3, [r7, #4] - 8006a3c: 061a lsls r2, r3, #24 - 8006a3e: 687b ldr r3, [r7, #4] - 8006a40: 021b lsls r3, r3, #8 - 8006a42: f403 037f and.w r3, r3, #16711680 @ 0xff0000 - 8006a46: 431a orrs r2, r3 - 8006a48: 687b ldr r3, [r7, #4] - 8006a4a: 0a1b lsrs r3, r3, #8 - 8006a4c: f403 437f and.w r3, r3, #65280 @ 0xff00 - 8006a50: 431a orrs r2, r3 - 8006a52: 687b ldr r3, [r7, #4] - 8006a54: 0e1b lsrs r3, r3, #24 - 8006a56: 4313 orrs r3, r2 -} - 8006a58: 4618 mov r0, r3 - 8006a5a: 370c adds r7, #12 - 8006a5c: 46bd mov sp, r7 - 8006a5e: f85d 7b04 ldr.w r7, [sp], #4 - 8006a62: 4770 bx lr - -08006a64 : - * Initialize all modules. - * Use this in NO_SYS mode. Use tcpip_init() otherwise. - */ -void -lwip_init(void) -{ - 8006a64: b580 push {r7, lr} - 8006a66: b082 sub sp, #8 - 8006a68: af00 add r7, sp, #0 -#ifndef LWIP_SKIP_CONST_CHECK - int a = 0; - 8006a6a: 2300 movs r3, #0 - 8006a6c: 607b str r3, [r7, #4] - /* Modules initialization */ - stats_init(); -#if !NO_SYS - sys_init(); -#endif /* !NO_SYS */ - mem_init(); - 8006a6e: f000 f8d1 bl 8006c14 - memp_init(); - 8006a72: f000 fbc3 bl 80071fc - pbuf_init(); - netif_init(); - 8006a76: f000 fcc1 bl 80073fc -#endif /* LWIP_IPV4 */ -#if LWIP_RAW - raw_init(); -#endif /* LWIP_RAW */ -#if LWIP_UDP - udp_init(); - 8006a7a: f007 f855 bl 800db28 -#endif /* LWIP_UDP */ -#if LWIP_TCP - tcp_init(); - 8006a7e: f001 fdb1 bl 80085e4 -#if PPP_SUPPORT - ppp_init(); -#endif - -#if LWIP_TIMERS - sys_timeouts_init(); - 8006a82: f006 ffc7 bl 800da14 -#endif /* LWIP_TIMERS */ -} - 8006a86: bf00 nop - 8006a88: 3708 adds r7, #8 - 8006a8a: 46bd mov sp, r7 - 8006a8c: bd80 pop {r7, pc} - ... - -08006a90 : -#define mem_overflow_check_element(mem) -#endif /* MEM_OVERFLOW_CHECK */ - -static struct mem * -ptr_to_mem(mem_size_t ptr) -{ - 8006a90: b480 push {r7} - 8006a92: b083 sub sp, #12 - 8006a94: af00 add r7, sp, #0 - 8006a96: 6078 str r0, [r7, #4] - return (struct mem *)(void *)&ram[ptr]; - 8006a98: 4b04 ldr r3, [pc, #16] @ (8006aac ) - 8006a9a: 681a ldr r2, [r3, #0] - 8006a9c: 687b ldr r3, [r7, #4] - 8006a9e: 4413 add r3, r2 -} - 8006aa0: 4618 mov r0, r3 - 8006aa2: 370c adds r7, #12 - 8006aa4: 46bd mov sp, r7 - 8006aa6: f85d 7b04 ldr.w r7, [sp], #4 - 8006aaa: 4770 bx lr - 8006aac: 200161c8 .word 0x200161c8 - -08006ab0 : - -static mem_size_t -mem_to_ptr(void *mem) -{ - 8006ab0: b480 push {r7} - 8006ab2: b083 sub sp, #12 - 8006ab4: af00 add r7, sp, #0 - 8006ab6: 6078 str r0, [r7, #4] - return (mem_size_t)((u8_t *)mem - ram); - 8006ab8: 4b04 ldr r3, [pc, #16] @ (8006acc ) - 8006aba: 681b ldr r3, [r3, #0] - 8006abc: 687a ldr r2, [r7, #4] - 8006abe: 1ad3 subs r3, r2, r3 -} - 8006ac0: 4618 mov r0, r3 - 8006ac2: 370c adds r7, #12 - 8006ac4: 46bd mov sp, r7 - 8006ac6: f85d 7b04 ldr.w r7, [sp], #4 - 8006aca: 4770 bx lr - 8006acc: 200161c8 .word 0x200161c8 - -08006ad0 : - * This assumes access to the heap is protected by the calling function - * already. - */ -static void -plug_holes(struct mem *mem) -{ - 8006ad0: b590 push {r4, r7, lr} - 8006ad2: b085 sub sp, #20 - 8006ad4: af00 add r7, sp, #0 - 8006ad6: 6078 str r0, [r7, #4] - struct mem *nmem; - struct mem *pmem; - - LWIP_ASSERT("plug_holes: mem >= ram", (u8_t *)mem >= ram); - 8006ad8: 4b45 ldr r3, [pc, #276] @ (8006bf0 ) - 8006ada: 681b ldr r3, [r3, #0] - 8006adc: 687a ldr r2, [r7, #4] - 8006ade: 429a cmp r2, r3 - 8006ae0: d206 bcs.n 8006af0 - 8006ae2: 4b44 ldr r3, [pc, #272] @ (8006bf4 ) - 8006ae4: f240 12df movw r2, #479 @ 0x1df - 8006ae8: 4943 ldr r1, [pc, #268] @ (8006bf8 ) - 8006aea: 4844 ldr r0, [pc, #272] @ (8006bfc ) - 8006aec: f00c f8c4 bl 8012c78 - LWIP_ASSERT("plug_holes: mem < ram_end", (u8_t *)mem < (u8_t *)ram_end); - 8006af0: 4b43 ldr r3, [pc, #268] @ (8006c00 ) - 8006af2: 681b ldr r3, [r3, #0] - 8006af4: 687a ldr r2, [r7, #4] - 8006af6: 429a cmp r2, r3 - 8006af8: d306 bcc.n 8006b08 - 8006afa: 4b3e ldr r3, [pc, #248] @ (8006bf4 ) - 8006afc: f44f 72f0 mov.w r2, #480 @ 0x1e0 - 8006b00: 4940 ldr r1, [pc, #256] @ (8006c04 ) - 8006b02: 483e ldr r0, [pc, #248] @ (8006bfc ) - 8006b04: f00c f8b8 bl 8012c78 - LWIP_ASSERT("plug_holes: mem->used == 0", mem->used == 0); - 8006b08: 687b ldr r3, [r7, #4] - 8006b0a: 7a1b ldrb r3, [r3, #8] - 8006b0c: 2b00 cmp r3, #0 - 8006b0e: d006 beq.n 8006b1e - 8006b10: 4b38 ldr r3, [pc, #224] @ (8006bf4 ) - 8006b12: f240 12e1 movw r2, #481 @ 0x1e1 - 8006b16: 493c ldr r1, [pc, #240] @ (8006c08 ) - 8006b18: 4838 ldr r0, [pc, #224] @ (8006bfc ) - 8006b1a: f00c f8ad bl 8012c78 - - /* plug hole forward */ - LWIP_ASSERT("plug_holes: mem->next <= MEM_SIZE_ALIGNED", mem->next <= MEM_SIZE_ALIGNED); - 8006b1e: 687b ldr r3, [r7, #4] - 8006b20: 681b ldr r3, [r3, #0] - 8006b22: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8006b26: d906 bls.n 8006b36 - 8006b28: 4b32 ldr r3, [pc, #200] @ (8006bf4 ) - 8006b2a: f44f 72f2 mov.w r2, #484 @ 0x1e4 - 8006b2e: 4937 ldr r1, [pc, #220] @ (8006c0c ) - 8006b30: 4832 ldr r0, [pc, #200] @ (8006bfc ) - 8006b32: f00c f8a1 bl 8012c78 - - nmem = ptr_to_mem(mem->next); - 8006b36: 687b ldr r3, [r7, #4] - 8006b38: 681b ldr r3, [r3, #0] - 8006b3a: 4618 mov r0, r3 - 8006b3c: f7ff ffa8 bl 8006a90 - 8006b40: 60f8 str r0, [r7, #12] - if (mem != nmem && nmem->used == 0 && (u8_t *)nmem != (u8_t *)ram_end) { - 8006b42: 687a ldr r2, [r7, #4] - 8006b44: 68fb ldr r3, [r7, #12] - 8006b46: 429a cmp r2, r3 - 8006b48: d024 beq.n 8006b94 - 8006b4a: 68fb ldr r3, [r7, #12] - 8006b4c: 7a1b ldrb r3, [r3, #8] - 8006b4e: 2b00 cmp r3, #0 - 8006b50: d120 bne.n 8006b94 - 8006b52: 4b2b ldr r3, [pc, #172] @ (8006c00 ) - 8006b54: 681b ldr r3, [r3, #0] - 8006b56: 68fa ldr r2, [r7, #12] - 8006b58: 429a cmp r2, r3 - 8006b5a: d01b beq.n 8006b94 - /* if mem->next is unused and not end of ram, combine mem and mem->next */ - if (lfree == nmem) { - 8006b5c: 4b2c ldr r3, [pc, #176] @ (8006c10 ) - 8006b5e: 681b ldr r3, [r3, #0] - 8006b60: 68fa ldr r2, [r7, #12] - 8006b62: 429a cmp r2, r3 - 8006b64: d102 bne.n 8006b6c - lfree = mem; - 8006b66: 4a2a ldr r2, [pc, #168] @ (8006c10 ) - 8006b68: 687b ldr r3, [r7, #4] - 8006b6a: 6013 str r3, [r2, #0] - } - mem->next = nmem->next; - 8006b6c: 68fb ldr r3, [r7, #12] - 8006b6e: 681a ldr r2, [r3, #0] - 8006b70: 687b ldr r3, [r7, #4] - 8006b72: 601a str r2, [r3, #0] - if (nmem->next != MEM_SIZE_ALIGNED) { - 8006b74: 68fb ldr r3, [r7, #12] - 8006b76: 681b ldr r3, [r3, #0] - 8006b78: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8006b7c: d00a beq.n 8006b94 - ptr_to_mem(nmem->next)->prev = mem_to_ptr(mem); - 8006b7e: 68fb ldr r3, [r7, #12] - 8006b80: 681b ldr r3, [r3, #0] - 8006b82: 4618 mov r0, r3 - 8006b84: f7ff ff84 bl 8006a90 - 8006b88: 4604 mov r4, r0 - 8006b8a: 6878 ldr r0, [r7, #4] - 8006b8c: f7ff ff90 bl 8006ab0 - 8006b90: 4603 mov r3, r0 - 8006b92: 6063 str r3, [r4, #4] - } - } - - /* plug hole backward */ - pmem = ptr_to_mem(mem->prev); - 8006b94: 687b ldr r3, [r7, #4] - 8006b96: 685b ldr r3, [r3, #4] - 8006b98: 4618 mov r0, r3 - 8006b9a: f7ff ff79 bl 8006a90 - 8006b9e: 60b8 str r0, [r7, #8] - if (pmem != mem && pmem->used == 0) { - 8006ba0: 68ba ldr r2, [r7, #8] - 8006ba2: 687b ldr r3, [r7, #4] - 8006ba4: 429a cmp r2, r3 - 8006ba6: d01f beq.n 8006be8 - 8006ba8: 68bb ldr r3, [r7, #8] - 8006baa: 7a1b ldrb r3, [r3, #8] - 8006bac: 2b00 cmp r3, #0 - 8006bae: d11b bne.n 8006be8 - /* if mem->prev is unused, combine mem and mem->prev */ - if (lfree == mem) { - 8006bb0: 4b17 ldr r3, [pc, #92] @ (8006c10 ) - 8006bb2: 681b ldr r3, [r3, #0] - 8006bb4: 687a ldr r2, [r7, #4] - 8006bb6: 429a cmp r2, r3 - 8006bb8: d102 bne.n 8006bc0 - lfree = pmem; - 8006bba: 4a15 ldr r2, [pc, #84] @ (8006c10 ) - 8006bbc: 68bb ldr r3, [r7, #8] - 8006bbe: 6013 str r3, [r2, #0] - } - pmem->next = mem->next; - 8006bc0: 687b ldr r3, [r7, #4] - 8006bc2: 681a ldr r2, [r3, #0] - 8006bc4: 68bb ldr r3, [r7, #8] - 8006bc6: 601a str r2, [r3, #0] - if (mem->next != MEM_SIZE_ALIGNED) { - 8006bc8: 687b ldr r3, [r7, #4] - 8006bca: 681b ldr r3, [r3, #0] - 8006bcc: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8006bd0: d00a beq.n 8006be8 - ptr_to_mem(mem->next)->prev = mem_to_ptr(pmem); - 8006bd2: 687b ldr r3, [r7, #4] - 8006bd4: 681b ldr r3, [r3, #0] - 8006bd6: 4618 mov r0, r3 - 8006bd8: f7ff ff5a bl 8006a90 - 8006bdc: 4604 mov r4, r0 - 8006bde: 68b8 ldr r0, [r7, #8] - 8006be0: f7ff ff66 bl 8006ab0 - 8006be4: 4603 mov r3, r0 - 8006be6: 6063 str r3, [r4, #4] - } - } -} - 8006be8: bf00 nop - 8006bea: 3714 adds r7, #20 - 8006bec: 46bd mov sp, r7 - 8006bee: bd90 pop {r4, r7, pc} - 8006bf0: 200161c8 .word 0x200161c8 - 8006bf4: 0801774c .word 0x0801774c - 8006bf8: 0801777c .word 0x0801777c - 8006bfc: 08017794 .word 0x08017794 - 8006c00: 200161cc .word 0x200161cc - 8006c04: 080177bc .word 0x080177bc - 8006c08: 080177d8 .word 0x080177d8 - 8006c0c: 080177f4 .word 0x080177f4 - 8006c10: 200161d0 .word 0x200161d0 - -08006c14 : -/** - * Zero the heap and initialize start, end and lowest-free - */ -void -mem_init(void) -{ - 8006c14: b580 push {r7, lr} - 8006c16: b082 sub sp, #8 - 8006c18: af00 add r7, sp, #0 - - LWIP_ASSERT("Sanity check alignment", - (SIZEOF_STRUCT_MEM & (MEM_ALIGNMENT - 1)) == 0); - - /* align the heap */ - ram = (u8_t *)LWIP_MEM_ALIGN(LWIP_RAM_HEAP_POINTER); - 8006c1a: 4b18 ldr r3, [pc, #96] @ (8006c7c ) - 8006c1c: 3303 adds r3, #3 - 8006c1e: f023 0303 bic.w r3, r3, #3 - 8006c22: 461a mov r2, r3 - 8006c24: 4b16 ldr r3, [pc, #88] @ (8006c80 ) - 8006c26: 601a str r2, [r3, #0] - /* initialize the start of the heap */ - mem = (struct mem *)(void *)ram; - 8006c28: 4b15 ldr r3, [pc, #84] @ (8006c80 ) - 8006c2a: 681b ldr r3, [r3, #0] - 8006c2c: 607b str r3, [r7, #4] - mem->next = MEM_SIZE_ALIGNED; - 8006c2e: 687b ldr r3, [r7, #4] - 8006c30: f44f 3280 mov.w r2, #65536 @ 0x10000 - 8006c34: 601a str r2, [r3, #0] - mem->prev = 0; - 8006c36: 687b ldr r3, [r7, #4] - 8006c38: 2200 movs r2, #0 - 8006c3a: 605a str r2, [r3, #4] - mem->used = 0; - 8006c3c: 687b ldr r3, [r7, #4] - 8006c3e: 2200 movs r2, #0 - 8006c40: 721a strb r2, [r3, #8] - /* initialize the end of the heap */ - ram_end = ptr_to_mem(MEM_SIZE_ALIGNED); - 8006c42: f44f 3080 mov.w r0, #65536 @ 0x10000 - 8006c46: f7ff ff23 bl 8006a90 - 8006c4a: 4603 mov r3, r0 - 8006c4c: 4a0d ldr r2, [pc, #52] @ (8006c84 ) - 8006c4e: 6013 str r3, [r2, #0] - ram_end->used = 1; - 8006c50: 4b0c ldr r3, [pc, #48] @ (8006c84 ) - 8006c52: 681b ldr r3, [r3, #0] - 8006c54: 2201 movs r2, #1 - 8006c56: 721a strb r2, [r3, #8] - ram_end->next = MEM_SIZE_ALIGNED; - 8006c58: 4b0a ldr r3, [pc, #40] @ (8006c84 ) - 8006c5a: 681b ldr r3, [r3, #0] - 8006c5c: f44f 3280 mov.w r2, #65536 @ 0x10000 - 8006c60: 601a str r2, [r3, #0] - ram_end->prev = MEM_SIZE_ALIGNED; - 8006c62: 4b08 ldr r3, [pc, #32] @ (8006c84 ) - 8006c64: 681b ldr r3, [r3, #0] - 8006c66: f44f 3280 mov.w r2, #65536 @ 0x10000 - 8006c6a: 605a str r2, [r3, #4] - MEM_SANITY(); - - /* initialize the lowest-free pointer to the start of the heap */ - lfree = (struct mem *)(void *)ram; - 8006c6c: 4b04 ldr r3, [pc, #16] @ (8006c80 ) - 8006c6e: 681b ldr r3, [r3, #0] - 8006c70: 4a05 ldr r2, [pc, #20] @ (8006c88 ) - 8006c72: 6013 str r3, [r2, #0] - MEM_STATS_AVAIL(avail, MEM_SIZE_ALIGNED); - - if (sys_mutex_new(&mem_mutex) != ERR_OK) { - LWIP_ASSERT("failed to create mem_mutex", 0); - } -} - 8006c74: bf00 nop - 8006c76: 3708 adds r7, #8 - 8006c78: 46bd mov sp, r7 - 8006c7a: bd80 pop {r7, pc} - 8006c7c: 200061ac .word 0x200061ac - 8006c80: 200161c8 .word 0x200161c8 - 8006c84: 200161cc .word 0x200161cc - 8006c88: 200161d0 .word 0x200161d0 - -08006c8c : -/* Check if a struct mem is correctly linked. - * If not, double-free is a possible reason. - */ -static int -mem_link_valid(struct mem *mem) -{ - 8006c8c: b580 push {r7, lr} - 8006c8e: b086 sub sp, #24 - 8006c90: af00 add r7, sp, #0 - 8006c92: 6078 str r0, [r7, #4] - struct mem *nmem, *pmem; - mem_size_t rmem_idx; - rmem_idx = mem_to_ptr(mem); - 8006c94: 6878 ldr r0, [r7, #4] - 8006c96: f7ff ff0b bl 8006ab0 - 8006c9a: 6178 str r0, [r7, #20] - nmem = ptr_to_mem(mem->next); - 8006c9c: 687b ldr r3, [r7, #4] - 8006c9e: 681b ldr r3, [r3, #0] - 8006ca0: 4618 mov r0, r3 - 8006ca2: f7ff fef5 bl 8006a90 - 8006ca6: 6138 str r0, [r7, #16] - pmem = ptr_to_mem(mem->prev); - 8006ca8: 687b ldr r3, [r7, #4] - 8006caa: 685b ldr r3, [r3, #4] - 8006cac: 4618 mov r0, r3 - 8006cae: f7ff feef bl 8006a90 - 8006cb2: 60f8 str r0, [r7, #12] - if ((mem->next > MEM_SIZE_ALIGNED) || (mem->prev > MEM_SIZE_ALIGNED) || - 8006cb4: 687b ldr r3, [r7, #4] - 8006cb6: 681b ldr r3, [r3, #0] - 8006cb8: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8006cbc: d818 bhi.n 8006cf0 - 8006cbe: 687b ldr r3, [r7, #4] - 8006cc0: 685b ldr r3, [r3, #4] - 8006cc2: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8006cc6: d813 bhi.n 8006cf0 - ((mem->prev != rmem_idx) && (pmem->next != rmem_idx)) || - 8006cc8: 687b ldr r3, [r7, #4] - 8006cca: 685b ldr r3, [r3, #4] - if ((mem->next > MEM_SIZE_ALIGNED) || (mem->prev > MEM_SIZE_ALIGNED) || - 8006ccc: 697a ldr r2, [r7, #20] - 8006cce: 429a cmp r2, r3 - 8006cd0: d004 beq.n 8006cdc - ((mem->prev != rmem_idx) && (pmem->next != rmem_idx)) || - 8006cd2: 68fb ldr r3, [r7, #12] - 8006cd4: 681b ldr r3, [r3, #0] - 8006cd6: 697a ldr r2, [r7, #20] - 8006cd8: 429a cmp r2, r3 - 8006cda: d109 bne.n 8006cf0 - ((nmem != ram_end) && (nmem->prev != rmem_idx))) { - 8006cdc: 4b08 ldr r3, [pc, #32] @ (8006d00 ) - 8006cde: 681b ldr r3, [r3, #0] - ((mem->prev != rmem_idx) && (pmem->next != rmem_idx)) || - 8006ce0: 693a ldr r2, [r7, #16] - 8006ce2: 429a cmp r2, r3 - 8006ce4: d006 beq.n 8006cf4 - ((nmem != ram_end) && (nmem->prev != rmem_idx))) { - 8006ce6: 693b ldr r3, [r7, #16] - 8006ce8: 685b ldr r3, [r3, #4] - 8006cea: 697a ldr r2, [r7, #20] - 8006cec: 429a cmp r2, r3 - 8006cee: d001 beq.n 8006cf4 - return 0; - 8006cf0: 2300 movs r3, #0 - 8006cf2: e000 b.n 8006cf6 - } - return 1; - 8006cf4: 2301 movs r3, #1 -} - 8006cf6: 4618 mov r0, r3 - 8006cf8: 3718 adds r7, #24 - 8006cfa: 46bd mov sp, r7 - 8006cfc: bd80 pop {r7, pc} - 8006cfe: bf00 nop - 8006d00: 200161cc .word 0x200161cc - -08006d04 : - * @param rmem is the data portion of a struct mem as returned by a previous - * call to mem_malloc() - */ -void -mem_free(void *rmem) -{ - 8006d04: b580 push {r7, lr} - 8006d06: b084 sub sp, #16 - 8006d08: af00 add r7, sp, #0 - 8006d0a: 6078 str r0, [r7, #4] - struct mem *mem; - LWIP_MEM_FREE_DECL_PROTECT(); - - if (rmem == NULL) { - 8006d0c: 687b ldr r3, [r7, #4] - 8006d0e: 2b00 cmp r3, #0 - 8006d10: d04c beq.n 8006dac - LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("mem_free(p == NULL) was called.\n")); - return; - } - if ((((mem_ptr_t)rmem) & (MEM_ALIGNMENT - 1)) != 0) { - 8006d12: 687b ldr r3, [r7, #4] - 8006d14: f003 0303 and.w r3, r3, #3 - 8006d18: 2b00 cmp r3, #0 - 8006d1a: d007 beq.n 8006d2c - LWIP_MEM_ILLEGAL_FREE("mem_free: sanity check alignment"); - 8006d1c: 4b25 ldr r3, [pc, #148] @ (8006db4 ) - 8006d1e: f240 2273 movw r2, #627 @ 0x273 - 8006d22: 4925 ldr r1, [pc, #148] @ (8006db8 ) - 8006d24: 4825 ldr r0, [pc, #148] @ (8006dbc ) - 8006d26: f00b ffa7 bl 8012c78 - LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_LEVEL_SEVERE, ("mem_free: sanity check alignment\n")); - /* protect mem stats from concurrent access */ - MEM_STATS_INC_LOCKED(illegal); - return; - 8006d2a: e040 b.n 8006dae - } - - /* Get the corresponding struct mem: */ - /* cast through void* to get rid of alignment warnings */ - mem = (struct mem *)(void *)((u8_t *)rmem - (SIZEOF_STRUCT_MEM + MEM_SANITY_OFFSET)); - 8006d2c: 687b ldr r3, [r7, #4] - 8006d2e: 3b0c subs r3, #12 - 8006d30: 60fb str r3, [r7, #12] - - if ((u8_t *)mem < ram || (u8_t *)rmem + MIN_SIZE_ALIGNED > (u8_t *)ram_end) { - 8006d32: 4b23 ldr r3, [pc, #140] @ (8006dc0 ) - 8006d34: 681b ldr r3, [r3, #0] - 8006d36: 68fa ldr r2, [r7, #12] - 8006d38: 429a cmp r2, r3 - 8006d3a: d306 bcc.n 8006d4a - 8006d3c: 687b ldr r3, [r7, #4] - 8006d3e: f103 020c add.w r2, r3, #12 - 8006d42: 4b20 ldr r3, [pc, #128] @ (8006dc4 ) - 8006d44: 681b ldr r3, [r3, #0] - 8006d46: 429a cmp r2, r3 - 8006d48: d907 bls.n 8006d5a - LWIP_MEM_ILLEGAL_FREE("mem_free: illegal memory"); - 8006d4a: 4b1a ldr r3, [pc, #104] @ (8006db4 ) - 8006d4c: f240 227f movw r2, #639 @ 0x27f - 8006d50: 491d ldr r1, [pc, #116] @ (8006dc8 ) - 8006d52: 481a ldr r0, [pc, #104] @ (8006dbc ) - 8006d54: f00b ff90 bl 8012c78 - LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_LEVEL_SEVERE, ("mem_free: illegal memory\n")); - /* protect mem stats from concurrent access */ - MEM_STATS_INC_LOCKED(illegal); - return; - 8006d58: e029 b.n 8006dae - mem_overflow_check_element(mem); -#endif - /* protect the heap from concurrent access */ - LWIP_MEM_FREE_PROTECT(); - /* mem has to be in a used state */ - if (!mem->used) { - 8006d5a: 68fb ldr r3, [r7, #12] - 8006d5c: 7a1b ldrb r3, [r3, #8] - 8006d5e: 2b00 cmp r3, #0 - 8006d60: d107 bne.n 8006d72 - LWIP_MEM_ILLEGAL_FREE("mem_free: illegal memory: double free"); - 8006d62: 4b14 ldr r3, [pc, #80] @ (8006db4 ) - 8006d64: f44f 7223 mov.w r2, #652 @ 0x28c - 8006d68: 4918 ldr r1, [pc, #96] @ (8006dcc ) - 8006d6a: 4814 ldr r0, [pc, #80] @ (8006dbc ) - 8006d6c: f00b ff84 bl 8012c78 - LWIP_MEM_FREE_UNPROTECT(); - LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_LEVEL_SEVERE, ("mem_free: illegal memory: double free?\n")); - /* protect mem stats from concurrent access */ - MEM_STATS_INC_LOCKED(illegal); - return; - 8006d70: e01d b.n 8006dae - } - - if (!mem_link_valid(mem)) { - 8006d72: 68f8 ldr r0, [r7, #12] - 8006d74: f7ff ff8a bl 8006c8c - 8006d78: 4603 mov r3, r0 - 8006d7a: 2b00 cmp r3, #0 - 8006d7c: d107 bne.n 8006d8e - LWIP_MEM_ILLEGAL_FREE("mem_free: illegal memory: non-linked: double free"); - 8006d7e: 4b0d ldr r3, [pc, #52] @ (8006db4 ) - 8006d80: f240 2295 movw r2, #661 @ 0x295 - 8006d84: 4912 ldr r1, [pc, #72] @ (8006dd0 ) - 8006d86: 480d ldr r0, [pc, #52] @ (8006dbc ) - 8006d88: f00b ff76 bl 8012c78 - LWIP_MEM_FREE_UNPROTECT(); - LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_LEVEL_SEVERE, ("mem_free: illegal memory: non-linked: double free?\n")); - /* protect mem stats from concurrent access */ - MEM_STATS_INC_LOCKED(illegal); - return; - 8006d8c: e00f b.n 8006dae - } - - /* mem is now unused. */ - mem->used = 0; - 8006d8e: 68fb ldr r3, [r7, #12] - 8006d90: 2200 movs r2, #0 - 8006d92: 721a strb r2, [r3, #8] - - if (mem < lfree) { - 8006d94: 4b0f ldr r3, [pc, #60] @ (8006dd4 ) - 8006d96: 681b ldr r3, [r3, #0] - 8006d98: 68fa ldr r2, [r7, #12] - 8006d9a: 429a cmp r2, r3 - 8006d9c: d202 bcs.n 8006da4 - /* the newly freed struct is now the lowest */ - lfree = mem; - 8006d9e: 4a0d ldr r2, [pc, #52] @ (8006dd4 ) - 8006da0: 68fb ldr r3, [r7, #12] - 8006da2: 6013 str r3, [r2, #0] - } - - MEM_STATS_DEC_USED(used, mem->next - (mem_size_t)(((u8_t *)mem - ram))); - - /* finally, see if prev or next are free also */ - plug_holes(mem); - 8006da4: 68f8 ldr r0, [r7, #12] - 8006da6: f7ff fe93 bl 8006ad0 - 8006daa: e000 b.n 8006dae - return; - 8006dac: bf00 nop - MEM_SANITY(); -#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT - mem_free_count = 1; -#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ - LWIP_MEM_FREE_UNPROTECT(); -} - 8006dae: 3710 adds r7, #16 - 8006db0: 46bd mov sp, r7 - 8006db2: bd80 pop {r7, pc} - 8006db4: 0801774c .word 0x0801774c - 8006db8: 08017820 .word 0x08017820 - 8006dbc: 08017794 .word 0x08017794 - 8006dc0: 200161c8 .word 0x200161c8 - 8006dc4: 200161cc .word 0x200161cc - 8006dc8: 08017844 .word 0x08017844 - 8006dcc: 08017860 .word 0x08017860 - 8006dd0: 08017888 .word 0x08017888 - 8006dd4: 200161d0 .word 0x200161d0 - -08006dd8 : - * or NULL if newsize is > old size, in which case rmem is NOT touched - * or freed! - */ -void * -mem_trim(void *rmem, mem_size_t new_size) -{ - 8006dd8: b580 push {r7, lr} - 8006dda: b08a sub sp, #40 @ 0x28 - 8006ddc: af00 add r7, sp, #0 - 8006dde: 6078 str r0, [r7, #4] - 8006de0: 6039 str r1, [r7, #0] - /* use the FREE_PROTECT here: it protects with sem OR SYS_ARCH_PROTECT */ - LWIP_MEM_FREE_DECL_PROTECT(); - - /* Expand the size of the allocated memory region so that we can - adjust for alignment. */ - newsize = (mem_size_t)LWIP_MEM_ALIGN_SIZE(new_size); - 8006de2: 683b ldr r3, [r7, #0] - 8006de4: 3303 adds r3, #3 - 8006de6: f023 0303 bic.w r3, r3, #3 - 8006dea: 627b str r3, [r7, #36] @ 0x24 - if (newsize < MIN_SIZE_ALIGNED) { - 8006dec: 6a7b ldr r3, [r7, #36] @ 0x24 - 8006dee: 2b0b cmp r3, #11 - 8006df0: d801 bhi.n 8006df6 - /* every data block must be at least MIN_SIZE_ALIGNED long */ - newsize = MIN_SIZE_ALIGNED; - 8006df2: 230c movs r3, #12 - 8006df4: 627b str r3, [r7, #36] @ 0x24 - } -#if MEM_OVERFLOW_CHECK - newsize += MEM_SANITY_REGION_BEFORE_ALIGNED + MEM_SANITY_REGION_AFTER_ALIGNED; -#endif - if ((newsize > MEM_SIZE_ALIGNED) || (newsize < new_size)) { - 8006df6: 6a7b ldr r3, [r7, #36] @ 0x24 - 8006df8: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8006dfc: d803 bhi.n 8006e06 - 8006dfe: 6a7a ldr r2, [r7, #36] @ 0x24 - 8006e00: 683b ldr r3, [r7, #0] - 8006e02: 429a cmp r2, r3 - 8006e04: d201 bcs.n 8006e0a - return NULL; - 8006e06: 2300 movs r3, #0 - 8006e08: e0c4 b.n 8006f94 - } - - LWIP_ASSERT("mem_trim: legal memory", (u8_t *)rmem >= (u8_t *)ram && - 8006e0a: 4b64 ldr r3, [pc, #400] @ (8006f9c ) - 8006e0c: 681b ldr r3, [r3, #0] - 8006e0e: 687a ldr r2, [r7, #4] - 8006e10: 429a cmp r2, r3 - 8006e12: d304 bcc.n 8006e1e - 8006e14: 4b62 ldr r3, [pc, #392] @ (8006fa0 ) - 8006e16: 681b ldr r3, [r3, #0] - 8006e18: 687a ldr r2, [r7, #4] - 8006e1a: 429a cmp r2, r3 - 8006e1c: d306 bcc.n 8006e2c - 8006e1e: 4b61 ldr r3, [pc, #388] @ (8006fa4 ) - 8006e20: f240 22d1 movw r2, #721 @ 0x2d1 - 8006e24: 4960 ldr r1, [pc, #384] @ (8006fa8 ) - 8006e26: 4861 ldr r0, [pc, #388] @ (8006fac ) - 8006e28: f00b ff26 bl 8012c78 - (u8_t *)rmem < (u8_t *)ram_end); - - if ((u8_t *)rmem < (u8_t *)ram || (u8_t *)rmem >= (u8_t *)ram_end) { - 8006e2c: 4b5b ldr r3, [pc, #364] @ (8006f9c ) - 8006e2e: 681b ldr r3, [r3, #0] - 8006e30: 687a ldr r2, [r7, #4] - 8006e32: 429a cmp r2, r3 - 8006e34: d304 bcc.n 8006e40 - 8006e36: 4b5a ldr r3, [pc, #360] @ (8006fa0 ) - 8006e38: 681b ldr r3, [r3, #0] - 8006e3a: 687a ldr r2, [r7, #4] - 8006e3c: 429a cmp r2, r3 - 8006e3e: d301 bcc.n 8006e44 - LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_LEVEL_SEVERE, ("mem_trim: illegal memory\n")); - /* protect mem stats from concurrent access */ - MEM_STATS_INC_LOCKED(illegal); - return rmem; - 8006e40: 687b ldr r3, [r7, #4] - 8006e42: e0a7 b.n 8006f94 - } - /* Get the corresponding struct mem ... */ - /* cast through void* to get rid of alignment warnings */ - mem = (struct mem *)(void *)((u8_t *)rmem - (SIZEOF_STRUCT_MEM + MEM_SANITY_OFFSET)); - 8006e44: 687b ldr r3, [r7, #4] - 8006e46: 3b0c subs r3, #12 - 8006e48: 623b str r3, [r7, #32] -#if MEM_OVERFLOW_CHECK - mem_overflow_check_element(mem); -#endif - /* ... and its offset pointer */ - ptr = mem_to_ptr(mem); - 8006e4a: 6a38 ldr r0, [r7, #32] - 8006e4c: f7ff fe30 bl 8006ab0 - 8006e50: 61f8 str r0, [r7, #28] - - size = (mem_size_t)((mem_size_t)(mem->next - ptr) - (SIZEOF_STRUCT_MEM + MEM_SANITY_OVERHEAD)); - 8006e52: 6a3b ldr r3, [r7, #32] - 8006e54: 681a ldr r2, [r3, #0] - 8006e56: 69fb ldr r3, [r7, #28] - 8006e58: 1ad3 subs r3, r2, r3 - 8006e5a: 3b0c subs r3, #12 - 8006e5c: 61bb str r3, [r7, #24] - LWIP_ASSERT("mem_trim can only shrink memory", newsize <= size); - 8006e5e: 6a7a ldr r2, [r7, #36] @ 0x24 - 8006e60: 69bb ldr r3, [r7, #24] - 8006e62: 429a cmp r2, r3 - 8006e64: d906 bls.n 8006e74 - 8006e66: 4b4f ldr r3, [pc, #316] @ (8006fa4 ) - 8006e68: f44f 7239 mov.w r2, #740 @ 0x2e4 - 8006e6c: 4950 ldr r1, [pc, #320] @ (8006fb0 ) - 8006e6e: 484f ldr r0, [pc, #316] @ (8006fac ) - 8006e70: f00b ff02 bl 8012c78 - if (newsize > size) { - 8006e74: 6a7a ldr r2, [r7, #36] @ 0x24 - 8006e76: 69bb ldr r3, [r7, #24] - 8006e78: 429a cmp r2, r3 - 8006e7a: d901 bls.n 8006e80 - /* not supported */ - return NULL; - 8006e7c: 2300 movs r3, #0 - 8006e7e: e089 b.n 8006f94 - } - if (newsize == size) { - 8006e80: 6a7a ldr r2, [r7, #36] @ 0x24 - 8006e82: 69bb ldr r3, [r7, #24] - 8006e84: 429a cmp r2, r3 - 8006e86: d101 bne.n 8006e8c - /* No change in size, simply return */ - return rmem; - 8006e88: 687b ldr r3, [r7, #4] - 8006e8a: e083 b.n 8006f94 - } - - /* protect the heap from concurrent access */ - LWIP_MEM_FREE_PROTECT(); - - mem2 = ptr_to_mem(mem->next); - 8006e8c: 6a3b ldr r3, [r7, #32] - 8006e8e: 681b ldr r3, [r3, #0] - 8006e90: 4618 mov r0, r3 - 8006e92: f7ff fdfd bl 8006a90 - 8006e96: 6178 str r0, [r7, #20] - if (mem2->used == 0) { - 8006e98: 697b ldr r3, [r7, #20] - 8006e9a: 7a1b ldrb r3, [r3, #8] - 8006e9c: 2b00 cmp r3, #0 - 8006e9e: d13c bne.n 8006f1a - /* The next struct is unused, we can simply move it at little */ - mem_size_t next; - LWIP_ASSERT("invalid next ptr", mem->next != MEM_SIZE_ALIGNED); - 8006ea0: 6a3b ldr r3, [r7, #32] - 8006ea2: 681b ldr r3, [r3, #0] - 8006ea4: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8006ea8: d106 bne.n 8006eb8 - 8006eaa: 4b3e ldr r3, [pc, #248] @ (8006fa4 ) - 8006eac: f240 22f5 movw r2, #757 @ 0x2f5 - 8006eb0: 4940 ldr r1, [pc, #256] @ (8006fb4 ) - 8006eb2: 483e ldr r0, [pc, #248] @ (8006fac ) - 8006eb4: f00b fee0 bl 8012c78 - /* remember the old next pointer */ - next = mem2->next; - 8006eb8: 697b ldr r3, [r7, #20] - 8006eba: 681b ldr r3, [r3, #0] - 8006ebc: 60fb str r3, [r7, #12] - /* create new struct mem which is moved directly after the shrinked mem */ - ptr2 = (mem_size_t)(ptr + SIZEOF_STRUCT_MEM + newsize); - 8006ebe: 69fa ldr r2, [r7, #28] - 8006ec0: 6a7b ldr r3, [r7, #36] @ 0x24 - 8006ec2: 4413 add r3, r2 - 8006ec4: 330c adds r3, #12 - 8006ec6: 613b str r3, [r7, #16] - if (lfree == mem2) { - 8006ec8: 4b3b ldr r3, [pc, #236] @ (8006fb8 ) - 8006eca: 681b ldr r3, [r3, #0] - 8006ecc: 697a ldr r2, [r7, #20] - 8006ece: 429a cmp r2, r3 - 8006ed0: d105 bne.n 8006ede - lfree = ptr_to_mem(ptr2); - 8006ed2: 6938 ldr r0, [r7, #16] - 8006ed4: f7ff fddc bl 8006a90 - 8006ed8: 4603 mov r3, r0 - 8006eda: 4a37 ldr r2, [pc, #220] @ (8006fb8 ) - 8006edc: 6013 str r3, [r2, #0] - } - mem2 = ptr_to_mem(ptr2); - 8006ede: 6938 ldr r0, [r7, #16] - 8006ee0: f7ff fdd6 bl 8006a90 - 8006ee4: 6178 str r0, [r7, #20] - mem2->used = 0; - 8006ee6: 697b ldr r3, [r7, #20] - 8006ee8: 2200 movs r2, #0 - 8006eea: 721a strb r2, [r3, #8] - /* restore the next pointer */ - mem2->next = next; - 8006eec: 697b ldr r3, [r7, #20] - 8006eee: 68fa ldr r2, [r7, #12] - 8006ef0: 601a str r2, [r3, #0] - /* link it back to mem */ - mem2->prev = ptr; - 8006ef2: 697b ldr r3, [r7, #20] - 8006ef4: 69fa ldr r2, [r7, #28] - 8006ef6: 605a str r2, [r3, #4] - /* link mem to it */ - mem->next = ptr2; - 8006ef8: 6a3b ldr r3, [r7, #32] - 8006efa: 693a ldr r2, [r7, #16] - 8006efc: 601a str r2, [r3, #0] - /* last thing to restore linked list: as we have moved mem2, - * let 'mem2->next->prev' point to mem2 again. but only if mem2->next is not - * the end of the heap */ - if (mem2->next != MEM_SIZE_ALIGNED) { - 8006efe: 697b ldr r3, [r7, #20] - 8006f00: 681b ldr r3, [r3, #0] - 8006f02: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8006f06: d044 beq.n 8006f92 - ptr_to_mem(mem2->next)->prev = ptr2; - 8006f08: 697b ldr r3, [r7, #20] - 8006f0a: 681b ldr r3, [r3, #0] - 8006f0c: 4618 mov r0, r3 - 8006f0e: f7ff fdbf bl 8006a90 - 8006f12: 4602 mov r2, r0 - 8006f14: 693b ldr r3, [r7, #16] - 8006f16: 6053 str r3, [r2, #4] - 8006f18: e03b b.n 8006f92 - } - MEM_STATS_DEC_USED(used, (size - newsize)); - /* no need to plug holes, we've already done that */ - } else if (newsize + SIZEOF_STRUCT_MEM + MIN_SIZE_ALIGNED <= size) { - 8006f1a: 6a7b ldr r3, [r7, #36] @ 0x24 - 8006f1c: 3318 adds r3, #24 - 8006f1e: 69ba ldr r2, [r7, #24] - 8006f20: 429a cmp r2, r3 - 8006f22: d336 bcc.n 8006f92 - * Old size ('size') must be big enough to contain at least 'newsize' plus a struct mem - * ('SIZEOF_STRUCT_MEM') with some data ('MIN_SIZE_ALIGNED'). - * @todo we could leave out MIN_SIZE_ALIGNED. We would create an empty - * region that couldn't hold data, but when mem->next gets freed, - * the 2 regions would be combined, resulting in more free memory */ - ptr2 = (mem_size_t)(ptr + SIZEOF_STRUCT_MEM + newsize); - 8006f24: 69fa ldr r2, [r7, #28] - 8006f26: 6a7b ldr r3, [r7, #36] @ 0x24 - 8006f28: 4413 add r3, r2 - 8006f2a: 330c adds r3, #12 - 8006f2c: 613b str r3, [r7, #16] - LWIP_ASSERT("invalid next ptr", mem->next != MEM_SIZE_ALIGNED); - 8006f2e: 6a3b ldr r3, [r7, #32] - 8006f30: 681b ldr r3, [r3, #0] - 8006f32: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8006f36: d106 bne.n 8006f46 - 8006f38: 4b1a ldr r3, [pc, #104] @ (8006fa4 ) - 8006f3a: f240 3216 movw r2, #790 @ 0x316 - 8006f3e: 491d ldr r1, [pc, #116] @ (8006fb4 ) - 8006f40: 481a ldr r0, [pc, #104] @ (8006fac ) - 8006f42: f00b fe99 bl 8012c78 - mem2 = ptr_to_mem(ptr2); - 8006f46: 6938 ldr r0, [r7, #16] - 8006f48: f7ff fda2 bl 8006a90 - 8006f4c: 6178 str r0, [r7, #20] - if (mem2 < lfree) { - 8006f4e: 4b1a ldr r3, [pc, #104] @ (8006fb8 ) - 8006f50: 681b ldr r3, [r3, #0] - 8006f52: 697a ldr r2, [r7, #20] - 8006f54: 429a cmp r2, r3 - 8006f56: d202 bcs.n 8006f5e - lfree = mem2; - 8006f58: 4a17 ldr r2, [pc, #92] @ (8006fb8 ) - 8006f5a: 697b ldr r3, [r7, #20] - 8006f5c: 6013 str r3, [r2, #0] - } - mem2->used = 0; - 8006f5e: 697b ldr r3, [r7, #20] - 8006f60: 2200 movs r2, #0 - 8006f62: 721a strb r2, [r3, #8] - mem2->next = mem->next; - 8006f64: 6a3b ldr r3, [r7, #32] - 8006f66: 681a ldr r2, [r3, #0] - 8006f68: 697b ldr r3, [r7, #20] - 8006f6a: 601a str r2, [r3, #0] - mem2->prev = ptr; - 8006f6c: 697b ldr r3, [r7, #20] - 8006f6e: 69fa ldr r2, [r7, #28] - 8006f70: 605a str r2, [r3, #4] - mem->next = ptr2; - 8006f72: 6a3b ldr r3, [r7, #32] - 8006f74: 693a ldr r2, [r7, #16] - 8006f76: 601a str r2, [r3, #0] - if (mem2->next != MEM_SIZE_ALIGNED) { - 8006f78: 697b ldr r3, [r7, #20] - 8006f7a: 681b ldr r3, [r3, #0] - 8006f7c: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8006f80: d007 beq.n 8006f92 - ptr_to_mem(mem2->next)->prev = ptr2; - 8006f82: 697b ldr r3, [r7, #20] - 8006f84: 681b ldr r3, [r3, #0] - 8006f86: 4618 mov r0, r3 - 8006f88: f7ff fd82 bl 8006a90 - 8006f8c: 4602 mov r2, r0 - 8006f8e: 693b ldr r3, [r7, #16] - 8006f90: 6053 str r3, [r2, #4] - MEM_SANITY(); -#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT - mem_free_count = 1; -#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ - LWIP_MEM_FREE_UNPROTECT(); - return rmem; - 8006f92: 687b ldr r3, [r7, #4] -} - 8006f94: 4618 mov r0, r3 - 8006f96: 3728 adds r7, #40 @ 0x28 - 8006f98: 46bd mov sp, r7 - 8006f9a: bd80 pop {r7, pc} - 8006f9c: 200161c8 .word 0x200161c8 - 8006fa0: 200161cc .word 0x200161cc - 8006fa4: 0801774c .word 0x0801774c - 8006fa8: 080178bc .word 0x080178bc - 8006fac: 08017794 .word 0x08017794 - 8006fb0: 080178d4 .word 0x080178d4 - 8006fb4: 080178f4 .word 0x080178f4 - 8006fb8: 200161d0 .word 0x200161d0 - -08006fbc : - * - * Note that the returned value will always be aligned (as defined by MEM_ALIGNMENT). - */ -void * -mem_malloc(mem_size_t size_in) -{ - 8006fbc: b580 push {r7, lr} - 8006fbe: b088 sub sp, #32 - 8006fc0: af00 add r7, sp, #0 - 8006fc2: 6078 str r0, [r7, #4] -#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT - u8_t local_mem_free_count = 0; -#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ - LWIP_MEM_ALLOC_DECL_PROTECT(); - - if (size_in == 0) { - 8006fc4: 687b ldr r3, [r7, #4] - 8006fc6: 2b00 cmp r3, #0 - 8006fc8: d101 bne.n 8006fce - return NULL; - 8006fca: 2300 movs r3, #0 - 8006fcc: e0d0 b.n 8007170 - } - - /* Expand the size of the allocated memory region so that we can - adjust for alignment. */ - size = (mem_size_t)LWIP_MEM_ALIGN_SIZE(size_in); - 8006fce: 687b ldr r3, [r7, #4] - 8006fd0: 3303 adds r3, #3 - 8006fd2: f023 0303 bic.w r3, r3, #3 - 8006fd6: 61bb str r3, [r7, #24] - if (size < MIN_SIZE_ALIGNED) { - 8006fd8: 69bb ldr r3, [r7, #24] - 8006fda: 2b0b cmp r3, #11 - 8006fdc: d801 bhi.n 8006fe2 - /* every data block must be at least MIN_SIZE_ALIGNED long */ - size = MIN_SIZE_ALIGNED; - 8006fde: 230c movs r3, #12 - 8006fe0: 61bb str r3, [r7, #24] - } -#if MEM_OVERFLOW_CHECK - size += MEM_SANITY_REGION_BEFORE_ALIGNED + MEM_SANITY_REGION_AFTER_ALIGNED; -#endif - if ((size > MEM_SIZE_ALIGNED) || (size < size_in)) { - 8006fe2: 69bb ldr r3, [r7, #24] - 8006fe4: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8006fe8: d803 bhi.n 8006ff2 - 8006fea: 69ba ldr r2, [r7, #24] - 8006fec: 687b ldr r3, [r7, #4] - 8006fee: 429a cmp r2, r3 - 8006ff0: d201 bcs.n 8006ff6 - return NULL; - 8006ff2: 2300 movs r3, #0 - 8006ff4: e0bc b.n 8007170 -#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ - - /* Scan through the heap searching for a free block that is big enough, - * beginning with the lowest free block. - */ - for (ptr = mem_to_ptr(lfree); ptr < MEM_SIZE_ALIGNED - size; - 8006ff6: 4b60 ldr r3, [pc, #384] @ (8007178 ) - 8006ff8: 681b ldr r3, [r3, #0] - 8006ffa: 4618 mov r0, r3 - 8006ffc: f7ff fd58 bl 8006ab0 - 8007000: 61f8 str r0, [r7, #28] - 8007002: e0ad b.n 8007160 - ptr = ptr_to_mem(ptr)->next) { - mem = ptr_to_mem(ptr); - 8007004: 69f8 ldr r0, [r7, #28] - 8007006: f7ff fd43 bl 8006a90 - 800700a: 6138 str r0, [r7, #16] - local_mem_free_count = 1; - break; - } -#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ - - if ((!mem->used) && - 800700c: 693b ldr r3, [r7, #16] - 800700e: 7a1b ldrb r3, [r3, #8] - 8007010: 2b00 cmp r3, #0 - 8007012: f040 809f bne.w 8007154 - (mem->next - (ptr + SIZEOF_STRUCT_MEM)) >= size) { - 8007016: 693b ldr r3, [r7, #16] - 8007018: 681a ldr r2, [r3, #0] - 800701a: 69fb ldr r3, [r7, #28] - 800701c: 1ad3 subs r3, r2, r3 - 800701e: 3b0c subs r3, #12 - if ((!mem->used) && - 8007020: 69ba ldr r2, [r7, #24] - 8007022: 429a cmp r2, r3 - 8007024: f200 8096 bhi.w 8007154 - /* mem is not used and at least perfect fit is possible: - * mem->next - (ptr + SIZEOF_STRUCT_MEM) gives us the 'user data size' of mem */ - - if (mem->next - (ptr + SIZEOF_STRUCT_MEM) >= (size + SIZEOF_STRUCT_MEM + MIN_SIZE_ALIGNED)) { - 8007028: 693b ldr r3, [r7, #16] - 800702a: 681a ldr r2, [r3, #0] - 800702c: 69fb ldr r3, [r7, #28] - 800702e: 1ad3 subs r3, r2, r3 - 8007030: f1a3 020c sub.w r2, r3, #12 - 8007034: 69bb ldr r3, [r7, #24] - 8007036: 3318 adds r3, #24 - 8007038: 429a cmp r2, r3 - 800703a: d331 bcc.n 80070a0 - * struct mem would fit in but no data between mem2 and mem2->next - * @todo we could leave out MIN_SIZE_ALIGNED. We would create an empty - * region that couldn't hold data, but when mem->next gets freed, - * the 2 regions would be combined, resulting in more free memory - */ - ptr2 = (mem_size_t)(ptr + SIZEOF_STRUCT_MEM + size); - 800703c: 69fa ldr r2, [r7, #28] - 800703e: 69bb ldr r3, [r7, #24] - 8007040: 4413 add r3, r2 - 8007042: 330c adds r3, #12 - 8007044: 60fb str r3, [r7, #12] - LWIP_ASSERT("invalid next ptr",ptr2 != MEM_SIZE_ALIGNED); - 8007046: 68fb ldr r3, [r7, #12] - 8007048: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 800704c: d106 bne.n 800705c - 800704e: 4b4b ldr r3, [pc, #300] @ (800717c ) - 8007050: f240 3287 movw r2, #903 @ 0x387 - 8007054: 494a ldr r1, [pc, #296] @ (8007180 ) - 8007056: 484b ldr r0, [pc, #300] @ (8007184 ) - 8007058: f00b fe0e bl 8012c78 - /* create mem2 struct */ - mem2 = ptr_to_mem(ptr2); - 800705c: 68f8 ldr r0, [r7, #12] - 800705e: f7ff fd17 bl 8006a90 - 8007062: 60b8 str r0, [r7, #8] - mem2->used = 0; - 8007064: 68bb ldr r3, [r7, #8] - 8007066: 2200 movs r2, #0 - 8007068: 721a strb r2, [r3, #8] - mem2->next = mem->next; - 800706a: 693b ldr r3, [r7, #16] - 800706c: 681a ldr r2, [r3, #0] - 800706e: 68bb ldr r3, [r7, #8] - 8007070: 601a str r2, [r3, #0] - mem2->prev = ptr; - 8007072: 68bb ldr r3, [r7, #8] - 8007074: 69fa ldr r2, [r7, #28] - 8007076: 605a str r2, [r3, #4] - /* and insert it between mem and mem->next */ - mem->next = ptr2; - 8007078: 693b ldr r3, [r7, #16] - 800707a: 68fa ldr r2, [r7, #12] - 800707c: 601a str r2, [r3, #0] - mem->used = 1; - 800707e: 693b ldr r3, [r7, #16] - 8007080: 2201 movs r2, #1 - 8007082: 721a strb r2, [r3, #8] - - if (mem2->next != MEM_SIZE_ALIGNED) { - 8007084: 68bb ldr r3, [r7, #8] - 8007086: 681b ldr r3, [r3, #0] - 8007088: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 800708c: d00b beq.n 80070a6 - ptr_to_mem(mem2->next)->prev = ptr2; - 800708e: 68bb ldr r3, [r7, #8] - 8007090: 681b ldr r3, [r3, #0] - 8007092: 4618 mov r0, r3 - 8007094: f7ff fcfc bl 8006a90 - 8007098: 4602 mov r2, r0 - 800709a: 68fb ldr r3, [r7, #12] - 800709c: 6053 str r3, [r2, #4] - 800709e: e002 b.n 80070a6 - * take care of this). - * -> near fit or exact fit: do not split, no mem2 creation - * also can't move mem->next directly behind mem, since mem->next - * will always be used at this point! - */ - mem->used = 1; - 80070a0: 693b ldr r3, [r7, #16] - 80070a2: 2201 movs r2, #1 - 80070a4: 721a strb r2, [r3, #8] - MEM_STATS_INC_USED(used, mem->next - mem_to_ptr(mem)); - } -#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT -mem_malloc_adjust_lfree: -#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ - if (mem == lfree) { - 80070a6: 4b34 ldr r3, [pc, #208] @ (8007178 ) - 80070a8: 681b ldr r3, [r3, #0] - 80070aa: 693a ldr r2, [r7, #16] - 80070ac: 429a cmp r2, r3 - 80070ae: d127 bne.n 8007100 - struct mem *cur = lfree; - 80070b0: 4b31 ldr r3, [pc, #196] @ (8007178 ) - 80070b2: 681b ldr r3, [r3, #0] - 80070b4: 617b str r3, [r7, #20] - /* Find next free block after mem and update lowest free pointer */ - while (cur->used && cur != ram_end) { - 80070b6: e005 b.n 80070c4 - /* If mem_free or mem_trim have run, we have to restart since they - could have altered our current struct mem or lfree. */ - goto mem_malloc_adjust_lfree; - } -#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ - cur = ptr_to_mem(cur->next); - 80070b8: 697b ldr r3, [r7, #20] - 80070ba: 681b ldr r3, [r3, #0] - 80070bc: 4618 mov r0, r3 - 80070be: f7ff fce7 bl 8006a90 - 80070c2: 6178 str r0, [r7, #20] - while (cur->used && cur != ram_end) { - 80070c4: 697b ldr r3, [r7, #20] - 80070c6: 7a1b ldrb r3, [r3, #8] - 80070c8: 2b00 cmp r3, #0 - 80070ca: d004 beq.n 80070d6 - 80070cc: 4b2e ldr r3, [pc, #184] @ (8007188 ) - 80070ce: 681b ldr r3, [r3, #0] - 80070d0: 697a ldr r2, [r7, #20] - 80070d2: 429a cmp r2, r3 - 80070d4: d1f0 bne.n 80070b8 - } - lfree = cur; - 80070d6: 4a28 ldr r2, [pc, #160] @ (8007178 ) - 80070d8: 697b ldr r3, [r7, #20] - 80070da: 6013 str r3, [r2, #0] - LWIP_ASSERT("mem_malloc: !lfree->used", ((lfree == ram_end) || (!lfree->used))); - 80070dc: 4b26 ldr r3, [pc, #152] @ (8007178 ) - 80070de: 681a ldr r2, [r3, #0] - 80070e0: 4b29 ldr r3, [pc, #164] @ (8007188 ) - 80070e2: 681b ldr r3, [r3, #0] - 80070e4: 429a cmp r2, r3 - 80070e6: d00b beq.n 8007100 - 80070e8: 4b23 ldr r3, [pc, #140] @ (8007178 ) - 80070ea: 681b ldr r3, [r3, #0] - 80070ec: 7a1b ldrb r3, [r3, #8] - 80070ee: 2b00 cmp r3, #0 - 80070f0: d006 beq.n 8007100 - 80070f2: 4b22 ldr r3, [pc, #136] @ (800717c ) - 80070f4: f240 32b5 movw r2, #949 @ 0x3b5 - 80070f8: 4924 ldr r1, [pc, #144] @ (800718c ) - 80070fa: 4822 ldr r0, [pc, #136] @ (8007184 ) - 80070fc: f00b fdbc bl 8012c78 - } - LWIP_MEM_ALLOC_UNPROTECT(); - sys_mutex_unlock(&mem_mutex); - LWIP_ASSERT("mem_malloc: allocated memory not above ram_end.", - 8007100: 693a ldr r2, [r7, #16] - 8007102: 69bb ldr r3, [r7, #24] - 8007104: 4413 add r3, r2 - 8007106: 330c adds r3, #12 - 8007108: 4a1f ldr r2, [pc, #124] @ (8007188 ) - 800710a: 6812 ldr r2, [r2, #0] - 800710c: 4293 cmp r3, r2 - 800710e: d906 bls.n 800711e - 8007110: 4b1a ldr r3, [pc, #104] @ (800717c ) - 8007112: f240 32b9 movw r2, #953 @ 0x3b9 - 8007116: 491e ldr r1, [pc, #120] @ (8007190 ) - 8007118: 481a ldr r0, [pc, #104] @ (8007184 ) - 800711a: f00b fdad bl 8012c78 - (mem_ptr_t)mem + SIZEOF_STRUCT_MEM + size <= (mem_ptr_t)ram_end); - LWIP_ASSERT("mem_malloc: allocated memory properly aligned.", - 800711e: 693b ldr r3, [r7, #16] - 8007120: f003 0303 and.w r3, r3, #3 - 8007124: 2b00 cmp r3, #0 - 8007126: d006 beq.n 8007136 - 8007128: 4b14 ldr r3, [pc, #80] @ (800717c ) - 800712a: f240 32bb movw r2, #955 @ 0x3bb - 800712e: 4919 ldr r1, [pc, #100] @ (8007194 ) - 8007130: 4814 ldr r0, [pc, #80] @ (8007184 ) - 8007132: f00b fda1 bl 8012c78 - ((mem_ptr_t)mem + SIZEOF_STRUCT_MEM) % MEM_ALIGNMENT == 0); - LWIP_ASSERT("mem_malloc: sanity check alignment", - 8007136: 693b ldr r3, [r7, #16] - 8007138: f003 0303 and.w r3, r3, #3 - 800713c: 2b00 cmp r3, #0 - 800713e: d006 beq.n 800714e - 8007140: 4b0e ldr r3, [pc, #56] @ (800717c ) - 8007142: f240 32bd movw r2, #957 @ 0x3bd - 8007146: 4914 ldr r1, [pc, #80] @ (8007198 ) - 8007148: 480e ldr r0, [pc, #56] @ (8007184 ) - 800714a: f00b fd95 bl 8012c78 - -#if MEM_OVERFLOW_CHECK - mem_overflow_init_element(mem, size_in); -#endif - MEM_SANITY(); - return (u8_t *)mem + SIZEOF_STRUCT_MEM + MEM_SANITY_OFFSET; - 800714e: 693b ldr r3, [r7, #16] - 8007150: 330c adds r3, #12 - 8007152: e00d b.n 8007170 - ptr = ptr_to_mem(ptr)->next) { - 8007154: 69f8 ldr r0, [r7, #28] - 8007156: f7ff fc9b bl 8006a90 - 800715a: 4603 mov r3, r0 - 800715c: 681b ldr r3, [r3, #0] - 800715e: 61fb str r3, [r7, #28] - for (ptr = mem_to_ptr(lfree); ptr < MEM_SIZE_ALIGNED - size; - 8007160: 69bb ldr r3, [r7, #24] - 8007162: f5c3 3380 rsb r3, r3, #65536 @ 0x10000 - 8007166: 69fa ldr r2, [r7, #28] - 8007168: 429a cmp r2, r3 - 800716a: f4ff af4b bcc.w 8007004 -#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ - MEM_STATS_INC(err); - LWIP_MEM_ALLOC_UNPROTECT(); - sys_mutex_unlock(&mem_mutex); - LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("mem_malloc: could not allocate %"S16_F" bytes\n", (s16_t)size)); - return NULL; - 800716e: 2300 movs r3, #0 -} - 8007170: 4618 mov r0, r3 - 8007172: 3720 adds r7, #32 - 8007174: 46bd mov sp, r7 - 8007176: bd80 pop {r7, pc} - 8007178: 200161d0 .word 0x200161d0 - 800717c: 0801774c .word 0x0801774c - 8007180: 080178f4 .word 0x080178f4 - 8007184: 08017794 .word 0x08017794 - 8007188: 200161cc .word 0x200161cc - 800718c: 08017908 .word 0x08017908 - 8007190: 08017924 .word 0x08017924 - 8007194: 08017954 .word 0x08017954 - 8007198: 08017984 .word 0x08017984 - -0800719c : - * - * @param desc pool to initialize - */ -void -memp_init_pool(const struct memp_desc *desc) -{ - 800719c: b480 push {r7} - 800719e: b085 sub sp, #20 - 80071a0: af00 add r7, sp, #0 - 80071a2: 6078 str r0, [r7, #4] - LWIP_UNUSED_ARG(desc); -#else - int i; - struct memp *memp; - - *desc->tab = NULL; - 80071a4: 687b ldr r3, [r7, #4] - 80071a6: 689b ldr r3, [r3, #8] - 80071a8: 2200 movs r2, #0 - 80071aa: 601a str r2, [r3, #0] - memp = (struct memp *)LWIP_MEM_ALIGN(desc->base); - 80071ac: 687b ldr r3, [r7, #4] - 80071ae: 685b ldr r3, [r3, #4] - 80071b0: 3303 adds r3, #3 - 80071b2: f023 0303 bic.w r3, r3, #3 - 80071b6: 60bb str r3, [r7, #8] - + MEM_SANITY_REGION_AFTER_ALIGNED -#endif - )); -#endif - /* create a linked list of memp elements */ - for (i = 0; i < desc->num; ++i) { - 80071b8: 2300 movs r3, #0 - 80071ba: 60fb str r3, [r7, #12] - 80071bc: e011 b.n 80071e2 - memp->next = *desc->tab; - 80071be: 687b ldr r3, [r7, #4] - 80071c0: 689b ldr r3, [r3, #8] - 80071c2: 681a ldr r2, [r3, #0] - 80071c4: 68bb ldr r3, [r7, #8] - 80071c6: 601a str r2, [r3, #0] - *desc->tab = memp; - 80071c8: 687b ldr r3, [r7, #4] - 80071ca: 689b ldr r3, [r3, #8] - 80071cc: 68ba ldr r2, [r7, #8] - 80071ce: 601a str r2, [r3, #0] -#if MEMP_OVERFLOW_CHECK - memp_overflow_init_element(memp, desc); -#endif /* MEMP_OVERFLOW_CHECK */ - /* cast through void* to get rid of alignment warnings */ - memp = (struct memp *)(void *)((u8_t *)memp + MEMP_SIZE + desc->size - 80071d0: 687b ldr r3, [r7, #4] - 80071d2: 881b ldrh r3, [r3, #0] - 80071d4: 461a mov r2, r3 - 80071d6: 68bb ldr r3, [r7, #8] - 80071d8: 4413 add r3, r2 - 80071da: 60bb str r3, [r7, #8] - for (i = 0; i < desc->num; ++i) { - 80071dc: 68fb ldr r3, [r7, #12] - 80071de: 3301 adds r3, #1 - 80071e0: 60fb str r3, [r7, #12] - 80071e2: 687b ldr r3, [r7, #4] - 80071e4: 885b ldrh r3, [r3, #2] - 80071e6: 461a mov r2, r3 - 80071e8: 68fb ldr r3, [r7, #12] - 80071ea: 4293 cmp r3, r2 - 80071ec: dbe7 blt.n 80071be -#endif /* !MEMP_MEM_MALLOC */ - -#if MEMP_STATS && (defined(LWIP_DEBUG) || LWIP_STATS_DISPLAY) - desc->stats->name = desc->desc; -#endif /* MEMP_STATS && (defined(LWIP_DEBUG) || LWIP_STATS_DISPLAY) */ -} - 80071ee: bf00 nop - 80071f0: bf00 nop - 80071f2: 3714 adds r7, #20 - 80071f4: 46bd mov sp, r7 - 80071f6: f85d 7b04 ldr.w r7, [sp], #4 - 80071fa: 4770 bx lr - -080071fc : - * - * Carves out memp_memory into linked lists for each pool-type. - */ -void -memp_init(void) -{ - 80071fc: b580 push {r7, lr} - 80071fe: b082 sub sp, #8 - 8007200: af00 add r7, sp, #0 - u16_t i; - - /* for every pool: */ - for (i = 0; i < LWIP_ARRAYSIZE(memp_pools); i++) { - 8007202: 2300 movs r3, #0 - 8007204: 80fb strh r3, [r7, #6] - 8007206: e009 b.n 800721c - memp_init_pool(memp_pools[i]); - 8007208: 88fb ldrh r3, [r7, #6] - 800720a: 4a08 ldr r2, [pc, #32] @ (800722c ) - 800720c: f852 3023 ldr.w r3, [r2, r3, lsl #2] - 8007210: 4618 mov r0, r3 - 8007212: f7ff ffc3 bl 800719c - for (i = 0; i < LWIP_ARRAYSIZE(memp_pools); i++) { - 8007216: 88fb ldrh r3, [r7, #6] - 8007218: 3301 adds r3, #1 - 800721a: 80fb strh r3, [r7, #6] - 800721c: 88fb ldrh r3, [r7, #6] - 800721e: 2b08 cmp r3, #8 - 8007220: d9f2 bls.n 8007208 - -#if MEMP_OVERFLOW_CHECK >= 2 - /* check everything a first time to see if it worked */ - memp_overflow_check_all(); -#endif /* MEMP_OVERFLOW_CHECK >= 2 */ -} - 8007222: bf00 nop - 8007224: bf00 nop - 8007226: 3708 adds r7, #8 - 8007228: 46bd mov sp, r7 - 800722a: bd80 pop {r7, pc} - 800722c: 0801a570 .word 0x0801a570 - -08007230 : -#if !MEMP_OVERFLOW_CHECK -do_memp_malloc_pool(const struct memp_desc *desc) -#else -do_memp_malloc_pool_fn(const struct memp_desc *desc, const char *file, const int line) -#endif -{ - 8007230: b580 push {r7, lr} - 8007232: b084 sub sp, #16 - 8007234: af00 add r7, sp, #0 - 8007236: 6078 str r0, [r7, #4] - memp = (struct memp *)mem_malloc(MEMP_SIZE + MEMP_ALIGN_SIZE(desc->size)); - SYS_ARCH_PROTECT(old_level); -#else /* MEMP_MEM_MALLOC */ - SYS_ARCH_PROTECT(old_level); - - memp = *desc->tab; - 8007238: 687b ldr r3, [r7, #4] - 800723a: 689b ldr r3, [r3, #8] - 800723c: 681b ldr r3, [r3, #0] - 800723e: 60fb str r3, [r7, #12] -#endif /* MEMP_MEM_MALLOC */ - - if (memp != NULL) { - 8007240: 68fb ldr r3, [r7, #12] - 8007242: 2b00 cmp r3, #0 - 8007244: d012 beq.n 800726c -#if !MEMP_MEM_MALLOC -#if MEMP_OVERFLOW_CHECK == 1 - memp_overflow_check_element(memp, desc); -#endif /* MEMP_OVERFLOW_CHECK */ - - *desc->tab = memp->next; - 8007246: 687b ldr r3, [r7, #4] - 8007248: 689b ldr r3, [r3, #8] - 800724a: 68fa ldr r2, [r7, #12] - 800724c: 6812 ldr r2, [r2, #0] - 800724e: 601a str r2, [r3, #0] - memp->line = line; -#if MEMP_MEM_MALLOC - memp_overflow_init_element(memp, desc); -#endif /* MEMP_MEM_MALLOC */ -#endif /* MEMP_OVERFLOW_CHECK */ - LWIP_ASSERT("memp_malloc: memp properly aligned", - 8007250: 68fb ldr r3, [r7, #12] - 8007252: f003 0303 and.w r3, r3, #3 - 8007256: 2b00 cmp r3, #0 - 8007258: d006 beq.n 8007268 - 800725a: 4b07 ldr r3, [pc, #28] @ (8007278 ) - 800725c: f44f 728c mov.w r2, #280 @ 0x118 - 8007260: 4906 ldr r1, [pc, #24] @ (800727c ) - 8007262: 4807 ldr r0, [pc, #28] @ (8007280 ) - 8007264: f00b fd08 bl 8012c78 - desc->stats->max = desc->stats->used; - } -#endif - SYS_ARCH_UNPROTECT(old_level); - /* cast through u8_t* to get rid of alignment warnings */ - return ((u8_t *)memp + MEMP_SIZE); - 8007268: 68fb ldr r3, [r7, #12] - 800726a: e000 b.n 800726e -#endif - SYS_ARCH_UNPROTECT(old_level); - LWIP_DEBUGF(MEMP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("memp_malloc: out of memory in pool %s\n", desc->desc)); - } - - return NULL; - 800726c: 2300 movs r3, #0 -} - 800726e: 4618 mov r0, r3 - 8007270: 3710 adds r7, #16 - 8007272: 46bd mov sp, r7 - 8007274: bd80 pop {r7, pc} - 8007276: bf00 nop - 8007278: 080179a8 .word 0x080179a8 - 800727c: 080179d8 .word 0x080179d8 - 8007280: 080179fc .word 0x080179fc - -08007284 : -#if !MEMP_OVERFLOW_CHECK -memp_malloc_pool(const struct memp_desc *desc) -#else -memp_malloc_pool_fn(const struct memp_desc *desc, const char *file, const int line) -#endif -{ - 8007284: b580 push {r7, lr} - 8007286: b082 sub sp, #8 - 8007288: af00 add r7, sp, #0 - 800728a: 6078 str r0, [r7, #4] - LWIP_ASSERT("invalid pool desc", desc != NULL); - 800728c: 687b ldr r3, [r7, #4] - 800728e: 2b00 cmp r3, #0 - 8007290: d106 bne.n 80072a0 - 8007292: 4b0a ldr r3, [pc, #40] @ (80072bc ) - 8007294: f44f 729e mov.w r2, #316 @ 0x13c - 8007298: 4909 ldr r1, [pc, #36] @ (80072c0 ) - 800729a: 480a ldr r0, [pc, #40] @ (80072c4 ) - 800729c: f00b fcec bl 8012c78 - if (desc == NULL) { - 80072a0: 687b ldr r3, [r7, #4] - 80072a2: 2b00 cmp r3, #0 - 80072a4: d101 bne.n 80072aa - return NULL; - 80072a6: 2300 movs r3, #0 - 80072a8: e003 b.n 80072b2 - } - -#if !MEMP_OVERFLOW_CHECK - return do_memp_malloc_pool(desc); - 80072aa: 6878 ldr r0, [r7, #4] - 80072ac: f7ff ffc0 bl 8007230 - 80072b0: 4603 mov r3, r0 -#else - return do_memp_malloc_pool_fn(desc, file, line); -#endif -} - 80072b2: 4618 mov r0, r3 - 80072b4: 3708 adds r7, #8 - 80072b6: 46bd mov sp, r7 - 80072b8: bd80 pop {r7, pc} - 80072ba: bf00 nop - 80072bc: 080179a8 .word 0x080179a8 - 80072c0: 08017a24 .word 0x08017a24 - 80072c4: 080179fc .word 0x080179fc - -080072c8 : -#if !MEMP_OVERFLOW_CHECK -memp_malloc(memp_t type) -#else -memp_malloc_fn(memp_t type, const char *file, const int line) -#endif -{ - 80072c8: b580 push {r7, lr} - 80072ca: b084 sub sp, #16 - 80072cc: af00 add r7, sp, #0 - 80072ce: 4603 mov r3, r0 - 80072d0: 71fb strb r3, [r7, #7] - void *memp; - LWIP_ERROR("memp_malloc: type < MEMP_MAX", (type < MEMP_MAX), return NULL;); - 80072d2: 79fb ldrb r3, [r7, #7] - 80072d4: 2b08 cmp r3, #8 - 80072d6: d908 bls.n 80072ea - 80072d8: 4b0a ldr r3, [pc, #40] @ (8007304 ) - 80072da: f240 1257 movw r2, #343 @ 0x157 - 80072de: 490a ldr r1, [pc, #40] @ (8007308 ) - 80072e0: 480a ldr r0, [pc, #40] @ (800730c ) - 80072e2: f00b fcc9 bl 8012c78 - 80072e6: 2300 movs r3, #0 - 80072e8: e008 b.n 80072fc -#if MEMP_OVERFLOW_CHECK >= 2 - memp_overflow_check_all(); -#endif /* MEMP_OVERFLOW_CHECK >= 2 */ - -#if !MEMP_OVERFLOW_CHECK - memp = do_memp_malloc_pool(memp_pools[type]); - 80072ea: 79fb ldrb r3, [r7, #7] - 80072ec: 4a08 ldr r2, [pc, #32] @ (8007310 ) - 80072ee: f852 3023 ldr.w r3, [r2, r3, lsl #2] - 80072f2: 4618 mov r0, r3 - 80072f4: f7ff ff9c bl 8007230 - 80072f8: 60f8 str r0, [r7, #12] -#else - memp = do_memp_malloc_pool_fn(memp_pools[type], file, line); -#endif - - return memp; - 80072fa: 68fb ldr r3, [r7, #12] -} - 80072fc: 4618 mov r0, r3 - 80072fe: 3710 adds r7, #16 - 8007300: 46bd mov sp, r7 - 8007302: bd80 pop {r7, pc} - 8007304: 080179a8 .word 0x080179a8 - 8007308: 08017a38 .word 0x08017a38 - 800730c: 080179fc .word 0x080179fc - 8007310: 0801a570 .word 0x0801a570 - -08007314 : - -static void -do_memp_free_pool(const struct memp_desc *desc, void *mem) -{ - 8007314: b580 push {r7, lr} - 8007316: b084 sub sp, #16 - 8007318: af00 add r7, sp, #0 - 800731a: 6078 str r0, [r7, #4] - 800731c: 6039 str r1, [r7, #0] - struct memp *memp; - SYS_ARCH_DECL_PROTECT(old_level); - - LWIP_ASSERT("memp_free: mem properly aligned", - 800731e: 683b ldr r3, [r7, #0] - 8007320: f003 0303 and.w r3, r3, #3 - 8007324: 2b00 cmp r3, #0 - 8007326: d006 beq.n 8007336 - 8007328: 4b0a ldr r3, [pc, #40] @ (8007354 ) - 800732a: f44f 72b6 mov.w r2, #364 @ 0x16c - 800732e: 490a ldr r1, [pc, #40] @ (8007358 ) - 8007330: 480a ldr r0, [pc, #40] @ (800735c ) - 8007332: f00b fca1 bl 8012c78 - ((mem_ptr_t)mem % MEM_ALIGNMENT) == 0); - - /* cast through void* to get rid of alignment warnings */ - memp = (struct memp *)(void *)((u8_t *)mem - MEMP_SIZE); - 8007336: 683b ldr r3, [r7, #0] - 8007338: 60fb str r3, [r7, #12] -#if MEMP_MEM_MALLOC - LWIP_UNUSED_ARG(desc); - SYS_ARCH_UNPROTECT(old_level); - mem_free(memp); -#else /* MEMP_MEM_MALLOC */ - memp->next = *desc->tab; - 800733a: 687b ldr r3, [r7, #4] - 800733c: 689b ldr r3, [r3, #8] - 800733e: 681a ldr r2, [r3, #0] - 8007340: 68fb ldr r3, [r7, #12] - 8007342: 601a str r2, [r3, #0] - *desc->tab = memp; - 8007344: 687b ldr r3, [r7, #4] - 8007346: 689b ldr r3, [r3, #8] - 8007348: 68fa ldr r2, [r7, #12] - 800734a: 601a str r2, [r3, #0] - LWIP_ASSERT("memp sanity", memp_sanity(desc)); -#endif /* MEMP_SANITY_CHECK */ - - SYS_ARCH_UNPROTECT(old_level); -#endif /* !MEMP_MEM_MALLOC */ -} - 800734c: bf00 nop - 800734e: 3710 adds r7, #16 - 8007350: 46bd mov sp, r7 - 8007352: bd80 pop {r7, pc} - 8007354: 080179a8 .word 0x080179a8 - 8007358: 08017a58 .word 0x08017a58 - 800735c: 080179fc .word 0x080179fc - -08007360 : - * @param desc the pool where to put mem - * @param mem the memp element to free - */ -void -memp_free_pool(const struct memp_desc *desc, void *mem) -{ - 8007360: b580 push {r7, lr} - 8007362: b082 sub sp, #8 - 8007364: af00 add r7, sp, #0 - 8007366: 6078 str r0, [r7, #4] - 8007368: 6039 str r1, [r7, #0] - LWIP_ASSERT("invalid pool desc", desc != NULL); - 800736a: 687b ldr r3, [r7, #4] - 800736c: 2b00 cmp r3, #0 - 800736e: d106 bne.n 800737e - 8007370: 4b0a ldr r3, [pc, #40] @ (800739c ) - 8007372: f240 1295 movw r2, #405 @ 0x195 - 8007376: 490a ldr r1, [pc, #40] @ (80073a0 ) - 8007378: 480a ldr r0, [pc, #40] @ (80073a4 ) - 800737a: f00b fc7d bl 8012c78 - if ((desc == NULL) || (mem == NULL)) { - 800737e: 687b ldr r3, [r7, #4] - 8007380: 2b00 cmp r3, #0 - 8007382: d007 beq.n 8007394 - 8007384: 683b ldr r3, [r7, #0] - 8007386: 2b00 cmp r3, #0 - 8007388: d004 beq.n 8007394 - return; - } - - do_memp_free_pool(desc, mem); - 800738a: 6839 ldr r1, [r7, #0] - 800738c: 6878 ldr r0, [r7, #4] - 800738e: f7ff ffc1 bl 8007314 - 8007392: e000 b.n 8007396 - return; - 8007394: bf00 nop -} - 8007396: 3708 adds r7, #8 - 8007398: 46bd mov sp, r7 - 800739a: bd80 pop {r7, pc} - 800739c: 080179a8 .word 0x080179a8 - 80073a0: 08017a24 .word 0x08017a24 - 80073a4: 080179fc .word 0x080179fc - -080073a8 : - * @param type the pool where to put mem - * @param mem the memp element to free - */ -void -memp_free(memp_t type, void *mem) -{ - 80073a8: b580 push {r7, lr} - 80073aa: b082 sub sp, #8 - 80073ac: af00 add r7, sp, #0 - 80073ae: 4603 mov r3, r0 - 80073b0: 6039 str r1, [r7, #0] - 80073b2: 71fb strb r3, [r7, #7] -#ifdef LWIP_HOOK_MEMP_AVAILABLE - struct memp *old_first; -#endif - - LWIP_ERROR("memp_free: type < MEMP_MAX", (type < MEMP_MAX), return;); - 80073b4: 79fb ldrb r3, [r7, #7] - 80073b6: 2b08 cmp r3, #8 - 80073b8: d907 bls.n 80073ca - 80073ba: 4b0c ldr r3, [pc, #48] @ (80073ec ) - 80073bc: f44f 72d5 mov.w r2, #426 @ 0x1aa - 80073c0: 490b ldr r1, [pc, #44] @ (80073f0 ) - 80073c2: 480c ldr r0, [pc, #48] @ (80073f4 ) - 80073c4: f00b fc58 bl 8012c78 - 80073c8: e00c b.n 80073e4 - - if (mem == NULL) { - 80073ca: 683b ldr r3, [r7, #0] - 80073cc: 2b00 cmp r3, #0 - 80073ce: d008 beq.n 80073e2 - -#ifdef LWIP_HOOK_MEMP_AVAILABLE - old_first = *memp_pools[type]->tab; -#endif - - do_memp_free_pool(memp_pools[type], mem); - 80073d0: 79fb ldrb r3, [r7, #7] - 80073d2: 4a09 ldr r2, [pc, #36] @ (80073f8 ) - 80073d4: f852 3023 ldr.w r3, [r2, r3, lsl #2] - 80073d8: 6839 ldr r1, [r7, #0] - 80073da: 4618 mov r0, r3 - 80073dc: f7ff ff9a bl 8007314 - 80073e0: e000 b.n 80073e4 - return; - 80073e2: bf00 nop -#ifdef LWIP_HOOK_MEMP_AVAILABLE - if (old_first == NULL) { - LWIP_HOOK_MEMP_AVAILABLE(type); - } -#endif -} - 80073e4: 3708 adds r7, #8 - 80073e6: 46bd mov sp, r7 - 80073e8: bd80 pop {r7, pc} - 80073ea: bf00 nop - 80073ec: 080179a8 .word 0x080179a8 - 80073f0: 08017a78 .word 0x08017a78 - 80073f4: 080179fc .word 0x080179fc - 80073f8: 0801a570 .word 0x0801a570 - -080073fc : -} -#endif /* LWIP_HAVE_LOOPIF */ - -void -netif_init(void) -{ - 80073fc: b480 push {r7} - 80073fe: af00 add r7, sp, #0 - - netif_set_link_up(&loop_netif); - netif_set_up(&loop_netif); - -#endif /* LWIP_HAVE_LOOPIF */ -} - 8007400: bf00 nop - 8007402: 46bd mov sp, r7 - 8007404: f85d 7b04 ldr.w r7, [sp], #4 - 8007408: 4770 bx lr - ... - -0800740c : -netif_add(struct netif *netif, -#if LWIP_IPV4 - const ip4_addr_t *ipaddr, const ip4_addr_t *netmask, const ip4_addr_t *gw, -#endif /* LWIP_IPV4 */ - void *state, netif_init_fn init, netif_input_fn input) -{ - 800740c: b580 push {r7, lr} - 800740e: b086 sub sp, #24 - 8007410: af00 add r7, sp, #0 - 8007412: 60f8 str r0, [r7, #12] - 8007414: 60b9 str r1, [r7, #8] - 8007416: 607a str r2, [r7, #4] - 8007418: 603b str r3, [r7, #0] - LWIP_ASSERT("single netif already set", 0); - return NULL; - } -#endif - - LWIP_ERROR("netif_add: invalid netif", netif != NULL, return NULL); - 800741a: 68fb ldr r3, [r7, #12] - 800741c: 2b00 cmp r3, #0 - 800741e: d108 bne.n 8007432 - 8007420: 4b5b ldr r3, [pc, #364] @ (8007590 ) - 8007422: f240 1227 movw r2, #295 @ 0x127 - 8007426: 495b ldr r1, [pc, #364] @ (8007594 ) - 8007428: 485b ldr r0, [pc, #364] @ (8007598 ) - 800742a: f00b fc25 bl 8012c78 - 800742e: 2300 movs r3, #0 - 8007430: e0a9 b.n 8007586 - LWIP_ERROR("netif_add: No init function given", init != NULL, return NULL); - 8007432: 6a7b ldr r3, [r7, #36] @ 0x24 - 8007434: 2b00 cmp r3, #0 - 8007436: d108 bne.n 800744a - 8007438: 4b55 ldr r3, [pc, #340] @ (8007590 ) - 800743a: f44f 7294 mov.w r2, #296 @ 0x128 - 800743e: 4957 ldr r1, [pc, #348] @ (800759c ) - 8007440: 4855 ldr r0, [pc, #340] @ (8007598 ) - 8007442: f00b fc19 bl 8012c78 - 8007446: 2300 movs r3, #0 - 8007448: e09d b.n 8007586 - -#if LWIP_IPV4 - if (ipaddr == NULL) { - 800744a: 68bb ldr r3, [r7, #8] - 800744c: 2b00 cmp r3, #0 - 800744e: d101 bne.n 8007454 - ipaddr = ip_2_ip4(IP4_ADDR_ANY); - 8007450: 4b53 ldr r3, [pc, #332] @ (80075a0 ) - 8007452: 60bb str r3, [r7, #8] - } - if (netmask == NULL) { - 8007454: 687b ldr r3, [r7, #4] - 8007456: 2b00 cmp r3, #0 - 8007458: d101 bne.n 800745e - netmask = ip_2_ip4(IP4_ADDR_ANY); - 800745a: 4b51 ldr r3, [pc, #324] @ (80075a0 ) - 800745c: 607b str r3, [r7, #4] - } - if (gw == NULL) { - 800745e: 683b ldr r3, [r7, #0] - 8007460: 2b00 cmp r3, #0 - 8007462: d101 bne.n 8007468 - gw = ip_2_ip4(IP4_ADDR_ANY); - 8007464: 4b4e ldr r3, [pc, #312] @ (80075a0 ) - 8007466: 603b str r3, [r7, #0] - } - - /* reset new interface configuration state */ - ip_addr_set_zero_ip4(&netif->ip_addr); - 8007468: 68fb ldr r3, [r7, #12] - 800746a: 2200 movs r2, #0 - 800746c: 605a str r2, [r3, #4] - ip_addr_set_zero_ip4(&netif->netmask); - 800746e: 68fb ldr r3, [r7, #12] - 8007470: 2200 movs r2, #0 - 8007472: 609a str r2, [r3, #8] - ip_addr_set_zero_ip4(&netif->gw); - 8007474: 68fb ldr r3, [r7, #12] - 8007476: 2200 movs r2, #0 - 8007478: 60da str r2, [r3, #12] - netif->output = netif_null_output_ip4; - 800747a: 68fb ldr r3, [r7, #12] - 800747c: 4a49 ldr r2, [pc, #292] @ (80075a4 ) - 800747e: 615a str r2, [r3, #20] -#endif /* LWIP_IPV6_ADDRESS_LIFETIMES */ - } - netif->output_ip6 = netif_null_output_ip6; -#endif /* LWIP_IPV6 */ - NETIF_SET_CHECKSUM_CTRL(netif, NETIF_CHECKSUM_ENABLE_ALL); - netif->mtu = 0; - 8007480: 68fb ldr r3, [r7, #12] - 8007482: 2200 movs r2, #0 - 8007484: 851a strh r2, [r3, #40] @ 0x28 - netif->flags = 0; - 8007486: 68fb ldr r3, [r7, #12] - 8007488: 2200 movs r2, #0 - 800748a: f883 2031 strb.w r2, [r3, #49] @ 0x31 -#ifdef netif_get_client_data - memset(netif->client_data, 0, sizeof(netif->client_data)); - 800748e: 68fb ldr r3, [r7, #12] - 8007490: 3324 adds r3, #36 @ 0x24 - 8007492: 2204 movs r2, #4 - 8007494: 2100 movs r1, #0 - 8007496: 4618 mov r0, r3 - 8007498: f00b fc6d bl 8012d76 -#endif /* LWIP_IPV6 */ -#if LWIP_NETIF_STATUS_CALLBACK - netif->status_callback = NULL; -#endif /* LWIP_NETIF_STATUS_CALLBACK */ -#if LWIP_NETIF_LINK_CALLBACK - netif->link_callback = NULL; - 800749c: 68fb ldr r3, [r7, #12] - 800749e: 2200 movs r2, #0 - 80074a0: 61da str r2, [r3, #28] - netif->loop_first = NULL; - netif->loop_last = NULL; -#endif /* ENABLE_LOOPBACK */ - - /* remember netif specific state information data */ - netif->state = state; - 80074a2: 68fb ldr r3, [r7, #12] - 80074a4: 6a3a ldr r2, [r7, #32] - 80074a6: 621a str r2, [r3, #32] - netif->num = netif_num; - 80074a8: 4b3f ldr r3, [pc, #252] @ (80075a8 ) - 80074aa: 781a ldrb r2, [r3, #0] - 80074ac: 68fb ldr r3, [r7, #12] - 80074ae: f883 2034 strb.w r2, [r3, #52] @ 0x34 - netif->input = input; - 80074b2: 68fb ldr r3, [r7, #12] - 80074b4: 6aba ldr r2, [r7, #40] @ 0x28 - 80074b6: 611a str r2, [r3, #16] -#if ENABLE_LOOPBACK && LWIP_LOOPBACK_MAX_PBUFS - netif->loop_cnt_current = 0; -#endif /* ENABLE_LOOPBACK && LWIP_LOOPBACK_MAX_PBUFS */ - -#if LWIP_IPV4 - netif_set_addr(netif, ipaddr, netmask, gw); - 80074b8: 683b ldr r3, [r7, #0] - 80074ba: 687a ldr r2, [r7, #4] - 80074bc: 68b9 ldr r1, [r7, #8] - 80074be: 68f8 ldr r0, [r7, #12] - 80074c0: f000 f914 bl 80076ec -#endif /* LWIP_IPV4 */ - - /* call user specified initialization function for netif */ - if (init(netif) != ERR_OK) { - 80074c4: 6a7b ldr r3, [r7, #36] @ 0x24 - 80074c6: 68f8 ldr r0, [r7, #12] - 80074c8: 4798 blx r3 - 80074ca: 4603 mov r3, r0 - 80074cc: 2b00 cmp r3, #0 - 80074ce: d001 beq.n 80074d4 - return NULL; - 80074d0: 2300 movs r3, #0 - 80074d2: e058 b.n 8007586 - */ - { - struct netif *netif2; - int num_netifs; - do { - if (netif->num == 255) { - 80074d4: 68fb ldr r3, [r7, #12] - 80074d6: f893 3034 ldrb.w r3, [r3, #52] @ 0x34 - 80074da: 2bff cmp r3, #255 @ 0xff - 80074dc: d103 bne.n 80074e6 - netif->num = 0; - 80074de: 68fb ldr r3, [r7, #12] - 80074e0: 2200 movs r2, #0 - 80074e2: f883 2034 strb.w r2, [r3, #52] @ 0x34 - } - num_netifs = 0; - 80074e6: 2300 movs r3, #0 - 80074e8: 613b str r3, [r7, #16] - for (netif2 = netif_list; netif2 != NULL; netif2 = netif2->next) { - 80074ea: 4b30 ldr r3, [pc, #192] @ (80075ac ) - 80074ec: 681b ldr r3, [r3, #0] - 80074ee: 617b str r3, [r7, #20] - 80074f0: e02b b.n 800754a - LWIP_ASSERT("netif already added", netif2 != netif); - 80074f2: 697a ldr r2, [r7, #20] - 80074f4: 68fb ldr r3, [r7, #12] - 80074f6: 429a cmp r2, r3 - 80074f8: d106 bne.n 8007508 - 80074fa: 4b25 ldr r3, [pc, #148] @ (8007590 ) - 80074fc: f240 128b movw r2, #395 @ 0x18b - 8007500: 492b ldr r1, [pc, #172] @ (80075b0 ) - 8007502: 4825 ldr r0, [pc, #148] @ (8007598 ) - 8007504: f00b fbb8 bl 8012c78 - num_netifs++; - 8007508: 693b ldr r3, [r7, #16] - 800750a: 3301 adds r3, #1 - 800750c: 613b str r3, [r7, #16] - LWIP_ASSERT("too many netifs, max. supported number is 255", num_netifs <= 255); - 800750e: 693b ldr r3, [r7, #16] - 8007510: 2bff cmp r3, #255 @ 0xff - 8007512: dd06 ble.n 8007522 - 8007514: 4b1e ldr r3, [pc, #120] @ (8007590 ) - 8007516: f240 128d movw r2, #397 @ 0x18d - 800751a: 4926 ldr r1, [pc, #152] @ (80075b4 ) - 800751c: 481e ldr r0, [pc, #120] @ (8007598 ) - 800751e: f00b fbab bl 8012c78 - if (netif2->num == netif->num) { - 8007522: 697b ldr r3, [r7, #20] - 8007524: f893 2034 ldrb.w r2, [r3, #52] @ 0x34 - 8007528: 68fb ldr r3, [r7, #12] - 800752a: f893 3034 ldrb.w r3, [r3, #52] @ 0x34 - 800752e: 429a cmp r2, r3 - 8007530: d108 bne.n 8007544 - netif->num++; - 8007532: 68fb ldr r3, [r7, #12] - 8007534: f893 3034 ldrb.w r3, [r3, #52] @ 0x34 - 8007538: 3301 adds r3, #1 - 800753a: b2da uxtb r2, r3 - 800753c: 68fb ldr r3, [r7, #12] - 800753e: f883 2034 strb.w r2, [r3, #52] @ 0x34 - break; - 8007542: e005 b.n 8007550 - for (netif2 = netif_list; netif2 != NULL; netif2 = netif2->next) { - 8007544: 697b ldr r3, [r7, #20] - 8007546: 681b ldr r3, [r3, #0] - 8007548: 617b str r3, [r7, #20] - 800754a: 697b ldr r3, [r7, #20] - 800754c: 2b00 cmp r3, #0 - 800754e: d1d0 bne.n 80074f2 - } - } - } while (netif2 != NULL); - 8007550: 697b ldr r3, [r7, #20] - 8007552: 2b00 cmp r3, #0 - 8007554: d1be bne.n 80074d4 - } - if (netif->num == 254) { - 8007556: 68fb ldr r3, [r7, #12] - 8007558: f893 3034 ldrb.w r3, [r3, #52] @ 0x34 - 800755c: 2bfe cmp r3, #254 @ 0xfe - 800755e: d103 bne.n 8007568 - netif_num = 0; - 8007560: 4b11 ldr r3, [pc, #68] @ (80075a8 ) - 8007562: 2200 movs r2, #0 - 8007564: 701a strb r2, [r3, #0] - 8007566: e006 b.n 8007576 - } else { - netif_num = (u8_t)(netif->num + 1); - 8007568: 68fb ldr r3, [r7, #12] - 800756a: f893 3034 ldrb.w r3, [r3, #52] @ 0x34 - 800756e: 3301 adds r3, #1 - 8007570: b2da uxtb r2, r3 - 8007572: 4b0d ldr r3, [pc, #52] @ (80075a8 ) - 8007574: 701a strb r2, [r3, #0] - } - - /* add this netif to the list */ - netif->next = netif_list; - 8007576: 4b0d ldr r3, [pc, #52] @ (80075ac ) - 8007578: 681a ldr r2, [r3, #0] - 800757a: 68fb ldr r3, [r7, #12] - 800757c: 601a str r2, [r3, #0] - netif_list = netif; - 800757e: 4a0b ldr r2, [pc, #44] @ (80075ac ) - 8007580: 68fb ldr r3, [r7, #12] - 8007582: 6013 str r3, [r2, #0] -#endif /* LWIP_IPV4 */ - LWIP_DEBUGF(NETIF_DEBUG, ("\n")); - - netif_invoke_ext_callback(netif, LWIP_NSC_NETIF_ADDED, NULL); - - return netif; - 8007584: 68fb ldr r3, [r7, #12] -} - 8007586: 4618 mov r0, r3 - 8007588: 3718 adds r7, #24 - 800758a: 46bd mov sp, r7 - 800758c: bd80 pop {r7, pc} - 800758e: bf00 nop - 8007590: 08017a94 .word 0x08017a94 - 8007594: 08017b28 .word 0x08017b28 - 8007598: 08017ae4 .word 0x08017ae4 - 800759c: 08017b44 .word 0x08017b44 - 80075a0: 0801a5e4 .word 0x0801a5e4 - 80075a4: 080079cf .word 0x080079cf - 80075a8: 200190e8 .word 0x200190e8 - 80075ac: 200190e0 .word 0x200190e0 - 80075b0: 08017b68 .word 0x08017b68 - 80075b4: 08017b7c .word 0x08017b7c - -080075b8 : - -static void -netif_do_ip_addr_changed(const ip_addr_t *old_addr, const ip_addr_t *new_addr) -{ - 80075b8: b580 push {r7, lr} - 80075ba: b082 sub sp, #8 - 80075bc: af00 add r7, sp, #0 - 80075be: 6078 str r0, [r7, #4] - 80075c0: 6039 str r1, [r7, #0] -#if LWIP_TCP - tcp_netif_ip_addr_changed(old_addr, new_addr); - 80075c2: 6839 ldr r1, [r7, #0] - 80075c4: 6878 ldr r0, [r7, #4] - 80075c6: f002 fb57 bl 8009c78 -#endif /* LWIP_TCP */ -#if LWIP_UDP - udp_netif_ip_addr_changed(old_addr, new_addr); - 80075ca: 6839 ldr r1, [r7, #0] - 80075cc: 6878 ldr r0, [r7, #4] - 80075ce: f006 ff93 bl 800e4f8 -#endif /* LWIP_UDP */ -#if LWIP_RAW - raw_netif_ip_addr_changed(old_addr, new_addr); -#endif /* LWIP_RAW */ -} - 80075d2: bf00 nop - 80075d4: 3708 adds r7, #8 - 80075d6: 46bd mov sp, r7 - 80075d8: bd80 pop {r7, pc} - ... - -080075dc : - -#if LWIP_IPV4 -static int -netif_do_set_ipaddr(struct netif *netif, const ip4_addr_t *ipaddr, ip_addr_t *old_addr) -{ - 80075dc: b580 push {r7, lr} - 80075de: b086 sub sp, #24 - 80075e0: af00 add r7, sp, #0 - 80075e2: 60f8 str r0, [r7, #12] - 80075e4: 60b9 str r1, [r7, #8] - 80075e6: 607a str r2, [r7, #4] - LWIP_ASSERT("invalid pointer", ipaddr != NULL); - 80075e8: 68bb ldr r3, [r7, #8] - 80075ea: 2b00 cmp r3, #0 - 80075ec: d106 bne.n 80075fc - 80075ee: 4b1d ldr r3, [pc, #116] @ (8007664 ) - 80075f0: f240 12cb movw r2, #459 @ 0x1cb - 80075f4: 491c ldr r1, [pc, #112] @ (8007668 ) - 80075f6: 481d ldr r0, [pc, #116] @ (800766c ) - 80075f8: f00b fb3e bl 8012c78 - LWIP_ASSERT("invalid pointer", old_addr != NULL); - 80075fc: 687b ldr r3, [r7, #4] - 80075fe: 2b00 cmp r3, #0 - 8007600: d106 bne.n 8007610 - 8007602: 4b18 ldr r3, [pc, #96] @ (8007664 ) - 8007604: f44f 72e6 mov.w r2, #460 @ 0x1cc - 8007608: 4917 ldr r1, [pc, #92] @ (8007668 ) - 800760a: 4818 ldr r0, [pc, #96] @ (800766c ) - 800760c: f00b fb34 bl 8012c78 - - /* address is actually being changed? */ - if (ip4_addr_cmp(ipaddr, netif_ip4_addr(netif)) == 0) { - 8007610: 68bb ldr r3, [r7, #8] - 8007612: 681a ldr r2, [r3, #0] - 8007614: 68fb ldr r3, [r7, #12] - 8007616: 3304 adds r3, #4 - 8007618: 681b ldr r3, [r3, #0] - 800761a: 429a cmp r2, r3 - 800761c: d01c beq.n 8007658 - ip_addr_t new_addr; - *ip_2_ip4(&new_addr) = *ipaddr; - 800761e: 68bb ldr r3, [r7, #8] - 8007620: 681b ldr r3, [r3, #0] - 8007622: 617b str r3, [r7, #20] - IP_SET_TYPE_VAL(new_addr, IPADDR_TYPE_V4); - - ip_addr_copy(*old_addr, *netif_ip_addr4(netif)); - 8007624: 68fb ldr r3, [r7, #12] - 8007626: 3304 adds r3, #4 - 8007628: 681a ldr r2, [r3, #0] - 800762a: 687b ldr r3, [r7, #4] - 800762c: 601a str r2, [r3, #0] - - LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_STATE, ("netif_set_ipaddr: netif address being changed\n")); - netif_do_ip_addr_changed(old_addr, &new_addr); - 800762e: f107 0314 add.w r3, r7, #20 - 8007632: 4619 mov r1, r3 - 8007634: 6878 ldr r0, [r7, #4] - 8007636: f7ff ffbf bl 80075b8 - - mib2_remove_ip4(netif); - mib2_remove_route_ip4(0, netif); - /* set new IP address to netif */ - ip4_addr_set(ip_2_ip4(&netif->ip_addr), ipaddr); - 800763a: 68bb ldr r3, [r7, #8] - 800763c: 2b00 cmp r3, #0 - 800763e: d002 beq.n 8007646 - 8007640: 68bb ldr r3, [r7, #8] - 8007642: 681b ldr r3, [r3, #0] - 8007644: e000 b.n 8007648 - 8007646: 2300 movs r3, #0 - 8007648: 68fa ldr r2, [r7, #12] - 800764a: 6053 str r3, [r2, #4] - IP_SET_TYPE_VAL(netif->ip_addr, IPADDR_TYPE_V4); - mib2_add_ip4(netif); - mib2_add_route_ip4(0, netif); - - netif_issue_reports(netif, NETIF_REPORT_TYPE_IPV4); - 800764c: 2101 movs r1, #1 - 800764e: 68f8 ldr r0, [r7, #12] - 8007650: f000 f8d2 bl 80077f8 - - NETIF_STATUS_CALLBACK(netif); - return 1; /* address changed */ - 8007654: 2301 movs r3, #1 - 8007656: e000 b.n 800765a - } - return 0; /* address unchanged */ - 8007658: 2300 movs r3, #0 -} - 800765a: 4618 mov r0, r3 - 800765c: 3718 adds r7, #24 - 800765e: 46bd mov sp, r7 - 8007660: bd80 pop {r7, pc} - 8007662: bf00 nop - 8007664: 08017a94 .word 0x08017a94 - 8007668: 08017bac .word 0x08017bac - 800766c: 08017ae4 .word 0x08017ae4 - -08007670 : - } -} - -static int -netif_do_set_netmask(struct netif *netif, const ip4_addr_t *netmask, ip_addr_t *old_nm) -{ - 8007670: b480 push {r7} - 8007672: b085 sub sp, #20 - 8007674: af00 add r7, sp, #0 - 8007676: 60f8 str r0, [r7, #12] - 8007678: 60b9 str r1, [r7, #8] - 800767a: 607a str r2, [r7, #4] - /* address is actually being changed? */ - if (ip4_addr_cmp(netmask, netif_ip4_netmask(netif)) == 0) { - 800767c: 68bb ldr r3, [r7, #8] - 800767e: 681a ldr r2, [r3, #0] - 8007680: 68fb ldr r3, [r7, #12] - 8007682: 3308 adds r3, #8 - 8007684: 681b ldr r3, [r3, #0] - 8007686: 429a cmp r2, r3 - 8007688: d00a beq.n 80076a0 -#else - LWIP_UNUSED_ARG(old_nm); -#endif - mib2_remove_route_ip4(0, netif); - /* set new netmask to netif */ - ip4_addr_set(ip_2_ip4(&netif->netmask), netmask); - 800768a: 68bb ldr r3, [r7, #8] - 800768c: 2b00 cmp r3, #0 - 800768e: d002 beq.n 8007696 - 8007690: 68bb ldr r3, [r7, #8] - 8007692: 681b ldr r3, [r3, #0] - 8007694: e000 b.n 8007698 - 8007696: 2300 movs r3, #0 - 8007698: 68fa ldr r2, [r7, #12] - 800769a: 6093 str r3, [r2, #8] - netif->name[0], netif->name[1], - ip4_addr1_16(netif_ip4_netmask(netif)), - ip4_addr2_16(netif_ip4_netmask(netif)), - ip4_addr3_16(netif_ip4_netmask(netif)), - ip4_addr4_16(netif_ip4_netmask(netif)))); - return 1; /* netmask changed */ - 800769c: 2301 movs r3, #1 - 800769e: e000 b.n 80076a2 - } - return 0; /* netmask unchanged */ - 80076a0: 2300 movs r3, #0 -} - 80076a2: 4618 mov r0, r3 - 80076a4: 3714 adds r7, #20 - 80076a6: 46bd mov sp, r7 - 80076a8: f85d 7b04 ldr.w r7, [sp], #4 - 80076ac: 4770 bx lr - -080076ae : - } -} - -static int -netif_do_set_gw(struct netif *netif, const ip4_addr_t *gw, ip_addr_t *old_gw) -{ - 80076ae: b480 push {r7} - 80076b0: b085 sub sp, #20 - 80076b2: af00 add r7, sp, #0 - 80076b4: 60f8 str r0, [r7, #12] - 80076b6: 60b9 str r1, [r7, #8] - 80076b8: 607a str r2, [r7, #4] - /* address is actually being changed? */ - if (ip4_addr_cmp(gw, netif_ip4_gw(netif)) == 0) { - 80076ba: 68bb ldr r3, [r7, #8] - 80076bc: 681a ldr r2, [r3, #0] - 80076be: 68fb ldr r3, [r7, #12] - 80076c0: 330c adds r3, #12 - 80076c2: 681b ldr r3, [r3, #0] - 80076c4: 429a cmp r2, r3 - 80076c6: d00a beq.n 80076de - ip_addr_copy(*old_gw, *netif_ip_gw4(netif)); -#else - LWIP_UNUSED_ARG(old_gw); -#endif - - ip4_addr_set(ip_2_ip4(&netif->gw), gw); - 80076c8: 68bb ldr r3, [r7, #8] - 80076ca: 2b00 cmp r3, #0 - 80076cc: d002 beq.n 80076d4 - 80076ce: 68bb ldr r3, [r7, #8] - 80076d0: 681b ldr r3, [r3, #0] - 80076d2: e000 b.n 80076d6 - 80076d4: 2300 movs r3, #0 - 80076d6: 68fa ldr r2, [r7, #12] - 80076d8: 60d3 str r3, [r2, #12] - netif->name[0], netif->name[1], - ip4_addr1_16(netif_ip4_gw(netif)), - ip4_addr2_16(netif_ip4_gw(netif)), - ip4_addr3_16(netif_ip4_gw(netif)), - ip4_addr4_16(netif_ip4_gw(netif)))); - return 1; /* gateway changed */ - 80076da: 2301 movs r3, #1 - 80076dc: e000 b.n 80076e0 - } - return 0; /* gateway unchanged */ - 80076de: 2300 movs r3, #0 -} - 80076e0: 4618 mov r0, r3 - 80076e2: 3714 adds r7, #20 - 80076e4: 46bd mov sp, r7 - 80076e6: f85d 7b04 ldr.w r7, [sp], #4 - 80076ea: 4770 bx lr - -080076ec : - * @param gw the new default gateway - */ -void -netif_set_addr(struct netif *netif, const ip4_addr_t *ipaddr, const ip4_addr_t *netmask, - const ip4_addr_t *gw) -{ - 80076ec: b580 push {r7, lr} - 80076ee: b088 sub sp, #32 - 80076f0: af00 add r7, sp, #0 - 80076f2: 60f8 str r0, [r7, #12] - 80076f4: 60b9 str r1, [r7, #8] - 80076f6: 607a str r2, [r7, #4] - 80076f8: 603b str r3, [r7, #0] - ip_addr_t old_nm_val; - ip_addr_t old_gw_val; - ip_addr_t *old_nm = &old_nm_val; - ip_addr_t *old_gw = &old_gw_val; -#else - ip_addr_t *old_nm = NULL; - 80076fa: 2300 movs r3, #0 - 80076fc: 61fb str r3, [r7, #28] - ip_addr_t *old_gw = NULL; - 80076fe: 2300 movs r3, #0 - 8007700: 61bb str r3, [r7, #24] - int remove; - - LWIP_ASSERT_CORE_LOCKED(); - - /* Don't propagate NULL pointer (IPv4 ANY) to subsequent functions */ - if (ipaddr == NULL) { - 8007702: 68bb ldr r3, [r7, #8] - 8007704: 2b00 cmp r3, #0 - 8007706: d101 bne.n 800770c - ipaddr = IP4_ADDR_ANY4; - 8007708: 4b1c ldr r3, [pc, #112] @ (800777c ) - 800770a: 60bb str r3, [r7, #8] - } - if (netmask == NULL) { - 800770c: 687b ldr r3, [r7, #4] - 800770e: 2b00 cmp r3, #0 - 8007710: d101 bne.n 8007716 - netmask = IP4_ADDR_ANY4; - 8007712: 4b1a ldr r3, [pc, #104] @ (800777c ) - 8007714: 607b str r3, [r7, #4] - } - if (gw == NULL) { - 8007716: 683b ldr r3, [r7, #0] - 8007718: 2b00 cmp r3, #0 - 800771a: d101 bne.n 8007720 - gw = IP4_ADDR_ANY4; - 800771c: 4b17 ldr r3, [pc, #92] @ (800777c ) - 800771e: 603b str r3, [r7, #0] - } - - remove = ip4_addr_isany(ipaddr); - 8007720: 68bb ldr r3, [r7, #8] - 8007722: 2b00 cmp r3, #0 - 8007724: d003 beq.n 800772e - 8007726: 68bb ldr r3, [r7, #8] - 8007728: 681b ldr r3, [r3, #0] - 800772a: 2b00 cmp r3, #0 - 800772c: d101 bne.n 8007732 - 800772e: 2301 movs r3, #1 - 8007730: e000 b.n 8007734 - 8007732: 2300 movs r3, #0 - 8007734: 617b str r3, [r7, #20] - if (remove) { - 8007736: 697b ldr r3, [r7, #20] - 8007738: 2b00 cmp r3, #0 - 800773a: d006 beq.n 800774a - /* when removing an address, we have to remove it *before* changing netmask/gw - to ensure that tcp RST segment can be sent correctly */ - if (netif_do_set_ipaddr(netif, ipaddr, &old_addr)) { - 800773c: f107 0310 add.w r3, r7, #16 - 8007740: 461a mov r2, r3 - 8007742: 68b9 ldr r1, [r7, #8] - 8007744: 68f8 ldr r0, [r7, #12] - 8007746: f7ff ff49 bl 80075dc - change_reason |= LWIP_NSC_IPV4_ADDRESS_CHANGED; - cb_args.ipv4_changed.old_address = &old_addr; -#endif - } - } - if (netif_do_set_netmask(netif, netmask, old_nm)) { - 800774a: 69fa ldr r2, [r7, #28] - 800774c: 6879 ldr r1, [r7, #4] - 800774e: 68f8 ldr r0, [r7, #12] - 8007750: f7ff ff8e bl 8007670 -#if LWIP_NETIF_EXT_STATUS_CALLBACK - change_reason |= LWIP_NSC_IPV4_NETMASK_CHANGED; - cb_args.ipv4_changed.old_netmask = old_nm; -#endif - } - if (netif_do_set_gw(netif, gw, old_gw)) { - 8007754: 69ba ldr r2, [r7, #24] - 8007756: 6839 ldr r1, [r7, #0] - 8007758: 68f8 ldr r0, [r7, #12] - 800775a: f7ff ffa8 bl 80076ae -#if LWIP_NETIF_EXT_STATUS_CALLBACK - change_reason |= LWIP_NSC_IPV4_GATEWAY_CHANGED; - cb_args.ipv4_changed.old_gw = old_gw; -#endif - } - if (!remove) { - 800775e: 697b ldr r3, [r7, #20] - 8007760: 2b00 cmp r3, #0 - 8007762: d106 bne.n 8007772 - /* set ipaddr last to ensure netmask/gw have been set when status callback is called */ - if (netif_do_set_ipaddr(netif, ipaddr, &old_addr)) { - 8007764: f107 0310 add.w r3, r7, #16 - 8007768: 461a mov r2, r3 - 800776a: 68b9 ldr r1, [r7, #8] - 800776c: 68f8 ldr r0, [r7, #12] - 800776e: f7ff ff35 bl 80075dc - if (change_reason != LWIP_NSC_NONE) { - change_reason |= LWIP_NSC_IPV4_SETTINGS_CHANGED; - netif_invoke_ext_callback(netif, change_reason, &cb_args); - } -#endif -} - 8007772: bf00 nop - 8007774: 3720 adds r7, #32 - 8007776: 46bd mov sp, r7 - 8007778: bd80 pop {r7, pc} - 800777a: bf00 nop - 800777c: 0801a5e4 .word 0x0801a5e4 - -08007780 : - * - * @param netif the default network interface - */ -void -netif_set_default(struct netif *netif) -{ - 8007780: b480 push {r7} - 8007782: b083 sub sp, #12 - 8007784: af00 add r7, sp, #0 - 8007786: 6078 str r0, [r7, #4] - mib2_remove_route_ip4(1, netif); - } else { - /* install default route */ - mib2_add_route_ip4(1, netif); - } - netif_default = netif; - 8007788: 4a04 ldr r2, [pc, #16] @ (800779c ) - 800778a: 687b ldr r3, [r7, #4] - 800778c: 6013 str r3, [r2, #0] - LWIP_DEBUGF(NETIF_DEBUG, ("netif: setting default interface %c%c\n", - netif ? netif->name[0] : '\'', netif ? netif->name[1] : '\'')); -} - 800778e: bf00 nop - 8007790: 370c adds r7, #12 - 8007792: 46bd mov sp, r7 - 8007794: f85d 7b04 ldr.w r7, [sp], #4 - 8007798: 4770 bx lr - 800779a: bf00 nop - 800779c: 200190e4 .word 0x200190e4 - -080077a0 : - * Bring an interface up, available for processing - * traffic. - */ -void -netif_set_up(struct netif *netif) -{ - 80077a0: b580 push {r7, lr} - 80077a2: b082 sub sp, #8 - 80077a4: af00 add r7, sp, #0 - 80077a6: 6078 str r0, [r7, #4] - LWIP_ASSERT_CORE_LOCKED(); - - LWIP_ERROR("netif_set_up: invalid netif", netif != NULL, return); - 80077a8: 687b ldr r3, [r7, #4] - 80077aa: 2b00 cmp r3, #0 - 80077ac: d107 bne.n 80077be - 80077ae: 4b0f ldr r3, [pc, #60] @ (80077ec ) - 80077b0: f44f 7254 mov.w r2, #848 @ 0x350 - 80077b4: 490e ldr r1, [pc, #56] @ (80077f0 ) - 80077b6: 480f ldr r0, [pc, #60] @ (80077f4 ) - 80077b8: f00b fa5e bl 8012c78 - 80077bc: e013 b.n 80077e6 - - if (!(netif->flags & NETIF_FLAG_UP)) { - 80077be: 687b ldr r3, [r7, #4] - 80077c0: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 - 80077c4: f003 0301 and.w r3, r3, #1 - 80077c8: 2b00 cmp r3, #0 - 80077ca: d10c bne.n 80077e6 - netif_set_flags(netif, NETIF_FLAG_UP); - 80077cc: 687b ldr r3, [r7, #4] - 80077ce: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 - 80077d2: f043 0301 orr.w r3, r3, #1 - 80077d6: b2da uxtb r2, r3 - 80077d8: 687b ldr r3, [r7, #4] - 80077da: f883 2031 strb.w r2, [r3, #49] @ 0x31 - args.status_changed.state = 1; - netif_invoke_ext_callback(netif, LWIP_NSC_STATUS_CHANGED, &args); - } -#endif - - netif_issue_reports(netif, NETIF_REPORT_TYPE_IPV4 | NETIF_REPORT_TYPE_IPV6); - 80077de: 2103 movs r1, #3 - 80077e0: 6878 ldr r0, [r7, #4] - 80077e2: f000 f809 bl 80077f8 -#if LWIP_IPV6 - nd6_restart_netif(netif); -#endif /* LWIP_IPV6 */ - } -} - 80077e6: 3708 adds r7, #8 - 80077e8: 46bd mov sp, r7 - 80077ea: bd80 pop {r7, pc} - 80077ec: 08017a94 .word 0x08017a94 - 80077f0: 08017c1c .word 0x08017c1c - 80077f4: 08017ae4 .word 0x08017ae4 - -080077f8 : - -/** Send ARP/IGMP/MLD/RS events, e.g. on link-up/netif-up or addr-change - */ -static void -netif_issue_reports(struct netif *netif, u8_t report_type) -{ - 80077f8: b580 push {r7, lr} - 80077fa: b082 sub sp, #8 - 80077fc: af00 add r7, sp, #0 - 80077fe: 6078 str r0, [r7, #4] - 8007800: 460b mov r3, r1 - 8007802: 70fb strb r3, [r7, #3] - LWIP_ASSERT("netif_issue_reports: invalid netif", netif != NULL); - 8007804: 687b ldr r3, [r7, #4] - 8007806: 2b00 cmp r3, #0 - 8007808: d106 bne.n 8007818 - 800780a: 4b18 ldr r3, [pc, #96] @ (800786c ) - 800780c: f240 326d movw r2, #877 @ 0x36d - 8007810: 4917 ldr r1, [pc, #92] @ (8007870 ) - 8007812: 4818 ldr r0, [pc, #96] @ (8007874 ) - 8007814: f00b fa30 bl 8012c78 - - /* Only send reports when both link and admin states are up */ - if (!(netif->flags & NETIF_FLAG_LINK_UP) || - 8007818: 687b ldr r3, [r7, #4] - 800781a: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 - 800781e: f003 0304 and.w r3, r3, #4 - 8007822: 2b00 cmp r3, #0 - 8007824: d01e beq.n 8007864 - !(netif->flags & NETIF_FLAG_UP)) { - 8007826: 687b ldr r3, [r7, #4] - 8007828: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 - 800782c: f003 0301 and.w r3, r3, #1 - if (!(netif->flags & NETIF_FLAG_LINK_UP) || - 8007830: 2b00 cmp r3, #0 - 8007832: d017 beq.n 8007864 - return; - } - -#if LWIP_IPV4 - if ((report_type & NETIF_REPORT_TYPE_IPV4) && - 8007834: 78fb ldrb r3, [r7, #3] - 8007836: f003 0301 and.w r3, r3, #1 - 800783a: 2b00 cmp r3, #0 - 800783c: d013 beq.n 8007866 - !ip4_addr_isany_val(*netif_ip4_addr(netif))) { - 800783e: 687b ldr r3, [r7, #4] - 8007840: 3304 adds r3, #4 - 8007842: 681b ldr r3, [r3, #0] - if ((report_type & NETIF_REPORT_TYPE_IPV4) && - 8007844: 2b00 cmp r3, #0 - 8007846: d00e beq.n 8007866 -#if LWIP_ARP - /* For Ethernet network interfaces, we would like to send a "gratuitous ARP" */ - if (netif->flags & (NETIF_FLAG_ETHARP)) { - 8007848: 687b ldr r3, [r7, #4] - 800784a: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 - 800784e: f003 0308 and.w r3, r3, #8 - 8007852: 2b00 cmp r3, #0 - 8007854: d007 beq.n 8007866 - etharp_gratuitous(netif); - 8007856: 687b ldr r3, [r7, #4] - 8007858: 3304 adds r3, #4 - 800785a: 4619 mov r1, r3 - 800785c: 6878 ldr r0, [r7, #4] - 800785e: f009 fc45 bl 80110ec - 8007862: e000 b.n 8007866 - return; - 8007864: bf00 nop - /* send mld memberships */ - mld6_report_groups(netif); -#endif /* LWIP_IPV6_MLD */ - } -#endif /* LWIP_IPV6 */ -} - 8007866: 3708 adds r7, #8 - 8007868: 46bd mov sp, r7 - 800786a: bd80 pop {r7, pc} - 800786c: 08017a94 .word 0x08017a94 - 8007870: 08017c38 .word 0x08017c38 - 8007874: 08017ae4 .word 0x08017ae4 - -08007878 : - * @ingroup netif - * Bring an interface down, disabling any traffic processing. - */ -void -netif_set_down(struct netif *netif) -{ - 8007878: b580 push {r7, lr} - 800787a: b082 sub sp, #8 - 800787c: af00 add r7, sp, #0 - 800787e: 6078 str r0, [r7, #4] - LWIP_ASSERT_CORE_LOCKED(); - - LWIP_ERROR("netif_set_down: invalid netif", netif != NULL, return); - 8007880: 687b ldr r3, [r7, #4] - 8007882: 2b00 cmp r3, #0 - 8007884: d107 bne.n 8007896 - 8007886: 4b12 ldr r3, [pc, #72] @ (80078d0 ) - 8007888: f240 329b movw r2, #923 @ 0x39b - 800788c: 4911 ldr r1, [pc, #68] @ (80078d4 ) - 800788e: 4812 ldr r0, [pc, #72] @ (80078d8 ) - 8007890: f00b f9f2 bl 8012c78 - 8007894: e019 b.n 80078ca - - if (netif->flags & NETIF_FLAG_UP) { - 8007896: 687b ldr r3, [r7, #4] - 8007898: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 - 800789c: f003 0301 and.w r3, r3, #1 - 80078a0: 2b00 cmp r3, #0 - 80078a2: d012 beq.n 80078ca - args.status_changed.state = 0; - netif_invoke_ext_callback(netif, LWIP_NSC_STATUS_CHANGED, &args); - } -#endif - - netif_clear_flags(netif, NETIF_FLAG_UP); - 80078a4: 687b ldr r3, [r7, #4] - 80078a6: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 - 80078aa: f023 0301 bic.w r3, r3, #1 - 80078ae: b2da uxtb r2, r3 - 80078b0: 687b ldr r3, [r7, #4] - 80078b2: f883 2031 strb.w r2, [r3, #49] @ 0x31 - MIB2_COPY_SYSUPTIME_TO(&netif->ts); - -#if LWIP_IPV4 && LWIP_ARP - if (netif->flags & NETIF_FLAG_ETHARP) { - 80078b6: 687b ldr r3, [r7, #4] - 80078b8: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 - 80078bc: f003 0308 and.w r3, r3, #8 - 80078c0: 2b00 cmp r3, #0 - 80078c2: d002 beq.n 80078ca - etharp_cleanup_netif(netif); - 80078c4: 6878 ldr r0, [r7, #4] - 80078c6: f008 ffcb bl 8010860 - nd6_cleanup_netif(netif); -#endif /* LWIP_IPV6 */ - - NETIF_STATUS_CALLBACK(netif); - } -} - 80078ca: 3708 adds r7, #8 - 80078cc: 46bd mov sp, r7 - 80078ce: bd80 pop {r7, pc} - 80078d0: 08017a94 .word 0x08017a94 - 80078d4: 08017c5c .word 0x08017c5c - 80078d8: 08017ae4 .word 0x08017ae4 - -080078dc : - * @ingroup netif - * Called by a driver when its link goes up - */ -void -netif_set_link_up(struct netif *netif) -{ - 80078dc: b580 push {r7, lr} - 80078de: b082 sub sp, #8 - 80078e0: af00 add r7, sp, #0 - 80078e2: 6078 str r0, [r7, #4] - LWIP_ASSERT_CORE_LOCKED(); - - LWIP_ERROR("netif_set_link_up: invalid netif", netif != NULL, return); - 80078e4: 687b ldr r3, [r7, #4] - 80078e6: 2b00 cmp r3, #0 - 80078e8: d107 bne.n 80078fa - 80078ea: 4b15 ldr r3, [pc, #84] @ (8007940 ) - 80078ec: f44f 7278 mov.w r2, #992 @ 0x3e0 - 80078f0: 4914 ldr r1, [pc, #80] @ (8007944 ) - 80078f2: 4815 ldr r0, [pc, #84] @ (8007948 ) - 80078f4: f00b f9c0 bl 8012c78 - 80078f8: e01e b.n 8007938 - - if (!(netif->flags & NETIF_FLAG_LINK_UP)) { - 80078fa: 687b ldr r3, [r7, #4] - 80078fc: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 - 8007900: f003 0304 and.w r3, r3, #4 - 8007904: 2b00 cmp r3, #0 - 8007906: d117 bne.n 8007938 - netif_set_flags(netif, NETIF_FLAG_LINK_UP); - 8007908: 687b ldr r3, [r7, #4] - 800790a: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 - 800790e: f043 0304 orr.w r3, r3, #4 - 8007912: b2da uxtb r2, r3 - 8007914: 687b ldr r3, [r7, #4] - 8007916: f883 2031 strb.w r2, [r3, #49] @ 0x31 - -#if LWIP_DHCP - dhcp_network_changed(netif); - 800791a: 6878 ldr r0, [r7, #4] - 800791c: f007 fa16 bl 800ed4c - -#if LWIP_AUTOIP - autoip_network_changed(netif); -#endif /* LWIP_AUTOIP */ - - netif_issue_reports(netif, NETIF_REPORT_TYPE_IPV4 | NETIF_REPORT_TYPE_IPV6); - 8007920: 2103 movs r1, #3 - 8007922: 6878 ldr r0, [r7, #4] - 8007924: f7ff ff68 bl 80077f8 -#if LWIP_IPV6 - nd6_restart_netif(netif); -#endif /* LWIP_IPV6 */ - - NETIF_LINK_CALLBACK(netif); - 8007928: 687b ldr r3, [r7, #4] - 800792a: 69db ldr r3, [r3, #28] - 800792c: 2b00 cmp r3, #0 - 800792e: d003 beq.n 8007938 - 8007930: 687b ldr r3, [r7, #4] - 8007932: 69db ldr r3, [r3, #28] - 8007934: 6878 ldr r0, [r7, #4] - 8007936: 4798 blx r3 - args.link_changed.state = 1; - netif_invoke_ext_callback(netif, LWIP_NSC_LINK_CHANGED, &args); - } -#endif - } -} - 8007938: 3708 adds r7, #8 - 800793a: 46bd mov sp, r7 - 800793c: bd80 pop {r7, pc} - 800793e: bf00 nop - 8007940: 08017a94 .word 0x08017a94 - 8007944: 08017c7c .word 0x08017c7c - 8007948: 08017ae4 .word 0x08017ae4 - -0800794c : - * @ingroup netif - * Called by a driver when its link goes down - */ -void -netif_set_link_down(struct netif *netif) -{ - 800794c: b580 push {r7, lr} - 800794e: b082 sub sp, #8 - 8007950: af00 add r7, sp, #0 - 8007952: 6078 str r0, [r7, #4] - LWIP_ASSERT_CORE_LOCKED(); - - LWIP_ERROR("netif_set_link_down: invalid netif", netif != NULL, return); - 8007954: 687b ldr r3, [r7, #4] - 8007956: 2b00 cmp r3, #0 - 8007958: d107 bne.n 800796a - 800795a: 4b11 ldr r3, [pc, #68] @ (80079a0 ) - 800795c: f240 4206 movw r2, #1030 @ 0x406 - 8007960: 4910 ldr r1, [pc, #64] @ (80079a4 ) - 8007962: 4811 ldr r0, [pc, #68] @ (80079a8 ) - 8007964: f00b f988 bl 8012c78 - 8007968: e017 b.n 800799a - - if (netif->flags & NETIF_FLAG_LINK_UP) { - 800796a: 687b ldr r3, [r7, #4] - 800796c: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 - 8007970: f003 0304 and.w r3, r3, #4 - 8007974: 2b00 cmp r3, #0 - 8007976: d010 beq.n 800799a - netif_clear_flags(netif, NETIF_FLAG_LINK_UP); - 8007978: 687b ldr r3, [r7, #4] - 800797a: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 - 800797e: f023 0304 bic.w r3, r3, #4 - 8007982: b2da uxtb r2, r3 - 8007984: 687b ldr r3, [r7, #4] - 8007986: f883 2031 strb.w r2, [r3, #49] @ 0x31 - NETIF_LINK_CALLBACK(netif); - 800798a: 687b ldr r3, [r7, #4] - 800798c: 69db ldr r3, [r3, #28] - 800798e: 2b00 cmp r3, #0 - 8007990: d003 beq.n 800799a - 8007992: 687b ldr r3, [r7, #4] - 8007994: 69db ldr r3, [r3, #28] - 8007996: 6878 ldr r0, [r7, #4] - 8007998: 4798 blx r3 - args.link_changed.state = 0; - netif_invoke_ext_callback(netif, LWIP_NSC_LINK_CHANGED, &args); - } -#endif - } -} - 800799a: 3708 adds r7, #8 - 800799c: 46bd mov sp, r7 - 800799e: bd80 pop {r7, pc} - 80079a0: 08017a94 .word 0x08017a94 - 80079a4: 08017ca0 .word 0x08017ca0 - 80079a8: 08017ae4 .word 0x08017ae4 - -080079ac : - * @ingroup netif - * Set callback to be called when link is brought up/down - */ -void -netif_set_link_callback(struct netif *netif, netif_status_callback_fn link_callback) -{ - 80079ac: b480 push {r7} - 80079ae: b083 sub sp, #12 - 80079b0: af00 add r7, sp, #0 - 80079b2: 6078 str r0, [r7, #4] - 80079b4: 6039 str r1, [r7, #0] - LWIP_ASSERT_CORE_LOCKED(); - - if (netif) { - 80079b6: 687b ldr r3, [r7, #4] - 80079b8: 2b00 cmp r3, #0 - 80079ba: d002 beq.n 80079c2 - netif->link_callback = link_callback; - 80079bc: 687b ldr r3, [r7, #4] - 80079be: 683a ldr r2, [r7, #0] - 80079c0: 61da str r2, [r3, #28] - } -} - 80079c2: bf00 nop - 80079c4: 370c adds r7, #12 - 80079c6: 46bd mov sp, r7 - 80079c8: f85d 7b04 ldr.w r7, [sp], #4 - 80079cc: 4770 bx lr - -080079ce : -#if LWIP_IPV4 -/** Dummy IPv4 output function for netifs not supporting IPv4 - */ -static err_t -netif_null_output_ip4(struct netif *netif, struct pbuf *p, const ip4_addr_t *ipaddr) -{ - 80079ce: b480 push {r7} - 80079d0: b085 sub sp, #20 - 80079d2: af00 add r7, sp, #0 - 80079d4: 60f8 str r0, [r7, #12] - 80079d6: 60b9 str r1, [r7, #8] - 80079d8: 607a str r2, [r7, #4] - LWIP_UNUSED_ARG(netif); - LWIP_UNUSED_ARG(p); - LWIP_UNUSED_ARG(ipaddr); - - return ERR_IF; - 80079da: f06f 030b mvn.w r3, #11 -} - 80079de: 4618 mov r0, r3 - 80079e0: 3714 adds r7, #20 - 80079e2: 46bd mov sp, r7 - 80079e4: f85d 7b04 ldr.w r7, [sp], #4 - 80079e8: 4770 bx lr - ... - -080079ec : -* -* @param idx index of netif to find -*/ -struct netif * -netif_get_by_index(u8_t idx) -{ - 80079ec: b480 push {r7} - 80079ee: b085 sub sp, #20 - 80079f0: af00 add r7, sp, #0 - 80079f2: 4603 mov r3, r0 - 80079f4: 71fb strb r3, [r7, #7] - struct netif *netif; - - LWIP_ASSERT_CORE_LOCKED(); - - if (idx != NETIF_NO_INDEX) { - 80079f6: 79fb ldrb r3, [r7, #7] - 80079f8: 2b00 cmp r3, #0 - 80079fa: d013 beq.n 8007a24 - NETIF_FOREACH(netif) { - 80079fc: 4b0d ldr r3, [pc, #52] @ (8007a34 ) - 80079fe: 681b ldr r3, [r3, #0] - 8007a00: 60fb str r3, [r7, #12] - 8007a02: e00c b.n 8007a1e - if (idx == netif_get_index(netif)) { - 8007a04: 68fb ldr r3, [r7, #12] - 8007a06: f893 3034 ldrb.w r3, [r3, #52] @ 0x34 - 8007a0a: 3301 adds r3, #1 - 8007a0c: b2db uxtb r3, r3 - 8007a0e: 79fa ldrb r2, [r7, #7] - 8007a10: 429a cmp r2, r3 - 8007a12: d101 bne.n 8007a18 - return netif; /* found! */ - 8007a14: 68fb ldr r3, [r7, #12] - 8007a16: e006 b.n 8007a26 - NETIF_FOREACH(netif) { - 8007a18: 68fb ldr r3, [r7, #12] - 8007a1a: 681b ldr r3, [r3, #0] - 8007a1c: 60fb str r3, [r7, #12] - 8007a1e: 68fb ldr r3, [r7, #12] - 8007a20: 2b00 cmp r3, #0 - 8007a22: d1ef bne.n 8007a04 - } - } - } - - return NULL; - 8007a24: 2300 movs r3, #0 -} - 8007a26: 4618 mov r0, r3 - 8007a28: 3714 adds r7, #20 - 8007a2a: 46bd mov sp, r7 - 8007a2c: f85d 7b04 ldr.w r7, [sp], #4 - 8007a30: 4770 bx lr - 8007a32: bf00 nop - 8007a34: 200190e0 .word 0x200190e0 - -08007a38 : -#if !NO_SYS -static -#endif /* !NO_SYS */ -void -pbuf_free_ooseq(void) -{ - 8007a38: b580 push {r7, lr} - 8007a3a: b082 sub sp, #8 - 8007a3c: af00 add r7, sp, #0 - struct tcp_pcb *pcb; - SYS_ARCH_SET(pbuf_free_ooseq_pending, 0); - 8007a3e: 4b0c ldr r3, [pc, #48] @ (8007a70 ) - 8007a40: 2200 movs r2, #0 - 8007a42: 701a strb r2, [r3, #0] - - for (pcb = tcp_active_pcbs; NULL != pcb; pcb = pcb->next) { - 8007a44: 4b0b ldr r3, [pc, #44] @ (8007a74 ) - 8007a46: 681b ldr r3, [r3, #0] - 8007a48: 607b str r3, [r7, #4] - 8007a4a: e00a b.n 8007a62 - if (pcb->ooseq != NULL) { - 8007a4c: 687b ldr r3, [r7, #4] - 8007a4e: 6f5b ldr r3, [r3, #116] @ 0x74 - 8007a50: 2b00 cmp r3, #0 - 8007a52: d003 beq.n 8007a5c - /** Free the ooseq pbufs of one PCB only */ - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_free_ooseq: freeing out-of-sequence pbufs\n")); - tcp_free_ooseq(pcb); - 8007a54: 6878 ldr r0, [r7, #4] - 8007a56: f002 f94d bl 8009cf4 - return; - 8007a5a: e005 b.n 8007a68 - for (pcb = tcp_active_pcbs; NULL != pcb; pcb = pcb->next) { - 8007a5c: 687b ldr r3, [r7, #4] - 8007a5e: 68db ldr r3, [r3, #12] - 8007a60: 607b str r3, [r7, #4] - 8007a62: 687b ldr r3, [r7, #4] - 8007a64: 2b00 cmp r3, #0 - 8007a66: d1f1 bne.n 8007a4c - } - } -} - 8007a68: 3708 adds r7, #8 - 8007a6a: 46bd mov sp, r7 - 8007a6c: bd80 pop {r7, pc} - 8007a6e: bf00 nop - 8007a70: 200190e9 .word 0x200190e9 - 8007a74: 200190f8 .word 0x200190f8 - -08007a78 : -#endif /* !NO_SYS */ - -/** Queue a call to pbuf_free_ooseq if not already queued. */ -static void -pbuf_pool_is_empty(void) -{ - 8007a78: b480 push {r7} - 8007a7a: af00 add r7, sp, #0 -#ifndef PBUF_POOL_FREE_OOSEQ_QUEUE_CALL - SYS_ARCH_SET(pbuf_free_ooseq_pending, 1); - 8007a7c: 4b03 ldr r3, [pc, #12] @ (8007a8c ) - 8007a7e: 2201 movs r2, #1 - 8007a80: 701a strb r2, [r3, #0] - if (!queued) { - /* queue a call to pbuf_free_ooseq if not already queued */ - PBUF_POOL_FREE_OOSEQ_QUEUE_CALL(); - } -#endif /* PBUF_POOL_FREE_OOSEQ_QUEUE_CALL */ -} - 8007a82: bf00 nop - 8007a84: 46bd mov sp, r7 - 8007a86: f85d 7b04 ldr.w r7, [sp], #4 - 8007a8a: 4770 bx lr - 8007a8c: 200190e9 .word 0x200190e9 - -08007a90 : -#endif /* !LWIP_TCP || !TCP_QUEUE_OOSEQ || !PBUF_POOL_FREE_OOSEQ */ - -/* Initialize members of struct pbuf after allocation */ -static void -pbuf_init_alloced_pbuf(struct pbuf *p, void *payload, u16_t tot_len, u16_t len, pbuf_type type, u8_t flags) -{ - 8007a90: b480 push {r7} - 8007a92: b085 sub sp, #20 - 8007a94: af00 add r7, sp, #0 - 8007a96: 60f8 str r0, [r7, #12] - 8007a98: 60b9 str r1, [r7, #8] - 8007a9a: 4611 mov r1, r2 - 8007a9c: 461a mov r2, r3 - 8007a9e: 460b mov r3, r1 - 8007aa0: 80fb strh r3, [r7, #6] - 8007aa2: 4613 mov r3, r2 - 8007aa4: 80bb strh r3, [r7, #4] - p->next = NULL; - 8007aa6: 68fb ldr r3, [r7, #12] - 8007aa8: 2200 movs r2, #0 - 8007aaa: 601a str r2, [r3, #0] - p->payload = payload; - 8007aac: 68fb ldr r3, [r7, #12] - 8007aae: 68ba ldr r2, [r7, #8] - 8007ab0: 605a str r2, [r3, #4] - p->tot_len = tot_len; - 8007ab2: 68fb ldr r3, [r7, #12] - 8007ab4: 88fa ldrh r2, [r7, #6] - 8007ab6: 811a strh r2, [r3, #8] - p->len = len; - 8007ab8: 68fb ldr r3, [r7, #12] - 8007aba: 88ba ldrh r2, [r7, #4] - 8007abc: 815a strh r2, [r3, #10] - p->type_internal = (u8_t)type; - 8007abe: 8b3b ldrh r3, [r7, #24] - 8007ac0: b2da uxtb r2, r3 - 8007ac2: 68fb ldr r3, [r7, #12] - 8007ac4: 731a strb r2, [r3, #12] - p->flags = flags; - 8007ac6: 68fb ldr r3, [r7, #12] - 8007ac8: 7f3a ldrb r2, [r7, #28] - 8007aca: 735a strb r2, [r3, #13] - p->ref = 1; - 8007acc: 68fb ldr r3, [r7, #12] - 8007ace: 2201 movs r2, #1 - 8007ad0: 739a strb r2, [r3, #14] - p->if_idx = NETIF_NO_INDEX; - 8007ad2: 68fb ldr r3, [r7, #12] - 8007ad4: 2200 movs r2, #0 - 8007ad6: 73da strb r2, [r3, #15] -} - 8007ad8: bf00 nop - 8007ada: 3714 adds r7, #20 - 8007adc: 46bd mov sp, r7 - 8007ade: f85d 7b04 ldr.w r7, [sp], #4 - 8007ae2: 4770 bx lr - -08007ae4 : - * @return the allocated pbuf. If multiple pbufs where allocated, this - * is the first pbuf of a pbuf chain. - */ -struct pbuf * -pbuf_alloc(pbuf_layer layer, u16_t length, pbuf_type type) -{ - 8007ae4: b580 push {r7, lr} - 8007ae6: b08c sub sp, #48 @ 0x30 - 8007ae8: af02 add r7, sp, #8 - 8007aea: 4603 mov r3, r0 - 8007aec: 71fb strb r3, [r7, #7] - 8007aee: 460b mov r3, r1 - 8007af0: 80bb strh r3, [r7, #4] - 8007af2: 4613 mov r3, r2 - 8007af4: 807b strh r3, [r7, #2] - struct pbuf *p; - u16_t offset = (u16_t)layer; - 8007af6: 79fb ldrb r3, [r7, #7] - 8007af8: 847b strh r3, [r7, #34] @ 0x22 - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_alloc(length=%"U16_F")\n", length)); - - switch (type) { - 8007afa: 887b ldrh r3, [r7, #2] - 8007afc: f5b3 7f20 cmp.w r3, #640 @ 0x280 - 8007b00: d07f beq.n 8007c02 - 8007b02: f5b3 7f20 cmp.w r3, #640 @ 0x280 - 8007b06: f300 80c7 bgt.w 8007c98 - 8007b0a: f5b3 7fc1 cmp.w r3, #386 @ 0x182 - 8007b0e: d010 beq.n 8007b32 - 8007b10: f5b3 7fc1 cmp.w r3, #386 @ 0x182 - 8007b14: f300 80c0 bgt.w 8007c98 - 8007b18: 2b01 cmp r3, #1 - 8007b1a: d002 beq.n 8007b22 - 8007b1c: 2b41 cmp r3, #65 @ 0x41 - 8007b1e: f040 80bb bne.w 8007c98 - case PBUF_REF: /* fall through */ - case PBUF_ROM: - p = pbuf_alloc_reference(NULL, length, type); - 8007b22: 887a ldrh r2, [r7, #2] - 8007b24: 88bb ldrh r3, [r7, #4] - 8007b26: 4619 mov r1, r3 - 8007b28: 2000 movs r0, #0 - 8007b2a: f000 f8d1 bl 8007cd0 - 8007b2e: 6278 str r0, [r7, #36] @ 0x24 - break; - 8007b30: e0bc b.n 8007cac - case PBUF_POOL: { - struct pbuf *q, *last; - u16_t rem_len; /* remaining length */ - p = NULL; - 8007b32: 2300 movs r3, #0 - 8007b34: 627b str r3, [r7, #36] @ 0x24 - last = NULL; - 8007b36: 2300 movs r3, #0 - 8007b38: 61fb str r3, [r7, #28] - rem_len = length; - 8007b3a: 88bb ldrh r3, [r7, #4] - 8007b3c: 837b strh r3, [r7, #26] - do { - u16_t qlen; - q = (struct pbuf *)memp_malloc(MEMP_PBUF_POOL); - 8007b3e: 2008 movs r0, #8 - 8007b40: f7ff fbc2 bl 80072c8 - 8007b44: 6138 str r0, [r7, #16] - if (q == NULL) { - 8007b46: 693b ldr r3, [r7, #16] - 8007b48: 2b00 cmp r3, #0 - 8007b4a: d109 bne.n 8007b60 - PBUF_POOL_IS_EMPTY(); - 8007b4c: f7ff ff94 bl 8007a78 - /* free chain so far allocated */ - if (p) { - 8007b50: 6a7b ldr r3, [r7, #36] @ 0x24 - 8007b52: 2b00 cmp r3, #0 - 8007b54: d002 beq.n 8007b5c - pbuf_free(p); - 8007b56: 6a78 ldr r0, [r7, #36] @ 0x24 - 8007b58: f000 faa6 bl 80080a8 - } - /* bail out unsuccessfully */ - return NULL; - 8007b5c: 2300 movs r3, #0 - 8007b5e: e0a6 b.n 8007cae - } - qlen = LWIP_MIN(rem_len, (u16_t)(PBUF_POOL_BUFSIZE_ALIGNED - LWIP_MEM_ALIGN_SIZE(offset))); - 8007b60: 8c7b ldrh r3, [r7, #34] @ 0x22 - 8007b62: 3303 adds r3, #3 - 8007b64: b29b uxth r3, r3 - 8007b66: f023 0303 bic.w r3, r3, #3 - 8007b6a: b29b uxth r3, r3 - 8007b6c: f5c3 7314 rsb r3, r3, #592 @ 0x250 - 8007b70: b29b uxth r3, r3 - 8007b72: 8b7a ldrh r2, [r7, #26] - 8007b74: 4293 cmp r3, r2 - 8007b76: bf28 it cs - 8007b78: 4613 movcs r3, r2 - 8007b7a: 81fb strh r3, [r7, #14] - pbuf_init_alloced_pbuf(q, LWIP_MEM_ALIGN((void *)((u8_t *)q + SIZEOF_STRUCT_PBUF + offset)), - 8007b7c: 8c7b ldrh r3, [r7, #34] @ 0x22 - 8007b7e: 3310 adds r3, #16 - 8007b80: 693a ldr r2, [r7, #16] - 8007b82: 4413 add r3, r2 - 8007b84: 3303 adds r3, #3 - 8007b86: f023 0303 bic.w r3, r3, #3 - 8007b8a: 4618 mov r0, r3 - 8007b8c: 89f9 ldrh r1, [r7, #14] - 8007b8e: 8b7a ldrh r2, [r7, #26] - 8007b90: 2300 movs r3, #0 - 8007b92: 9301 str r3, [sp, #4] - 8007b94: 887b ldrh r3, [r7, #2] - 8007b96: 9300 str r3, [sp, #0] - 8007b98: 460b mov r3, r1 - 8007b9a: 4601 mov r1, r0 - 8007b9c: 6938 ldr r0, [r7, #16] - 8007b9e: f7ff ff77 bl 8007a90 - rem_len, qlen, type, 0); - LWIP_ASSERT("pbuf_alloc: pbuf q->payload properly aligned", - 8007ba2: 693b ldr r3, [r7, #16] - 8007ba4: 685b ldr r3, [r3, #4] - 8007ba6: f003 0303 and.w r3, r3, #3 - 8007baa: 2b00 cmp r3, #0 - 8007bac: d006 beq.n 8007bbc - 8007bae: 4b42 ldr r3, [pc, #264] @ (8007cb8 ) - 8007bb0: f44f 7280 mov.w r2, #256 @ 0x100 - 8007bb4: 4941 ldr r1, [pc, #260] @ (8007cbc ) - 8007bb6: 4842 ldr r0, [pc, #264] @ (8007cc0 ) - 8007bb8: f00b f85e bl 8012c78 - ((mem_ptr_t)q->payload % MEM_ALIGNMENT) == 0); - LWIP_ASSERT("PBUF_POOL_BUFSIZE must be bigger than MEM_ALIGNMENT", - 8007bbc: 8c7b ldrh r3, [r7, #34] @ 0x22 - 8007bbe: 3303 adds r3, #3 - 8007bc0: f023 0303 bic.w r3, r3, #3 - 8007bc4: f5b3 7f14 cmp.w r3, #592 @ 0x250 - 8007bc8: d106 bne.n 8007bd8 - 8007bca: 4b3b ldr r3, [pc, #236] @ (8007cb8 ) - 8007bcc: f44f 7281 mov.w r2, #258 @ 0x102 - 8007bd0: 493c ldr r1, [pc, #240] @ (8007cc4 ) - 8007bd2: 483b ldr r0, [pc, #236] @ (8007cc0 ) - 8007bd4: f00b f850 bl 8012c78 - (PBUF_POOL_BUFSIZE_ALIGNED - LWIP_MEM_ALIGN_SIZE(offset)) > 0 ); - if (p == NULL) { - 8007bd8: 6a7b ldr r3, [r7, #36] @ 0x24 - 8007bda: 2b00 cmp r3, #0 - 8007bdc: d102 bne.n 8007be4 - /* allocated head of pbuf chain (into p) */ - p = q; - 8007bde: 693b ldr r3, [r7, #16] - 8007be0: 627b str r3, [r7, #36] @ 0x24 - 8007be2: e002 b.n 8007bea - } else { - /* make previous pbuf point to this pbuf */ - last->next = q; - 8007be4: 69fb ldr r3, [r7, #28] - 8007be6: 693a ldr r2, [r7, #16] - 8007be8: 601a str r2, [r3, #0] - } - last = q; - 8007bea: 693b ldr r3, [r7, #16] - 8007bec: 61fb str r3, [r7, #28] - rem_len = (u16_t)(rem_len - qlen); - 8007bee: 8b7a ldrh r2, [r7, #26] - 8007bf0: 89fb ldrh r3, [r7, #14] - 8007bf2: 1ad3 subs r3, r2, r3 - 8007bf4: 837b strh r3, [r7, #26] - offset = 0; - 8007bf6: 2300 movs r3, #0 - 8007bf8: 847b strh r3, [r7, #34] @ 0x22 - } while (rem_len > 0); - 8007bfa: 8b7b ldrh r3, [r7, #26] - 8007bfc: 2b00 cmp r3, #0 - 8007bfe: d19e bne.n 8007b3e - break; - 8007c00: e054 b.n 8007cac - } - case PBUF_RAM: { - u16_t payload_len = (u16_t)(LWIP_MEM_ALIGN_SIZE(offset) + LWIP_MEM_ALIGN_SIZE(length)); - 8007c02: 8c7b ldrh r3, [r7, #34] @ 0x22 - 8007c04: 3303 adds r3, #3 - 8007c06: b29b uxth r3, r3 - 8007c08: f023 0303 bic.w r3, r3, #3 - 8007c0c: b29a uxth r2, r3 - 8007c0e: 88bb ldrh r3, [r7, #4] - 8007c10: 3303 adds r3, #3 - 8007c12: b29b uxth r3, r3 - 8007c14: f023 0303 bic.w r3, r3, #3 - 8007c18: b29b uxth r3, r3 - 8007c1a: 4413 add r3, r2 - 8007c1c: 833b strh r3, [r7, #24] - mem_size_t alloc_len = (mem_size_t)(LWIP_MEM_ALIGN_SIZE(SIZEOF_STRUCT_PBUF) + payload_len); - 8007c1e: 8b3b ldrh r3, [r7, #24] - 8007c20: 3310 adds r3, #16 - 8007c22: 617b str r3, [r7, #20] - - /* bug #50040: Check for integer overflow when calculating alloc_len */ - if ((payload_len < LWIP_MEM_ALIGN_SIZE(length)) || - 8007c24: 8b3a ldrh r2, [r7, #24] - 8007c26: 88bb ldrh r3, [r7, #4] - 8007c28: 3303 adds r3, #3 - 8007c2a: f023 0303 bic.w r3, r3, #3 - 8007c2e: 429a cmp r2, r3 - 8007c30: d306 bcc.n 8007c40 - (alloc_len < LWIP_MEM_ALIGN_SIZE(length))) { - 8007c32: 88bb ldrh r3, [r7, #4] - 8007c34: 3303 adds r3, #3 - 8007c36: f023 0303 bic.w r3, r3, #3 - if ((payload_len < LWIP_MEM_ALIGN_SIZE(length)) || - 8007c3a: 697a ldr r2, [r7, #20] - 8007c3c: 429a cmp r2, r3 - 8007c3e: d201 bcs.n 8007c44 - return NULL; - 8007c40: 2300 movs r3, #0 - 8007c42: e034 b.n 8007cae - } - - /* If pbuf is to be allocated in RAM, allocate memory for it. */ - p = (struct pbuf *)mem_malloc(alloc_len); - 8007c44: 6978 ldr r0, [r7, #20] - 8007c46: f7ff f9b9 bl 8006fbc - 8007c4a: 6278 str r0, [r7, #36] @ 0x24 - if (p == NULL) { - 8007c4c: 6a7b ldr r3, [r7, #36] @ 0x24 - 8007c4e: 2b00 cmp r3, #0 - 8007c50: d101 bne.n 8007c56 - return NULL; - 8007c52: 2300 movs r3, #0 - 8007c54: e02b b.n 8007cae - } - pbuf_init_alloced_pbuf(p, LWIP_MEM_ALIGN((void *)((u8_t *)p + SIZEOF_STRUCT_PBUF + offset)), - 8007c56: 8c7b ldrh r3, [r7, #34] @ 0x22 - 8007c58: 3310 adds r3, #16 - 8007c5a: 6a7a ldr r2, [r7, #36] @ 0x24 - 8007c5c: 4413 add r3, r2 - 8007c5e: 3303 adds r3, #3 - 8007c60: f023 0303 bic.w r3, r3, #3 - 8007c64: 4618 mov r0, r3 - 8007c66: 88b9 ldrh r1, [r7, #4] - 8007c68: 88ba ldrh r2, [r7, #4] - 8007c6a: 2300 movs r3, #0 - 8007c6c: 9301 str r3, [sp, #4] - 8007c6e: 887b ldrh r3, [r7, #2] - 8007c70: 9300 str r3, [sp, #0] - 8007c72: 460b mov r3, r1 - 8007c74: 4601 mov r1, r0 - 8007c76: 6a78 ldr r0, [r7, #36] @ 0x24 - 8007c78: f7ff ff0a bl 8007a90 - length, length, type, 0); - LWIP_ASSERT("pbuf_alloc: pbuf->payload properly aligned", - 8007c7c: 6a7b ldr r3, [r7, #36] @ 0x24 - 8007c7e: 685b ldr r3, [r3, #4] - 8007c80: f003 0303 and.w r3, r3, #3 - 8007c84: 2b00 cmp r3, #0 - 8007c86: d010 beq.n 8007caa - 8007c88: 4b0b ldr r3, [pc, #44] @ (8007cb8 ) - 8007c8a: f44f 7291 mov.w r2, #290 @ 0x122 - 8007c8e: 490e ldr r1, [pc, #56] @ (8007cc8 ) - 8007c90: 480b ldr r0, [pc, #44] @ (8007cc0 ) - 8007c92: f00a fff1 bl 8012c78 - ((mem_ptr_t)p->payload % MEM_ALIGNMENT) == 0); - break; - 8007c96: e008 b.n 8007caa - } - default: - LWIP_ASSERT("pbuf_alloc: erroneous type", 0); - 8007c98: 4b07 ldr r3, [pc, #28] @ (8007cb8 ) - 8007c9a: f240 1227 movw r2, #295 @ 0x127 - 8007c9e: 490b ldr r1, [pc, #44] @ (8007ccc ) - 8007ca0: 4807 ldr r0, [pc, #28] @ (8007cc0 ) - 8007ca2: f00a ffe9 bl 8012c78 - return NULL; - 8007ca6: 2300 movs r3, #0 - 8007ca8: e001 b.n 8007cae - break; - 8007caa: bf00 nop - } - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_alloc(length=%"U16_F") == %p\n", length, (void *)p)); - return p; - 8007cac: 6a7b ldr r3, [r7, #36] @ 0x24 -} - 8007cae: 4618 mov r0, r3 - 8007cb0: 3728 adds r7, #40 @ 0x28 - 8007cb2: 46bd mov sp, r7 - 8007cb4: bd80 pop {r7, pc} - 8007cb6: bf00 nop - 8007cb8: 08017cc4 .word 0x08017cc4 - 8007cbc: 08017cf4 .word 0x08017cf4 - 8007cc0: 08017d24 .word 0x08017d24 - 8007cc4: 08017d4c .word 0x08017d4c - 8007cc8: 08017d80 .word 0x08017d80 - 8007ccc: 08017dac .word 0x08017dac - -08007cd0 : - * - * @return the allocated pbuf. - */ -struct pbuf * -pbuf_alloc_reference(void *payload, u16_t length, pbuf_type type) -{ - 8007cd0: b580 push {r7, lr} - 8007cd2: b086 sub sp, #24 - 8007cd4: af02 add r7, sp, #8 - 8007cd6: 6078 str r0, [r7, #4] - 8007cd8: 460b mov r3, r1 - 8007cda: 807b strh r3, [r7, #2] - 8007cdc: 4613 mov r3, r2 - 8007cde: 803b strh r3, [r7, #0] - struct pbuf *p; - LWIP_ASSERT("invalid pbuf_type", (type == PBUF_REF) || (type == PBUF_ROM)); - 8007ce0: 883b ldrh r3, [r7, #0] - 8007ce2: 2b41 cmp r3, #65 @ 0x41 - 8007ce4: d009 beq.n 8007cfa - 8007ce6: 883b ldrh r3, [r7, #0] - 8007ce8: 2b01 cmp r3, #1 - 8007cea: d006 beq.n 8007cfa - 8007cec: 4b0f ldr r3, [pc, #60] @ (8007d2c ) - 8007cee: f44f 72a5 mov.w r2, #330 @ 0x14a - 8007cf2: 490f ldr r1, [pc, #60] @ (8007d30 ) - 8007cf4: 480f ldr r0, [pc, #60] @ (8007d34 ) - 8007cf6: f00a ffbf bl 8012c78 - /* only allocate memory for the pbuf structure */ - p = (struct pbuf *)memp_malloc(MEMP_PBUF); - 8007cfa: 2007 movs r0, #7 - 8007cfc: f7ff fae4 bl 80072c8 - 8007d00: 60f8 str r0, [r7, #12] - if (p == NULL) { - 8007d02: 68fb ldr r3, [r7, #12] - 8007d04: 2b00 cmp r3, #0 - 8007d06: d101 bne.n 8007d0c - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("pbuf_alloc_reference: Could not allocate MEMP_PBUF for PBUF_%s.\n", - (type == PBUF_ROM) ? "ROM" : "REF")); - return NULL; - 8007d08: 2300 movs r3, #0 - 8007d0a: e00b b.n 8007d24 - } - pbuf_init_alloced_pbuf(p, payload, length, length, type, 0); - 8007d0c: 8879 ldrh r1, [r7, #2] - 8007d0e: 887a ldrh r2, [r7, #2] - 8007d10: 2300 movs r3, #0 - 8007d12: 9301 str r3, [sp, #4] - 8007d14: 883b ldrh r3, [r7, #0] - 8007d16: 9300 str r3, [sp, #0] - 8007d18: 460b mov r3, r1 - 8007d1a: 6879 ldr r1, [r7, #4] - 8007d1c: 68f8 ldr r0, [r7, #12] - 8007d1e: f7ff feb7 bl 8007a90 - return p; - 8007d22: 68fb ldr r3, [r7, #12] -} - 8007d24: 4618 mov r0, r3 - 8007d26: 3710 adds r7, #16 - 8007d28: 46bd mov sp, r7 - 8007d2a: bd80 pop {r7, pc} - 8007d2c: 08017cc4 .word 0x08017cc4 - 8007d30: 08017dc8 .word 0x08017dc8 - 8007d34: 08017d24 .word 0x08017d24 - -08007d38 : - * big enough to hold 'length' plus the header size - */ -struct pbuf * -pbuf_alloced_custom(pbuf_layer l, u16_t length, pbuf_type type, struct pbuf_custom *p, - void *payload_mem, u16_t payload_mem_len) -{ - 8007d38: b580 push {r7, lr} - 8007d3a: b088 sub sp, #32 - 8007d3c: af02 add r7, sp, #8 - 8007d3e: 607b str r3, [r7, #4] - 8007d40: 4603 mov r3, r0 - 8007d42: 73fb strb r3, [r7, #15] - 8007d44: 460b mov r3, r1 - 8007d46: 81bb strh r3, [r7, #12] - 8007d48: 4613 mov r3, r2 - 8007d4a: 817b strh r3, [r7, #10] - u16_t offset = (u16_t)l; - 8007d4c: 7bfb ldrb r3, [r7, #15] - 8007d4e: 827b strh r3, [r7, #18] - void *payload; - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_alloced_custom(length=%"U16_F")\n", length)); - - if (LWIP_MEM_ALIGN_SIZE(offset) + length > payload_mem_len) { - 8007d50: 8a7b ldrh r3, [r7, #18] - 8007d52: 3303 adds r3, #3 - 8007d54: f023 0203 bic.w r2, r3, #3 - 8007d58: 89bb ldrh r3, [r7, #12] - 8007d5a: 441a add r2, r3 - 8007d5c: 8cbb ldrh r3, [r7, #36] @ 0x24 - 8007d5e: 429a cmp r2, r3 - 8007d60: d901 bls.n 8007d66 - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_LEVEL_WARNING, ("pbuf_alloced_custom(length=%"U16_F") buffer too short\n", length)); - return NULL; - 8007d62: 2300 movs r3, #0 - 8007d64: e018 b.n 8007d98 - } - - if (payload_mem != NULL) { - 8007d66: 6a3b ldr r3, [r7, #32] - 8007d68: 2b00 cmp r3, #0 - 8007d6a: d007 beq.n 8007d7c - payload = (u8_t *)payload_mem + LWIP_MEM_ALIGN_SIZE(offset); - 8007d6c: 8a7b ldrh r3, [r7, #18] - 8007d6e: 3303 adds r3, #3 - 8007d70: f023 0303 bic.w r3, r3, #3 - 8007d74: 6a3a ldr r2, [r7, #32] - 8007d76: 4413 add r3, r2 - 8007d78: 617b str r3, [r7, #20] - 8007d7a: e001 b.n 8007d80 - } else { - payload = NULL; - 8007d7c: 2300 movs r3, #0 - 8007d7e: 617b str r3, [r7, #20] - } - pbuf_init_alloced_pbuf(&p->pbuf, payload, length, length, type, PBUF_FLAG_IS_CUSTOM); - 8007d80: 6878 ldr r0, [r7, #4] - 8007d82: 89b9 ldrh r1, [r7, #12] - 8007d84: 89ba ldrh r2, [r7, #12] - 8007d86: 2302 movs r3, #2 - 8007d88: 9301 str r3, [sp, #4] - 8007d8a: 897b ldrh r3, [r7, #10] - 8007d8c: 9300 str r3, [sp, #0] - 8007d8e: 460b mov r3, r1 - 8007d90: 6979 ldr r1, [r7, #20] - 8007d92: f7ff fe7d bl 8007a90 - return &p->pbuf; - 8007d96: 687b ldr r3, [r7, #4] -} - 8007d98: 4618 mov r0, r3 - 8007d9a: 3718 adds r7, #24 - 8007d9c: 46bd mov sp, r7 - 8007d9e: bd80 pop {r7, pc} - -08007da0 : - * - * @note Despite its name, pbuf_realloc cannot grow the size of a pbuf (chain). - */ -void -pbuf_realloc(struct pbuf *p, u16_t new_len) -{ - 8007da0: b580 push {r7, lr} - 8007da2: b084 sub sp, #16 - 8007da4: af00 add r7, sp, #0 - 8007da6: 6078 str r0, [r7, #4] - 8007da8: 460b mov r3, r1 - 8007daa: 807b strh r3, [r7, #2] - struct pbuf *q; - u16_t rem_len; /* remaining length */ - u16_t shrink; - - LWIP_ASSERT("pbuf_realloc: p != NULL", p != NULL); - 8007dac: 687b ldr r3, [r7, #4] - 8007dae: 2b00 cmp r3, #0 - 8007db0: d106 bne.n 8007dc0 - 8007db2: 4b39 ldr r3, [pc, #228] @ (8007e98 ) - 8007db4: f44f 72cc mov.w r2, #408 @ 0x198 - 8007db8: 4938 ldr r1, [pc, #224] @ (8007e9c ) - 8007dba: 4839 ldr r0, [pc, #228] @ (8007ea0 ) - 8007dbc: f00a ff5c bl 8012c78 - - /* desired length larger than current length? */ - if (new_len >= p->tot_len) { - 8007dc0: 687b ldr r3, [r7, #4] - 8007dc2: 891b ldrh r3, [r3, #8] - 8007dc4: 887a ldrh r2, [r7, #2] - 8007dc6: 429a cmp r2, r3 - 8007dc8: d261 bcs.n 8007e8e - return; - } - - /* the pbuf chain grows by (new_len - p->tot_len) bytes - * (which may be negative in case of shrinking) */ - shrink = (u16_t)(p->tot_len - new_len); - 8007dca: 687b ldr r3, [r7, #4] - 8007dcc: 891a ldrh r2, [r3, #8] - 8007dce: 887b ldrh r3, [r7, #2] - 8007dd0: 1ad3 subs r3, r2, r3 - 8007dd2: 813b strh r3, [r7, #8] - - /* first, step over any pbufs that should remain in the chain */ - rem_len = new_len; - 8007dd4: 887b ldrh r3, [r7, #2] - 8007dd6: 817b strh r3, [r7, #10] - q = p; - 8007dd8: 687b ldr r3, [r7, #4] - 8007dda: 60fb str r3, [r7, #12] - /* should this pbuf be kept? */ - while (rem_len > q->len) { - 8007ddc: e018 b.n 8007e10 - /* decrease remaining length by pbuf length */ - rem_len = (u16_t)(rem_len - q->len); - 8007dde: 68fb ldr r3, [r7, #12] - 8007de0: 895b ldrh r3, [r3, #10] - 8007de2: 897a ldrh r2, [r7, #10] - 8007de4: 1ad3 subs r3, r2, r3 - 8007de6: 817b strh r3, [r7, #10] - /* decrease total length indicator */ - q->tot_len = (u16_t)(q->tot_len - shrink); - 8007de8: 68fb ldr r3, [r7, #12] - 8007dea: 891a ldrh r2, [r3, #8] - 8007dec: 893b ldrh r3, [r7, #8] - 8007dee: 1ad3 subs r3, r2, r3 - 8007df0: b29a uxth r2, r3 - 8007df2: 68fb ldr r3, [r7, #12] - 8007df4: 811a strh r2, [r3, #8] - /* proceed to next pbuf in chain */ - q = q->next; - 8007df6: 68fb ldr r3, [r7, #12] - 8007df8: 681b ldr r3, [r3, #0] - 8007dfa: 60fb str r3, [r7, #12] - LWIP_ASSERT("pbuf_realloc: q != NULL", q != NULL); - 8007dfc: 68fb ldr r3, [r7, #12] - 8007dfe: 2b00 cmp r3, #0 - 8007e00: d106 bne.n 8007e10 - 8007e02: 4b25 ldr r3, [pc, #148] @ (8007e98 ) - 8007e04: f240 12af movw r2, #431 @ 0x1af - 8007e08: 4926 ldr r1, [pc, #152] @ (8007ea4 ) - 8007e0a: 4825 ldr r0, [pc, #148] @ (8007ea0 ) - 8007e0c: f00a ff34 bl 8012c78 - while (rem_len > q->len) { - 8007e10: 68fb ldr r3, [r7, #12] - 8007e12: 895b ldrh r3, [r3, #10] - 8007e14: 897a ldrh r2, [r7, #10] - 8007e16: 429a cmp r2, r3 - 8007e18: d8e1 bhi.n 8007dde - /* we have now reached the new last pbuf (in q) */ - /* rem_len == desired length for pbuf q */ - - /* shrink allocated memory for PBUF_RAM */ - /* (other types merely adjust their length fields */ - if (pbuf_match_allocsrc(q, PBUF_TYPE_ALLOC_SRC_MASK_STD_HEAP) && (rem_len != q->len) - 8007e1a: 68fb ldr r3, [r7, #12] - 8007e1c: 7b1b ldrb r3, [r3, #12] - 8007e1e: f003 030f and.w r3, r3, #15 - 8007e22: 2b00 cmp r3, #0 - 8007e24: d11f bne.n 8007e66 - 8007e26: 68fb ldr r3, [r7, #12] - 8007e28: 895b ldrh r3, [r3, #10] - 8007e2a: 897a ldrh r2, [r7, #10] - 8007e2c: 429a cmp r2, r3 - 8007e2e: d01a beq.n 8007e66 -#if LWIP_SUPPORT_CUSTOM_PBUF - && ((q->flags & PBUF_FLAG_IS_CUSTOM) == 0) - 8007e30: 68fb ldr r3, [r7, #12] - 8007e32: 7b5b ldrb r3, [r3, #13] - 8007e34: f003 0302 and.w r3, r3, #2 - 8007e38: 2b00 cmp r3, #0 - 8007e3a: d114 bne.n 8007e66 -#endif /* LWIP_SUPPORT_CUSTOM_PBUF */ - ) { - /* reallocate and adjust the length of the pbuf that will be split */ - q = (struct pbuf *)mem_trim(q, (mem_size_t)(((u8_t *)q->payload - (u8_t *)q) + rem_len)); - 8007e3c: 68fb ldr r3, [r7, #12] - 8007e3e: 685a ldr r2, [r3, #4] - 8007e40: 68fb ldr r3, [r7, #12] - 8007e42: 1ad2 subs r2, r2, r3 - 8007e44: 897b ldrh r3, [r7, #10] - 8007e46: 4413 add r3, r2 - 8007e48: 4619 mov r1, r3 - 8007e4a: 68f8 ldr r0, [r7, #12] - 8007e4c: f7fe ffc4 bl 8006dd8 - 8007e50: 60f8 str r0, [r7, #12] - LWIP_ASSERT("mem_trim returned q == NULL", q != NULL); - 8007e52: 68fb ldr r3, [r7, #12] - 8007e54: 2b00 cmp r3, #0 - 8007e56: d106 bne.n 8007e66 - 8007e58: 4b0f ldr r3, [pc, #60] @ (8007e98 ) - 8007e5a: f240 12bd movw r2, #445 @ 0x1bd - 8007e5e: 4912 ldr r1, [pc, #72] @ (8007ea8 ) - 8007e60: 480f ldr r0, [pc, #60] @ (8007ea0 ) - 8007e62: f00a ff09 bl 8012c78 - } - /* adjust length fields for new last pbuf */ - q->len = rem_len; - 8007e66: 68fb ldr r3, [r7, #12] - 8007e68: 897a ldrh r2, [r7, #10] - 8007e6a: 815a strh r2, [r3, #10] - q->tot_len = q->len; - 8007e6c: 68fb ldr r3, [r7, #12] - 8007e6e: 895a ldrh r2, [r3, #10] - 8007e70: 68fb ldr r3, [r7, #12] - 8007e72: 811a strh r2, [r3, #8] - - /* any remaining pbufs in chain? */ - if (q->next != NULL) { - 8007e74: 68fb ldr r3, [r7, #12] - 8007e76: 681b ldr r3, [r3, #0] - 8007e78: 2b00 cmp r3, #0 - 8007e7a: d004 beq.n 8007e86 - /* free remaining pbufs in chain */ - pbuf_free(q->next); - 8007e7c: 68fb ldr r3, [r7, #12] - 8007e7e: 681b ldr r3, [r3, #0] - 8007e80: 4618 mov r0, r3 - 8007e82: f000 f911 bl 80080a8 - } - /* q is last packet in chain */ - q->next = NULL; - 8007e86: 68fb ldr r3, [r7, #12] - 8007e88: 2200 movs r2, #0 - 8007e8a: 601a str r2, [r3, #0] - 8007e8c: e000 b.n 8007e90 - return; - 8007e8e: bf00 nop - -} - 8007e90: 3710 adds r7, #16 - 8007e92: 46bd mov sp, r7 - 8007e94: bd80 pop {r7, pc} - 8007e96: bf00 nop - 8007e98: 08017cc4 .word 0x08017cc4 - 8007e9c: 08017ddc .word 0x08017ddc - 8007ea0: 08017d24 .word 0x08017d24 - 8007ea4: 08017df4 .word 0x08017df4 - 8007ea8: 08017e0c .word 0x08017e0c - -08007eac : - * @return non-zero on failure, zero on success. - * - */ -static u8_t -pbuf_add_header_impl(struct pbuf *p, size_t header_size_increment, u8_t force) -{ - 8007eac: b580 push {r7, lr} - 8007eae: b086 sub sp, #24 - 8007eb0: af00 add r7, sp, #0 - 8007eb2: 60f8 str r0, [r7, #12] - 8007eb4: 60b9 str r1, [r7, #8] - 8007eb6: 4613 mov r3, r2 - 8007eb8: 71fb strb r3, [r7, #7] - u16_t type_internal; - void *payload; - u16_t increment_magnitude; - - LWIP_ASSERT("p != NULL", p != NULL); - 8007eba: 68fb ldr r3, [r7, #12] - 8007ebc: 2b00 cmp r3, #0 - 8007ebe: d106 bne.n 8007ece - 8007ec0: 4b2b ldr r3, [pc, #172] @ (8007f70 ) - 8007ec2: f240 12df movw r2, #479 @ 0x1df - 8007ec6: 492b ldr r1, [pc, #172] @ (8007f74 ) - 8007ec8: 482b ldr r0, [pc, #172] @ (8007f78 ) - 8007eca: f00a fed5 bl 8012c78 - if ((p == NULL) || (header_size_increment > 0xFFFF)) { - 8007ece: 68fb ldr r3, [r7, #12] - 8007ed0: 2b00 cmp r3, #0 - 8007ed2: d003 beq.n 8007edc - 8007ed4: 68bb ldr r3, [r7, #8] - 8007ed6: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8007eda: d301 bcc.n 8007ee0 - return 1; - 8007edc: 2301 movs r3, #1 - 8007ede: e043 b.n 8007f68 - } - if (header_size_increment == 0) { - 8007ee0: 68bb ldr r3, [r7, #8] - 8007ee2: 2b00 cmp r3, #0 - 8007ee4: d101 bne.n 8007eea - return 0; - 8007ee6: 2300 movs r3, #0 - 8007ee8: e03e b.n 8007f68 - } - - increment_magnitude = (u16_t)header_size_increment; - 8007eea: 68bb ldr r3, [r7, #8] - 8007eec: 827b strh r3, [r7, #18] - /* Do not allow tot_len to wrap as a result. */ - if ((u16_t)(increment_magnitude + p->tot_len) < increment_magnitude) { - 8007eee: 68fb ldr r3, [r7, #12] - 8007ef0: 891a ldrh r2, [r3, #8] - 8007ef2: 8a7b ldrh r3, [r7, #18] - 8007ef4: 4413 add r3, r2 - 8007ef6: b29b uxth r3, r3 - 8007ef8: 8a7a ldrh r2, [r7, #18] - 8007efa: 429a cmp r2, r3 - 8007efc: d901 bls.n 8007f02 - return 1; - 8007efe: 2301 movs r3, #1 - 8007f00: e032 b.n 8007f68 - } - - type_internal = p->type_internal; - 8007f02: 68fb ldr r3, [r7, #12] - 8007f04: 7b1b ldrb r3, [r3, #12] - 8007f06: 823b strh r3, [r7, #16] - - /* pbuf types containing payloads? */ - if (type_internal & PBUF_TYPE_FLAG_STRUCT_DATA_CONTIGUOUS) { - 8007f08: 8a3b ldrh r3, [r7, #16] - 8007f0a: f003 0380 and.w r3, r3, #128 @ 0x80 - 8007f0e: 2b00 cmp r3, #0 - 8007f10: d00c beq.n 8007f2c - /* set new payload pointer */ - payload = (u8_t *)p->payload - header_size_increment; - 8007f12: 68fb ldr r3, [r7, #12] - 8007f14: 685a ldr r2, [r3, #4] - 8007f16: 68bb ldr r3, [r7, #8] - 8007f18: 425b negs r3, r3 - 8007f1a: 4413 add r3, r2 - 8007f1c: 617b str r3, [r7, #20] - /* boundary check fails? */ - if ((u8_t *)payload < (u8_t *)p + SIZEOF_STRUCT_PBUF) { - 8007f1e: 68fb ldr r3, [r7, #12] - 8007f20: 3310 adds r3, #16 - 8007f22: 697a ldr r2, [r7, #20] - 8007f24: 429a cmp r2, r3 - 8007f26: d20d bcs.n 8007f44 - LWIP_DEBUGF( PBUF_DEBUG | LWIP_DBG_TRACE, - ("pbuf_add_header: failed as %p < %p (not enough space for new header size)\n", - (void *)payload, (void *)((u8_t *)p + SIZEOF_STRUCT_PBUF))); - /* bail out unsuccessfully */ - return 1; - 8007f28: 2301 movs r3, #1 - 8007f2a: e01d b.n 8007f68 - } - /* pbuf types referring to external payloads? */ - } else { - /* hide a header in the payload? */ - if (force) { - 8007f2c: 79fb ldrb r3, [r7, #7] - 8007f2e: 2b00 cmp r3, #0 - 8007f30: d006 beq.n 8007f40 - payload = (u8_t *)p->payload - header_size_increment; - 8007f32: 68fb ldr r3, [r7, #12] - 8007f34: 685a ldr r2, [r3, #4] - 8007f36: 68bb ldr r3, [r7, #8] - 8007f38: 425b negs r3, r3 - 8007f3a: 4413 add r3, r2 - 8007f3c: 617b str r3, [r7, #20] - 8007f3e: e001 b.n 8007f44 - } else { - /* cannot expand payload to front (yet!) - * bail out unsuccessfully */ - return 1; - 8007f40: 2301 movs r3, #1 - 8007f42: e011 b.n 8007f68 - } - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_add_header: old %p new %p (%"U16_F")\n", - (void *)p->payload, (void *)payload, increment_magnitude)); - - /* modify pbuf fields */ - p->payload = payload; - 8007f44: 68fb ldr r3, [r7, #12] - 8007f46: 697a ldr r2, [r7, #20] - 8007f48: 605a str r2, [r3, #4] - p->len = (u16_t)(p->len + increment_magnitude); - 8007f4a: 68fb ldr r3, [r7, #12] - 8007f4c: 895a ldrh r2, [r3, #10] - 8007f4e: 8a7b ldrh r3, [r7, #18] - 8007f50: 4413 add r3, r2 - 8007f52: b29a uxth r2, r3 - 8007f54: 68fb ldr r3, [r7, #12] - 8007f56: 815a strh r2, [r3, #10] - p->tot_len = (u16_t)(p->tot_len + increment_magnitude); - 8007f58: 68fb ldr r3, [r7, #12] - 8007f5a: 891a ldrh r2, [r3, #8] - 8007f5c: 8a7b ldrh r3, [r7, #18] - 8007f5e: 4413 add r3, r2 - 8007f60: b29a uxth r2, r3 - 8007f62: 68fb ldr r3, [r7, #12] - 8007f64: 811a strh r2, [r3, #8] - - - return 0; - 8007f66: 2300 movs r3, #0 -} - 8007f68: 4618 mov r0, r3 - 8007f6a: 3718 adds r7, #24 - 8007f6c: 46bd mov sp, r7 - 8007f6e: bd80 pop {r7, pc} - 8007f70: 08017cc4 .word 0x08017cc4 - 8007f74: 08017e28 .word 0x08017e28 - 8007f78: 08017d24 .word 0x08017d24 - -08007f7c : - * @return non-zero on failure, zero on success. - * - */ -u8_t -pbuf_add_header(struct pbuf *p, size_t header_size_increment) -{ - 8007f7c: b580 push {r7, lr} - 8007f7e: b082 sub sp, #8 - 8007f80: af00 add r7, sp, #0 - 8007f82: 6078 str r0, [r7, #4] - 8007f84: 6039 str r1, [r7, #0] - return pbuf_add_header_impl(p, header_size_increment, 0); - 8007f86: 2200 movs r2, #0 - 8007f88: 6839 ldr r1, [r7, #0] - 8007f8a: 6878 ldr r0, [r7, #4] - 8007f8c: f7ff ff8e bl 8007eac - 8007f90: 4603 mov r3, r0 -} - 8007f92: 4618 mov r0, r3 - 8007f94: 3708 adds r7, #8 - 8007f96: 46bd mov sp, r7 - 8007f98: bd80 pop {r7, pc} - ... - -08007f9c : - * @return non-zero on failure, zero on success. - * - */ -u8_t -pbuf_remove_header(struct pbuf *p, size_t header_size_decrement) -{ - 8007f9c: b580 push {r7, lr} - 8007f9e: b084 sub sp, #16 - 8007fa0: af00 add r7, sp, #0 - 8007fa2: 6078 str r0, [r7, #4] - 8007fa4: 6039 str r1, [r7, #0] - void *payload; - u16_t increment_magnitude; - - LWIP_ASSERT("p != NULL", p != NULL); - 8007fa6: 687b ldr r3, [r7, #4] - 8007fa8: 2b00 cmp r3, #0 - 8007faa: d106 bne.n 8007fba - 8007fac: 4b20 ldr r3, [pc, #128] @ (8008030 ) - 8007fae: f240 224b movw r2, #587 @ 0x24b - 8007fb2: 4920 ldr r1, [pc, #128] @ (8008034 ) - 8007fb4: 4820 ldr r0, [pc, #128] @ (8008038 ) - 8007fb6: f00a fe5f bl 8012c78 - if ((p == NULL) || (header_size_decrement > 0xFFFF)) { - 8007fba: 687b ldr r3, [r7, #4] - 8007fbc: 2b00 cmp r3, #0 - 8007fbe: d003 beq.n 8007fc8 - 8007fc0: 683b ldr r3, [r7, #0] - 8007fc2: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8007fc6: d301 bcc.n 8007fcc - return 1; - 8007fc8: 2301 movs r3, #1 - 8007fca: e02c b.n 8008026 - } - if (header_size_decrement == 0) { - 8007fcc: 683b ldr r3, [r7, #0] - 8007fce: 2b00 cmp r3, #0 - 8007fd0: d101 bne.n 8007fd6 - return 0; - 8007fd2: 2300 movs r3, #0 - 8007fd4: e027 b.n 8008026 - } - - increment_magnitude = (u16_t)header_size_decrement; - 8007fd6: 683b ldr r3, [r7, #0] - 8007fd8: 81fb strh r3, [r7, #14] - /* Check that we aren't going to move off the end of the pbuf */ - LWIP_ERROR("increment_magnitude <= p->len", (increment_magnitude <= p->len), return 1;); - 8007fda: 687b ldr r3, [r7, #4] - 8007fdc: 895b ldrh r3, [r3, #10] - 8007fde: 89fa ldrh r2, [r7, #14] - 8007fe0: 429a cmp r2, r3 - 8007fe2: d908 bls.n 8007ff6 - 8007fe4: 4b12 ldr r3, [pc, #72] @ (8008030 ) - 8007fe6: f240 2255 movw r2, #597 @ 0x255 - 8007fea: 4914 ldr r1, [pc, #80] @ (800803c ) - 8007fec: 4812 ldr r0, [pc, #72] @ (8008038 ) - 8007fee: f00a fe43 bl 8012c78 - 8007ff2: 2301 movs r3, #1 - 8007ff4: e017 b.n 8008026 - - /* remember current payload pointer */ - payload = p->payload; - 8007ff6: 687b ldr r3, [r7, #4] - 8007ff8: 685b ldr r3, [r3, #4] - 8007ffa: 60bb str r3, [r7, #8] - LWIP_UNUSED_ARG(payload); /* only used in LWIP_DEBUGF below */ - - /* increase payload pointer (guarded by length check above) */ - p->payload = (u8_t *)p->payload + header_size_decrement; - 8007ffc: 687b ldr r3, [r7, #4] - 8007ffe: 685a ldr r2, [r3, #4] - 8008000: 683b ldr r3, [r7, #0] - 8008002: 441a add r2, r3 - 8008004: 687b ldr r3, [r7, #4] - 8008006: 605a str r2, [r3, #4] - /* modify pbuf length fields */ - p->len = (u16_t)(p->len - increment_magnitude); - 8008008: 687b ldr r3, [r7, #4] - 800800a: 895a ldrh r2, [r3, #10] - 800800c: 89fb ldrh r3, [r7, #14] - 800800e: 1ad3 subs r3, r2, r3 - 8008010: b29a uxth r2, r3 - 8008012: 687b ldr r3, [r7, #4] - 8008014: 815a strh r2, [r3, #10] - p->tot_len = (u16_t)(p->tot_len - increment_magnitude); - 8008016: 687b ldr r3, [r7, #4] - 8008018: 891a ldrh r2, [r3, #8] - 800801a: 89fb ldrh r3, [r7, #14] - 800801c: 1ad3 subs r3, r2, r3 - 800801e: b29a uxth r2, r3 - 8008020: 687b ldr r3, [r7, #4] - 8008022: 811a strh r2, [r3, #8] - - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_remove_header: old %p new %p (%"U16_F")\n", - (void *)payload, (void *)p->payload, increment_magnitude)); - - return 0; - 8008024: 2300 movs r3, #0 -} - 8008026: 4618 mov r0, r3 - 8008028: 3710 adds r7, #16 - 800802a: 46bd mov sp, r7 - 800802c: bd80 pop {r7, pc} - 800802e: bf00 nop - 8008030: 08017cc4 .word 0x08017cc4 - 8008034: 08017e28 .word 0x08017e28 - 8008038: 08017d24 .word 0x08017d24 - 800803c: 08017e34 .word 0x08017e34 - -08008040 : - -static u8_t -pbuf_header_impl(struct pbuf *p, s16_t header_size_increment, u8_t force) -{ - 8008040: b580 push {r7, lr} - 8008042: b082 sub sp, #8 - 8008044: af00 add r7, sp, #0 - 8008046: 6078 str r0, [r7, #4] - 8008048: 460b mov r3, r1 - 800804a: 807b strh r3, [r7, #2] - 800804c: 4613 mov r3, r2 - 800804e: 707b strb r3, [r7, #1] - if (header_size_increment < 0) { - 8008050: f9b7 3002 ldrsh.w r3, [r7, #2] - 8008054: 2b00 cmp r3, #0 - 8008056: da08 bge.n 800806a - return pbuf_remove_header(p, (size_t) - header_size_increment); - 8008058: f9b7 3002 ldrsh.w r3, [r7, #2] - 800805c: 425b negs r3, r3 - 800805e: 4619 mov r1, r3 - 8008060: 6878 ldr r0, [r7, #4] - 8008062: f7ff ff9b bl 8007f9c - 8008066: 4603 mov r3, r0 - 8008068: e007 b.n 800807a - } else { - return pbuf_add_header_impl(p, (size_t)header_size_increment, force); - 800806a: f9b7 3002 ldrsh.w r3, [r7, #2] - 800806e: 787a ldrb r2, [r7, #1] - 8008070: 4619 mov r1, r3 - 8008072: 6878 ldr r0, [r7, #4] - 8008074: f7ff ff1a bl 8007eac - 8008078: 4603 mov r3, r0 - } -} - 800807a: 4618 mov r0, r3 - 800807c: 3708 adds r7, #8 - 800807e: 46bd mov sp, r7 - 8008080: bd80 pop {r7, pc} - -08008082 : - * Same as pbuf_header but does not check if 'header_size > 0' is allowed. - * This is used internally only, to allow PBUF_REF for RX. - */ -u8_t -pbuf_header_force(struct pbuf *p, s16_t header_size_increment) -{ - 8008082: b580 push {r7, lr} - 8008084: b082 sub sp, #8 - 8008086: af00 add r7, sp, #0 - 8008088: 6078 str r0, [r7, #4] - 800808a: 460b mov r3, r1 - 800808c: 807b strh r3, [r7, #2] - return pbuf_header_impl(p, header_size_increment, 1); - 800808e: f9b7 3002 ldrsh.w r3, [r7, #2] - 8008092: 2201 movs r2, #1 - 8008094: 4619 mov r1, r3 - 8008096: 6878 ldr r0, [r7, #4] - 8008098: f7ff ffd2 bl 8008040 - 800809c: 4603 mov r3, r0 -} - 800809e: 4618 mov r0, r3 - 80080a0: 3708 adds r7, #8 - 80080a2: 46bd mov sp, r7 - 80080a4: bd80 pop {r7, pc} - ... - -080080a8 : - * 1->1->1 becomes ....... - * - */ -u8_t -pbuf_free(struct pbuf *p) -{ - 80080a8: b580 push {r7, lr} - 80080aa: b086 sub sp, #24 - 80080ac: af00 add r7, sp, #0 - 80080ae: 6078 str r0, [r7, #4] - u8_t alloc_src; - struct pbuf *q; - u8_t count; - - if (p == NULL) { - 80080b0: 687b ldr r3, [r7, #4] - 80080b2: 2b00 cmp r3, #0 - 80080b4: d10b bne.n 80080ce - LWIP_ASSERT("p != NULL", p != NULL); - 80080b6: 687b ldr r3, [r7, #4] - 80080b8: 2b00 cmp r3, #0 - 80080ba: d106 bne.n 80080ca - 80080bc: 4b38 ldr r3, [pc, #224] @ (80081a0 ) - 80080be: f44f 7237 mov.w r2, #732 @ 0x2dc - 80080c2: 4938 ldr r1, [pc, #224] @ (80081a4 ) - 80080c4: 4838 ldr r0, [pc, #224] @ (80081a8 ) - 80080c6: f00a fdd7 bl 8012c78 - /* if assertions are disabled, proceed with debug output */ - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("pbuf_free(p == NULL) was called.\n")); - return 0; - 80080ca: 2300 movs r3, #0 - 80080cc: e063 b.n 8008196 - } - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_free(%p)\n", (void *)p)); - - PERF_START; - - count = 0; - 80080ce: 2300 movs r3, #0 - 80080d0: 75fb strb r3, [r7, #23] - /* de-allocate all consecutive pbufs from the head of the chain that - * obtain a zero reference count after decrementing*/ - while (p != NULL) { - 80080d2: e05c b.n 800818e - /* Since decrementing ref cannot be guaranteed to be a single machine operation - * we must protect it. We put the new ref into a local variable to prevent - * further protection. */ - SYS_ARCH_PROTECT(old_level); - /* all pbufs in a chain are referenced at least once */ - LWIP_ASSERT("pbuf_free: p->ref > 0", p->ref > 0); - 80080d4: 687b ldr r3, [r7, #4] - 80080d6: 7b9b ldrb r3, [r3, #14] - 80080d8: 2b00 cmp r3, #0 - 80080da: d106 bne.n 80080ea - 80080dc: 4b30 ldr r3, [pc, #192] @ (80081a0 ) - 80080de: f240 22f1 movw r2, #753 @ 0x2f1 - 80080e2: 4932 ldr r1, [pc, #200] @ (80081ac ) - 80080e4: 4830 ldr r0, [pc, #192] @ (80081a8 ) - 80080e6: f00a fdc7 bl 8012c78 - /* decrease reference count (number of pointers to pbuf) */ - ref = --(p->ref); - 80080ea: 687b ldr r3, [r7, #4] - 80080ec: 7b9b ldrb r3, [r3, #14] - 80080ee: 3b01 subs r3, #1 - 80080f0: b2da uxtb r2, r3 - 80080f2: 687b ldr r3, [r7, #4] - 80080f4: 739a strb r2, [r3, #14] - 80080f6: 687b ldr r3, [r7, #4] - 80080f8: 7b9b ldrb r3, [r3, #14] - 80080fa: 75bb strb r3, [r7, #22] - SYS_ARCH_UNPROTECT(old_level); - /* this pbuf is no longer referenced to? */ - if (ref == 0) { - 80080fc: 7dbb ldrb r3, [r7, #22] - 80080fe: 2b00 cmp r3, #0 - 8008100: d143 bne.n 800818a - /* remember next pbuf in chain for next iteration */ - q = p->next; - 8008102: 687b ldr r3, [r7, #4] - 8008104: 681b ldr r3, [r3, #0] - 8008106: 613b str r3, [r7, #16] - LWIP_DEBUGF( PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_free: deallocating %p\n", (void *)p)); - alloc_src = pbuf_get_allocsrc(p); - 8008108: 687b ldr r3, [r7, #4] - 800810a: 7b1b ldrb r3, [r3, #12] - 800810c: f003 030f and.w r3, r3, #15 - 8008110: 73fb strb r3, [r7, #15] -#if LWIP_SUPPORT_CUSTOM_PBUF - /* is this a custom pbuf? */ - if ((p->flags & PBUF_FLAG_IS_CUSTOM) != 0) { - 8008112: 687b ldr r3, [r7, #4] - 8008114: 7b5b ldrb r3, [r3, #13] - 8008116: f003 0302 and.w r3, r3, #2 - 800811a: 2b00 cmp r3, #0 - 800811c: d011 beq.n 8008142 - struct pbuf_custom *pc = (struct pbuf_custom *)p; - 800811e: 687b ldr r3, [r7, #4] - 8008120: 60bb str r3, [r7, #8] - LWIP_ASSERT("pc->custom_free_function != NULL", pc->custom_free_function != NULL); - 8008122: 68bb ldr r3, [r7, #8] - 8008124: 691b ldr r3, [r3, #16] - 8008126: 2b00 cmp r3, #0 - 8008128: d106 bne.n 8008138 - 800812a: 4b1d ldr r3, [pc, #116] @ (80081a0 ) - 800812c: f240 22ff movw r2, #767 @ 0x2ff - 8008130: 491f ldr r1, [pc, #124] @ (80081b0 ) - 8008132: 481d ldr r0, [pc, #116] @ (80081a8 ) - 8008134: f00a fda0 bl 8012c78 - pc->custom_free_function(p); - 8008138: 68bb ldr r3, [r7, #8] - 800813a: 691b ldr r3, [r3, #16] - 800813c: 6878 ldr r0, [r7, #4] - 800813e: 4798 blx r3 - 8008140: e01d b.n 800817e - } else -#endif /* LWIP_SUPPORT_CUSTOM_PBUF */ - { - /* is this a pbuf from the pool? */ - if (alloc_src == PBUF_TYPE_ALLOC_SRC_MASK_STD_MEMP_PBUF_POOL) { - 8008142: 7bfb ldrb r3, [r7, #15] - 8008144: 2b02 cmp r3, #2 - 8008146: d104 bne.n 8008152 - memp_free(MEMP_PBUF_POOL, p); - 8008148: 6879 ldr r1, [r7, #4] - 800814a: 2008 movs r0, #8 - 800814c: f7ff f92c bl 80073a8 - 8008150: e015 b.n 800817e - /* is this a ROM or RAM referencing pbuf? */ - } else if (alloc_src == PBUF_TYPE_ALLOC_SRC_MASK_STD_MEMP_PBUF) { - 8008152: 7bfb ldrb r3, [r7, #15] - 8008154: 2b01 cmp r3, #1 - 8008156: d104 bne.n 8008162 - memp_free(MEMP_PBUF, p); - 8008158: 6879 ldr r1, [r7, #4] - 800815a: 2007 movs r0, #7 - 800815c: f7ff f924 bl 80073a8 - 8008160: e00d b.n 800817e - /* type == PBUF_RAM */ - } else if (alloc_src == PBUF_TYPE_ALLOC_SRC_MASK_STD_HEAP) { - 8008162: 7bfb ldrb r3, [r7, #15] - 8008164: 2b00 cmp r3, #0 - 8008166: d103 bne.n 8008170 - mem_free(p); - 8008168: 6878 ldr r0, [r7, #4] - 800816a: f7fe fdcb bl 8006d04 - 800816e: e006 b.n 800817e - } else { - /* @todo: support freeing other types */ - LWIP_ASSERT("invalid pbuf type", 0); - 8008170: 4b0b ldr r3, [pc, #44] @ (80081a0 ) - 8008172: f240 320f movw r2, #783 @ 0x30f - 8008176: 490f ldr r1, [pc, #60] @ (80081b4 ) - 8008178: 480b ldr r0, [pc, #44] @ (80081a8 ) - 800817a: f00a fd7d bl 8012c78 - } - } - count++; - 800817e: 7dfb ldrb r3, [r7, #23] - 8008180: 3301 adds r3, #1 - 8008182: 75fb strb r3, [r7, #23] - /* proceed to next pbuf */ - p = q; - 8008184: 693b ldr r3, [r7, #16] - 8008186: 607b str r3, [r7, #4] - 8008188: e001 b.n 800818e - /* p->ref > 0, this pbuf is still referenced to */ - /* (and so the remaining pbufs in chain as well) */ - } else { - LWIP_DEBUGF( PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_free: %p has ref %"U16_F", ending here.\n", (void *)p, (u16_t)ref)); - /* stop walking through the chain */ - p = NULL; - 800818a: 2300 movs r3, #0 - 800818c: 607b str r3, [r7, #4] - while (p != NULL) { - 800818e: 687b ldr r3, [r7, #4] - 8008190: 2b00 cmp r3, #0 - 8008192: d19f bne.n 80080d4 - } - } - PERF_STOP("pbuf_free"); - /* return number of de-allocated pbufs */ - return count; - 8008194: 7dfb ldrb r3, [r7, #23] -} - 8008196: 4618 mov r0, r3 - 8008198: 3718 adds r7, #24 - 800819a: 46bd mov sp, r7 - 800819c: bd80 pop {r7, pc} - 800819e: bf00 nop - 80081a0: 08017cc4 .word 0x08017cc4 - 80081a4: 08017e28 .word 0x08017e28 - 80081a8: 08017d24 .word 0x08017d24 - 80081ac: 08017e54 .word 0x08017e54 - 80081b0: 08017e6c .word 0x08017e6c - 80081b4: 08017e90 .word 0x08017e90 - -080081b8 : - * @param p first pbuf of chain - * @return the number of pbufs in a chain - */ -u16_t -pbuf_clen(const struct pbuf *p) -{ - 80081b8: b480 push {r7} - 80081ba: b085 sub sp, #20 - 80081bc: af00 add r7, sp, #0 - 80081be: 6078 str r0, [r7, #4] - u16_t len; - - len = 0; - 80081c0: 2300 movs r3, #0 - 80081c2: 81fb strh r3, [r7, #14] - while (p != NULL) { - 80081c4: e005 b.n 80081d2 - ++len; - 80081c6: 89fb ldrh r3, [r7, #14] - 80081c8: 3301 adds r3, #1 - 80081ca: 81fb strh r3, [r7, #14] - p = p->next; - 80081cc: 687b ldr r3, [r7, #4] - 80081ce: 681b ldr r3, [r3, #0] - 80081d0: 607b str r3, [r7, #4] - while (p != NULL) { - 80081d2: 687b ldr r3, [r7, #4] - 80081d4: 2b00 cmp r3, #0 - 80081d6: d1f6 bne.n 80081c6 - } - return len; - 80081d8: 89fb ldrh r3, [r7, #14] -} - 80081da: 4618 mov r0, r3 - 80081dc: 3714 adds r7, #20 - 80081de: 46bd mov sp, r7 - 80081e0: f85d 7b04 ldr.w r7, [sp], #4 - 80081e4: 4770 bx lr - ... - -080081e8 : - * @param p pbuf to increase reference counter of - * - */ -void -pbuf_ref(struct pbuf *p) -{ - 80081e8: b580 push {r7, lr} - 80081ea: b082 sub sp, #8 - 80081ec: af00 add r7, sp, #0 - 80081ee: 6078 str r0, [r7, #4] - /* pbuf given? */ - if (p != NULL) { - 80081f0: 687b ldr r3, [r7, #4] - 80081f2: 2b00 cmp r3, #0 - 80081f4: d010 beq.n 8008218 - SYS_ARCH_SET(p->ref, (LWIP_PBUF_REF_T)(p->ref + 1)); - 80081f6: 687b ldr r3, [r7, #4] - 80081f8: 7b9b ldrb r3, [r3, #14] - 80081fa: 3301 adds r3, #1 - 80081fc: b2da uxtb r2, r3 - 80081fe: 687b ldr r3, [r7, #4] - 8008200: 739a strb r2, [r3, #14] - LWIP_ASSERT("pbuf ref overflow", p->ref > 0); - 8008202: 687b ldr r3, [r7, #4] - 8008204: 7b9b ldrb r3, [r3, #14] - 8008206: 2b00 cmp r3, #0 - 8008208: d106 bne.n 8008218 - 800820a: 4b05 ldr r3, [pc, #20] @ (8008220 ) - 800820c: f240 3242 movw r2, #834 @ 0x342 - 8008210: 4904 ldr r1, [pc, #16] @ (8008224 ) - 8008212: 4805 ldr r0, [pc, #20] @ (8008228 ) - 8008214: f00a fd30 bl 8012c78 - } -} - 8008218: bf00 nop - 800821a: 3708 adds r7, #8 - 800821c: 46bd mov sp, r7 - 800821e: bd80 pop {r7, pc} - 8008220: 08017cc4 .word 0x08017cc4 - 8008224: 08017ea4 .word 0x08017ea4 - 8008228: 08017d24 .word 0x08017d24 - -0800822c : - * - * @see pbuf_chain() - */ -void -pbuf_cat(struct pbuf *h, struct pbuf *t) -{ - 800822c: b580 push {r7, lr} - 800822e: b084 sub sp, #16 - 8008230: af00 add r7, sp, #0 - 8008232: 6078 str r0, [r7, #4] - 8008234: 6039 str r1, [r7, #0] - struct pbuf *p; - - LWIP_ERROR("(h != NULL) && (t != NULL) (programmer violates API)", - 8008236: 687b ldr r3, [r7, #4] - 8008238: 2b00 cmp r3, #0 - 800823a: d002 beq.n 8008242 - 800823c: 683b ldr r3, [r7, #0] - 800823e: 2b00 cmp r3, #0 - 8008240: d107 bne.n 8008252 - 8008242: 4b20 ldr r3, [pc, #128] @ (80082c4 ) - 8008244: f240 3259 movw r2, #857 @ 0x359 - 8008248: 491f ldr r1, [pc, #124] @ (80082c8 ) - 800824a: 4820 ldr r0, [pc, #128] @ (80082cc ) - 800824c: f00a fd14 bl 8012c78 - 8008250: e034 b.n 80082bc - ((h != NULL) && (t != NULL)), return;); - - /* proceed to last pbuf of chain */ - for (p = h; p->next != NULL; p = p->next) { - 8008252: 687b ldr r3, [r7, #4] - 8008254: 60fb str r3, [r7, #12] - 8008256: e00a b.n 800826e - /* add total length of second chain to all totals of first chain */ - p->tot_len = (u16_t)(p->tot_len + t->tot_len); - 8008258: 68fb ldr r3, [r7, #12] - 800825a: 891a ldrh r2, [r3, #8] - 800825c: 683b ldr r3, [r7, #0] - 800825e: 891b ldrh r3, [r3, #8] - 8008260: 4413 add r3, r2 - 8008262: b29a uxth r2, r3 - 8008264: 68fb ldr r3, [r7, #12] - 8008266: 811a strh r2, [r3, #8] - for (p = h; p->next != NULL; p = p->next) { - 8008268: 68fb ldr r3, [r7, #12] - 800826a: 681b ldr r3, [r3, #0] - 800826c: 60fb str r3, [r7, #12] - 800826e: 68fb ldr r3, [r7, #12] - 8008270: 681b ldr r3, [r3, #0] - 8008272: 2b00 cmp r3, #0 - 8008274: d1f0 bne.n 8008258 - } - /* { p is last pbuf of first h chain, p->next == NULL } */ - LWIP_ASSERT("p->tot_len == p->len (of last pbuf in chain)", p->tot_len == p->len); - 8008276: 68fb ldr r3, [r7, #12] - 8008278: 891a ldrh r2, [r3, #8] - 800827a: 68fb ldr r3, [r7, #12] - 800827c: 895b ldrh r3, [r3, #10] - 800827e: 429a cmp r2, r3 - 8008280: d006 beq.n 8008290 - 8008282: 4b10 ldr r3, [pc, #64] @ (80082c4 ) - 8008284: f240 3262 movw r2, #866 @ 0x362 - 8008288: 4911 ldr r1, [pc, #68] @ (80082d0 ) - 800828a: 4810 ldr r0, [pc, #64] @ (80082cc ) - 800828c: f00a fcf4 bl 8012c78 - LWIP_ASSERT("p->next == NULL", p->next == NULL); - 8008290: 68fb ldr r3, [r7, #12] - 8008292: 681b ldr r3, [r3, #0] - 8008294: 2b00 cmp r3, #0 - 8008296: d006 beq.n 80082a6 - 8008298: 4b0a ldr r3, [pc, #40] @ (80082c4 ) - 800829a: f240 3263 movw r2, #867 @ 0x363 - 800829e: 490d ldr r1, [pc, #52] @ (80082d4 ) - 80082a0: 480a ldr r0, [pc, #40] @ (80082cc ) - 80082a2: f00a fce9 bl 8012c78 - /* add total length of second chain to last pbuf total of first chain */ - p->tot_len = (u16_t)(p->tot_len + t->tot_len); - 80082a6: 68fb ldr r3, [r7, #12] - 80082a8: 891a ldrh r2, [r3, #8] - 80082aa: 683b ldr r3, [r7, #0] - 80082ac: 891b ldrh r3, [r3, #8] - 80082ae: 4413 add r3, r2 - 80082b0: b29a uxth r2, r3 - 80082b2: 68fb ldr r3, [r7, #12] - 80082b4: 811a strh r2, [r3, #8] - /* chain last pbuf of head (p) with first of tail (t) */ - p->next = t; - 80082b6: 68fb ldr r3, [r7, #12] - 80082b8: 683a ldr r2, [r7, #0] - 80082ba: 601a str r2, [r3, #0] - /* p->next now references t, but the caller will drop its reference to t, - * so netto there is no change to the reference count of t. - */ -} - 80082bc: 3710 adds r7, #16 - 80082be: 46bd mov sp, r7 - 80082c0: bd80 pop {r7, pc} - 80082c2: bf00 nop - 80082c4: 08017cc4 .word 0x08017cc4 - 80082c8: 08017eb8 .word 0x08017eb8 - 80082cc: 08017d24 .word 0x08017d24 - 80082d0: 08017ef0 .word 0x08017ef0 - 80082d4: 08017f20 .word 0x08017f20 - -080082d8 : - * The ->ref field of the first pbuf of the tail chain is adjusted. - * - */ -void -pbuf_chain(struct pbuf *h, struct pbuf *t) -{ - 80082d8: b580 push {r7, lr} - 80082da: b082 sub sp, #8 - 80082dc: af00 add r7, sp, #0 - 80082de: 6078 str r0, [r7, #4] - 80082e0: 6039 str r1, [r7, #0] - pbuf_cat(h, t); - 80082e2: 6839 ldr r1, [r7, #0] - 80082e4: 6878 ldr r0, [r7, #4] - 80082e6: f7ff ffa1 bl 800822c - /* t is now referenced by h */ - pbuf_ref(t); - 80082ea: 6838 ldr r0, [r7, #0] - 80082ec: f7ff ff7c bl 80081e8 - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_chain: %p references %p\n", (void *)h, (void *)t)); -} - 80082f0: bf00 nop - 80082f2: 3708 adds r7, #8 - 80082f4: 46bd mov sp, r7 - 80082f6: bd80 pop {r7, pc} - -080082f8 : - * ERR_ARG if one of the pbufs is NULL or p_to is not big - * enough to hold p_from - */ -err_t -pbuf_copy(struct pbuf *p_to, const struct pbuf *p_from) -{ - 80082f8: b580 push {r7, lr} - 80082fa: b086 sub sp, #24 - 80082fc: af00 add r7, sp, #0 - 80082fe: 6078 str r0, [r7, #4] - 8008300: 6039 str r1, [r7, #0] - size_t offset_to = 0, offset_from = 0, len; - 8008302: 2300 movs r3, #0 - 8008304: 617b str r3, [r7, #20] - 8008306: 2300 movs r3, #0 - 8008308: 613b str r3, [r7, #16] - - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_copy(%p, %p)\n", - (const void *)p_to, (const void *)p_from)); - - /* is the target big enough to hold the source? */ - LWIP_ERROR("pbuf_copy: target not big enough to hold source", ((p_to != NULL) && - 800830a: 687b ldr r3, [r7, #4] - 800830c: 2b00 cmp r3, #0 - 800830e: d008 beq.n 8008322 - 8008310: 683b ldr r3, [r7, #0] - 8008312: 2b00 cmp r3, #0 - 8008314: d005 beq.n 8008322 - 8008316: 687b ldr r3, [r7, #4] - 8008318: 891a ldrh r2, [r3, #8] - 800831a: 683b ldr r3, [r7, #0] - 800831c: 891b ldrh r3, [r3, #8] - 800831e: 429a cmp r2, r3 - 8008320: d209 bcs.n 8008336 - 8008322: 4b57 ldr r3, [pc, #348] @ (8008480 ) - 8008324: f240 32c9 movw r2, #969 @ 0x3c9 - 8008328: 4956 ldr r1, [pc, #344] @ (8008484 ) - 800832a: 4857 ldr r0, [pc, #348] @ (8008488 ) - 800832c: f00a fca4 bl 8012c78 - 8008330: f06f 030f mvn.w r3, #15 - 8008334: e09f b.n 8008476 - (p_from != NULL) && (p_to->tot_len >= p_from->tot_len)), return ERR_ARG;); - - /* iterate through pbuf chain */ - do { - /* copy one part of the original chain */ - if ((p_to->len - offset_to) >= (p_from->len - offset_from)) { - 8008336: 687b ldr r3, [r7, #4] - 8008338: 895b ldrh r3, [r3, #10] - 800833a: 461a mov r2, r3 - 800833c: 697b ldr r3, [r7, #20] - 800833e: 1ad2 subs r2, r2, r3 - 8008340: 683b ldr r3, [r7, #0] - 8008342: 895b ldrh r3, [r3, #10] - 8008344: 4619 mov r1, r3 - 8008346: 693b ldr r3, [r7, #16] - 8008348: 1acb subs r3, r1, r3 - 800834a: 429a cmp r2, r3 - 800834c: d306 bcc.n 800835c - /* complete current p_from fits into current p_to */ - len = p_from->len - offset_from; - 800834e: 683b ldr r3, [r7, #0] - 8008350: 895b ldrh r3, [r3, #10] - 8008352: 461a mov r2, r3 - 8008354: 693b ldr r3, [r7, #16] - 8008356: 1ad3 subs r3, r2, r3 - 8008358: 60fb str r3, [r7, #12] - 800835a: e005 b.n 8008368 - } else { - /* current p_from does not fit into current p_to */ - len = p_to->len - offset_to; - 800835c: 687b ldr r3, [r7, #4] - 800835e: 895b ldrh r3, [r3, #10] - 8008360: 461a mov r2, r3 - 8008362: 697b ldr r3, [r7, #20] - 8008364: 1ad3 subs r3, r2, r3 - 8008366: 60fb str r3, [r7, #12] - } - MEMCPY((u8_t *)p_to->payload + offset_to, (u8_t *)p_from->payload + offset_from, len); - 8008368: 687b ldr r3, [r7, #4] - 800836a: 685a ldr r2, [r3, #4] - 800836c: 697b ldr r3, [r7, #20] - 800836e: 18d0 adds r0, r2, r3 - 8008370: 683b ldr r3, [r7, #0] - 8008372: 685a ldr r2, [r3, #4] - 8008374: 693b ldr r3, [r7, #16] - 8008376: 4413 add r3, r2 - 8008378: 68fa ldr r2, [r7, #12] - 800837a: 4619 mov r1, r3 - 800837c: f00a fd78 bl 8012e70 - offset_to += len; - 8008380: 697a ldr r2, [r7, #20] - 8008382: 68fb ldr r3, [r7, #12] - 8008384: 4413 add r3, r2 - 8008386: 617b str r3, [r7, #20] - offset_from += len; - 8008388: 693a ldr r2, [r7, #16] - 800838a: 68fb ldr r3, [r7, #12] - 800838c: 4413 add r3, r2 - 800838e: 613b str r3, [r7, #16] - LWIP_ASSERT("offset_to <= p_to->len", offset_to <= p_to->len); - 8008390: 687b ldr r3, [r7, #4] - 8008392: 895b ldrh r3, [r3, #10] - 8008394: 461a mov r2, r3 - 8008396: 697b ldr r3, [r7, #20] - 8008398: 4293 cmp r3, r2 - 800839a: d906 bls.n 80083aa - 800839c: 4b38 ldr r3, [pc, #224] @ (8008480 ) - 800839e: f240 32d9 movw r2, #985 @ 0x3d9 - 80083a2: 493a ldr r1, [pc, #232] @ (800848c ) - 80083a4: 4838 ldr r0, [pc, #224] @ (8008488 ) - 80083a6: f00a fc67 bl 8012c78 - LWIP_ASSERT("offset_from <= p_from->len", offset_from <= p_from->len); - 80083aa: 683b ldr r3, [r7, #0] - 80083ac: 895b ldrh r3, [r3, #10] - 80083ae: 461a mov r2, r3 - 80083b0: 693b ldr r3, [r7, #16] - 80083b2: 4293 cmp r3, r2 - 80083b4: d906 bls.n 80083c4 - 80083b6: 4b32 ldr r3, [pc, #200] @ (8008480 ) - 80083b8: f240 32da movw r2, #986 @ 0x3da - 80083bc: 4934 ldr r1, [pc, #208] @ (8008490 ) - 80083be: 4832 ldr r0, [pc, #200] @ (8008488 ) - 80083c0: f00a fc5a bl 8012c78 - if (offset_from >= p_from->len) { - 80083c4: 683b ldr r3, [r7, #0] - 80083c6: 895b ldrh r3, [r3, #10] - 80083c8: 461a mov r2, r3 - 80083ca: 693b ldr r3, [r7, #16] - 80083cc: 4293 cmp r3, r2 - 80083ce: d304 bcc.n 80083da - /* on to next p_from (if any) */ - offset_from = 0; - 80083d0: 2300 movs r3, #0 - 80083d2: 613b str r3, [r7, #16] - p_from = p_from->next; - 80083d4: 683b ldr r3, [r7, #0] - 80083d6: 681b ldr r3, [r3, #0] - 80083d8: 603b str r3, [r7, #0] - } - if (offset_to == p_to->len) { - 80083da: 687b ldr r3, [r7, #4] - 80083dc: 895b ldrh r3, [r3, #10] - 80083de: 461a mov r2, r3 - 80083e0: 697b ldr r3, [r7, #20] - 80083e2: 4293 cmp r3, r2 - 80083e4: d114 bne.n 8008410 - /* on to next p_to (if any) */ - offset_to = 0; - 80083e6: 2300 movs r3, #0 - 80083e8: 617b str r3, [r7, #20] - p_to = p_to->next; - 80083ea: 687b ldr r3, [r7, #4] - 80083ec: 681b ldr r3, [r3, #0] - 80083ee: 607b str r3, [r7, #4] - LWIP_ERROR("p_to != NULL", (p_to != NULL) || (p_from == NULL), return ERR_ARG;); - 80083f0: 687b ldr r3, [r7, #4] - 80083f2: 2b00 cmp r3, #0 - 80083f4: d10c bne.n 8008410 - 80083f6: 683b ldr r3, [r7, #0] - 80083f8: 2b00 cmp r3, #0 - 80083fa: d009 beq.n 8008410 - 80083fc: 4b20 ldr r3, [pc, #128] @ (8008480 ) - 80083fe: f44f 7279 mov.w r2, #996 @ 0x3e4 - 8008402: 4924 ldr r1, [pc, #144] @ (8008494 ) - 8008404: 4820 ldr r0, [pc, #128] @ (8008488 ) - 8008406: f00a fc37 bl 8012c78 - 800840a: f06f 030f mvn.w r3, #15 - 800840e: e032 b.n 8008476 - } - - if ((p_from != NULL) && (p_from->len == p_from->tot_len)) { - 8008410: 683b ldr r3, [r7, #0] - 8008412: 2b00 cmp r3, #0 - 8008414: d013 beq.n 800843e - 8008416: 683b ldr r3, [r7, #0] - 8008418: 895a ldrh r2, [r3, #10] - 800841a: 683b ldr r3, [r7, #0] - 800841c: 891b ldrh r3, [r3, #8] - 800841e: 429a cmp r2, r3 - 8008420: d10d bne.n 800843e - /* don't copy more than one packet! */ - LWIP_ERROR("pbuf_copy() does not allow packet queues!", - 8008422: 683b ldr r3, [r7, #0] - 8008424: 681b ldr r3, [r3, #0] - 8008426: 2b00 cmp r3, #0 - 8008428: d009 beq.n 800843e - 800842a: 4b15 ldr r3, [pc, #84] @ (8008480 ) - 800842c: f240 32e9 movw r2, #1001 @ 0x3e9 - 8008430: 4919 ldr r1, [pc, #100] @ (8008498 ) - 8008432: 4815 ldr r0, [pc, #84] @ (8008488 ) - 8008434: f00a fc20 bl 8012c78 - 8008438: f06f 0305 mvn.w r3, #5 - 800843c: e01b b.n 8008476 - (p_from->next == NULL), return ERR_VAL;); - } - if ((p_to != NULL) && (p_to->len == p_to->tot_len)) { - 800843e: 687b ldr r3, [r7, #4] - 8008440: 2b00 cmp r3, #0 - 8008442: d013 beq.n 800846c - 8008444: 687b ldr r3, [r7, #4] - 8008446: 895a ldrh r2, [r3, #10] - 8008448: 687b ldr r3, [r7, #4] - 800844a: 891b ldrh r3, [r3, #8] - 800844c: 429a cmp r2, r3 - 800844e: d10d bne.n 800846c - /* don't copy more than one packet! */ - LWIP_ERROR("pbuf_copy() does not allow packet queues!", - 8008450: 687b ldr r3, [r7, #4] - 8008452: 681b ldr r3, [r3, #0] - 8008454: 2b00 cmp r3, #0 - 8008456: d009 beq.n 800846c - 8008458: 4b09 ldr r3, [pc, #36] @ (8008480 ) - 800845a: f240 32ee movw r2, #1006 @ 0x3ee - 800845e: 490e ldr r1, [pc, #56] @ (8008498 ) - 8008460: 4809 ldr r0, [pc, #36] @ (8008488 ) - 8008462: f00a fc09 bl 8012c78 - 8008466: f06f 0305 mvn.w r3, #5 - 800846a: e004 b.n 8008476 - (p_to->next == NULL), return ERR_VAL;); - } - } while (p_from); - 800846c: 683b ldr r3, [r7, #0] - 800846e: 2b00 cmp r3, #0 - 8008470: f47f af61 bne.w 8008336 - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_copy: end of chain reached.\n")); - return ERR_OK; - 8008474: 2300 movs r3, #0 -} - 8008476: 4618 mov r0, r3 - 8008478: 3718 adds r7, #24 - 800847a: 46bd mov sp, r7 - 800847c: bd80 pop {r7, pc} - 800847e: bf00 nop - 8008480: 08017cc4 .word 0x08017cc4 - 8008484: 08017f6c .word 0x08017f6c - 8008488: 08017d24 .word 0x08017d24 - 800848c: 08017f9c .word 0x08017f9c - 8008490: 08017fb4 .word 0x08017fb4 - 8008494: 08017fd0 .word 0x08017fd0 - 8008498: 08017fe0 .word 0x08017fe0 - -0800849c : - * @param offset offset into the packet buffer from where to begin copying len bytes - * @return the number of bytes copied, or 0 on failure - */ -u16_t -pbuf_copy_partial(const struct pbuf *buf, void *dataptr, u16_t len, u16_t offset) -{ - 800849c: b580 push {r7, lr} - 800849e: b088 sub sp, #32 - 80084a0: af00 add r7, sp, #0 - 80084a2: 60f8 str r0, [r7, #12] - 80084a4: 60b9 str r1, [r7, #8] - 80084a6: 4611 mov r1, r2 - 80084a8: 461a mov r2, r3 - 80084aa: 460b mov r3, r1 - 80084ac: 80fb strh r3, [r7, #6] - 80084ae: 4613 mov r3, r2 - 80084b0: 80bb strh r3, [r7, #4] - const struct pbuf *p; - u16_t left = 0; - 80084b2: 2300 movs r3, #0 - 80084b4: 837b strh r3, [r7, #26] - u16_t buf_copy_len; - u16_t copied_total = 0; - 80084b6: 2300 movs r3, #0 - 80084b8: 82fb strh r3, [r7, #22] - - LWIP_ERROR("pbuf_copy_partial: invalid buf", (buf != NULL), return 0;); - 80084ba: 68fb ldr r3, [r7, #12] - 80084bc: 2b00 cmp r3, #0 - 80084be: d108 bne.n 80084d2 - 80084c0: 4b2b ldr r3, [pc, #172] @ (8008570 ) - 80084c2: f240 420a movw r2, #1034 @ 0x40a - 80084c6: 492b ldr r1, [pc, #172] @ (8008574 ) - 80084c8: 482b ldr r0, [pc, #172] @ (8008578 ) - 80084ca: f00a fbd5 bl 8012c78 - 80084ce: 2300 movs r3, #0 - 80084d0: e04a b.n 8008568 - LWIP_ERROR("pbuf_copy_partial: invalid dataptr", (dataptr != NULL), return 0;); - 80084d2: 68bb ldr r3, [r7, #8] - 80084d4: 2b00 cmp r3, #0 - 80084d6: d108 bne.n 80084ea - 80084d8: 4b25 ldr r3, [pc, #148] @ (8008570 ) - 80084da: f240 420b movw r2, #1035 @ 0x40b - 80084de: 4927 ldr r1, [pc, #156] @ (800857c ) - 80084e0: 4825 ldr r0, [pc, #148] @ (8008578 ) - 80084e2: f00a fbc9 bl 8012c78 - 80084e6: 2300 movs r3, #0 - 80084e8: e03e b.n 8008568 - - /* Note some systems use byte copy if dataptr or one of the pbuf payload pointers are unaligned. */ - for (p = buf; len != 0 && p != NULL; p = p->next) { - 80084ea: 68fb ldr r3, [r7, #12] - 80084ec: 61fb str r3, [r7, #28] - 80084ee: e034 b.n 800855a - if ((offset != 0) && (offset >= p->len)) { - 80084f0: 88bb ldrh r3, [r7, #4] - 80084f2: 2b00 cmp r3, #0 - 80084f4: d00a beq.n 800850c - 80084f6: 69fb ldr r3, [r7, #28] - 80084f8: 895b ldrh r3, [r3, #10] - 80084fa: 88ba ldrh r2, [r7, #4] - 80084fc: 429a cmp r2, r3 - 80084fe: d305 bcc.n 800850c - /* don't copy from this buffer -> on to the next */ - offset = (u16_t)(offset - p->len); - 8008500: 69fb ldr r3, [r7, #28] - 8008502: 895b ldrh r3, [r3, #10] - 8008504: 88ba ldrh r2, [r7, #4] - 8008506: 1ad3 subs r3, r2, r3 - 8008508: 80bb strh r3, [r7, #4] - 800850a: e023 b.n 8008554 - } else { - /* copy from this buffer. maybe only partially. */ - buf_copy_len = (u16_t)(p->len - offset); - 800850c: 69fb ldr r3, [r7, #28] - 800850e: 895a ldrh r2, [r3, #10] - 8008510: 88bb ldrh r3, [r7, #4] - 8008512: 1ad3 subs r3, r2, r3 - 8008514: 833b strh r3, [r7, #24] - if (buf_copy_len > len) { - 8008516: 8b3a ldrh r2, [r7, #24] - 8008518: 88fb ldrh r3, [r7, #6] - 800851a: 429a cmp r2, r3 - 800851c: d901 bls.n 8008522 - buf_copy_len = len; - 800851e: 88fb ldrh r3, [r7, #6] - 8008520: 833b strh r3, [r7, #24] - } - /* copy the necessary parts of the buffer */ - MEMCPY(&((char *)dataptr)[left], &((char *)p->payload)[offset], buf_copy_len); - 8008522: 8b7b ldrh r3, [r7, #26] - 8008524: 68ba ldr r2, [r7, #8] - 8008526: 18d0 adds r0, r2, r3 - 8008528: 69fb ldr r3, [r7, #28] - 800852a: 685a ldr r2, [r3, #4] - 800852c: 88bb ldrh r3, [r7, #4] - 800852e: 4413 add r3, r2 - 8008530: 8b3a ldrh r2, [r7, #24] - 8008532: 4619 mov r1, r3 - 8008534: f00a fc9c bl 8012e70 - copied_total = (u16_t)(copied_total + buf_copy_len); - 8008538: 8afa ldrh r2, [r7, #22] - 800853a: 8b3b ldrh r3, [r7, #24] - 800853c: 4413 add r3, r2 - 800853e: 82fb strh r3, [r7, #22] - left = (u16_t)(left + buf_copy_len); - 8008540: 8b7a ldrh r2, [r7, #26] - 8008542: 8b3b ldrh r3, [r7, #24] - 8008544: 4413 add r3, r2 - 8008546: 837b strh r3, [r7, #26] - len = (u16_t)(len - buf_copy_len); - 8008548: 88fa ldrh r2, [r7, #6] - 800854a: 8b3b ldrh r3, [r7, #24] - 800854c: 1ad3 subs r3, r2, r3 - 800854e: 80fb strh r3, [r7, #6] - offset = 0; - 8008550: 2300 movs r3, #0 - 8008552: 80bb strh r3, [r7, #4] - for (p = buf; len != 0 && p != NULL; p = p->next) { - 8008554: 69fb ldr r3, [r7, #28] - 8008556: 681b ldr r3, [r3, #0] - 8008558: 61fb str r3, [r7, #28] - 800855a: 88fb ldrh r3, [r7, #6] - 800855c: 2b00 cmp r3, #0 - 800855e: d002 beq.n 8008566 - 8008560: 69fb ldr r3, [r7, #28] - 8008562: 2b00 cmp r3, #0 - 8008564: d1c4 bne.n 80084f0 - } - } - return copied_total; - 8008566: 8afb ldrh r3, [r7, #22] -} - 8008568: 4618 mov r0, r3 - 800856a: 3720 adds r7, #32 - 800856c: 46bd mov sp, r7 - 800856e: bd80 pop {r7, pc} - 8008570: 08017cc4 .word 0x08017cc4 - 8008574: 0801800c .word 0x0801800c - 8008578: 08017d24 .word 0x08017d24 - 800857c: 0801802c .word 0x0801802c - -08008580 : - * - * @return a new pbuf or NULL if allocation fails - */ -struct pbuf * -pbuf_clone(pbuf_layer layer, pbuf_type type, struct pbuf *p) -{ - 8008580: b580 push {r7, lr} - 8008582: b084 sub sp, #16 - 8008584: af00 add r7, sp, #0 - 8008586: 4603 mov r3, r0 - 8008588: 603a str r2, [r7, #0] - 800858a: 71fb strb r3, [r7, #7] - 800858c: 460b mov r3, r1 - 800858e: 80bb strh r3, [r7, #4] - struct pbuf *q; - err_t err; - q = pbuf_alloc(layer, p->tot_len, type); - 8008590: 683b ldr r3, [r7, #0] - 8008592: 8919 ldrh r1, [r3, #8] - 8008594: 88ba ldrh r2, [r7, #4] - 8008596: 79fb ldrb r3, [r7, #7] - 8008598: 4618 mov r0, r3 - 800859a: f7ff faa3 bl 8007ae4 - 800859e: 60f8 str r0, [r7, #12] - if (q == NULL) { - 80085a0: 68fb ldr r3, [r7, #12] - 80085a2: 2b00 cmp r3, #0 - 80085a4: d101 bne.n 80085aa - return NULL; - 80085a6: 2300 movs r3, #0 - 80085a8: e011 b.n 80085ce - } - err = pbuf_copy(q, p); - 80085aa: 6839 ldr r1, [r7, #0] - 80085ac: 68f8 ldr r0, [r7, #12] - 80085ae: f7ff fea3 bl 80082f8 - 80085b2: 4603 mov r3, r0 - 80085b4: 72fb strb r3, [r7, #11] - LWIP_UNUSED_ARG(err); /* in case of LWIP_NOASSERT */ - LWIP_ASSERT("pbuf_copy failed", err == ERR_OK); - 80085b6: f997 300b ldrsb.w r3, [r7, #11] - 80085ba: 2b00 cmp r3, #0 - 80085bc: d006 beq.n 80085cc - 80085be: 4b06 ldr r3, [pc, #24] @ (80085d8 ) - 80085c0: f240 5224 movw r2, #1316 @ 0x524 - 80085c4: 4905 ldr r1, [pc, #20] @ (80085dc ) - 80085c6: 4806 ldr r0, [pc, #24] @ (80085e0 ) - 80085c8: f00a fb56 bl 8012c78 - return q; - 80085cc: 68fb ldr r3, [r7, #12] -} - 80085ce: 4618 mov r0, r3 - 80085d0: 3710 adds r7, #16 - 80085d2: 46bd mov sp, r7 - 80085d4: bd80 pop {r7, pc} - 80085d6: bf00 nop - 80085d8: 08017cc4 .word 0x08017cc4 - 80085dc: 08018138 .word 0x08018138 - 80085e0: 08017d24 .word 0x08017d24 - -080085e4 : -/** - * Initialize this module. - */ -void -tcp_init(void) -{ - 80085e4: b580 push {r7, lr} - 80085e6: af00 add r7, sp, #0 -#ifdef LWIP_RAND - tcp_port = TCP_ENSURE_LOCAL_PORT_RANGE(LWIP_RAND()); - 80085e8: f00a fa68 bl 8012abc - 80085ec: 4603 mov r3, r0 - 80085ee: b29b uxth r3, r3 - 80085f0: f3c3 030d ubfx r3, r3, #0, #14 - 80085f4: b29b uxth r3, r3 - 80085f6: f5a3 4380 sub.w r3, r3, #16384 @ 0x4000 - 80085fa: b29a uxth r2, r3 - 80085fc: 4b01 ldr r3, [pc, #4] @ (8008604 ) - 80085fe: 801a strh r2, [r3, #0] -#endif /* LWIP_RAND */ -} - 8008600: bf00 nop - 8008602: bd80 pop {r7, pc} - 8008604: 20000020 .word 0x20000020 - -08008608 : - -/** Free a tcp pcb */ -void -tcp_free(struct tcp_pcb *pcb) -{ - 8008608: b580 push {r7, lr} - 800860a: b082 sub sp, #8 - 800860c: af00 add r7, sp, #0 - 800860e: 6078 str r0, [r7, #4] - LWIP_ASSERT("tcp_free: LISTEN", pcb->state != LISTEN); - 8008610: 687b ldr r3, [r7, #4] - 8008612: 7d1b ldrb r3, [r3, #20] - 8008614: 2b01 cmp r3, #1 - 8008616: d105 bne.n 8008624 - 8008618: 4b06 ldr r3, [pc, #24] @ (8008634 ) - 800861a: 22d4 movs r2, #212 @ 0xd4 - 800861c: 4906 ldr r1, [pc, #24] @ (8008638 ) - 800861e: 4807 ldr r0, [pc, #28] @ (800863c ) - 8008620: f00a fb2a bl 8012c78 -#if LWIP_TCP_PCB_NUM_EXT_ARGS - tcp_ext_arg_invoke_callbacks_destroyed(pcb->ext_args); -#endif - memp_free(MEMP_TCP_PCB, pcb); - 8008624: 6879 ldr r1, [r7, #4] - 8008626: 2001 movs r0, #1 - 8008628: f7fe febe bl 80073a8 -} - 800862c: bf00 nop - 800862e: 3708 adds r7, #8 - 8008630: 46bd mov sp, r7 - 8008632: bd80 pop {r7, pc} - 8008634: 080181c4 .word 0x080181c4 - 8008638: 080181f4 .word 0x080181f4 - 800863c: 08018208 .word 0x08018208 - -08008640 : - -/** Free a tcp listen pcb */ -static void -tcp_free_listen(struct tcp_pcb *pcb) -{ - 8008640: b580 push {r7, lr} - 8008642: b082 sub sp, #8 - 8008644: af00 add r7, sp, #0 - 8008646: 6078 str r0, [r7, #4] - LWIP_ASSERT("tcp_free_listen: !LISTEN", pcb->state != LISTEN); - 8008648: 687b ldr r3, [r7, #4] - 800864a: 7d1b ldrb r3, [r3, #20] - 800864c: 2b01 cmp r3, #1 - 800864e: d105 bne.n 800865c - 8008650: 4b06 ldr r3, [pc, #24] @ (800866c ) - 8008652: 22df movs r2, #223 @ 0xdf - 8008654: 4906 ldr r1, [pc, #24] @ (8008670 ) - 8008656: 4807 ldr r0, [pc, #28] @ (8008674 ) - 8008658: f00a fb0e bl 8012c78 -#if LWIP_TCP_PCB_NUM_EXT_ARGS - tcp_ext_arg_invoke_callbacks_destroyed(pcb->ext_args); -#endif - memp_free(MEMP_TCP_PCB_LISTEN, pcb); - 800865c: 6879 ldr r1, [r7, #4] - 800865e: 2002 movs r0, #2 - 8008660: f7fe fea2 bl 80073a8 -} - 8008664: bf00 nop - 8008666: 3708 adds r7, #8 - 8008668: 46bd mov sp, r7 - 800866a: bd80 pop {r7, pc} - 800866c: 080181c4 .word 0x080181c4 - 8008670: 08018230 .word 0x08018230 - 8008674: 08018208 .word 0x08018208 - -08008678 : -/** - * Called periodically to dispatch TCP timers. - */ -void -tcp_tmr(void) -{ - 8008678: b580 push {r7, lr} - 800867a: af00 add r7, sp, #0 - /* Call tcp_fasttmr() every 250 ms */ - tcp_fasttmr(); - 800867c: f000 fea4 bl 80093c8 - - if (++tcp_timer & 1) { - 8008680: 4b07 ldr r3, [pc, #28] @ (80086a0 ) - 8008682: 781b ldrb r3, [r3, #0] - 8008684: 3301 adds r3, #1 - 8008686: b2da uxtb r2, r3 - 8008688: 4b05 ldr r3, [pc, #20] @ (80086a0 ) - 800868a: 701a strb r2, [r3, #0] - 800868c: 4b04 ldr r3, [pc, #16] @ (80086a0 ) - 800868e: 781b ldrb r3, [r3, #0] - 8008690: f003 0301 and.w r3, r3, #1 - 8008694: 2b00 cmp r3, #0 - 8008696: d001 beq.n 800869c - /* Call tcp_slowtmr() every 500 ms, i.e., every other timer - tcp_tmr() is called. */ - tcp_slowtmr(); - 8008698: f000 fb54 bl 8008d44 - } -} - 800869c: bf00 nop - 800869e: bd80 pop {r7, pc} - 80086a0: 20019101 .word 0x20019101 - -080086a4 : -/** Called when a listen pcb is closed. Iterates one pcb list and removes the - * closed listener pcb from pcb->listener if matching. - */ -static void -tcp_remove_listener(struct tcp_pcb *list, struct tcp_pcb_listen *lpcb) -{ - 80086a4: b580 push {r7, lr} - 80086a6: b084 sub sp, #16 - 80086a8: af00 add r7, sp, #0 - 80086aa: 6078 str r0, [r7, #4] - 80086ac: 6039 str r1, [r7, #0] - struct tcp_pcb *pcb; - - LWIP_ASSERT("tcp_remove_listener: invalid listener", lpcb != NULL); - 80086ae: 683b ldr r3, [r7, #0] - 80086b0: 2b00 cmp r3, #0 - 80086b2: d105 bne.n 80086c0 - 80086b4: 4b0d ldr r3, [pc, #52] @ (80086ec ) - 80086b6: 22ff movs r2, #255 @ 0xff - 80086b8: 490d ldr r1, [pc, #52] @ (80086f0 ) - 80086ba: 480e ldr r0, [pc, #56] @ (80086f4 ) - 80086bc: f00a fadc bl 8012c78 - - for (pcb = list; pcb != NULL; pcb = pcb->next) { - 80086c0: 687b ldr r3, [r7, #4] - 80086c2: 60fb str r3, [r7, #12] - 80086c4: e00a b.n 80086dc - if (pcb->listener == lpcb) { - 80086c6: 68fb ldr r3, [r7, #12] - 80086c8: 6fdb ldr r3, [r3, #124] @ 0x7c - 80086ca: 683a ldr r2, [r7, #0] - 80086cc: 429a cmp r2, r3 - 80086ce: d102 bne.n 80086d6 - pcb->listener = NULL; - 80086d0: 68fb ldr r3, [r7, #12] - 80086d2: 2200 movs r2, #0 - 80086d4: 67da str r2, [r3, #124] @ 0x7c - for (pcb = list; pcb != NULL; pcb = pcb->next) { - 80086d6: 68fb ldr r3, [r7, #12] - 80086d8: 68db ldr r3, [r3, #12] - 80086da: 60fb str r3, [r7, #12] - 80086dc: 68fb ldr r3, [r7, #12] - 80086de: 2b00 cmp r3, #0 - 80086e0: d1f1 bne.n 80086c6 - } - } -} - 80086e2: bf00 nop - 80086e4: bf00 nop - 80086e6: 3710 adds r7, #16 - 80086e8: 46bd mov sp, r7 - 80086ea: bd80 pop {r7, pc} - 80086ec: 080181c4 .word 0x080181c4 - 80086f0: 0801824c .word 0x0801824c - 80086f4: 08018208 .word 0x08018208 - -080086f8 : -/** Called when a listen pcb is closed. Iterates all pcb lists and removes the - * closed listener pcb from pcb->listener if matching. - */ -static void -tcp_listen_closed(struct tcp_pcb *pcb) -{ - 80086f8: b580 push {r7, lr} - 80086fa: b084 sub sp, #16 - 80086fc: af00 add r7, sp, #0 - 80086fe: 6078 str r0, [r7, #4] -#if LWIP_CALLBACK_API || TCP_LISTEN_BACKLOG - size_t i; - LWIP_ASSERT("pcb != NULL", pcb != NULL); - 8008700: 687b ldr r3, [r7, #4] - 8008702: 2b00 cmp r3, #0 - 8008704: d106 bne.n 8008714 - 8008706: 4b14 ldr r3, [pc, #80] @ (8008758 ) - 8008708: f240 1211 movw r2, #273 @ 0x111 - 800870c: 4913 ldr r1, [pc, #76] @ (800875c ) - 800870e: 4814 ldr r0, [pc, #80] @ (8008760 ) - 8008710: f00a fab2 bl 8012c78 - LWIP_ASSERT("pcb->state == LISTEN", pcb->state == LISTEN); - 8008714: 687b ldr r3, [r7, #4] - 8008716: 7d1b ldrb r3, [r3, #20] - 8008718: 2b01 cmp r3, #1 - 800871a: d006 beq.n 800872a - 800871c: 4b0e ldr r3, [pc, #56] @ (8008758 ) - 800871e: f44f 7289 mov.w r2, #274 @ 0x112 - 8008722: 4910 ldr r1, [pc, #64] @ (8008764 ) - 8008724: 480e ldr r0, [pc, #56] @ (8008760 ) - 8008726: f00a faa7 bl 8012c78 - for (i = 1; i < LWIP_ARRAYSIZE(tcp_pcb_lists); i++) { - 800872a: 2301 movs r3, #1 - 800872c: 60fb str r3, [r7, #12] - 800872e: e00b b.n 8008748 - tcp_remove_listener(*tcp_pcb_lists[i], (struct tcp_pcb_listen *)pcb); - 8008730: 4a0d ldr r2, [pc, #52] @ (8008768 ) - 8008732: 68fb ldr r3, [r7, #12] - 8008734: f852 3023 ldr.w r3, [r2, r3, lsl #2] - 8008738: 681b ldr r3, [r3, #0] - 800873a: 6879 ldr r1, [r7, #4] - 800873c: 4618 mov r0, r3 - 800873e: f7ff ffb1 bl 80086a4 - for (i = 1; i < LWIP_ARRAYSIZE(tcp_pcb_lists); i++) { - 8008742: 68fb ldr r3, [r7, #12] - 8008744: 3301 adds r3, #1 - 8008746: 60fb str r3, [r7, #12] - 8008748: 68fb ldr r3, [r7, #12] - 800874a: 2b03 cmp r3, #3 - 800874c: d9f0 bls.n 8008730 - } -#endif - LWIP_UNUSED_ARG(pcb); -} - 800874e: bf00 nop - 8008750: bf00 nop - 8008752: 3710 adds r7, #16 - 8008754: 46bd mov sp, r7 - 8008756: bd80 pop {r7, pc} - 8008758: 080181c4 .word 0x080181c4 - 800875c: 08018274 .word 0x08018274 - 8008760: 08018208 .word 0x08018208 - 8008764: 08018280 .word 0x08018280 - 8008768: 0801a5ac .word 0x0801a5ac - -0800876c : - * @return ERR_OK if connection has been closed - * another err_t if closing failed and pcb is not freed - */ -static err_t -tcp_close_shutdown(struct tcp_pcb *pcb, u8_t rst_on_unacked_data) -{ - 800876c: b5b0 push {r4, r5, r7, lr} - 800876e: b088 sub sp, #32 - 8008770: af04 add r7, sp, #16 - 8008772: 6078 str r0, [r7, #4] - 8008774: 460b mov r3, r1 - 8008776: 70fb strb r3, [r7, #3] - LWIP_ASSERT("tcp_close_shutdown: invalid pcb", pcb != NULL); - 8008778: 687b ldr r3, [r7, #4] - 800877a: 2b00 cmp r3, #0 - 800877c: d106 bne.n 800878c - 800877e: 4b63 ldr r3, [pc, #396] @ (800890c ) - 8008780: f44f 72af mov.w r2, #350 @ 0x15e - 8008784: 4962 ldr r1, [pc, #392] @ (8008910 ) - 8008786: 4863 ldr r0, [pc, #396] @ (8008914 ) - 8008788: f00a fa76 bl 8012c78 - - if (rst_on_unacked_data && ((pcb->state == ESTABLISHED) || (pcb->state == CLOSE_WAIT))) { - 800878c: 78fb ldrb r3, [r7, #3] - 800878e: 2b00 cmp r3, #0 - 8008790: d066 beq.n 8008860 - 8008792: 687b ldr r3, [r7, #4] - 8008794: 7d1b ldrb r3, [r3, #20] - 8008796: 2b04 cmp r3, #4 - 8008798: d003 beq.n 80087a2 - 800879a: 687b ldr r3, [r7, #4] - 800879c: 7d1b ldrb r3, [r3, #20] - 800879e: 2b07 cmp r3, #7 - 80087a0: d15e bne.n 8008860 - if ((pcb->refused_data != NULL) || (pcb->rcv_wnd != TCP_WND_MAX(pcb))) { - 80087a2: 687b ldr r3, [r7, #4] - 80087a4: 6f9b ldr r3, [r3, #120] @ 0x78 - 80087a6: 2b00 cmp r3, #0 - 80087a8: d104 bne.n 80087b4 - 80087aa: 687b ldr r3, [r7, #4] - 80087ac: 8d1b ldrh r3, [r3, #40] @ 0x28 - 80087ae: f5b3 6f06 cmp.w r3, #2144 @ 0x860 - 80087b2: d055 beq.n 8008860 - /* Not all data received by application, send RST to tell the remote - side about this. */ - LWIP_ASSERT("pcb->flags & TF_RXCLOSED", pcb->flags & TF_RXCLOSED); - 80087b4: 687b ldr r3, [r7, #4] - 80087b6: 8b5b ldrh r3, [r3, #26] - 80087b8: f003 0310 and.w r3, r3, #16 - 80087bc: 2b00 cmp r3, #0 - 80087be: d106 bne.n 80087ce - 80087c0: 4b52 ldr r3, [pc, #328] @ (800890c ) - 80087c2: f44f 72b2 mov.w r2, #356 @ 0x164 - 80087c6: 4954 ldr r1, [pc, #336] @ (8008918 ) - 80087c8: 4852 ldr r0, [pc, #328] @ (8008914 ) - 80087ca: f00a fa55 bl 8012c78 - - /* don't call tcp_abort here: we must not deallocate the pcb since - that might not be expected when calling tcp_close */ - tcp_rst(pcb, pcb->snd_nxt, pcb->rcv_nxt, &pcb->local_ip, &pcb->remote_ip, - 80087ce: 687b ldr r3, [r7, #4] - 80087d0: 6d18 ldr r0, [r3, #80] @ 0x50 - 80087d2: 687b ldr r3, [r7, #4] - 80087d4: 6a5c ldr r4, [r3, #36] @ 0x24 - 80087d6: 687d ldr r5, [r7, #4] - 80087d8: 687b ldr r3, [r7, #4] - 80087da: 3304 adds r3, #4 - 80087dc: 687a ldr r2, [r7, #4] - 80087de: 8ad2 ldrh r2, [r2, #22] - 80087e0: 6879 ldr r1, [r7, #4] - 80087e2: 8b09 ldrh r1, [r1, #24] - 80087e4: 9102 str r1, [sp, #8] - 80087e6: 9201 str r2, [sp, #4] - 80087e8: 9300 str r3, [sp, #0] - 80087ea: 462b mov r3, r5 - 80087ec: 4622 mov r2, r4 - 80087ee: 4601 mov r1, r0 - 80087f0: 6878 ldr r0, [r7, #4] - 80087f2: f004 fe8d bl 800d510 - pcb->local_port, pcb->remote_port); - - tcp_pcb_purge(pcb); - 80087f6: 6878 ldr r0, [r7, #4] - 80087f8: f001 f8c8 bl 800998c - TCP_RMV_ACTIVE(pcb); - 80087fc: 4b47 ldr r3, [pc, #284] @ (800891c ) - 80087fe: 681b ldr r3, [r3, #0] - 8008800: 687a ldr r2, [r7, #4] - 8008802: 429a cmp r2, r3 - 8008804: d105 bne.n 8008812 - 8008806: 4b45 ldr r3, [pc, #276] @ (800891c ) - 8008808: 681b ldr r3, [r3, #0] - 800880a: 68db ldr r3, [r3, #12] - 800880c: 4a43 ldr r2, [pc, #268] @ (800891c ) - 800880e: 6013 str r3, [r2, #0] - 8008810: e013 b.n 800883a - 8008812: 4b42 ldr r3, [pc, #264] @ (800891c ) - 8008814: 681b ldr r3, [r3, #0] - 8008816: 60fb str r3, [r7, #12] - 8008818: e00c b.n 8008834 - 800881a: 68fb ldr r3, [r7, #12] - 800881c: 68db ldr r3, [r3, #12] - 800881e: 687a ldr r2, [r7, #4] - 8008820: 429a cmp r2, r3 - 8008822: d104 bne.n 800882e - 8008824: 687b ldr r3, [r7, #4] - 8008826: 68da ldr r2, [r3, #12] - 8008828: 68fb ldr r3, [r7, #12] - 800882a: 60da str r2, [r3, #12] - 800882c: e005 b.n 800883a - 800882e: 68fb ldr r3, [r7, #12] - 8008830: 68db ldr r3, [r3, #12] - 8008832: 60fb str r3, [r7, #12] - 8008834: 68fb ldr r3, [r7, #12] - 8008836: 2b00 cmp r3, #0 - 8008838: d1ef bne.n 800881a - 800883a: 687b ldr r3, [r7, #4] - 800883c: 2200 movs r2, #0 - 800883e: 60da str r2, [r3, #12] - 8008840: 4b37 ldr r3, [pc, #220] @ (8008920 ) - 8008842: 2201 movs r2, #1 - 8008844: 701a strb r2, [r3, #0] - /* Deallocate the pcb since we already sent a RST for it */ - if (tcp_input_pcb == pcb) { - 8008846: 4b37 ldr r3, [pc, #220] @ (8008924 ) - 8008848: 681b ldr r3, [r3, #0] - 800884a: 687a ldr r2, [r7, #4] - 800884c: 429a cmp r2, r3 - 800884e: d102 bne.n 8008856 - /* prevent using a deallocated pcb: free it from tcp_input later */ - tcp_trigger_input_pcb_close(); - 8008850: f003 fd5c bl 800c30c - 8008854: e002 b.n 800885c - } else { - tcp_free(pcb); - 8008856: 6878 ldr r0, [r7, #4] - 8008858: f7ff fed6 bl 8008608 - } - return ERR_OK; - 800885c: 2300 movs r3, #0 - 800885e: e050 b.n 8008902 - } - } - - /* - states which free the pcb are handled here, - - states which send FIN and change state are handled in tcp_close_shutdown_fin() */ - switch (pcb->state) { - 8008860: 687b ldr r3, [r7, #4] - 8008862: 7d1b ldrb r3, [r3, #20] - 8008864: 2b02 cmp r3, #2 - 8008866: d03b beq.n 80088e0 - 8008868: 2b02 cmp r3, #2 - 800886a: dc44 bgt.n 80088f6 - 800886c: 2b00 cmp r3, #0 - 800886e: d002 beq.n 8008876 - 8008870: 2b01 cmp r3, #1 - 8008872: d02a beq.n 80088ca - 8008874: e03f b.n 80088f6 - * and the user needs some way to free it should the need arise. - * Calling tcp_close() with a pcb that has already been closed, (i.e. twice) - * or for a pcb that has been used and then entered the CLOSED state - * is erroneous, but this should never happen as the pcb has in those cases - * been freed, and so any remaining handles are bogus. */ - if (pcb->local_port != 0) { - 8008876: 687b ldr r3, [r7, #4] - 8008878: 8adb ldrh r3, [r3, #22] - 800887a: 2b00 cmp r3, #0 - 800887c: d021 beq.n 80088c2 - TCP_RMV(&tcp_bound_pcbs, pcb); - 800887e: 4b2a ldr r3, [pc, #168] @ (8008928 ) - 8008880: 681b ldr r3, [r3, #0] - 8008882: 687a ldr r2, [r7, #4] - 8008884: 429a cmp r2, r3 - 8008886: d105 bne.n 8008894 - 8008888: 4b27 ldr r3, [pc, #156] @ (8008928 ) - 800888a: 681b ldr r3, [r3, #0] - 800888c: 68db ldr r3, [r3, #12] - 800888e: 4a26 ldr r2, [pc, #152] @ (8008928 ) - 8008890: 6013 str r3, [r2, #0] - 8008892: e013 b.n 80088bc - 8008894: 4b24 ldr r3, [pc, #144] @ (8008928 ) - 8008896: 681b ldr r3, [r3, #0] - 8008898: 60bb str r3, [r7, #8] - 800889a: e00c b.n 80088b6 - 800889c: 68bb ldr r3, [r7, #8] - 800889e: 68db ldr r3, [r3, #12] - 80088a0: 687a ldr r2, [r7, #4] - 80088a2: 429a cmp r2, r3 - 80088a4: d104 bne.n 80088b0 - 80088a6: 687b ldr r3, [r7, #4] - 80088a8: 68da ldr r2, [r3, #12] - 80088aa: 68bb ldr r3, [r7, #8] - 80088ac: 60da str r2, [r3, #12] - 80088ae: e005 b.n 80088bc - 80088b0: 68bb ldr r3, [r7, #8] - 80088b2: 68db ldr r3, [r3, #12] - 80088b4: 60bb str r3, [r7, #8] - 80088b6: 68bb ldr r3, [r7, #8] - 80088b8: 2b00 cmp r3, #0 - 80088ba: d1ef bne.n 800889c - 80088bc: 687b ldr r3, [r7, #4] - 80088be: 2200 movs r2, #0 - 80088c0: 60da str r2, [r3, #12] - } - tcp_free(pcb); - 80088c2: 6878 ldr r0, [r7, #4] - 80088c4: f7ff fea0 bl 8008608 - break; - 80088c8: e01a b.n 8008900 - case LISTEN: - tcp_listen_closed(pcb); - 80088ca: 6878 ldr r0, [r7, #4] - 80088cc: f7ff ff14 bl 80086f8 - tcp_pcb_remove(&tcp_listen_pcbs.pcbs, pcb); - 80088d0: 6879 ldr r1, [r7, #4] - 80088d2: 4816 ldr r0, [pc, #88] @ (800892c ) - 80088d4: f001 f8aa bl 8009a2c - tcp_free_listen(pcb); - 80088d8: 6878 ldr r0, [r7, #4] - 80088da: f7ff feb1 bl 8008640 - break; - 80088de: e00f b.n 8008900 - case SYN_SENT: - TCP_PCB_REMOVE_ACTIVE(pcb); - 80088e0: 6879 ldr r1, [r7, #4] - 80088e2: 480e ldr r0, [pc, #56] @ (800891c ) - 80088e4: f001 f8a2 bl 8009a2c - 80088e8: 4b0d ldr r3, [pc, #52] @ (8008920 ) - 80088ea: 2201 movs r2, #1 - 80088ec: 701a strb r2, [r3, #0] - tcp_free(pcb); - 80088ee: 6878 ldr r0, [r7, #4] - 80088f0: f7ff fe8a bl 8008608 - MIB2_STATS_INC(mib2.tcpattemptfails); - break; - 80088f4: e004 b.n 8008900 - default: - return tcp_close_shutdown_fin(pcb); - 80088f6: 6878 ldr r0, [r7, #4] - 80088f8: f000 f81a bl 8008930 - 80088fc: 4603 mov r3, r0 - 80088fe: e000 b.n 8008902 - } - return ERR_OK; - 8008900: 2300 movs r3, #0 -} - 8008902: 4618 mov r0, r3 - 8008904: 3710 adds r7, #16 - 8008906: 46bd mov sp, r7 - 8008908: bdb0 pop {r4, r5, r7, pc} - 800890a: bf00 nop - 800890c: 080181c4 .word 0x080181c4 - 8008910: 08018298 .word 0x08018298 - 8008914: 08018208 .word 0x08018208 - 8008918: 080182b8 .word 0x080182b8 - 800891c: 200190f8 .word 0x200190f8 - 8008920: 20019100 .word 0x20019100 - 8008924: 20019138 .word 0x20019138 - 8008928: 200190f0 .word 0x200190f0 - 800892c: 200190f4 .word 0x200190f4 - -08008930 : - -static err_t -tcp_close_shutdown_fin(struct tcp_pcb *pcb) -{ - 8008930: b580 push {r7, lr} - 8008932: b084 sub sp, #16 - 8008934: af00 add r7, sp, #0 - 8008936: 6078 str r0, [r7, #4] - err_t err; - LWIP_ASSERT("pcb != NULL", pcb != NULL); - 8008938: 687b ldr r3, [r7, #4] - 800893a: 2b00 cmp r3, #0 - 800893c: d106 bne.n 800894c - 800893e: 4b2e ldr r3, [pc, #184] @ (80089f8 ) - 8008940: f44f 72ce mov.w r2, #412 @ 0x19c - 8008944: 492d ldr r1, [pc, #180] @ (80089fc ) - 8008946: 482e ldr r0, [pc, #184] @ (8008a00 ) - 8008948: f00a f996 bl 8012c78 - - switch (pcb->state) { - 800894c: 687b ldr r3, [r7, #4] - 800894e: 7d1b ldrb r3, [r3, #20] - 8008950: 2b07 cmp r3, #7 - 8008952: d020 beq.n 8008996 - 8008954: 2b07 cmp r3, #7 - 8008956: dc2b bgt.n 80089b0 - 8008958: 2b03 cmp r3, #3 - 800895a: d002 beq.n 8008962 - 800895c: 2b04 cmp r3, #4 - 800895e: d00d beq.n 800897c - 8008960: e026 b.n 80089b0 - case SYN_RCVD: - err = tcp_send_fin(pcb); - 8008962: 6878 ldr r0, [r7, #4] - 8008964: f003 fee2 bl 800c72c - 8008968: 4603 mov r3, r0 - 800896a: 73fb strb r3, [r7, #15] - if (err == ERR_OK) { - 800896c: f997 300f ldrsb.w r3, [r7, #15] - 8008970: 2b00 cmp r3, #0 - 8008972: d11f bne.n 80089b4 - tcp_backlog_accepted(pcb); - MIB2_STATS_INC(mib2.tcpattemptfails); - pcb->state = FIN_WAIT_1; - 8008974: 687b ldr r3, [r7, #4] - 8008976: 2205 movs r2, #5 - 8008978: 751a strb r2, [r3, #20] - } - break; - 800897a: e01b b.n 80089b4 - case ESTABLISHED: - err = tcp_send_fin(pcb); - 800897c: 6878 ldr r0, [r7, #4] - 800897e: f003 fed5 bl 800c72c - 8008982: 4603 mov r3, r0 - 8008984: 73fb strb r3, [r7, #15] - if (err == ERR_OK) { - 8008986: f997 300f ldrsb.w r3, [r7, #15] - 800898a: 2b00 cmp r3, #0 - 800898c: d114 bne.n 80089b8 - MIB2_STATS_INC(mib2.tcpestabresets); - pcb->state = FIN_WAIT_1; - 800898e: 687b ldr r3, [r7, #4] - 8008990: 2205 movs r2, #5 - 8008992: 751a strb r2, [r3, #20] - } - break; - 8008994: e010 b.n 80089b8 - case CLOSE_WAIT: - err = tcp_send_fin(pcb); - 8008996: 6878 ldr r0, [r7, #4] - 8008998: f003 fec8 bl 800c72c - 800899c: 4603 mov r3, r0 - 800899e: 73fb strb r3, [r7, #15] - if (err == ERR_OK) { - 80089a0: f997 300f ldrsb.w r3, [r7, #15] - 80089a4: 2b00 cmp r3, #0 - 80089a6: d109 bne.n 80089bc - MIB2_STATS_INC(mib2.tcpestabresets); - pcb->state = LAST_ACK; - 80089a8: 687b ldr r3, [r7, #4] - 80089aa: 2209 movs r2, #9 - 80089ac: 751a strb r2, [r3, #20] - } - break; - 80089ae: e005 b.n 80089bc - default: - /* Has already been closed, do nothing. */ - return ERR_OK; - 80089b0: 2300 movs r3, #0 - 80089b2: e01c b.n 80089ee - break; - 80089b4: bf00 nop - 80089b6: e002 b.n 80089be - break; - 80089b8: bf00 nop - 80089ba: e000 b.n 80089be - break; - 80089bc: bf00 nop - } - - if (err == ERR_OK) { - 80089be: f997 300f ldrsb.w r3, [r7, #15] - 80089c2: 2b00 cmp r3, #0 - 80089c4: d103 bne.n 80089ce - /* To ensure all data has been sent when tcp_close returns, we have - to make sure tcp_output doesn't fail. - Since we don't really have to ensure all data has been sent when tcp_close - returns (unsent data is sent from tcp timer functions, also), we don't care - for the return value of tcp_output for now. */ - tcp_output(pcb); - 80089c6: 6878 ldr r0, [r7, #4] - 80089c8: f003 ffee bl 800c9a8 - 80089cc: e00d b.n 80089ea - } else if (err == ERR_MEM) { - 80089ce: f997 300f ldrsb.w r3, [r7, #15] - 80089d2: f1b3 3fff cmp.w r3, #4294967295 - 80089d6: d108 bne.n 80089ea - /* Mark this pcb for closing. Closing is retried from tcp_tmr. */ - tcp_set_flags(pcb, TF_CLOSEPEND); - 80089d8: 687b ldr r3, [r7, #4] - 80089da: 8b5b ldrh r3, [r3, #26] - 80089dc: f043 0308 orr.w r3, r3, #8 - 80089e0: b29a uxth r2, r3 - 80089e2: 687b ldr r3, [r7, #4] - 80089e4: 835a strh r2, [r3, #26] - /* We have to return ERR_OK from here to indicate to the callers that this - pcb should not be used any more as it will be freed soon via tcp_tmr. - This is OK here since sending FIN does not guarantee a time frime for - actually freeing the pcb, either (it is left in closure states for - remote ACK or timeout) */ - return ERR_OK; - 80089e6: 2300 movs r3, #0 - 80089e8: e001 b.n 80089ee - } - return err; - 80089ea: f997 300f ldrsb.w r3, [r7, #15] -} - 80089ee: 4618 mov r0, r3 - 80089f0: 3710 adds r7, #16 - 80089f2: 46bd mov sp, r7 - 80089f4: bd80 pop {r7, pc} - 80089f6: bf00 nop - 80089f8: 080181c4 .word 0x080181c4 - 80089fc: 08018274 .word 0x08018274 - 8008a00: 08018208 .word 0x08018208 - -08008a04 : - * @return ERR_OK if connection has been closed - * another err_t if closing failed and pcb is not freed - */ -err_t -tcp_close(struct tcp_pcb *pcb) -{ - 8008a04: b580 push {r7, lr} - 8008a06: b082 sub sp, #8 - 8008a08: af00 add r7, sp, #0 - 8008a0a: 6078 str r0, [r7, #4] - LWIP_ASSERT_CORE_LOCKED(); - - LWIP_ERROR("tcp_close: invalid pcb", pcb != NULL, return ERR_ARG); - 8008a0c: 687b ldr r3, [r7, #4] - 8008a0e: 2b00 cmp r3, #0 - 8008a10: d109 bne.n 8008a26 - 8008a12: 4b0f ldr r3, [pc, #60] @ (8008a50 ) - 8008a14: f44f 72f4 mov.w r2, #488 @ 0x1e8 - 8008a18: 490e ldr r1, [pc, #56] @ (8008a54 ) - 8008a1a: 480f ldr r0, [pc, #60] @ (8008a58 ) - 8008a1c: f00a f92c bl 8012c78 - 8008a20: f06f 030f mvn.w r3, #15 - 8008a24: e00f b.n 8008a46 - LWIP_DEBUGF(TCP_DEBUG, ("tcp_close: closing in ")); - - tcp_debug_print_state(pcb->state); - - if (pcb->state != LISTEN) { - 8008a26: 687b ldr r3, [r7, #4] - 8008a28: 7d1b ldrb r3, [r3, #20] - 8008a2a: 2b01 cmp r3, #1 - 8008a2c: d006 beq.n 8008a3c - /* Set a flag not to receive any more data... */ - tcp_set_flags(pcb, TF_RXCLOSED); - 8008a2e: 687b ldr r3, [r7, #4] - 8008a30: 8b5b ldrh r3, [r3, #26] - 8008a32: f043 0310 orr.w r3, r3, #16 - 8008a36: b29a uxth r2, r3 - 8008a38: 687b ldr r3, [r7, #4] - 8008a3a: 835a strh r2, [r3, #26] - } - /* ... and close */ - return tcp_close_shutdown(pcb, 1); - 8008a3c: 2101 movs r1, #1 - 8008a3e: 6878 ldr r0, [r7, #4] - 8008a40: f7ff fe94 bl 800876c - 8008a44: 4603 mov r3, r0 -} - 8008a46: 4618 mov r0, r3 - 8008a48: 3708 adds r7, #8 - 8008a4a: 46bd mov sp, r7 - 8008a4c: bd80 pop {r7, pc} - 8008a4e: bf00 nop - 8008a50: 080181c4 .word 0x080181c4 - 8008a54: 080182d4 .word 0x080182d4 - 8008a58: 08018208 .word 0x08018208 - -08008a5c : - * @param pcb the tcp_pcb to abort - * @param reset boolean to indicate whether a reset should be sent - */ -void -tcp_abandon(struct tcp_pcb *pcb, int reset) -{ - 8008a5c: b580 push {r7, lr} - 8008a5e: b08e sub sp, #56 @ 0x38 - 8008a60: af04 add r7, sp, #16 - 8008a62: 6078 str r0, [r7, #4] - 8008a64: 6039 str r1, [r7, #0] -#endif /* LWIP_CALLBACK_API */ - void *errf_arg; - - LWIP_ASSERT_CORE_LOCKED(); - - LWIP_ERROR("tcp_abandon: invalid pcb", pcb != NULL, return); - 8008a66: 687b ldr r3, [r7, #4] - 8008a68: 2b00 cmp r3, #0 - 8008a6a: d107 bne.n 8008a7c - 8008a6c: 4b52 ldr r3, [pc, #328] @ (8008bb8 ) - 8008a6e: f240 223d movw r2, #573 @ 0x23d - 8008a72: 4952 ldr r1, [pc, #328] @ (8008bbc ) - 8008a74: 4852 ldr r0, [pc, #328] @ (8008bc0 ) - 8008a76: f00a f8ff bl 8012c78 - 8008a7a: e099 b.n 8008bb0 - - /* pcb->state LISTEN not allowed here */ - LWIP_ASSERT("don't call tcp_abort/tcp_abandon for listen-pcbs", - 8008a7c: 687b ldr r3, [r7, #4] - 8008a7e: 7d1b ldrb r3, [r3, #20] - 8008a80: 2b01 cmp r3, #1 - 8008a82: d106 bne.n 8008a92 - 8008a84: 4b4c ldr r3, [pc, #304] @ (8008bb8 ) - 8008a86: f44f 7210 mov.w r2, #576 @ 0x240 - 8008a8a: 494e ldr r1, [pc, #312] @ (8008bc4 ) - 8008a8c: 484c ldr r0, [pc, #304] @ (8008bc0 ) - 8008a8e: f00a f8f3 bl 8012c78 - pcb->state != LISTEN); - /* Figure out on which TCP PCB list we are, and remove us. If we - are in an active state, call the receive function associated with - the PCB with a NULL argument, and send an RST to the remote end. */ - if (pcb->state == TIME_WAIT) { - 8008a92: 687b ldr r3, [r7, #4] - 8008a94: 7d1b ldrb r3, [r3, #20] - 8008a96: 2b0a cmp r3, #10 - 8008a98: d107 bne.n 8008aaa - tcp_pcb_remove(&tcp_tw_pcbs, pcb); - 8008a9a: 6879 ldr r1, [r7, #4] - 8008a9c: 484a ldr r0, [pc, #296] @ (8008bc8 ) - 8008a9e: f000 ffc5 bl 8009a2c - tcp_free(pcb); - 8008aa2: 6878 ldr r0, [r7, #4] - 8008aa4: f7ff fdb0 bl 8008608 - 8008aa8: e082 b.n 8008bb0 - } else { - int send_rst = 0; - 8008aaa: 2300 movs r3, #0 - 8008aac: 627b str r3, [r7, #36] @ 0x24 - u16_t local_port = 0; - 8008aae: 2300 movs r3, #0 - 8008ab0: 847b strh r3, [r7, #34] @ 0x22 - enum tcp_state last_state; - seqno = pcb->snd_nxt; - 8008ab2: 687b ldr r3, [r7, #4] - 8008ab4: 6d1b ldr r3, [r3, #80] @ 0x50 - 8008ab6: 61bb str r3, [r7, #24] - ackno = pcb->rcv_nxt; - 8008ab8: 687b ldr r3, [r7, #4] - 8008aba: 6a5b ldr r3, [r3, #36] @ 0x24 - 8008abc: 617b str r3, [r7, #20] -#if LWIP_CALLBACK_API - errf = pcb->errf; - 8008abe: 687b ldr r3, [r7, #4] - 8008ac0: f8d3 3090 ldr.w r3, [r3, #144] @ 0x90 - 8008ac4: 613b str r3, [r7, #16] -#endif /* LWIP_CALLBACK_API */ - errf_arg = pcb->callback_arg; - 8008ac6: 687b ldr r3, [r7, #4] - 8008ac8: 691b ldr r3, [r3, #16] - 8008aca: 60fb str r3, [r7, #12] - if (pcb->state == CLOSED) { - 8008acc: 687b ldr r3, [r7, #4] - 8008ace: 7d1b ldrb r3, [r3, #20] - 8008ad0: 2b00 cmp r3, #0 - 8008ad2: d126 bne.n 8008b22 - if (pcb->local_port != 0) { - 8008ad4: 687b ldr r3, [r7, #4] - 8008ad6: 8adb ldrh r3, [r3, #22] - 8008ad8: 2b00 cmp r3, #0 - 8008ada: d02e beq.n 8008b3a - /* bound, not yet opened */ - TCP_RMV(&tcp_bound_pcbs, pcb); - 8008adc: 4b3b ldr r3, [pc, #236] @ (8008bcc ) - 8008ade: 681b ldr r3, [r3, #0] - 8008ae0: 687a ldr r2, [r7, #4] - 8008ae2: 429a cmp r2, r3 - 8008ae4: d105 bne.n 8008af2 - 8008ae6: 4b39 ldr r3, [pc, #228] @ (8008bcc ) - 8008ae8: 681b ldr r3, [r3, #0] - 8008aea: 68db ldr r3, [r3, #12] - 8008aec: 4a37 ldr r2, [pc, #220] @ (8008bcc ) - 8008aee: 6013 str r3, [r2, #0] - 8008af0: e013 b.n 8008b1a - 8008af2: 4b36 ldr r3, [pc, #216] @ (8008bcc ) - 8008af4: 681b ldr r3, [r3, #0] - 8008af6: 61fb str r3, [r7, #28] - 8008af8: e00c b.n 8008b14 - 8008afa: 69fb ldr r3, [r7, #28] - 8008afc: 68db ldr r3, [r3, #12] - 8008afe: 687a ldr r2, [r7, #4] - 8008b00: 429a cmp r2, r3 - 8008b02: d104 bne.n 8008b0e - 8008b04: 687b ldr r3, [r7, #4] - 8008b06: 68da ldr r2, [r3, #12] - 8008b08: 69fb ldr r3, [r7, #28] - 8008b0a: 60da str r2, [r3, #12] - 8008b0c: e005 b.n 8008b1a - 8008b0e: 69fb ldr r3, [r7, #28] - 8008b10: 68db ldr r3, [r3, #12] - 8008b12: 61fb str r3, [r7, #28] - 8008b14: 69fb ldr r3, [r7, #28] - 8008b16: 2b00 cmp r3, #0 - 8008b18: d1ef bne.n 8008afa - 8008b1a: 687b ldr r3, [r7, #4] - 8008b1c: 2200 movs r2, #0 - 8008b1e: 60da str r2, [r3, #12] - 8008b20: e00b b.n 8008b3a - } - } else { - send_rst = reset; - 8008b22: 683b ldr r3, [r7, #0] - 8008b24: 627b str r3, [r7, #36] @ 0x24 - local_port = pcb->local_port; - 8008b26: 687b ldr r3, [r7, #4] - 8008b28: 8adb ldrh r3, [r3, #22] - 8008b2a: 847b strh r3, [r7, #34] @ 0x22 - TCP_PCB_REMOVE_ACTIVE(pcb); - 8008b2c: 6879 ldr r1, [r7, #4] - 8008b2e: 4828 ldr r0, [pc, #160] @ (8008bd0 ) - 8008b30: f000 ff7c bl 8009a2c - 8008b34: 4b27 ldr r3, [pc, #156] @ (8008bd4 ) - 8008b36: 2201 movs r2, #1 - 8008b38: 701a strb r2, [r3, #0] - } - if (pcb->unacked != NULL) { - 8008b3a: 687b ldr r3, [r7, #4] - 8008b3c: 6f1b ldr r3, [r3, #112] @ 0x70 - 8008b3e: 2b00 cmp r3, #0 - 8008b40: d004 beq.n 8008b4c - tcp_segs_free(pcb->unacked); - 8008b42: 687b ldr r3, [r7, #4] - 8008b44: 6f1b ldr r3, [r3, #112] @ 0x70 - 8008b46: 4618 mov r0, r3 - 8008b48: f000 fd1e bl 8009588 - } - if (pcb->unsent != NULL) { - 8008b4c: 687b ldr r3, [r7, #4] - 8008b4e: 6edb ldr r3, [r3, #108] @ 0x6c - 8008b50: 2b00 cmp r3, #0 - 8008b52: d004 beq.n 8008b5e - tcp_segs_free(pcb->unsent); - 8008b54: 687b ldr r3, [r7, #4] - 8008b56: 6edb ldr r3, [r3, #108] @ 0x6c - 8008b58: 4618 mov r0, r3 - 8008b5a: f000 fd15 bl 8009588 - } -#if TCP_QUEUE_OOSEQ - if (pcb->ooseq != NULL) { - 8008b5e: 687b ldr r3, [r7, #4] - 8008b60: 6f5b ldr r3, [r3, #116] @ 0x74 - 8008b62: 2b00 cmp r3, #0 - 8008b64: d004 beq.n 8008b70 - tcp_segs_free(pcb->ooseq); - 8008b66: 687b ldr r3, [r7, #4] - 8008b68: 6f5b ldr r3, [r3, #116] @ 0x74 - 8008b6a: 4618 mov r0, r3 - 8008b6c: f000 fd0c bl 8009588 - } -#endif /* TCP_QUEUE_OOSEQ */ - tcp_backlog_accepted(pcb); - if (send_rst) { - 8008b70: 6a7b ldr r3, [r7, #36] @ 0x24 - 8008b72: 2b00 cmp r3, #0 - 8008b74: d00e beq.n 8008b94 - LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_abandon: sending RST\n")); - tcp_rst(pcb, seqno, ackno, &pcb->local_ip, &pcb->remote_ip, local_port, pcb->remote_port); - 8008b76: 6879 ldr r1, [r7, #4] - 8008b78: 687b ldr r3, [r7, #4] - 8008b7a: 3304 adds r3, #4 - 8008b7c: 687a ldr r2, [r7, #4] - 8008b7e: 8b12 ldrh r2, [r2, #24] - 8008b80: 9202 str r2, [sp, #8] - 8008b82: 8c7a ldrh r2, [r7, #34] @ 0x22 - 8008b84: 9201 str r2, [sp, #4] - 8008b86: 9300 str r3, [sp, #0] - 8008b88: 460b mov r3, r1 - 8008b8a: 697a ldr r2, [r7, #20] - 8008b8c: 69b9 ldr r1, [r7, #24] - 8008b8e: 6878 ldr r0, [r7, #4] - 8008b90: f004 fcbe bl 800d510 - } - last_state = pcb->state; - 8008b94: 687b ldr r3, [r7, #4] - 8008b96: 7d1b ldrb r3, [r3, #20] - 8008b98: 72fb strb r3, [r7, #11] - tcp_free(pcb); - 8008b9a: 6878 ldr r0, [r7, #4] - 8008b9c: f7ff fd34 bl 8008608 - TCP_EVENT_ERR(last_state, errf, errf_arg, ERR_ABRT); - 8008ba0: 693b ldr r3, [r7, #16] - 8008ba2: 2b00 cmp r3, #0 - 8008ba4: d004 beq.n 8008bb0 - 8008ba6: 693b ldr r3, [r7, #16] - 8008ba8: f06f 010c mvn.w r1, #12 - 8008bac: 68f8 ldr r0, [r7, #12] - 8008bae: 4798 blx r3 - } -} - 8008bb0: 3728 adds r7, #40 @ 0x28 - 8008bb2: 46bd mov sp, r7 - 8008bb4: bd80 pop {r7, pc} - 8008bb6: bf00 nop - 8008bb8: 080181c4 .word 0x080181c4 - 8008bbc: 08018308 .word 0x08018308 - 8008bc0: 08018208 .word 0x08018208 - 8008bc4: 08018324 .word 0x08018324 - 8008bc8: 200190fc .word 0x200190fc - 8008bcc: 200190f0 .word 0x200190f0 - 8008bd0: 200190f8 .word 0x200190f8 - 8008bd4: 20019100 .word 0x20019100 - -08008bd8 : - * - * @param pcb the tcp pcb to abort - */ -void -tcp_abort(struct tcp_pcb *pcb) -{ - 8008bd8: b580 push {r7, lr} - 8008bda: b082 sub sp, #8 - 8008bdc: af00 add r7, sp, #0 - 8008bde: 6078 str r0, [r7, #4] - tcp_abandon(pcb, 1); - 8008be0: 2101 movs r1, #1 - 8008be2: 6878 ldr r0, [r7, #4] - 8008be4: f7ff ff3a bl 8008a5c -} - 8008be8: bf00 nop - 8008bea: 3708 adds r7, #8 - 8008bec: 46bd mov sp, r7 - 8008bee: bd80 pop {r7, pc} - -08008bf0 : - * Returns how much extra window would be advertised if we sent an - * update now. - */ -u32_t -tcp_update_rcv_ann_wnd(struct tcp_pcb *pcb) -{ - 8008bf0: b580 push {r7, lr} - 8008bf2: b084 sub sp, #16 - 8008bf4: af00 add r7, sp, #0 - 8008bf6: 6078 str r0, [r7, #4] - u32_t new_right_edge; - - LWIP_ASSERT("tcp_update_rcv_ann_wnd: invalid pcb", pcb != NULL); - 8008bf8: 687b ldr r3, [r7, #4] - 8008bfa: 2b00 cmp r3, #0 - 8008bfc: d106 bne.n 8008c0c - 8008bfe: 4b25 ldr r3, [pc, #148] @ (8008c94 ) - 8008c00: f240 32a6 movw r2, #934 @ 0x3a6 - 8008c04: 4924 ldr r1, [pc, #144] @ (8008c98 ) - 8008c06: 4825 ldr r0, [pc, #148] @ (8008c9c ) - 8008c08: f00a f836 bl 8012c78 - new_right_edge = pcb->rcv_nxt + pcb->rcv_wnd; - 8008c0c: 687b ldr r3, [r7, #4] - 8008c0e: 6a5b ldr r3, [r3, #36] @ 0x24 - 8008c10: 687a ldr r2, [r7, #4] - 8008c12: 8d12 ldrh r2, [r2, #40] @ 0x28 - 8008c14: 4413 add r3, r2 - 8008c16: 60fb str r3, [r7, #12] - - if (TCP_SEQ_GEQ(new_right_edge, pcb->rcv_ann_right_edge + LWIP_MIN((TCP_WND / 2), pcb->mss))) { - 8008c18: 687b ldr r3, [r7, #4] - 8008c1a: 6adb ldr r3, [r3, #44] @ 0x2c - 8008c1c: 687a ldr r2, [r7, #4] - 8008c1e: 8e52 ldrh r2, [r2, #50] @ 0x32 - 8008c20: f5b2 6f86 cmp.w r2, #1072 @ 0x430 - 8008c24: bf28 it cs - 8008c26: f44f 6286 movcs.w r2, #1072 @ 0x430 - 8008c2a: b292 uxth r2, r2 - 8008c2c: 4413 add r3, r2 - 8008c2e: 68fa ldr r2, [r7, #12] - 8008c30: 1ad3 subs r3, r2, r3 - 8008c32: 2b00 cmp r3, #0 - 8008c34: db08 blt.n 8008c48 - /* we can advertise more window */ - pcb->rcv_ann_wnd = pcb->rcv_wnd; - 8008c36: 687b ldr r3, [r7, #4] - 8008c38: 8d1a ldrh r2, [r3, #40] @ 0x28 - 8008c3a: 687b ldr r3, [r7, #4] - 8008c3c: 855a strh r2, [r3, #42] @ 0x2a - return new_right_edge - pcb->rcv_ann_right_edge; - 8008c3e: 687b ldr r3, [r7, #4] - 8008c40: 6adb ldr r3, [r3, #44] @ 0x2c - 8008c42: 68fa ldr r2, [r7, #12] - 8008c44: 1ad3 subs r3, r2, r3 - 8008c46: e020 b.n 8008c8a - } else { - if (TCP_SEQ_GT(pcb->rcv_nxt, pcb->rcv_ann_right_edge)) { - 8008c48: 687b ldr r3, [r7, #4] - 8008c4a: 6a5a ldr r2, [r3, #36] @ 0x24 - 8008c4c: 687b ldr r3, [r7, #4] - 8008c4e: 6adb ldr r3, [r3, #44] @ 0x2c - 8008c50: 1ad3 subs r3, r2, r3 - 8008c52: 2b00 cmp r3, #0 - 8008c54: dd03 ble.n 8008c5e - /* Can happen due to other end sending out of advertised window, - * but within actual available (but not yet advertised) window */ - pcb->rcv_ann_wnd = 0; - 8008c56: 687b ldr r3, [r7, #4] - 8008c58: 2200 movs r2, #0 - 8008c5a: 855a strh r2, [r3, #42] @ 0x2a - 8008c5c: e014 b.n 8008c88 - } else { - /* keep the right edge of window constant */ - u32_t new_rcv_ann_wnd = pcb->rcv_ann_right_edge - pcb->rcv_nxt; - 8008c5e: 687b ldr r3, [r7, #4] - 8008c60: 6ada ldr r2, [r3, #44] @ 0x2c - 8008c62: 687b ldr r3, [r7, #4] - 8008c64: 6a5b ldr r3, [r3, #36] @ 0x24 - 8008c66: 1ad3 subs r3, r2, r3 - 8008c68: 60bb str r3, [r7, #8] -#if !LWIP_WND_SCALE - LWIP_ASSERT("new_rcv_ann_wnd <= 0xffff", new_rcv_ann_wnd <= 0xffff); - 8008c6a: 68bb ldr r3, [r7, #8] - 8008c6c: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8008c70: d306 bcc.n 8008c80 - 8008c72: 4b08 ldr r3, [pc, #32] @ (8008c94 ) - 8008c74: f240 32b6 movw r2, #950 @ 0x3b6 - 8008c78: 4909 ldr r1, [pc, #36] @ (8008ca0 ) - 8008c7a: 4808 ldr r0, [pc, #32] @ (8008c9c ) - 8008c7c: f009 fffc bl 8012c78 -#endif - pcb->rcv_ann_wnd = (tcpwnd_size_t)new_rcv_ann_wnd; - 8008c80: 68bb ldr r3, [r7, #8] - 8008c82: b29a uxth r2, r3 - 8008c84: 687b ldr r3, [r7, #4] - 8008c86: 855a strh r2, [r3, #42] @ 0x2a - } - return 0; - 8008c88: 2300 movs r3, #0 - } -} - 8008c8a: 4618 mov r0, r3 - 8008c8c: 3710 adds r7, #16 - 8008c8e: 46bd mov sp, r7 - 8008c90: bd80 pop {r7, pc} - 8008c92: bf00 nop - 8008c94: 080181c4 .word 0x080181c4 - 8008c98: 08018420 .word 0x08018420 - 8008c9c: 08018208 .word 0x08018208 - 8008ca0: 08018444 .word 0x08018444 - -08008ca4 : - * @param pcb the tcp_pcb for which data is read - * @param len the amount of bytes that have been read by the application - */ -void -tcp_recved(struct tcp_pcb *pcb, u16_t len) -{ - 8008ca4: b580 push {r7, lr} - 8008ca6: b084 sub sp, #16 - 8008ca8: af00 add r7, sp, #0 - 8008caa: 6078 str r0, [r7, #4] - 8008cac: 460b mov r3, r1 - 8008cae: 807b strh r3, [r7, #2] - u32_t wnd_inflation; - tcpwnd_size_t rcv_wnd; - - LWIP_ASSERT_CORE_LOCKED(); - - LWIP_ERROR("tcp_recved: invalid pcb", pcb != NULL, return); - 8008cb0: 687b ldr r3, [r7, #4] - 8008cb2: 2b00 cmp r3, #0 - 8008cb4: d107 bne.n 8008cc6 - 8008cb6: 4b1f ldr r3, [pc, #124] @ (8008d34 ) - 8008cb8: f240 32cf movw r2, #975 @ 0x3cf - 8008cbc: 491e ldr r1, [pc, #120] @ (8008d38 ) - 8008cbe: 481f ldr r0, [pc, #124] @ (8008d3c ) - 8008cc0: f009 ffda bl 8012c78 - 8008cc4: e032 b.n 8008d2c - - /* pcb->state LISTEN not allowed here */ - LWIP_ASSERT("don't call tcp_recved for listen-pcbs", - 8008cc6: 687b ldr r3, [r7, #4] - 8008cc8: 7d1b ldrb r3, [r3, #20] - 8008cca: 2b01 cmp r3, #1 - 8008ccc: d106 bne.n 8008cdc - 8008cce: 4b19 ldr r3, [pc, #100] @ (8008d34 ) - 8008cd0: f240 32d2 movw r2, #978 @ 0x3d2 - 8008cd4: 491a ldr r1, [pc, #104] @ (8008d40 ) - 8008cd6: 4819 ldr r0, [pc, #100] @ (8008d3c ) - 8008cd8: f009 ffce bl 8012c78 - pcb->state != LISTEN); - - rcv_wnd = (tcpwnd_size_t)(pcb->rcv_wnd + len); - 8008cdc: 687b ldr r3, [r7, #4] - 8008cde: 8d1a ldrh r2, [r3, #40] @ 0x28 - 8008ce0: 887b ldrh r3, [r7, #2] - 8008ce2: 4413 add r3, r2 - 8008ce4: 81fb strh r3, [r7, #14] - if ((rcv_wnd > TCP_WND_MAX(pcb)) || (rcv_wnd < pcb->rcv_wnd)) { - 8008ce6: 89fb ldrh r3, [r7, #14] - 8008ce8: f5b3 6f06 cmp.w r3, #2144 @ 0x860 - 8008cec: d804 bhi.n 8008cf8 - 8008cee: 687b ldr r3, [r7, #4] - 8008cf0: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8008cf2: 89fa ldrh r2, [r7, #14] - 8008cf4: 429a cmp r2, r3 - 8008cf6: d204 bcs.n 8008d02 - /* window got too big or tcpwnd_size_t overflow */ - LWIP_DEBUGF(TCP_DEBUG, ("tcp_recved: window got too big or tcpwnd_size_t overflow\n")); - pcb->rcv_wnd = TCP_WND_MAX(pcb); - 8008cf8: 687b ldr r3, [r7, #4] - 8008cfa: f44f 6206 mov.w r2, #2144 @ 0x860 - 8008cfe: 851a strh r2, [r3, #40] @ 0x28 - 8008d00: e002 b.n 8008d08 - } else { - pcb->rcv_wnd = rcv_wnd; - 8008d02: 687b ldr r3, [r7, #4] - 8008d04: 89fa ldrh r2, [r7, #14] - 8008d06: 851a strh r2, [r3, #40] @ 0x28 - } - - wnd_inflation = tcp_update_rcv_ann_wnd(pcb); - 8008d08: 6878 ldr r0, [r7, #4] - 8008d0a: f7ff ff71 bl 8008bf0 - 8008d0e: 60b8 str r0, [r7, #8] - - /* If the change in the right edge of window is significant (default - * watermark is TCP_WND/4), then send an explicit update now. - * Otherwise wait for a packet to be sent in the normal course of - * events (or more window to be available later) */ - if (wnd_inflation >= TCP_WND_UPDATE_THRESHOLD) { - 8008d10: 68bb ldr r3, [r7, #8] - 8008d12: f5b3 7f06 cmp.w r3, #536 @ 0x218 - 8008d16: d309 bcc.n 8008d2c - tcp_ack_now(pcb); - 8008d18: 687b ldr r3, [r7, #4] - 8008d1a: 8b5b ldrh r3, [r3, #26] - 8008d1c: f043 0302 orr.w r3, r3, #2 - 8008d20: b29a uxth r2, r3 - 8008d22: 687b ldr r3, [r7, #4] - 8008d24: 835a strh r2, [r3, #26] - tcp_output(pcb); - 8008d26: 6878 ldr r0, [r7, #4] - 8008d28: f003 fe3e bl 800c9a8 - } - - LWIP_DEBUGF(TCP_DEBUG, ("tcp_recved: received %"U16_F" bytes, wnd %"TCPWNDSIZE_F" (%"TCPWNDSIZE_F").\n", - len, pcb->rcv_wnd, (u16_t)(TCP_WND_MAX(pcb) - pcb->rcv_wnd))); -} - 8008d2c: 3710 adds r7, #16 - 8008d2e: 46bd mov sp, r7 - 8008d30: bd80 pop {r7, pc} - 8008d32: bf00 nop - 8008d34: 080181c4 .word 0x080181c4 - 8008d38: 08018460 .word 0x08018460 - 8008d3c: 08018208 .word 0x08018208 - 8008d40: 08018478 .word 0x08018478 - -08008d44 : - * - * Automatically called from tcp_tmr(). - */ -void -tcp_slowtmr(void) -{ - 8008d44: b5b0 push {r4, r5, r7, lr} - 8008d46: b090 sub sp, #64 @ 0x40 - 8008d48: af04 add r7, sp, #16 - tcpwnd_size_t eff_wnd; - u8_t pcb_remove; /* flag if a PCB should be removed */ - u8_t pcb_reset; /* flag if a RST should be sent when removing */ - err_t err; - - err = ERR_OK; - 8008d4a: 2300 movs r3, #0 - 8008d4c: f887 3025 strb.w r3, [r7, #37] @ 0x25 - - ++tcp_ticks; - 8008d50: 4b95 ldr r3, [pc, #596] @ (8008fa8 ) - 8008d52: 681b ldr r3, [r3, #0] - 8008d54: 3301 adds r3, #1 - 8008d56: 4a94 ldr r2, [pc, #592] @ (8008fa8 ) - 8008d58: 6013 str r3, [r2, #0] - ++tcp_timer_ctr; - 8008d5a: 4b94 ldr r3, [pc, #592] @ (8008fac ) - 8008d5c: 781b ldrb r3, [r3, #0] - 8008d5e: 3301 adds r3, #1 - 8008d60: b2da uxtb r2, r3 - 8008d62: 4b92 ldr r3, [pc, #584] @ (8008fac ) - 8008d64: 701a strb r2, [r3, #0] - 8008d66: e000 b.n 8008d6a - prev->polltmr = 0; - LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: polling application\n")); - tcp_active_pcbs_changed = 0; - TCP_EVENT_POLL(prev, err); - if (tcp_active_pcbs_changed) { - goto tcp_slowtmr_start; - 8008d68: bf00 nop - prev = NULL; - 8008d6a: 2300 movs r3, #0 - 8008d6c: 62bb str r3, [r7, #40] @ 0x28 - pcb = tcp_active_pcbs; - 8008d6e: 4b90 ldr r3, [pc, #576] @ (8008fb0 ) - 8008d70: 681b ldr r3, [r3, #0] - 8008d72: 62fb str r3, [r7, #44] @ 0x2c - while (pcb != NULL) { - 8008d74: e29f b.n 80092b6 - LWIP_ASSERT("tcp_slowtmr: active pcb->state != CLOSED\n", pcb->state != CLOSED); - 8008d76: 6afb ldr r3, [r7, #44] @ 0x2c - 8008d78: 7d1b ldrb r3, [r3, #20] - 8008d7a: 2b00 cmp r3, #0 - 8008d7c: d106 bne.n 8008d8c - 8008d7e: 4b8d ldr r3, [pc, #564] @ (8008fb4 ) - 8008d80: f240 42be movw r2, #1214 @ 0x4be - 8008d84: 498c ldr r1, [pc, #560] @ (8008fb8 ) - 8008d86: 488d ldr r0, [pc, #564] @ (8008fbc ) - 8008d88: f009 ff76 bl 8012c78 - LWIP_ASSERT("tcp_slowtmr: active pcb->state != LISTEN\n", pcb->state != LISTEN); - 8008d8c: 6afb ldr r3, [r7, #44] @ 0x2c - 8008d8e: 7d1b ldrb r3, [r3, #20] - 8008d90: 2b01 cmp r3, #1 - 8008d92: d106 bne.n 8008da2 - 8008d94: 4b87 ldr r3, [pc, #540] @ (8008fb4 ) - 8008d96: f240 42bf movw r2, #1215 @ 0x4bf - 8008d9a: 4989 ldr r1, [pc, #548] @ (8008fc0 ) - 8008d9c: 4887 ldr r0, [pc, #540] @ (8008fbc ) - 8008d9e: f009 ff6b bl 8012c78 - LWIP_ASSERT("tcp_slowtmr: active pcb->state != TIME-WAIT\n", pcb->state != TIME_WAIT); - 8008da2: 6afb ldr r3, [r7, #44] @ 0x2c - 8008da4: 7d1b ldrb r3, [r3, #20] - 8008da6: 2b0a cmp r3, #10 - 8008da8: d106 bne.n 8008db8 - 8008daa: 4b82 ldr r3, [pc, #520] @ (8008fb4 ) - 8008dac: f44f 6298 mov.w r2, #1216 @ 0x4c0 - 8008db0: 4984 ldr r1, [pc, #528] @ (8008fc4 ) - 8008db2: 4882 ldr r0, [pc, #520] @ (8008fbc ) - 8008db4: f009 ff60 bl 8012c78 - if (pcb->last_timer == tcp_timer_ctr) { - 8008db8: 6afb ldr r3, [r7, #44] @ 0x2c - 8008dba: 7f9a ldrb r2, [r3, #30] - 8008dbc: 4b7b ldr r3, [pc, #492] @ (8008fac ) - 8008dbe: 781b ldrb r3, [r3, #0] - 8008dc0: 429a cmp r2, r3 - 8008dc2: d105 bne.n 8008dd0 - prev = pcb; - 8008dc4: 6afb ldr r3, [r7, #44] @ 0x2c - 8008dc6: 62bb str r3, [r7, #40] @ 0x28 - pcb = pcb->next; - 8008dc8: 6afb ldr r3, [r7, #44] @ 0x2c - 8008dca: 68db ldr r3, [r3, #12] - 8008dcc: 62fb str r3, [r7, #44] @ 0x2c - continue; - 8008dce: e272 b.n 80092b6 - pcb->last_timer = tcp_timer_ctr; - 8008dd0: 4b76 ldr r3, [pc, #472] @ (8008fac ) - 8008dd2: 781a ldrb r2, [r3, #0] - 8008dd4: 6afb ldr r3, [r7, #44] @ 0x2c - 8008dd6: 779a strb r2, [r3, #30] - pcb_remove = 0; - 8008dd8: 2300 movs r3, #0 - 8008dda: f887 3027 strb.w r3, [r7, #39] @ 0x27 - pcb_reset = 0; - 8008dde: 2300 movs r3, #0 - 8008de0: f887 3026 strb.w r3, [r7, #38] @ 0x26 - if (pcb->state == SYN_SENT && pcb->nrtx >= TCP_SYNMAXRTX) { - 8008de4: 6afb ldr r3, [r7, #44] @ 0x2c - 8008de6: 7d1b ldrb r3, [r3, #20] - 8008de8: 2b02 cmp r3, #2 - 8008dea: d10a bne.n 8008e02 - 8008dec: 6afb ldr r3, [r7, #44] @ 0x2c - 8008dee: f893 3042 ldrb.w r3, [r3, #66] @ 0x42 - 8008df2: 2b05 cmp r3, #5 - 8008df4: d905 bls.n 8008e02 - ++pcb_remove; - 8008df6: f897 3027 ldrb.w r3, [r7, #39] @ 0x27 - 8008dfa: 3301 adds r3, #1 - 8008dfc: f887 3027 strb.w r3, [r7, #39] @ 0x27 - 8008e00: e11e b.n 8009040 - } else if (pcb->nrtx >= TCP_MAXRTX) { - 8008e02: 6afb ldr r3, [r7, #44] @ 0x2c - 8008e04: f893 3042 ldrb.w r3, [r3, #66] @ 0x42 - 8008e08: 2b0b cmp r3, #11 - 8008e0a: d905 bls.n 8008e18 - ++pcb_remove; - 8008e0c: f897 3027 ldrb.w r3, [r7, #39] @ 0x27 - 8008e10: 3301 adds r3, #1 - 8008e12: f887 3027 strb.w r3, [r7, #39] @ 0x27 - 8008e16: e113 b.n 8009040 - if (pcb->persist_backoff > 0) { - 8008e18: 6afb ldr r3, [r7, #44] @ 0x2c - 8008e1a: f893 3099 ldrb.w r3, [r3, #153] @ 0x99 - 8008e1e: 2b00 cmp r3, #0 - 8008e20: d075 beq.n 8008f0e - LWIP_ASSERT("tcp_slowtimr: persist ticking with in-flight data", pcb->unacked == NULL); - 8008e22: 6afb ldr r3, [r7, #44] @ 0x2c - 8008e24: 6f1b ldr r3, [r3, #112] @ 0x70 - 8008e26: 2b00 cmp r3, #0 - 8008e28: d006 beq.n 8008e38 - 8008e2a: 4b62 ldr r3, [pc, #392] @ (8008fb4 ) - 8008e2c: f240 42d4 movw r2, #1236 @ 0x4d4 - 8008e30: 4965 ldr r1, [pc, #404] @ (8008fc8 ) - 8008e32: 4862 ldr r0, [pc, #392] @ (8008fbc ) - 8008e34: f009 ff20 bl 8012c78 - LWIP_ASSERT("tcp_slowtimr: persist ticking with empty send buffer", pcb->unsent != NULL); - 8008e38: 6afb ldr r3, [r7, #44] @ 0x2c - 8008e3a: 6edb ldr r3, [r3, #108] @ 0x6c - 8008e3c: 2b00 cmp r3, #0 - 8008e3e: d106 bne.n 8008e4e - 8008e40: 4b5c ldr r3, [pc, #368] @ (8008fb4 ) - 8008e42: f240 42d5 movw r2, #1237 @ 0x4d5 - 8008e46: 4961 ldr r1, [pc, #388] @ (8008fcc ) - 8008e48: 485c ldr r0, [pc, #368] @ (8008fbc ) - 8008e4a: f009 ff15 bl 8012c78 - if (pcb->persist_probe >= TCP_MAXRTX) { - 8008e4e: 6afb ldr r3, [r7, #44] @ 0x2c - 8008e50: f893 309a ldrb.w r3, [r3, #154] @ 0x9a - 8008e54: 2b0b cmp r3, #11 - 8008e56: d905 bls.n 8008e64 - ++pcb_remove; /* max probes reached */ - 8008e58: f897 3027 ldrb.w r3, [r7, #39] @ 0x27 - 8008e5c: 3301 adds r3, #1 - 8008e5e: f887 3027 strb.w r3, [r7, #39] @ 0x27 - 8008e62: e0ed b.n 8009040 - u8_t backoff_cnt = tcp_persist_backoff[pcb->persist_backoff - 1]; - 8008e64: 6afb ldr r3, [r7, #44] @ 0x2c - 8008e66: f893 3099 ldrb.w r3, [r3, #153] @ 0x99 - 8008e6a: 3b01 subs r3, #1 - 8008e6c: 4a58 ldr r2, [pc, #352] @ (8008fd0 ) - 8008e6e: 5cd3 ldrb r3, [r2, r3] - 8008e70: 747b strb r3, [r7, #17] - if (pcb->persist_cnt < backoff_cnt) { - 8008e72: 6afb ldr r3, [r7, #44] @ 0x2c - 8008e74: f893 3098 ldrb.w r3, [r3, #152] @ 0x98 - 8008e78: 7c7a ldrb r2, [r7, #17] - 8008e7a: 429a cmp r2, r3 - 8008e7c: d907 bls.n 8008e8e - pcb->persist_cnt++; - 8008e7e: 6afb ldr r3, [r7, #44] @ 0x2c - 8008e80: f893 3098 ldrb.w r3, [r3, #152] @ 0x98 - 8008e84: 3301 adds r3, #1 - 8008e86: b2da uxtb r2, r3 - 8008e88: 6afb ldr r3, [r7, #44] @ 0x2c - 8008e8a: f883 2098 strb.w r2, [r3, #152] @ 0x98 - if (pcb->persist_cnt >= backoff_cnt) { - 8008e8e: 6afb ldr r3, [r7, #44] @ 0x2c - 8008e90: f893 3098 ldrb.w r3, [r3, #152] @ 0x98 - 8008e94: 7c7a ldrb r2, [r7, #17] - 8008e96: 429a cmp r2, r3 - 8008e98: f200 80d2 bhi.w 8009040 - int next_slot = 1; /* increment timer to next slot */ - 8008e9c: 2301 movs r3, #1 - 8008e9e: 623b str r3, [r7, #32] - if (pcb->snd_wnd == 0) { - 8008ea0: 6afb ldr r3, [r7, #44] @ 0x2c - 8008ea2: f8b3 3060 ldrh.w r3, [r3, #96] @ 0x60 - 8008ea6: 2b00 cmp r3, #0 - 8008ea8: d108 bne.n 8008ebc - if (tcp_zero_window_probe(pcb) != ERR_OK) { - 8008eaa: 6af8 ldr r0, [r7, #44] @ 0x2c - 8008eac: f004 fc24 bl 800d6f8 - 8008eb0: 4603 mov r3, r0 - 8008eb2: 2b00 cmp r3, #0 - 8008eb4: d014 beq.n 8008ee0 - next_slot = 0; /* try probe again with current slot */ - 8008eb6: 2300 movs r3, #0 - 8008eb8: 623b str r3, [r7, #32] - 8008eba: e011 b.n 8008ee0 - if (tcp_split_unsent_seg(pcb, (u16_t)pcb->snd_wnd) == ERR_OK) { - 8008ebc: 6afb ldr r3, [r7, #44] @ 0x2c - 8008ebe: f8b3 3060 ldrh.w r3, [r3, #96] @ 0x60 - 8008ec2: 4619 mov r1, r3 - 8008ec4: 6af8 ldr r0, [r7, #44] @ 0x2c - 8008ec6: f003 fae9 bl 800c49c - 8008eca: 4603 mov r3, r0 - 8008ecc: 2b00 cmp r3, #0 - 8008ece: d107 bne.n 8008ee0 - if (tcp_output(pcb) == ERR_OK) { - 8008ed0: 6af8 ldr r0, [r7, #44] @ 0x2c - 8008ed2: f003 fd69 bl 800c9a8 - 8008ed6: 4603 mov r3, r0 - 8008ed8: 2b00 cmp r3, #0 - 8008eda: d101 bne.n 8008ee0 - next_slot = 0; - 8008edc: 2300 movs r3, #0 - 8008ede: 623b str r3, [r7, #32] - if (next_slot) { - 8008ee0: 6a3b ldr r3, [r7, #32] - 8008ee2: 2b00 cmp r3, #0 - 8008ee4: f000 80ac beq.w 8009040 - pcb->persist_cnt = 0; - 8008ee8: 6afb ldr r3, [r7, #44] @ 0x2c - 8008eea: 2200 movs r2, #0 - 8008eec: f883 2098 strb.w r2, [r3, #152] @ 0x98 - if (pcb->persist_backoff < sizeof(tcp_persist_backoff)) { - 8008ef0: 6afb ldr r3, [r7, #44] @ 0x2c - 8008ef2: f893 3099 ldrb.w r3, [r3, #153] @ 0x99 - 8008ef6: 2b06 cmp r3, #6 - 8008ef8: f200 80a2 bhi.w 8009040 - pcb->persist_backoff++; - 8008efc: 6afb ldr r3, [r7, #44] @ 0x2c - 8008efe: f893 3099 ldrb.w r3, [r3, #153] @ 0x99 - 8008f02: 3301 adds r3, #1 - 8008f04: b2da uxtb r2, r3 - 8008f06: 6afb ldr r3, [r7, #44] @ 0x2c - 8008f08: f883 2099 strb.w r2, [r3, #153] @ 0x99 - 8008f0c: e098 b.n 8009040 - if ((pcb->rtime >= 0) && (pcb->rtime < 0x7FFF)) { - 8008f0e: 6afb ldr r3, [r7, #44] @ 0x2c - 8008f10: f9b3 3030 ldrsh.w r3, [r3, #48] @ 0x30 - 8008f14: 2b00 cmp r3, #0 - 8008f16: db0f blt.n 8008f38 - 8008f18: 6afb ldr r3, [r7, #44] @ 0x2c - 8008f1a: f9b3 3030 ldrsh.w r3, [r3, #48] @ 0x30 - 8008f1e: f647 72ff movw r2, #32767 @ 0x7fff - 8008f22: 4293 cmp r3, r2 - 8008f24: d008 beq.n 8008f38 - ++pcb->rtime; - 8008f26: 6afb ldr r3, [r7, #44] @ 0x2c - 8008f28: f9b3 3030 ldrsh.w r3, [r3, #48] @ 0x30 - 8008f2c: b29b uxth r3, r3 - 8008f2e: 3301 adds r3, #1 - 8008f30: b29b uxth r3, r3 - 8008f32: b21a sxth r2, r3 - 8008f34: 6afb ldr r3, [r7, #44] @ 0x2c - 8008f36: 861a strh r2, [r3, #48] @ 0x30 - if (pcb->rtime >= pcb->rto) { - 8008f38: 6afb ldr r3, [r7, #44] @ 0x2c - 8008f3a: f9b3 2030 ldrsh.w r2, [r3, #48] @ 0x30 - 8008f3e: 6afb ldr r3, [r7, #44] @ 0x2c - 8008f40: f9b3 3040 ldrsh.w r3, [r3, #64] @ 0x40 - 8008f44: 429a cmp r2, r3 - 8008f46: db7b blt.n 8009040 - if ((tcp_rexmit_rto_prepare(pcb) == ERR_OK) || ((pcb->unacked == NULL) && (pcb->unsent != NULL))) { - 8008f48: 6af8 ldr r0, [r7, #44] @ 0x2c - 8008f4a: f004 f821 bl 800cf90 - 8008f4e: 4603 mov r3, r0 - 8008f50: 2b00 cmp r3, #0 - 8008f52: d007 beq.n 8008f64 - 8008f54: 6afb ldr r3, [r7, #44] @ 0x2c - 8008f56: 6f1b ldr r3, [r3, #112] @ 0x70 - 8008f58: 2b00 cmp r3, #0 - 8008f5a: d171 bne.n 8009040 - 8008f5c: 6afb ldr r3, [r7, #44] @ 0x2c - 8008f5e: 6edb ldr r3, [r3, #108] @ 0x6c - 8008f60: 2b00 cmp r3, #0 - 8008f62: d06d beq.n 8009040 - if (pcb->state != SYN_SENT) { - 8008f64: 6afb ldr r3, [r7, #44] @ 0x2c - 8008f66: 7d1b ldrb r3, [r3, #20] - 8008f68: 2b02 cmp r3, #2 - 8008f6a: d03a beq.n 8008fe2 - u8_t backoff_idx = LWIP_MIN(pcb->nrtx, sizeof(tcp_backoff) - 1); - 8008f6c: 6afb ldr r3, [r7, #44] @ 0x2c - 8008f6e: f893 3042 ldrb.w r3, [r3, #66] @ 0x42 - 8008f72: 2b0c cmp r3, #12 - 8008f74: bf28 it cs - 8008f76: 230c movcs r3, #12 - 8008f78: 76fb strb r3, [r7, #27] - int calc_rto = ((pcb->sa >> 3) + pcb->sv) << tcp_backoff[backoff_idx]; - 8008f7a: 6afb ldr r3, [r7, #44] @ 0x2c - 8008f7c: f9b3 303c ldrsh.w r3, [r3, #60] @ 0x3c - 8008f80: 10db asrs r3, r3, #3 - 8008f82: b21b sxth r3, r3 - 8008f84: 461a mov r2, r3 - 8008f86: 6afb ldr r3, [r7, #44] @ 0x2c - 8008f88: f9b3 303e ldrsh.w r3, [r3, #62] @ 0x3e - 8008f8c: 4413 add r3, r2 - 8008f8e: 7efa ldrb r2, [r7, #27] - 8008f90: 4910 ldr r1, [pc, #64] @ (8008fd4 ) - 8008f92: 5c8a ldrb r2, [r1, r2] - 8008f94: 4093 lsls r3, r2 - 8008f96: 617b str r3, [r7, #20] - pcb->rto = (s16_t)LWIP_MIN(calc_rto, 0x7FFF); - 8008f98: 697b ldr r3, [r7, #20] - 8008f9a: f647 72fe movw r2, #32766 @ 0x7ffe - 8008f9e: 4293 cmp r3, r2 - 8008fa0: dc1a bgt.n 8008fd8 - 8008fa2: 697b ldr r3, [r7, #20] - 8008fa4: b21a sxth r2, r3 - 8008fa6: e019 b.n 8008fdc - 8008fa8: 200190ec .word 0x200190ec - 8008fac: 20019102 .word 0x20019102 - 8008fb0: 200190f8 .word 0x200190f8 - 8008fb4: 080181c4 .word 0x080181c4 - 8008fb8: 08018508 .word 0x08018508 - 8008fbc: 08018208 .word 0x08018208 - 8008fc0: 08018534 .word 0x08018534 - 8008fc4: 08018560 .word 0x08018560 - 8008fc8: 08018590 .word 0x08018590 - 8008fcc: 080185c4 .word 0x080185c4 - 8008fd0: 0801a5a4 .word 0x0801a5a4 - 8008fd4: 0801a594 .word 0x0801a594 - 8008fd8: f647 72ff movw r2, #32767 @ 0x7fff - 8008fdc: 6afb ldr r3, [r7, #44] @ 0x2c - 8008fde: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 - pcb->rtime = 0; - 8008fe2: 6afb ldr r3, [r7, #44] @ 0x2c - 8008fe4: 2200 movs r2, #0 - 8008fe6: 861a strh r2, [r3, #48] @ 0x30 - eff_wnd = LWIP_MIN(pcb->cwnd, pcb->snd_wnd); - 8008fe8: 6afb ldr r3, [r7, #44] @ 0x2c - 8008fea: f8b3 2060 ldrh.w r2, [r3, #96] @ 0x60 - 8008fee: 6afb ldr r3, [r7, #44] @ 0x2c - 8008ff0: f8b3 3048 ldrh.w r3, [r3, #72] @ 0x48 - 8008ff4: 4293 cmp r3, r2 - 8008ff6: bf28 it cs - 8008ff8: 4613 movcs r3, r2 - 8008ffa: 827b strh r3, [r7, #18] - pcb->ssthresh = eff_wnd >> 1; - 8008ffc: 8a7b ldrh r3, [r7, #18] - 8008ffe: 085b lsrs r3, r3, #1 - 8009000: b29a uxth r2, r3 - 8009002: 6afb ldr r3, [r7, #44] @ 0x2c - 8009004: f8a3 204a strh.w r2, [r3, #74] @ 0x4a - if (pcb->ssthresh < (tcpwnd_size_t)(pcb->mss << 1)) { - 8009008: 6afb ldr r3, [r7, #44] @ 0x2c - 800900a: f8b3 204a ldrh.w r2, [r3, #74] @ 0x4a - 800900e: 6afb ldr r3, [r7, #44] @ 0x2c - 8009010: 8e5b ldrh r3, [r3, #50] @ 0x32 - 8009012: 005b lsls r3, r3, #1 - 8009014: b29b uxth r3, r3 - 8009016: 429a cmp r2, r3 - 8009018: d206 bcs.n 8009028 - pcb->ssthresh = (tcpwnd_size_t)(pcb->mss << 1); - 800901a: 6afb ldr r3, [r7, #44] @ 0x2c - 800901c: 8e5b ldrh r3, [r3, #50] @ 0x32 - 800901e: 005b lsls r3, r3, #1 - 8009020: b29a uxth r2, r3 - 8009022: 6afb ldr r3, [r7, #44] @ 0x2c - 8009024: f8a3 204a strh.w r2, [r3, #74] @ 0x4a - pcb->cwnd = pcb->mss; - 8009028: 6afb ldr r3, [r7, #44] @ 0x2c - 800902a: 8e5a ldrh r2, [r3, #50] @ 0x32 - 800902c: 6afb ldr r3, [r7, #44] @ 0x2c - 800902e: f8a3 2048 strh.w r2, [r3, #72] @ 0x48 - pcb->bytes_acked = 0; - 8009032: 6afb ldr r3, [r7, #44] @ 0x2c - 8009034: 2200 movs r2, #0 - 8009036: f8a3 206a strh.w r2, [r3, #106] @ 0x6a - tcp_rexmit_rto_commit(pcb); - 800903a: 6af8 ldr r0, [r7, #44] @ 0x2c - 800903c: f004 f818 bl 800d070 - if (pcb->state == FIN_WAIT_2) { - 8009040: 6afb ldr r3, [r7, #44] @ 0x2c - 8009042: 7d1b ldrb r3, [r3, #20] - 8009044: 2b06 cmp r3, #6 - 8009046: d111 bne.n 800906c - if (pcb->flags & TF_RXCLOSED) { - 8009048: 6afb ldr r3, [r7, #44] @ 0x2c - 800904a: 8b5b ldrh r3, [r3, #26] - 800904c: f003 0310 and.w r3, r3, #16 - 8009050: 2b00 cmp r3, #0 - 8009052: d00b beq.n 800906c - if ((u32_t)(tcp_ticks - pcb->tmr) > - 8009054: 4b9d ldr r3, [pc, #628] @ (80092cc ) - 8009056: 681a ldr r2, [r3, #0] - 8009058: 6afb ldr r3, [r7, #44] @ 0x2c - 800905a: 6a1b ldr r3, [r3, #32] - 800905c: 1ad3 subs r3, r2, r3 - 800905e: 2b28 cmp r3, #40 @ 0x28 - 8009060: d904 bls.n 800906c - ++pcb_remove; - 8009062: f897 3027 ldrb.w r3, [r7, #39] @ 0x27 - 8009066: 3301 adds r3, #1 - 8009068: f887 3027 strb.w r3, [r7, #39] @ 0x27 - if (ip_get_option(pcb, SOF_KEEPALIVE) && - 800906c: 6afb ldr r3, [r7, #44] @ 0x2c - 800906e: 7a5b ldrb r3, [r3, #9] - 8009070: f003 0308 and.w r3, r3, #8 - 8009074: 2b00 cmp r3, #0 - 8009076: d04c beq.n 8009112 - ((pcb->state == ESTABLISHED) || - 8009078: 6afb ldr r3, [r7, #44] @ 0x2c - 800907a: 7d1b ldrb r3, [r3, #20] - if (ip_get_option(pcb, SOF_KEEPALIVE) && - 800907c: 2b04 cmp r3, #4 - 800907e: d003 beq.n 8009088 - (pcb->state == CLOSE_WAIT))) { - 8009080: 6afb ldr r3, [r7, #44] @ 0x2c - 8009082: 7d1b ldrb r3, [r3, #20] - ((pcb->state == ESTABLISHED) || - 8009084: 2b07 cmp r3, #7 - 8009086: d144 bne.n 8009112 - if ((u32_t)(tcp_ticks - pcb->tmr) > - 8009088: 4b90 ldr r3, [pc, #576] @ (80092cc ) - 800908a: 681a ldr r2, [r3, #0] - 800908c: 6afb ldr r3, [r7, #44] @ 0x2c - 800908e: 6a1b ldr r3, [r3, #32] - 8009090: 1ad2 subs r2, r2, r3 - (pcb->keep_idle + TCP_KEEP_DUR(pcb)) / TCP_SLOW_INTERVAL) { - 8009092: 6afb ldr r3, [r7, #44] @ 0x2c - 8009094: f8d3 3094 ldr.w r3, [r3, #148] @ 0x94 - 8009098: f503 2324 add.w r3, r3, #671744 @ 0xa4000 - 800909c: f603 43b8 addw r3, r3, #3256 @ 0xcb8 - 80090a0: 498b ldr r1, [pc, #556] @ (80092d0 ) - 80090a2: fba1 1303 umull r1, r3, r1, r3 - 80090a6: 095b lsrs r3, r3, #5 - if ((u32_t)(tcp_ticks - pcb->tmr) > - 80090a8: 429a cmp r2, r3 - 80090aa: d90a bls.n 80090c2 - ++pcb_remove; - 80090ac: f897 3027 ldrb.w r3, [r7, #39] @ 0x27 - 80090b0: 3301 adds r3, #1 - 80090b2: f887 3027 strb.w r3, [r7, #39] @ 0x27 - ++pcb_reset; - 80090b6: f897 3026 ldrb.w r3, [r7, #38] @ 0x26 - 80090ba: 3301 adds r3, #1 - 80090bc: f887 3026 strb.w r3, [r7, #38] @ 0x26 - 80090c0: e027 b.n 8009112 - } else if ((u32_t)(tcp_ticks - pcb->tmr) > - 80090c2: 4b82 ldr r3, [pc, #520] @ (80092cc ) - 80090c4: 681a ldr r2, [r3, #0] - 80090c6: 6afb ldr r3, [r7, #44] @ 0x2c - 80090c8: 6a1b ldr r3, [r3, #32] - 80090ca: 1ad2 subs r2, r2, r3 - (pcb->keep_idle + pcb->keep_cnt_sent * TCP_KEEP_INTVL(pcb)) - 80090cc: 6afb ldr r3, [r7, #44] @ 0x2c - 80090ce: f8d3 1094 ldr.w r1, [r3, #148] @ 0x94 - 80090d2: 6afb ldr r3, [r7, #44] @ 0x2c - 80090d4: f893 309b ldrb.w r3, [r3, #155] @ 0x9b - 80090d8: 4618 mov r0, r3 - 80090da: 4b7e ldr r3, [pc, #504] @ (80092d4 ) - 80090dc: fb00 f303 mul.w r3, r0, r3 - 80090e0: 440b add r3, r1 - / TCP_SLOW_INTERVAL) { - 80090e2: 497b ldr r1, [pc, #492] @ (80092d0 ) - 80090e4: fba1 1303 umull r1, r3, r1, r3 - 80090e8: 095b lsrs r3, r3, #5 - } else if ((u32_t)(tcp_ticks - pcb->tmr) > - 80090ea: 429a cmp r2, r3 - 80090ec: d911 bls.n 8009112 - err = tcp_keepalive(pcb); - 80090ee: 6af8 ldr r0, [r7, #44] @ 0x2c - 80090f0: f004 fac2 bl 800d678 - 80090f4: 4603 mov r3, r0 - 80090f6: f887 3025 strb.w r3, [r7, #37] @ 0x25 - if (err == ERR_OK) { - 80090fa: f997 3025 ldrsb.w r3, [r7, #37] @ 0x25 - 80090fe: 2b00 cmp r3, #0 - 8009100: d107 bne.n 8009112 - pcb->keep_cnt_sent++; - 8009102: 6afb ldr r3, [r7, #44] @ 0x2c - 8009104: f893 309b ldrb.w r3, [r3, #155] @ 0x9b - 8009108: 3301 adds r3, #1 - 800910a: b2da uxtb r2, r3 - 800910c: 6afb ldr r3, [r7, #44] @ 0x2c - 800910e: f883 209b strb.w r2, [r3, #155] @ 0x9b - if (pcb->ooseq != NULL && - 8009112: 6afb ldr r3, [r7, #44] @ 0x2c - 8009114: 6f5b ldr r3, [r3, #116] @ 0x74 - 8009116: 2b00 cmp r3, #0 - 8009118: d011 beq.n 800913e - (tcp_ticks - pcb->tmr >= (u32_t)pcb->rto * TCP_OOSEQ_TIMEOUT)) { - 800911a: 4b6c ldr r3, [pc, #432] @ (80092cc ) - 800911c: 681a ldr r2, [r3, #0] - 800911e: 6afb ldr r3, [r7, #44] @ 0x2c - 8009120: 6a1b ldr r3, [r3, #32] - 8009122: 1ad2 subs r2, r2, r3 - 8009124: 6afb ldr r3, [r7, #44] @ 0x2c - 8009126: f9b3 3040 ldrsh.w r3, [r3, #64] @ 0x40 - 800912a: 4619 mov r1, r3 - 800912c: 460b mov r3, r1 - 800912e: 005b lsls r3, r3, #1 - 8009130: 440b add r3, r1 - 8009132: 005b lsls r3, r3, #1 - if (pcb->ooseq != NULL && - 8009134: 429a cmp r2, r3 - 8009136: d302 bcc.n 800913e - tcp_free_ooseq(pcb); - 8009138: 6af8 ldr r0, [r7, #44] @ 0x2c - 800913a: f000 fddb bl 8009cf4 - if (pcb->state == SYN_RCVD) { - 800913e: 6afb ldr r3, [r7, #44] @ 0x2c - 8009140: 7d1b ldrb r3, [r3, #20] - 8009142: 2b03 cmp r3, #3 - 8009144: d10b bne.n 800915e - if ((u32_t)(tcp_ticks - pcb->tmr) > - 8009146: 4b61 ldr r3, [pc, #388] @ (80092cc ) - 8009148: 681a ldr r2, [r3, #0] - 800914a: 6afb ldr r3, [r7, #44] @ 0x2c - 800914c: 6a1b ldr r3, [r3, #32] - 800914e: 1ad3 subs r3, r2, r3 - 8009150: 2b28 cmp r3, #40 @ 0x28 - 8009152: d904 bls.n 800915e - ++pcb_remove; - 8009154: f897 3027 ldrb.w r3, [r7, #39] @ 0x27 - 8009158: 3301 adds r3, #1 - 800915a: f887 3027 strb.w r3, [r7, #39] @ 0x27 - if (pcb->state == LAST_ACK) { - 800915e: 6afb ldr r3, [r7, #44] @ 0x2c - 8009160: 7d1b ldrb r3, [r3, #20] - 8009162: 2b09 cmp r3, #9 - 8009164: d10b bne.n 800917e - if ((u32_t)(tcp_ticks - pcb->tmr) > 2 * TCP_MSL / TCP_SLOW_INTERVAL) { - 8009166: 4b59 ldr r3, [pc, #356] @ (80092cc ) - 8009168: 681a ldr r2, [r3, #0] - 800916a: 6afb ldr r3, [r7, #44] @ 0x2c - 800916c: 6a1b ldr r3, [r3, #32] - 800916e: 1ad3 subs r3, r2, r3 - 8009170: 2bf0 cmp r3, #240 @ 0xf0 - 8009172: d904 bls.n 800917e - ++pcb_remove; - 8009174: f897 3027 ldrb.w r3, [r7, #39] @ 0x27 - 8009178: 3301 adds r3, #1 - 800917a: f887 3027 strb.w r3, [r7, #39] @ 0x27 - if (pcb_remove) { - 800917e: f897 3027 ldrb.w r3, [r7, #39] @ 0x27 - 8009182: 2b00 cmp r3, #0 - 8009184: d060 beq.n 8009248 - tcp_err_fn err_fn = pcb->errf; - 8009186: 6afb ldr r3, [r7, #44] @ 0x2c - 8009188: f8d3 3090 ldr.w r3, [r3, #144] @ 0x90 - 800918c: 60fb str r3, [r7, #12] - tcp_pcb_purge(pcb); - 800918e: 6af8 ldr r0, [r7, #44] @ 0x2c - 8009190: f000 fbfc bl 800998c - if (prev != NULL) { - 8009194: 6abb ldr r3, [r7, #40] @ 0x28 - 8009196: 2b00 cmp r3, #0 - 8009198: d010 beq.n 80091bc - LWIP_ASSERT("tcp_slowtmr: middle tcp != tcp_active_pcbs", pcb != tcp_active_pcbs); - 800919a: 4b4f ldr r3, [pc, #316] @ (80092d8 ) - 800919c: 681b ldr r3, [r3, #0] - 800919e: 6afa ldr r2, [r7, #44] @ 0x2c - 80091a0: 429a cmp r2, r3 - 80091a2: d106 bne.n 80091b2 - 80091a4: 4b4d ldr r3, [pc, #308] @ (80092dc ) - 80091a6: f240 526d movw r2, #1389 @ 0x56d - 80091aa: 494d ldr r1, [pc, #308] @ (80092e0 ) - 80091ac: 484d ldr r0, [pc, #308] @ (80092e4 ) - 80091ae: f009 fd63 bl 8012c78 - prev->next = pcb->next; - 80091b2: 6afb ldr r3, [r7, #44] @ 0x2c - 80091b4: 68da ldr r2, [r3, #12] - 80091b6: 6abb ldr r3, [r7, #40] @ 0x28 - 80091b8: 60da str r2, [r3, #12] - 80091ba: e00f b.n 80091dc - LWIP_ASSERT("tcp_slowtmr: first pcb == tcp_active_pcbs", tcp_active_pcbs == pcb); - 80091bc: 4b46 ldr r3, [pc, #280] @ (80092d8 ) - 80091be: 681b ldr r3, [r3, #0] - 80091c0: 6afa ldr r2, [r7, #44] @ 0x2c - 80091c2: 429a cmp r2, r3 - 80091c4: d006 beq.n 80091d4 - 80091c6: 4b45 ldr r3, [pc, #276] @ (80092dc ) - 80091c8: f240 5271 movw r2, #1393 @ 0x571 - 80091cc: 4946 ldr r1, [pc, #280] @ (80092e8 ) - 80091ce: 4845 ldr r0, [pc, #276] @ (80092e4 ) - 80091d0: f009 fd52 bl 8012c78 - tcp_active_pcbs = pcb->next; - 80091d4: 6afb ldr r3, [r7, #44] @ 0x2c - 80091d6: 68db ldr r3, [r3, #12] - 80091d8: 4a3f ldr r2, [pc, #252] @ (80092d8 ) - 80091da: 6013 str r3, [r2, #0] - if (pcb_reset) { - 80091dc: f897 3026 ldrb.w r3, [r7, #38] @ 0x26 - 80091e0: 2b00 cmp r3, #0 - 80091e2: d013 beq.n 800920c - tcp_rst(pcb, pcb->snd_nxt, pcb->rcv_nxt, &pcb->local_ip, &pcb->remote_ip, - 80091e4: 6afb ldr r3, [r7, #44] @ 0x2c - 80091e6: 6d18 ldr r0, [r3, #80] @ 0x50 - 80091e8: 6afb ldr r3, [r7, #44] @ 0x2c - 80091ea: 6a5c ldr r4, [r3, #36] @ 0x24 - 80091ec: 6afd ldr r5, [r7, #44] @ 0x2c - 80091ee: 6afb ldr r3, [r7, #44] @ 0x2c - 80091f0: 3304 adds r3, #4 - 80091f2: 6afa ldr r2, [r7, #44] @ 0x2c - 80091f4: 8ad2 ldrh r2, [r2, #22] - 80091f6: 6af9 ldr r1, [r7, #44] @ 0x2c - 80091f8: 8b09 ldrh r1, [r1, #24] - 80091fa: 9102 str r1, [sp, #8] - 80091fc: 9201 str r2, [sp, #4] - 80091fe: 9300 str r3, [sp, #0] - 8009200: 462b mov r3, r5 - 8009202: 4622 mov r2, r4 - 8009204: 4601 mov r1, r0 - 8009206: 6af8 ldr r0, [r7, #44] @ 0x2c - 8009208: f004 f982 bl 800d510 - err_arg = pcb->callback_arg; - 800920c: 6afb ldr r3, [r7, #44] @ 0x2c - 800920e: 691b ldr r3, [r3, #16] - 8009210: 60bb str r3, [r7, #8] - last_state = pcb->state; - 8009212: 6afb ldr r3, [r7, #44] @ 0x2c - 8009214: 7d1b ldrb r3, [r3, #20] - 8009216: 71fb strb r3, [r7, #7] - pcb2 = pcb; - 8009218: 6afb ldr r3, [r7, #44] @ 0x2c - 800921a: 603b str r3, [r7, #0] - pcb = pcb->next; - 800921c: 6afb ldr r3, [r7, #44] @ 0x2c - 800921e: 68db ldr r3, [r3, #12] - 8009220: 62fb str r3, [r7, #44] @ 0x2c - tcp_free(pcb2); - 8009222: 6838 ldr r0, [r7, #0] - 8009224: f7ff f9f0 bl 8008608 - tcp_active_pcbs_changed = 0; - 8009228: 4b30 ldr r3, [pc, #192] @ (80092ec ) - 800922a: 2200 movs r2, #0 - 800922c: 701a strb r2, [r3, #0] - TCP_EVENT_ERR(last_state, err_fn, err_arg, ERR_ABRT); - 800922e: 68fb ldr r3, [r7, #12] - 8009230: 2b00 cmp r3, #0 - 8009232: d004 beq.n 800923e - 8009234: 68fb ldr r3, [r7, #12] - 8009236: f06f 010c mvn.w r1, #12 - 800923a: 68b8 ldr r0, [r7, #8] - 800923c: 4798 blx r3 - if (tcp_active_pcbs_changed) { - 800923e: 4b2b ldr r3, [pc, #172] @ (80092ec ) - 8009240: 781b ldrb r3, [r3, #0] - 8009242: 2b00 cmp r3, #0 - 8009244: d037 beq.n 80092b6 - goto tcp_slowtmr_start; - 8009246: e590 b.n 8008d6a - prev = pcb; - 8009248: 6afb ldr r3, [r7, #44] @ 0x2c - 800924a: 62bb str r3, [r7, #40] @ 0x28 - pcb = pcb->next; - 800924c: 6afb ldr r3, [r7, #44] @ 0x2c - 800924e: 68db ldr r3, [r3, #12] - 8009250: 62fb str r3, [r7, #44] @ 0x2c - ++prev->polltmr; - 8009252: 6abb ldr r3, [r7, #40] @ 0x28 - 8009254: 7f1b ldrb r3, [r3, #28] - 8009256: 3301 adds r3, #1 - 8009258: b2da uxtb r2, r3 - 800925a: 6abb ldr r3, [r7, #40] @ 0x28 - 800925c: 771a strb r2, [r3, #28] - if (prev->polltmr >= prev->pollinterval) { - 800925e: 6abb ldr r3, [r7, #40] @ 0x28 - 8009260: 7f1a ldrb r2, [r3, #28] - 8009262: 6abb ldr r3, [r7, #40] @ 0x28 - 8009264: 7f5b ldrb r3, [r3, #29] - 8009266: 429a cmp r2, r3 - 8009268: d325 bcc.n 80092b6 - prev->polltmr = 0; - 800926a: 6abb ldr r3, [r7, #40] @ 0x28 - 800926c: 2200 movs r2, #0 - 800926e: 771a strb r2, [r3, #28] - tcp_active_pcbs_changed = 0; - 8009270: 4b1e ldr r3, [pc, #120] @ (80092ec ) - 8009272: 2200 movs r2, #0 - 8009274: 701a strb r2, [r3, #0] - TCP_EVENT_POLL(prev, err); - 8009276: 6abb ldr r3, [r7, #40] @ 0x28 - 8009278: f8d3 308c ldr.w r3, [r3, #140] @ 0x8c - 800927c: 2b00 cmp r3, #0 - 800927e: d00b beq.n 8009298 - 8009280: 6abb ldr r3, [r7, #40] @ 0x28 - 8009282: f8d3 308c ldr.w r3, [r3, #140] @ 0x8c - 8009286: 6aba ldr r2, [r7, #40] @ 0x28 - 8009288: 6912 ldr r2, [r2, #16] - 800928a: 6ab9 ldr r1, [r7, #40] @ 0x28 - 800928c: 4610 mov r0, r2 - 800928e: 4798 blx r3 - 8009290: 4603 mov r3, r0 - 8009292: f887 3025 strb.w r3, [r7, #37] @ 0x25 - 8009296: e002 b.n 800929e - 8009298: 2300 movs r3, #0 - 800929a: f887 3025 strb.w r3, [r7, #37] @ 0x25 - if (tcp_active_pcbs_changed) { - 800929e: 4b13 ldr r3, [pc, #76] @ (80092ec ) - 80092a0: 781b ldrb r3, [r3, #0] - 80092a2: 2b00 cmp r3, #0 - 80092a4: f47f ad60 bne.w 8008d68 - } - /* if err == ERR_ABRT, 'prev' is already deallocated */ - if (err == ERR_OK) { - 80092a8: f997 3025 ldrsb.w r3, [r7, #37] @ 0x25 - 80092ac: 2b00 cmp r3, #0 - 80092ae: d102 bne.n 80092b6 - tcp_output(prev); - 80092b0: 6ab8 ldr r0, [r7, #40] @ 0x28 - 80092b2: f003 fb79 bl 800c9a8 - while (pcb != NULL) { - 80092b6: 6afb ldr r3, [r7, #44] @ 0x2c - 80092b8: 2b00 cmp r3, #0 - 80092ba: f47f ad5c bne.w 8008d76 - } - } - - - /* Steps through all of the TIME-WAIT PCBs. */ - prev = NULL; - 80092be: 2300 movs r3, #0 - 80092c0: 62bb str r3, [r7, #40] @ 0x28 - pcb = tcp_tw_pcbs; - 80092c2: 4b0b ldr r3, [pc, #44] @ (80092f0 ) - 80092c4: 681b ldr r3, [r3, #0] - 80092c6: 62fb str r3, [r7, #44] @ 0x2c - while (pcb != NULL) { - 80092c8: e067 b.n 800939a - 80092ca: bf00 nop - 80092cc: 200190ec .word 0x200190ec - 80092d0: 10624dd3 .word 0x10624dd3 - 80092d4: 000124f8 .word 0x000124f8 - 80092d8: 200190f8 .word 0x200190f8 - 80092dc: 080181c4 .word 0x080181c4 - 80092e0: 080185fc .word 0x080185fc - 80092e4: 08018208 .word 0x08018208 - 80092e8: 08018628 .word 0x08018628 - 80092ec: 20019100 .word 0x20019100 - 80092f0: 200190fc .word 0x200190fc - LWIP_ASSERT("tcp_slowtmr: TIME-WAIT pcb->state == TIME-WAIT", pcb->state == TIME_WAIT); - 80092f4: 6afb ldr r3, [r7, #44] @ 0x2c - 80092f6: 7d1b ldrb r3, [r3, #20] - 80092f8: 2b0a cmp r3, #10 - 80092fa: d006 beq.n 800930a - 80092fc: 4b2b ldr r3, [pc, #172] @ (80093ac ) - 80092fe: f240 52a1 movw r2, #1441 @ 0x5a1 - 8009302: 492b ldr r1, [pc, #172] @ (80093b0 ) - 8009304: 482b ldr r0, [pc, #172] @ (80093b4 ) - 8009306: f009 fcb7 bl 8012c78 - pcb_remove = 0; - 800930a: 2300 movs r3, #0 - 800930c: f887 3027 strb.w r3, [r7, #39] @ 0x27 - - /* Check if this PCB has stayed long enough in TIME-WAIT */ - if ((u32_t)(tcp_ticks - pcb->tmr) > 2 * TCP_MSL / TCP_SLOW_INTERVAL) { - 8009310: 4b29 ldr r3, [pc, #164] @ (80093b8 ) - 8009312: 681a ldr r2, [r3, #0] - 8009314: 6afb ldr r3, [r7, #44] @ 0x2c - 8009316: 6a1b ldr r3, [r3, #32] - 8009318: 1ad3 subs r3, r2, r3 - 800931a: 2bf0 cmp r3, #240 @ 0xf0 - 800931c: d904 bls.n 8009328 - ++pcb_remove; - 800931e: f897 3027 ldrb.w r3, [r7, #39] @ 0x27 - 8009322: 3301 adds r3, #1 - 8009324: f887 3027 strb.w r3, [r7, #39] @ 0x27 - } - - /* If the PCB should be removed, do it. */ - if (pcb_remove) { - 8009328: f897 3027 ldrb.w r3, [r7, #39] @ 0x27 - 800932c: 2b00 cmp r3, #0 - 800932e: d02f beq.n 8009390 - struct tcp_pcb *pcb2; - tcp_pcb_purge(pcb); - 8009330: 6af8 ldr r0, [r7, #44] @ 0x2c - 8009332: f000 fb2b bl 800998c - /* Remove PCB from tcp_tw_pcbs list. */ - if (prev != NULL) { - 8009336: 6abb ldr r3, [r7, #40] @ 0x28 - 8009338: 2b00 cmp r3, #0 - 800933a: d010 beq.n 800935e - LWIP_ASSERT("tcp_slowtmr: middle tcp != tcp_tw_pcbs", pcb != tcp_tw_pcbs); - 800933c: 4b1f ldr r3, [pc, #124] @ (80093bc ) - 800933e: 681b ldr r3, [r3, #0] - 8009340: 6afa ldr r2, [r7, #44] @ 0x2c - 8009342: 429a cmp r2, r3 - 8009344: d106 bne.n 8009354 - 8009346: 4b19 ldr r3, [pc, #100] @ (80093ac ) - 8009348: f240 52af movw r2, #1455 @ 0x5af - 800934c: 491c ldr r1, [pc, #112] @ (80093c0 ) - 800934e: 4819 ldr r0, [pc, #100] @ (80093b4 ) - 8009350: f009 fc92 bl 8012c78 - prev->next = pcb->next; - 8009354: 6afb ldr r3, [r7, #44] @ 0x2c - 8009356: 68da ldr r2, [r3, #12] - 8009358: 6abb ldr r3, [r7, #40] @ 0x28 - 800935a: 60da str r2, [r3, #12] - 800935c: e00f b.n 800937e - } else { - /* This PCB was the first. */ - LWIP_ASSERT("tcp_slowtmr: first pcb == tcp_tw_pcbs", tcp_tw_pcbs == pcb); - 800935e: 4b17 ldr r3, [pc, #92] @ (80093bc ) - 8009360: 681b ldr r3, [r3, #0] - 8009362: 6afa ldr r2, [r7, #44] @ 0x2c - 8009364: 429a cmp r2, r3 - 8009366: d006 beq.n 8009376 - 8009368: 4b10 ldr r3, [pc, #64] @ (80093ac ) - 800936a: f240 52b3 movw r2, #1459 @ 0x5b3 - 800936e: 4915 ldr r1, [pc, #84] @ (80093c4 ) - 8009370: 4810 ldr r0, [pc, #64] @ (80093b4 ) - 8009372: f009 fc81 bl 8012c78 - tcp_tw_pcbs = pcb->next; - 8009376: 6afb ldr r3, [r7, #44] @ 0x2c - 8009378: 68db ldr r3, [r3, #12] - 800937a: 4a10 ldr r2, [pc, #64] @ (80093bc ) - 800937c: 6013 str r3, [r2, #0] - } - pcb2 = pcb; - 800937e: 6afb ldr r3, [r7, #44] @ 0x2c - 8009380: 61fb str r3, [r7, #28] - pcb = pcb->next; - 8009382: 6afb ldr r3, [r7, #44] @ 0x2c - 8009384: 68db ldr r3, [r3, #12] - 8009386: 62fb str r3, [r7, #44] @ 0x2c - tcp_free(pcb2); - 8009388: 69f8 ldr r0, [r7, #28] - 800938a: f7ff f93d bl 8008608 - 800938e: e004 b.n 800939a - } else { - prev = pcb; - 8009390: 6afb ldr r3, [r7, #44] @ 0x2c - 8009392: 62bb str r3, [r7, #40] @ 0x28 - pcb = pcb->next; - 8009394: 6afb ldr r3, [r7, #44] @ 0x2c - 8009396: 68db ldr r3, [r3, #12] - 8009398: 62fb str r3, [r7, #44] @ 0x2c - while (pcb != NULL) { - 800939a: 6afb ldr r3, [r7, #44] @ 0x2c - 800939c: 2b00 cmp r3, #0 - 800939e: d1a9 bne.n 80092f4 - } - } -} - 80093a0: bf00 nop - 80093a2: bf00 nop - 80093a4: 3730 adds r7, #48 @ 0x30 - 80093a6: 46bd mov sp, r7 - 80093a8: bdb0 pop {r4, r5, r7, pc} - 80093aa: bf00 nop - 80093ac: 080181c4 .word 0x080181c4 - 80093b0: 08018654 .word 0x08018654 - 80093b4: 08018208 .word 0x08018208 - 80093b8: 200190ec .word 0x200190ec - 80093bc: 200190fc .word 0x200190fc - 80093c0: 08018684 .word 0x08018684 - 80093c4: 080186ac .word 0x080186ac - -080093c8 : - * - * Automatically called from tcp_tmr(). - */ -void -tcp_fasttmr(void) -{ - 80093c8: b580 push {r7, lr} - 80093ca: b082 sub sp, #8 - 80093cc: af00 add r7, sp, #0 - struct tcp_pcb *pcb; - - ++tcp_timer_ctr; - 80093ce: 4b2d ldr r3, [pc, #180] @ (8009484 ) - 80093d0: 781b ldrb r3, [r3, #0] - 80093d2: 3301 adds r3, #1 - 80093d4: b2da uxtb r2, r3 - 80093d6: 4b2b ldr r3, [pc, #172] @ (8009484 ) - 80093d8: 701a strb r2, [r3, #0] - -tcp_fasttmr_start: - pcb = tcp_active_pcbs; - 80093da: 4b2b ldr r3, [pc, #172] @ (8009488 ) - 80093dc: 681b ldr r3, [r3, #0] - 80093de: 607b str r3, [r7, #4] - - while (pcb != NULL) { - 80093e0: e048 b.n 8009474 - if (pcb->last_timer != tcp_timer_ctr) { - 80093e2: 687b ldr r3, [r7, #4] - 80093e4: 7f9a ldrb r2, [r3, #30] - 80093e6: 4b27 ldr r3, [pc, #156] @ (8009484 ) - 80093e8: 781b ldrb r3, [r3, #0] - 80093ea: 429a cmp r2, r3 - 80093ec: d03f beq.n 800946e - struct tcp_pcb *next; - pcb->last_timer = tcp_timer_ctr; - 80093ee: 4b25 ldr r3, [pc, #148] @ (8009484 ) - 80093f0: 781a ldrb r2, [r3, #0] - 80093f2: 687b ldr r3, [r7, #4] - 80093f4: 779a strb r2, [r3, #30] - /* send delayed ACKs */ - if (pcb->flags & TF_ACK_DELAY) { - 80093f6: 687b ldr r3, [r7, #4] - 80093f8: 8b5b ldrh r3, [r3, #26] - 80093fa: f003 0301 and.w r3, r3, #1 - 80093fe: 2b00 cmp r3, #0 - 8009400: d010 beq.n 8009424 - LWIP_DEBUGF(TCP_DEBUG, ("tcp_fasttmr: delayed ACK\n")); - tcp_ack_now(pcb); - 8009402: 687b ldr r3, [r7, #4] - 8009404: 8b5b ldrh r3, [r3, #26] - 8009406: f043 0302 orr.w r3, r3, #2 - 800940a: b29a uxth r2, r3 - 800940c: 687b ldr r3, [r7, #4] - 800940e: 835a strh r2, [r3, #26] - tcp_output(pcb); - 8009410: 6878 ldr r0, [r7, #4] - 8009412: f003 fac9 bl 800c9a8 - tcp_clear_flags(pcb, TF_ACK_DELAY | TF_ACK_NOW); - 8009416: 687b ldr r3, [r7, #4] - 8009418: 8b5b ldrh r3, [r3, #26] - 800941a: f023 0303 bic.w r3, r3, #3 - 800941e: b29a uxth r2, r3 - 8009420: 687b ldr r3, [r7, #4] - 8009422: 835a strh r2, [r3, #26] - } - /* send pending FIN */ - if (pcb->flags & TF_CLOSEPEND) { - 8009424: 687b ldr r3, [r7, #4] - 8009426: 8b5b ldrh r3, [r3, #26] - 8009428: f003 0308 and.w r3, r3, #8 - 800942c: 2b00 cmp r3, #0 - 800942e: d009 beq.n 8009444 - LWIP_DEBUGF(TCP_DEBUG, ("tcp_fasttmr: pending FIN\n")); - tcp_clear_flags(pcb, TF_CLOSEPEND); - 8009430: 687b ldr r3, [r7, #4] - 8009432: 8b5b ldrh r3, [r3, #26] - 8009434: f023 0308 bic.w r3, r3, #8 - 8009438: b29a uxth r2, r3 - 800943a: 687b ldr r3, [r7, #4] - 800943c: 835a strh r2, [r3, #26] - tcp_close_shutdown_fin(pcb); - 800943e: 6878 ldr r0, [r7, #4] - 8009440: f7ff fa76 bl 8008930 - } - - next = pcb->next; - 8009444: 687b ldr r3, [r7, #4] - 8009446: 68db ldr r3, [r3, #12] - 8009448: 603b str r3, [r7, #0] - - /* If there is data which was previously "refused" by upper layer */ - if (pcb->refused_data != NULL) { - 800944a: 687b ldr r3, [r7, #4] - 800944c: 6f9b ldr r3, [r3, #120] @ 0x78 - 800944e: 2b00 cmp r3, #0 - 8009450: d00a beq.n 8009468 - tcp_active_pcbs_changed = 0; - 8009452: 4b0e ldr r3, [pc, #56] @ (800948c ) - 8009454: 2200 movs r2, #0 - 8009456: 701a strb r2, [r3, #0] - tcp_process_refused_data(pcb); - 8009458: 6878 ldr r0, [r7, #4] - 800945a: f000 f819 bl 8009490 - if (tcp_active_pcbs_changed) { - 800945e: 4b0b ldr r3, [pc, #44] @ (800948c ) - 8009460: 781b ldrb r3, [r3, #0] - 8009462: 2b00 cmp r3, #0 - 8009464: d000 beq.n 8009468 - /* application callback has changed the pcb list: restart the loop */ - goto tcp_fasttmr_start; - 8009466: e7b8 b.n 80093da - } - } - pcb = next; - 8009468: 683b ldr r3, [r7, #0] - 800946a: 607b str r3, [r7, #4] - 800946c: e002 b.n 8009474 - } else { - pcb = pcb->next; - 800946e: 687b ldr r3, [r7, #4] - 8009470: 68db ldr r3, [r3, #12] - 8009472: 607b str r3, [r7, #4] - while (pcb != NULL) { - 8009474: 687b ldr r3, [r7, #4] - 8009476: 2b00 cmp r3, #0 - 8009478: d1b3 bne.n 80093e2 - } - } -} - 800947a: bf00 nop - 800947c: bf00 nop - 800947e: 3708 adds r7, #8 - 8009480: 46bd mov sp, r7 - 8009482: bd80 pop {r7, pc} - 8009484: 20019102 .word 0x20019102 - 8009488: 200190f8 .word 0x200190f8 - 800948c: 20019100 .word 0x20019100 - -08009490 : -} - -/** Pass pcb->refused_data to the recv callback */ -err_t -tcp_process_refused_data(struct tcp_pcb *pcb) -{ - 8009490: b590 push {r4, r7, lr} - 8009492: b085 sub sp, #20 - 8009494: af00 add r7, sp, #0 - 8009496: 6078 str r0, [r7, #4] -#if TCP_QUEUE_OOSEQ && LWIP_WND_SCALE - struct pbuf *rest; -#endif /* TCP_QUEUE_OOSEQ && LWIP_WND_SCALE */ - - LWIP_ERROR("tcp_process_refused_data: invalid pcb", pcb != NULL, return ERR_ARG); - 8009498: 687b ldr r3, [r7, #4] - 800949a: 2b00 cmp r3, #0 - 800949c: d109 bne.n 80094b2 - 800949e: 4b37 ldr r3, [pc, #220] @ (800957c ) - 80094a0: f240 6209 movw r2, #1545 @ 0x609 - 80094a4: 4936 ldr r1, [pc, #216] @ (8009580 ) - 80094a6: 4837 ldr r0, [pc, #220] @ (8009584 ) - 80094a8: f009 fbe6 bl 8012c78 - 80094ac: f06f 030f mvn.w r3, #15 - 80094b0: e060 b.n 8009574 -#if TCP_QUEUE_OOSEQ && LWIP_WND_SCALE - while (pcb->refused_data != NULL) -#endif /* TCP_QUEUE_OOSEQ && LWIP_WND_SCALE */ - { - err_t err; - u8_t refused_flags = pcb->refused_data->flags; - 80094b2: 687b ldr r3, [r7, #4] - 80094b4: 6f9b ldr r3, [r3, #120] @ 0x78 - 80094b6: 7b5b ldrb r3, [r3, #13] - 80094b8: 73bb strb r3, [r7, #14] - /* set pcb->refused_data to NULL in case the callback frees it and then - closes the pcb */ - struct pbuf *refused_data = pcb->refused_data; - 80094ba: 687b ldr r3, [r7, #4] - 80094bc: 6f9b ldr r3, [r3, #120] @ 0x78 - 80094be: 60bb str r3, [r7, #8] -#if TCP_QUEUE_OOSEQ && LWIP_WND_SCALE - pbuf_split_64k(refused_data, &rest); - pcb->refused_data = rest; -#else /* TCP_QUEUE_OOSEQ && LWIP_WND_SCALE */ - pcb->refused_data = NULL; - 80094c0: 687b ldr r3, [r7, #4] - 80094c2: 2200 movs r2, #0 - 80094c4: 679a str r2, [r3, #120] @ 0x78 -#endif /* TCP_QUEUE_OOSEQ && LWIP_WND_SCALE */ - /* Notify again application with data previously received. */ - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: notify kept packet\n")); - TCP_EVENT_RECV(pcb, refused_data, ERR_OK, err); - 80094c6: 687b ldr r3, [r7, #4] - 80094c8: f8d3 3084 ldr.w r3, [r3, #132] @ 0x84 - 80094cc: 2b00 cmp r3, #0 - 80094ce: d00b beq.n 80094e8 - 80094d0: 687b ldr r3, [r7, #4] - 80094d2: f8d3 4084 ldr.w r4, [r3, #132] @ 0x84 - 80094d6: 687b ldr r3, [r7, #4] - 80094d8: 6918 ldr r0, [r3, #16] - 80094da: 2300 movs r3, #0 - 80094dc: 68ba ldr r2, [r7, #8] - 80094de: 6879 ldr r1, [r7, #4] - 80094e0: 47a0 blx r4 - 80094e2: 4603 mov r3, r0 - 80094e4: 73fb strb r3, [r7, #15] - 80094e6: e007 b.n 80094f8 - 80094e8: 2300 movs r3, #0 - 80094ea: 68ba ldr r2, [r7, #8] - 80094ec: 6879 ldr r1, [r7, #4] - 80094ee: 2000 movs r0, #0 - 80094f0: f000 f8a4 bl 800963c - 80094f4: 4603 mov r3, r0 - 80094f6: 73fb strb r3, [r7, #15] - if (err == ERR_OK) { - 80094f8: f997 300f ldrsb.w r3, [r7, #15] - 80094fc: 2b00 cmp r3, #0 - 80094fe: d12a bne.n 8009556 - /* did refused_data include a FIN? */ - if ((refused_flags & PBUF_FLAG_TCP_FIN) - 8009500: 7bbb ldrb r3, [r7, #14] - 8009502: f003 0320 and.w r3, r3, #32 - 8009506: 2b00 cmp r3, #0 - 8009508: d033 beq.n 8009572 - && (rest == NULL) -#endif /* TCP_QUEUE_OOSEQ && LWIP_WND_SCALE */ - ) { - /* correct rcv_wnd as the application won't call tcp_recved() - for the FIN's seqno */ - if (pcb->rcv_wnd != TCP_WND_MAX(pcb)) { - 800950a: 687b ldr r3, [r7, #4] - 800950c: 8d1b ldrh r3, [r3, #40] @ 0x28 - 800950e: f5b3 6f06 cmp.w r3, #2144 @ 0x860 - 8009512: d005 beq.n 8009520 - pcb->rcv_wnd++; - 8009514: 687b ldr r3, [r7, #4] - 8009516: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8009518: 3301 adds r3, #1 - 800951a: b29a uxth r2, r3 - 800951c: 687b ldr r3, [r7, #4] - 800951e: 851a strh r2, [r3, #40] @ 0x28 - } - TCP_EVENT_CLOSED(pcb, err); - 8009520: 687b ldr r3, [r7, #4] - 8009522: f8d3 3084 ldr.w r3, [r3, #132] @ 0x84 - 8009526: 2b00 cmp r3, #0 - 8009528: d00b beq.n 8009542 - 800952a: 687b ldr r3, [r7, #4] - 800952c: f8d3 4084 ldr.w r4, [r3, #132] @ 0x84 - 8009530: 687b ldr r3, [r7, #4] - 8009532: 6918 ldr r0, [r3, #16] - 8009534: 2300 movs r3, #0 - 8009536: 2200 movs r2, #0 - 8009538: 6879 ldr r1, [r7, #4] - 800953a: 47a0 blx r4 - 800953c: 4603 mov r3, r0 - 800953e: 73fb strb r3, [r7, #15] - 8009540: e001 b.n 8009546 - 8009542: 2300 movs r3, #0 - 8009544: 73fb strb r3, [r7, #15] - if (err == ERR_ABRT) { - 8009546: f997 300f ldrsb.w r3, [r7, #15] - 800954a: f113 0f0d cmn.w r3, #13 - 800954e: d110 bne.n 8009572 - return ERR_ABRT; - 8009550: f06f 030c mvn.w r3, #12 - 8009554: e00e b.n 8009574 - } - } - } else if (err == ERR_ABRT) { - 8009556: f997 300f ldrsb.w r3, [r7, #15] - 800955a: f113 0f0d cmn.w r3, #13 - 800955e: d102 bne.n 8009566 - /* if err == ERR_ABRT, 'pcb' is already deallocated */ - /* Drop incoming packets because pcb is "full" (only if the incoming - segment contains data). */ - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: drop incoming packets, because pcb is \"full\"\n")); - return ERR_ABRT; - 8009560: f06f 030c mvn.w r3, #12 - 8009564: e006 b.n 8009574 -#if TCP_QUEUE_OOSEQ && LWIP_WND_SCALE - if (rest != NULL) { - pbuf_cat(refused_data, rest); - } -#endif /* TCP_QUEUE_OOSEQ && LWIP_WND_SCALE */ - pcb->refused_data = refused_data; - 8009566: 687b ldr r3, [r7, #4] - 8009568: 68ba ldr r2, [r7, #8] - 800956a: 679a str r2, [r3, #120] @ 0x78 - return ERR_INPROGRESS; - 800956c: f06f 0304 mvn.w r3, #4 - 8009570: e000 b.n 8009574 - } - } - return ERR_OK; - 8009572: 2300 movs r3, #0 -} - 8009574: 4618 mov r0, r3 - 8009576: 3714 adds r7, #20 - 8009578: 46bd mov sp, r7 - 800957a: bd90 pop {r4, r7, pc} - 800957c: 080181c4 .word 0x080181c4 - 8009580: 080186d4 .word 0x080186d4 - 8009584: 08018208 .word 0x08018208 - -08009588 : - * - * @param seg tcp_seg list of TCP segments to free - */ -void -tcp_segs_free(struct tcp_seg *seg) -{ - 8009588: b580 push {r7, lr} - 800958a: b084 sub sp, #16 - 800958c: af00 add r7, sp, #0 - 800958e: 6078 str r0, [r7, #4] - while (seg != NULL) { - 8009590: e007 b.n 80095a2 - struct tcp_seg *next = seg->next; - 8009592: 687b ldr r3, [r7, #4] - 8009594: 681b ldr r3, [r3, #0] - 8009596: 60fb str r3, [r7, #12] - tcp_seg_free(seg); - 8009598: 6878 ldr r0, [r7, #4] - 800959a: f000 f80a bl 80095b2 - seg = next; - 800959e: 68fb ldr r3, [r7, #12] - 80095a0: 607b str r3, [r7, #4] - while (seg != NULL) { - 80095a2: 687b ldr r3, [r7, #4] - 80095a4: 2b00 cmp r3, #0 - 80095a6: d1f4 bne.n 8009592 - } -} - 80095a8: bf00 nop - 80095aa: bf00 nop - 80095ac: 3710 adds r7, #16 - 80095ae: 46bd mov sp, r7 - 80095b0: bd80 pop {r7, pc} - -080095b2 : - * - * @param seg single tcp_seg to free - */ -void -tcp_seg_free(struct tcp_seg *seg) -{ - 80095b2: b580 push {r7, lr} - 80095b4: b082 sub sp, #8 - 80095b6: af00 add r7, sp, #0 - 80095b8: 6078 str r0, [r7, #4] - if (seg != NULL) { - 80095ba: 687b ldr r3, [r7, #4] - 80095bc: 2b00 cmp r3, #0 - 80095be: d00c beq.n 80095da - if (seg->p != NULL) { - 80095c0: 687b ldr r3, [r7, #4] - 80095c2: 685b ldr r3, [r3, #4] - 80095c4: 2b00 cmp r3, #0 - 80095c6: d004 beq.n 80095d2 - pbuf_free(seg->p); - 80095c8: 687b ldr r3, [r7, #4] - 80095ca: 685b ldr r3, [r3, #4] - 80095cc: 4618 mov r0, r3 - 80095ce: f7fe fd6b bl 80080a8 -#if TCP_DEBUG - seg->p = NULL; -#endif /* TCP_DEBUG */ - } - memp_free(MEMP_TCP_SEG, seg); - 80095d2: 6879 ldr r1, [r7, #4] - 80095d4: 2003 movs r0, #3 - 80095d6: f7fd fee7 bl 80073a8 - } -} - 80095da: bf00 nop - 80095dc: 3708 adds r7, #8 - 80095de: 46bd mov sp, r7 - 80095e0: bd80 pop {r7, pc} - ... - -080095e4 : - * @param seg the old tcp_seg - * @return a copy of seg - */ -struct tcp_seg * -tcp_seg_copy(struct tcp_seg *seg) -{ - 80095e4: b580 push {r7, lr} - 80095e6: b084 sub sp, #16 - 80095e8: af00 add r7, sp, #0 - 80095ea: 6078 str r0, [r7, #4] - struct tcp_seg *cseg; - - LWIP_ASSERT("tcp_seg_copy: invalid seg", seg != NULL); - 80095ec: 687b ldr r3, [r7, #4] - 80095ee: 2b00 cmp r3, #0 - 80095f0: d106 bne.n 8009600 - 80095f2: 4b0f ldr r3, [pc, #60] @ (8009630 ) - 80095f4: f240 6282 movw r2, #1666 @ 0x682 - 80095f8: 490e ldr r1, [pc, #56] @ (8009634 ) - 80095fa: 480f ldr r0, [pc, #60] @ (8009638 ) - 80095fc: f009 fb3c bl 8012c78 - - cseg = (struct tcp_seg *)memp_malloc(MEMP_TCP_SEG); - 8009600: 2003 movs r0, #3 - 8009602: f7fd fe61 bl 80072c8 - 8009606: 60f8 str r0, [r7, #12] - if (cseg == NULL) { - 8009608: 68fb ldr r3, [r7, #12] - 800960a: 2b00 cmp r3, #0 - 800960c: d101 bne.n 8009612 - return NULL; - 800960e: 2300 movs r3, #0 - 8009610: e00a b.n 8009628 - } - SMEMCPY((u8_t *)cseg, (const u8_t *)seg, sizeof(struct tcp_seg)); - 8009612: 2210 movs r2, #16 - 8009614: 6879 ldr r1, [r7, #4] - 8009616: 68f8 ldr r0, [r7, #12] - 8009618: f009 fc2a bl 8012e70 - pbuf_ref(cseg->p); - 800961c: 68fb ldr r3, [r7, #12] - 800961e: 685b ldr r3, [r3, #4] - 8009620: 4618 mov r0, r3 - 8009622: f7fe fde1 bl 80081e8 - return cseg; - 8009626: 68fb ldr r3, [r7, #12] -} - 8009628: 4618 mov r0, r3 - 800962a: 3710 adds r7, #16 - 800962c: 46bd mov sp, r7 - 800962e: bd80 pop {r7, pc} - 8009630: 080181c4 .word 0x080181c4 - 8009634: 08018718 .word 0x08018718 - 8009638: 08018208 .word 0x08018208 - -0800963c : - * Default receive callback that is called if the user didn't register - * a recv callback for the pcb. - */ -err_t -tcp_recv_null(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err) -{ - 800963c: b580 push {r7, lr} - 800963e: b084 sub sp, #16 - 8009640: af00 add r7, sp, #0 - 8009642: 60f8 str r0, [r7, #12] - 8009644: 60b9 str r1, [r7, #8] - 8009646: 607a str r2, [r7, #4] - 8009648: 70fb strb r3, [r7, #3] - LWIP_UNUSED_ARG(arg); - - LWIP_ERROR("tcp_recv_null: invalid pcb", pcb != NULL, return ERR_ARG); - 800964a: 68bb ldr r3, [r7, #8] - 800964c: 2b00 cmp r3, #0 - 800964e: d109 bne.n 8009664 - 8009650: 4b12 ldr r3, [pc, #72] @ (800969c ) - 8009652: f44f 62d3 mov.w r2, #1688 @ 0x698 - 8009656: 4912 ldr r1, [pc, #72] @ (80096a0 ) - 8009658: 4812 ldr r0, [pc, #72] @ (80096a4 ) - 800965a: f009 fb0d bl 8012c78 - 800965e: f06f 030f mvn.w r3, #15 - 8009662: e016 b.n 8009692 - - if (p != NULL) { - 8009664: 687b ldr r3, [r7, #4] - 8009666: 2b00 cmp r3, #0 - 8009668: d009 beq.n 800967e - tcp_recved(pcb, p->tot_len); - 800966a: 687b ldr r3, [r7, #4] - 800966c: 891b ldrh r3, [r3, #8] - 800966e: 4619 mov r1, r3 - 8009670: 68b8 ldr r0, [r7, #8] - 8009672: f7ff fb17 bl 8008ca4 - pbuf_free(p); - 8009676: 6878 ldr r0, [r7, #4] - 8009678: f7fe fd16 bl 80080a8 - 800967c: e008 b.n 8009690 - } else if (err == ERR_OK) { - 800967e: f997 3003 ldrsb.w r3, [r7, #3] - 8009682: 2b00 cmp r3, #0 - 8009684: d104 bne.n 8009690 - return tcp_close(pcb); - 8009686: 68b8 ldr r0, [r7, #8] - 8009688: f7ff f9bc bl 8008a04 - 800968c: 4603 mov r3, r0 - 800968e: e000 b.n 8009692 - } - return ERR_OK; - 8009690: 2300 movs r3, #0 -} - 8009692: 4618 mov r0, r3 - 8009694: 3710 adds r7, #16 - 8009696: 46bd mov sp, r7 - 8009698: bd80 pop {r7, pc} - 800969a: bf00 nop - 800969c: 080181c4 .word 0x080181c4 - 80096a0: 08018734 .word 0x08018734 - 80096a4: 08018208 .word 0x08018208 - -080096a8 : - * - * @param prio minimum priority - */ -static void -tcp_kill_prio(u8_t prio) -{ - 80096a8: b580 push {r7, lr} - 80096aa: b086 sub sp, #24 - 80096ac: af00 add r7, sp, #0 - 80096ae: 4603 mov r3, r0 - 80096b0: 71fb strb r3, [r7, #7] - struct tcp_pcb *pcb, *inactive; - u32_t inactivity; - u8_t mprio; - - mprio = LWIP_MIN(TCP_PRIO_MAX, prio); - 80096b2: f997 3007 ldrsb.w r3, [r7, #7] - 80096b6: 2b00 cmp r3, #0 - 80096b8: db01 blt.n 80096be - 80096ba: 79fb ldrb r3, [r7, #7] - 80096bc: e000 b.n 80096c0 - 80096be: 237f movs r3, #127 @ 0x7f - 80096c0: 72fb strb r3, [r7, #11] - - /* We want to kill connections with a lower prio, so bail out if - * supplied prio is 0 - there can never be a lower prio - */ - if (mprio == 0) { - 80096c2: 7afb ldrb r3, [r7, #11] - 80096c4: 2b00 cmp r3, #0 - 80096c6: d034 beq.n 8009732 - /* We only want kill connections with a lower prio, so decrement prio by one - * and start searching for oldest connection with same or lower priority than mprio. - * We want to find the connections with the lowest possible prio, and among - * these the one with the longest inactivity time. - */ - mprio--; - 80096c8: 7afb ldrb r3, [r7, #11] - 80096ca: 3b01 subs r3, #1 - 80096cc: 72fb strb r3, [r7, #11] - - inactivity = 0; - 80096ce: 2300 movs r3, #0 - 80096d0: 60fb str r3, [r7, #12] - inactive = NULL; - 80096d2: 2300 movs r3, #0 - 80096d4: 613b str r3, [r7, #16] - for (pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { - 80096d6: 4b19 ldr r3, [pc, #100] @ (800973c ) - 80096d8: 681b ldr r3, [r3, #0] - 80096da: 617b str r3, [r7, #20] - 80096dc: e01f b.n 800971e - /* lower prio is always a kill candidate */ - if ((pcb->prio < mprio) || - 80096de: 697b ldr r3, [r7, #20] - 80096e0: 7d5b ldrb r3, [r3, #21] - 80096e2: 7afa ldrb r2, [r7, #11] - 80096e4: 429a cmp r2, r3 - 80096e6: d80c bhi.n 8009702 - /* longer inactivity is also a kill candidate */ - ((pcb->prio == mprio) && ((u32_t)(tcp_ticks - pcb->tmr) >= inactivity))) { - 80096e8: 697b ldr r3, [r7, #20] - 80096ea: 7d5b ldrb r3, [r3, #21] - if ((pcb->prio < mprio) || - 80096ec: 7afa ldrb r2, [r7, #11] - 80096ee: 429a cmp r2, r3 - 80096f0: d112 bne.n 8009718 - ((pcb->prio == mprio) && ((u32_t)(tcp_ticks - pcb->tmr) >= inactivity))) { - 80096f2: 4b13 ldr r3, [pc, #76] @ (8009740 ) - 80096f4: 681a ldr r2, [r3, #0] - 80096f6: 697b ldr r3, [r7, #20] - 80096f8: 6a1b ldr r3, [r3, #32] - 80096fa: 1ad3 subs r3, r2, r3 - 80096fc: 68fa ldr r2, [r7, #12] - 80096fe: 429a cmp r2, r3 - 8009700: d80a bhi.n 8009718 - inactivity = tcp_ticks - pcb->tmr; - 8009702: 4b0f ldr r3, [pc, #60] @ (8009740 ) - 8009704: 681a ldr r2, [r3, #0] - 8009706: 697b ldr r3, [r7, #20] - 8009708: 6a1b ldr r3, [r3, #32] - 800970a: 1ad3 subs r3, r2, r3 - 800970c: 60fb str r3, [r7, #12] - inactive = pcb; - 800970e: 697b ldr r3, [r7, #20] - 8009710: 613b str r3, [r7, #16] - mprio = pcb->prio; - 8009712: 697b ldr r3, [r7, #20] - 8009714: 7d5b ldrb r3, [r3, #21] - 8009716: 72fb strb r3, [r7, #11] - for (pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { - 8009718: 697b ldr r3, [r7, #20] - 800971a: 68db ldr r3, [r3, #12] - 800971c: 617b str r3, [r7, #20] - 800971e: 697b ldr r3, [r7, #20] - 8009720: 2b00 cmp r3, #0 - 8009722: d1dc bne.n 80096de - } - } - if (inactive != NULL) { - 8009724: 693b ldr r3, [r7, #16] - 8009726: 2b00 cmp r3, #0 - 8009728: d004 beq.n 8009734 - LWIP_DEBUGF(TCP_DEBUG, ("tcp_kill_prio: killing oldest PCB %p (%"S32_F")\n", - (void *)inactive, inactivity)); - tcp_abort(inactive); - 800972a: 6938 ldr r0, [r7, #16] - 800972c: f7ff fa54 bl 8008bd8 - 8009730: e000 b.n 8009734 - return; - 8009732: bf00 nop - } -} - 8009734: 3718 adds r7, #24 - 8009736: 46bd mov sp, r7 - 8009738: bd80 pop {r7, pc} - 800973a: bf00 nop - 800973c: 200190f8 .word 0x200190f8 - 8009740: 200190ec .word 0x200190ec - -08009744 : - * Kills the oldest connection that is in specific state. - * Called from tcp_alloc() for LAST_ACK and CLOSING if no more connections are available. - */ -static void -tcp_kill_state(enum tcp_state state) -{ - 8009744: b580 push {r7, lr} - 8009746: b086 sub sp, #24 - 8009748: af00 add r7, sp, #0 - 800974a: 4603 mov r3, r0 - 800974c: 71fb strb r3, [r7, #7] - struct tcp_pcb *pcb, *inactive; - u32_t inactivity; - - LWIP_ASSERT("invalid state", (state == CLOSING) || (state == LAST_ACK)); - 800974e: 79fb ldrb r3, [r7, #7] - 8009750: 2b08 cmp r3, #8 - 8009752: d009 beq.n 8009768 - 8009754: 79fb ldrb r3, [r7, #7] - 8009756: 2b09 cmp r3, #9 - 8009758: d006 beq.n 8009768 - 800975a: 4b1a ldr r3, [pc, #104] @ (80097c4 ) - 800975c: f240 62dd movw r2, #1757 @ 0x6dd - 8009760: 4919 ldr r1, [pc, #100] @ (80097c8 ) - 8009762: 481a ldr r0, [pc, #104] @ (80097cc ) - 8009764: f009 fa88 bl 8012c78 - - inactivity = 0; - 8009768: 2300 movs r3, #0 - 800976a: 60fb str r3, [r7, #12] - inactive = NULL; - 800976c: 2300 movs r3, #0 - 800976e: 613b str r3, [r7, #16] - /* Go through the list of active pcbs and get the oldest pcb that is in state - CLOSING/LAST_ACK. */ - for (pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { - 8009770: 4b17 ldr r3, [pc, #92] @ (80097d0 ) - 8009772: 681b ldr r3, [r3, #0] - 8009774: 617b str r3, [r7, #20] - 8009776: e017 b.n 80097a8 - if (pcb->state == state) { - 8009778: 697b ldr r3, [r7, #20] - 800977a: 7d1b ldrb r3, [r3, #20] - 800977c: 79fa ldrb r2, [r7, #7] - 800977e: 429a cmp r2, r3 - 8009780: d10f bne.n 80097a2 - if ((u32_t)(tcp_ticks - pcb->tmr) >= inactivity) { - 8009782: 4b14 ldr r3, [pc, #80] @ (80097d4 ) - 8009784: 681a ldr r2, [r3, #0] - 8009786: 697b ldr r3, [r7, #20] - 8009788: 6a1b ldr r3, [r3, #32] - 800978a: 1ad3 subs r3, r2, r3 - 800978c: 68fa ldr r2, [r7, #12] - 800978e: 429a cmp r2, r3 - 8009790: d807 bhi.n 80097a2 - inactivity = tcp_ticks - pcb->tmr; - 8009792: 4b10 ldr r3, [pc, #64] @ (80097d4 ) - 8009794: 681a ldr r2, [r3, #0] - 8009796: 697b ldr r3, [r7, #20] - 8009798: 6a1b ldr r3, [r3, #32] - 800979a: 1ad3 subs r3, r2, r3 - 800979c: 60fb str r3, [r7, #12] - inactive = pcb; - 800979e: 697b ldr r3, [r7, #20] - 80097a0: 613b str r3, [r7, #16] - for (pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { - 80097a2: 697b ldr r3, [r7, #20] - 80097a4: 68db ldr r3, [r3, #12] - 80097a6: 617b str r3, [r7, #20] - 80097a8: 697b ldr r3, [r7, #20] - 80097aa: 2b00 cmp r3, #0 - 80097ac: d1e4 bne.n 8009778 - } - } - } - if (inactive != NULL) { - 80097ae: 693b ldr r3, [r7, #16] - 80097b0: 2b00 cmp r3, #0 - 80097b2: d003 beq.n 80097bc - LWIP_DEBUGF(TCP_DEBUG, ("tcp_kill_closing: killing oldest %s PCB %p (%"S32_F")\n", - tcp_state_str[state], (void *)inactive, inactivity)); - /* Don't send a RST, since no data is lost. */ - tcp_abandon(inactive, 0); - 80097b4: 2100 movs r1, #0 - 80097b6: 6938 ldr r0, [r7, #16] - 80097b8: f7ff f950 bl 8008a5c - } -} - 80097bc: bf00 nop - 80097be: 3718 adds r7, #24 - 80097c0: 46bd mov sp, r7 - 80097c2: bd80 pop {r7, pc} - 80097c4: 080181c4 .word 0x080181c4 - 80097c8: 08018750 .word 0x08018750 - 80097cc: 08018208 .word 0x08018208 - 80097d0: 200190f8 .word 0x200190f8 - 80097d4: 200190ec .word 0x200190ec - -080097d8 : - * Kills the oldest connection that is in TIME_WAIT state. - * Called from tcp_alloc() if no more connections are available. - */ -static void -tcp_kill_timewait(void) -{ - 80097d8: b580 push {r7, lr} - 80097da: b084 sub sp, #16 - 80097dc: af00 add r7, sp, #0 - struct tcp_pcb *pcb, *inactive; - u32_t inactivity; - - inactivity = 0; - 80097de: 2300 movs r3, #0 - 80097e0: 607b str r3, [r7, #4] - inactive = NULL; - 80097e2: 2300 movs r3, #0 - 80097e4: 60bb str r3, [r7, #8] - /* Go through the list of TIME_WAIT pcbs and get the oldest pcb. */ - for (pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) { - 80097e6: 4b12 ldr r3, [pc, #72] @ (8009830 ) - 80097e8: 681b ldr r3, [r3, #0] - 80097ea: 60fb str r3, [r7, #12] - 80097ec: e012 b.n 8009814 - if ((u32_t)(tcp_ticks - pcb->tmr) >= inactivity) { - 80097ee: 4b11 ldr r3, [pc, #68] @ (8009834 ) - 80097f0: 681a ldr r2, [r3, #0] - 80097f2: 68fb ldr r3, [r7, #12] - 80097f4: 6a1b ldr r3, [r3, #32] - 80097f6: 1ad3 subs r3, r2, r3 - 80097f8: 687a ldr r2, [r7, #4] - 80097fa: 429a cmp r2, r3 - 80097fc: d807 bhi.n 800980e - inactivity = tcp_ticks - pcb->tmr; - 80097fe: 4b0d ldr r3, [pc, #52] @ (8009834 ) - 8009800: 681a ldr r2, [r3, #0] - 8009802: 68fb ldr r3, [r7, #12] - 8009804: 6a1b ldr r3, [r3, #32] - 8009806: 1ad3 subs r3, r2, r3 - 8009808: 607b str r3, [r7, #4] - inactive = pcb; - 800980a: 68fb ldr r3, [r7, #12] - 800980c: 60bb str r3, [r7, #8] - for (pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) { - 800980e: 68fb ldr r3, [r7, #12] - 8009810: 68db ldr r3, [r3, #12] - 8009812: 60fb str r3, [r7, #12] - 8009814: 68fb ldr r3, [r7, #12] - 8009816: 2b00 cmp r3, #0 - 8009818: d1e9 bne.n 80097ee - } - } - if (inactive != NULL) { - 800981a: 68bb ldr r3, [r7, #8] - 800981c: 2b00 cmp r3, #0 - 800981e: d002 beq.n 8009826 - LWIP_DEBUGF(TCP_DEBUG, ("tcp_kill_timewait: killing oldest TIME-WAIT PCB %p (%"S32_F")\n", - (void *)inactive, inactivity)); - tcp_abort(inactive); - 8009820: 68b8 ldr r0, [r7, #8] - 8009822: f7ff f9d9 bl 8008bd8 - } -} - 8009826: bf00 nop - 8009828: 3710 adds r7, #16 - 800982a: 46bd mov sp, r7 - 800982c: bd80 pop {r7, pc} - 800982e: bf00 nop - 8009830: 200190fc .word 0x200190fc - 8009834: 200190ec .word 0x200190ec - -08009838 : - * now send the FIN (which failed before), the pcb might be in a state that is - * OK for us to now free it. - */ -static void -tcp_handle_closepend(void) -{ - 8009838: b580 push {r7, lr} - 800983a: b082 sub sp, #8 - 800983c: af00 add r7, sp, #0 - struct tcp_pcb *pcb = tcp_active_pcbs; - 800983e: 4b10 ldr r3, [pc, #64] @ (8009880 ) - 8009840: 681b ldr r3, [r3, #0] - 8009842: 607b str r3, [r7, #4] - - while (pcb != NULL) { - 8009844: e014 b.n 8009870 - struct tcp_pcb *next = pcb->next; - 8009846: 687b ldr r3, [r7, #4] - 8009848: 68db ldr r3, [r3, #12] - 800984a: 603b str r3, [r7, #0] - /* send pending FIN */ - if (pcb->flags & TF_CLOSEPEND) { - 800984c: 687b ldr r3, [r7, #4] - 800984e: 8b5b ldrh r3, [r3, #26] - 8009850: f003 0308 and.w r3, r3, #8 - 8009854: 2b00 cmp r3, #0 - 8009856: d009 beq.n 800986c - LWIP_DEBUGF(TCP_DEBUG, ("tcp_handle_closepend: pending FIN\n")); - tcp_clear_flags(pcb, TF_CLOSEPEND); - 8009858: 687b ldr r3, [r7, #4] - 800985a: 8b5b ldrh r3, [r3, #26] - 800985c: f023 0308 bic.w r3, r3, #8 - 8009860: b29a uxth r2, r3 - 8009862: 687b ldr r3, [r7, #4] - 8009864: 835a strh r2, [r3, #26] - tcp_close_shutdown_fin(pcb); - 8009866: 6878 ldr r0, [r7, #4] - 8009868: f7ff f862 bl 8008930 - } - pcb = next; - 800986c: 683b ldr r3, [r7, #0] - 800986e: 607b str r3, [r7, #4] - while (pcb != NULL) { - 8009870: 687b ldr r3, [r7, #4] - 8009872: 2b00 cmp r3, #0 - 8009874: d1e7 bne.n 8009846 - } -} - 8009876: bf00 nop - 8009878: bf00 nop - 800987a: 3708 adds r7, #8 - 800987c: 46bd mov sp, r7 - 800987e: bd80 pop {r7, pc} - 8009880: 200190f8 .word 0x200190f8 - -08009884 : - * @param prio priority for the new pcb - * @return a new tcp_pcb that initially is in state CLOSED - */ -struct tcp_pcb * -tcp_alloc(u8_t prio) -{ - 8009884: b580 push {r7, lr} - 8009886: b084 sub sp, #16 - 8009888: af00 add r7, sp, #0 - 800988a: 4603 mov r3, r0 - 800988c: 71fb strb r3, [r7, #7] - struct tcp_pcb *pcb; - - LWIP_ASSERT_CORE_LOCKED(); - - pcb = (struct tcp_pcb *)memp_malloc(MEMP_TCP_PCB); - 800988e: 2001 movs r0, #1 - 8009890: f7fd fd1a bl 80072c8 - 8009894: 60f8 str r0, [r7, #12] - if (pcb == NULL) { - 8009896: 68fb ldr r3, [r7, #12] - 8009898: 2b00 cmp r3, #0 - 800989a: d126 bne.n 80098ea - /* Try to send FIN for all pcbs stuck in TF_CLOSEPEND first */ - tcp_handle_closepend(); - 800989c: f7ff ffcc bl 8009838 - - /* Try killing oldest connection in TIME-WAIT. */ - LWIP_DEBUGF(TCP_DEBUG, ("tcp_alloc: killing off oldest TIME-WAIT connection\n")); - tcp_kill_timewait(); - 80098a0: f7ff ff9a bl 80097d8 - /* Try to allocate a tcp_pcb again. */ - pcb = (struct tcp_pcb *)memp_malloc(MEMP_TCP_PCB); - 80098a4: 2001 movs r0, #1 - 80098a6: f7fd fd0f bl 80072c8 - 80098aa: 60f8 str r0, [r7, #12] - if (pcb == NULL) { - 80098ac: 68fb ldr r3, [r7, #12] - 80098ae: 2b00 cmp r3, #0 - 80098b0: d11b bne.n 80098ea - /* Try killing oldest connection in LAST-ACK (these wouldn't go to TIME-WAIT). */ - LWIP_DEBUGF(TCP_DEBUG, ("tcp_alloc: killing off oldest LAST-ACK connection\n")); - tcp_kill_state(LAST_ACK); - 80098b2: 2009 movs r0, #9 - 80098b4: f7ff ff46 bl 8009744 - /* Try to allocate a tcp_pcb again. */ - pcb = (struct tcp_pcb *)memp_malloc(MEMP_TCP_PCB); - 80098b8: 2001 movs r0, #1 - 80098ba: f7fd fd05 bl 80072c8 - 80098be: 60f8 str r0, [r7, #12] - if (pcb == NULL) { - 80098c0: 68fb ldr r3, [r7, #12] - 80098c2: 2b00 cmp r3, #0 - 80098c4: d111 bne.n 80098ea - /* Try killing oldest connection in CLOSING. */ - LWIP_DEBUGF(TCP_DEBUG, ("tcp_alloc: killing off oldest CLOSING connection\n")); - tcp_kill_state(CLOSING); - 80098c6: 2008 movs r0, #8 - 80098c8: f7ff ff3c bl 8009744 - /* Try to allocate a tcp_pcb again. */ - pcb = (struct tcp_pcb *)memp_malloc(MEMP_TCP_PCB); - 80098cc: 2001 movs r0, #1 - 80098ce: f7fd fcfb bl 80072c8 - 80098d2: 60f8 str r0, [r7, #12] - if (pcb == NULL) { - 80098d4: 68fb ldr r3, [r7, #12] - 80098d6: 2b00 cmp r3, #0 - 80098d8: d107 bne.n 80098ea - /* Try killing oldest active connection with lower priority than the new one. */ - LWIP_DEBUGF(TCP_DEBUG, ("tcp_alloc: killing oldest connection with prio lower than %d\n", prio)); - tcp_kill_prio(prio); - 80098da: 79fb ldrb r3, [r7, #7] - 80098dc: 4618 mov r0, r3 - 80098de: f7ff fee3 bl 80096a8 - /* Try to allocate a tcp_pcb again. */ - pcb = (struct tcp_pcb *)memp_malloc(MEMP_TCP_PCB); - 80098e2: 2001 movs r0, #1 - 80098e4: f7fd fcf0 bl 80072c8 - 80098e8: 60f8 str r0, [r7, #12] - if (pcb != NULL) { - /* adjust err stats: memp_malloc failed above */ - MEMP_STATS_DEC(err, MEMP_TCP_PCB); - } - } - if (pcb != NULL) { - 80098ea: 68fb ldr r3, [r7, #12] - 80098ec: 2b00 cmp r3, #0 - 80098ee: d03f beq.n 8009970 - /* zero out the whole pcb, so there is no need to initialize members to zero */ - memset(pcb, 0, sizeof(struct tcp_pcb)); - 80098f0: 229c movs r2, #156 @ 0x9c - 80098f2: 2100 movs r1, #0 - 80098f4: 68f8 ldr r0, [r7, #12] - 80098f6: f009 fa3e bl 8012d76 - pcb->prio = prio; - 80098fa: 68fb ldr r3, [r7, #12] - 80098fc: 79fa ldrb r2, [r7, #7] - 80098fe: 755a strb r2, [r3, #21] - pcb->snd_buf = TCP_SND_BUF; - 8009900: 68fb ldr r3, [r7, #12] - 8009902: f44f 6286 mov.w r2, #1072 @ 0x430 - 8009906: f8a3 2064 strh.w r2, [r3, #100] @ 0x64 - /* Start with a window that does not need scaling. When window scaling is - enabled and used, the window is enlarged when both sides agree on scaling. */ - pcb->rcv_wnd = pcb->rcv_ann_wnd = TCPWND_MIN16(TCP_WND); - 800990a: 68fb ldr r3, [r7, #12] - 800990c: f44f 6206 mov.w r2, #2144 @ 0x860 - 8009910: 855a strh r2, [r3, #42] @ 0x2a - 8009912: 68fb ldr r3, [r7, #12] - 8009914: 8d5a ldrh r2, [r3, #42] @ 0x2a - 8009916: 68fb ldr r3, [r7, #12] - 8009918: 851a strh r2, [r3, #40] @ 0x28 - pcb->ttl = TCP_TTL; - 800991a: 68fb ldr r3, [r7, #12] - 800991c: 22ff movs r2, #255 @ 0xff - 800991e: 72da strb r2, [r3, #11] - /* As initial send MSS, we use TCP_MSS but limit it to 536. - The send MSS is updated when an MSS option is received. */ - pcb->mss = INITIAL_MSS; - 8009920: 68fb ldr r3, [r7, #12] - 8009922: f44f 7206 mov.w r2, #536 @ 0x218 - 8009926: 865a strh r2, [r3, #50] @ 0x32 - pcb->rto = 3000 / TCP_SLOW_INTERVAL; - 8009928: 68fb ldr r3, [r7, #12] - 800992a: 2206 movs r2, #6 - 800992c: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 - pcb->sv = 3000 / TCP_SLOW_INTERVAL; - 8009930: 68fb ldr r3, [r7, #12] - 8009932: 2206 movs r2, #6 - 8009934: 87da strh r2, [r3, #62] @ 0x3e - pcb->rtime = -1; - 8009936: 68fb ldr r3, [r7, #12] - 8009938: f64f 72ff movw r2, #65535 @ 0xffff - 800993c: 861a strh r2, [r3, #48] @ 0x30 - pcb->cwnd = 1; - 800993e: 68fb ldr r3, [r7, #12] - 8009940: 2201 movs r2, #1 - 8009942: f8a3 2048 strh.w r2, [r3, #72] @ 0x48 - pcb->tmr = tcp_ticks; - 8009946: 4b0d ldr r3, [pc, #52] @ (800997c ) - 8009948: 681a ldr r2, [r3, #0] - 800994a: 68fb ldr r3, [r7, #12] - 800994c: 621a str r2, [r3, #32] - pcb->last_timer = tcp_timer_ctr; - 800994e: 4b0c ldr r3, [pc, #48] @ (8009980 ) - 8009950: 781a ldrb r2, [r3, #0] - 8009952: 68fb ldr r3, [r7, #12] - 8009954: 779a strb r2, [r3, #30] - of using the largest advertised receive window. We've seen complications with - receiving TCPs that use window scaling and/or window auto-tuning where the - initial advertised window is very small and then grows rapidly once the - connection is established. To avoid these complications, we set ssthresh to the - largest effective cwnd (amount of in-flight data) that the sender can have. */ - pcb->ssthresh = TCP_SND_BUF; - 8009956: 68fb ldr r3, [r7, #12] - 8009958: f44f 6286 mov.w r2, #1072 @ 0x430 - 800995c: f8a3 204a strh.w r2, [r3, #74] @ 0x4a - -#if LWIP_CALLBACK_API - pcb->recv = tcp_recv_null; - 8009960: 68fb ldr r3, [r7, #12] - 8009962: 4a08 ldr r2, [pc, #32] @ (8009984 ) - 8009964: f8c3 2084 str.w r2, [r3, #132] @ 0x84 -#endif /* LWIP_CALLBACK_API */ - - /* Init KEEPALIVE timer */ - pcb->keep_idle = TCP_KEEPIDLE_DEFAULT; - 8009968: 68fb ldr r3, [r7, #12] - 800996a: 4a07 ldr r2, [pc, #28] @ (8009988 ) - 800996c: f8c3 2094 str.w r2, [r3, #148] @ 0x94 -#if LWIP_TCP_KEEPALIVE - pcb->keep_intvl = TCP_KEEPINTVL_DEFAULT; - pcb->keep_cnt = TCP_KEEPCNT_DEFAULT; -#endif /* LWIP_TCP_KEEPALIVE */ - } - return pcb; - 8009970: 68fb ldr r3, [r7, #12] -} - 8009972: 4618 mov r0, r3 - 8009974: 3710 adds r7, #16 - 8009976: 46bd mov sp, r7 - 8009978: bd80 pop {r7, pc} - 800997a: bf00 nop - 800997c: 200190ec .word 0x200190ec - 8009980: 20019102 .word 0x20019102 - 8009984: 0800963d .word 0x0800963d - 8009988: 006ddd00 .word 0x006ddd00 - -0800998c : - * - * @param pcb tcp_pcb to purge. The pcb itself is not deallocated! - */ -void -tcp_pcb_purge(struct tcp_pcb *pcb) -{ - 800998c: b580 push {r7, lr} - 800998e: b082 sub sp, #8 - 8009990: af00 add r7, sp, #0 - 8009992: 6078 str r0, [r7, #4] - LWIP_ERROR("tcp_pcb_purge: invalid pcb", pcb != NULL, return); - 8009994: 687b ldr r3, [r7, #4] - 8009996: 2b00 cmp r3, #0 - 8009998: d107 bne.n 80099aa - 800999a: 4b21 ldr r3, [pc, #132] @ (8009a20 ) - 800999c: f640 0251 movw r2, #2129 @ 0x851 - 80099a0: 4920 ldr r1, [pc, #128] @ (8009a24 ) - 80099a2: 4821 ldr r0, [pc, #132] @ (8009a28 ) - 80099a4: f009 f968 bl 8012c78 - 80099a8: e037 b.n 8009a1a - - if (pcb->state != CLOSED && - 80099aa: 687b ldr r3, [r7, #4] - 80099ac: 7d1b ldrb r3, [r3, #20] - 80099ae: 2b00 cmp r3, #0 - 80099b0: d033 beq.n 8009a1a - pcb->state != TIME_WAIT && - 80099b2: 687b ldr r3, [r7, #4] - 80099b4: 7d1b ldrb r3, [r3, #20] - if (pcb->state != CLOSED && - 80099b6: 2b0a cmp r3, #10 - 80099b8: d02f beq.n 8009a1a - pcb->state != LISTEN) { - 80099ba: 687b ldr r3, [r7, #4] - 80099bc: 7d1b ldrb r3, [r3, #20] - pcb->state != TIME_WAIT && - 80099be: 2b01 cmp r3, #1 - 80099c0: d02b beq.n 8009a1a - - LWIP_DEBUGF(TCP_DEBUG, ("tcp_pcb_purge\n")); - - tcp_backlog_accepted(pcb); - - if (pcb->refused_data != NULL) { - 80099c2: 687b ldr r3, [r7, #4] - 80099c4: 6f9b ldr r3, [r3, #120] @ 0x78 - 80099c6: 2b00 cmp r3, #0 - 80099c8: d007 beq.n 80099da - LWIP_DEBUGF(TCP_DEBUG, ("tcp_pcb_purge: data left on ->refused_data\n")); - pbuf_free(pcb->refused_data); - 80099ca: 687b ldr r3, [r7, #4] - 80099cc: 6f9b ldr r3, [r3, #120] @ 0x78 - 80099ce: 4618 mov r0, r3 - 80099d0: f7fe fb6a bl 80080a8 - pcb->refused_data = NULL; - 80099d4: 687b ldr r3, [r7, #4] - 80099d6: 2200 movs r2, #0 - 80099d8: 679a str r2, [r3, #120] @ 0x78 - } - if (pcb->unacked != NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_pcb_purge: data left on ->unacked\n")); - } -#if TCP_QUEUE_OOSEQ - if (pcb->ooseq != NULL) { - 80099da: 687b ldr r3, [r7, #4] - 80099dc: 6f5b ldr r3, [r3, #116] @ 0x74 - 80099de: 2b00 cmp r3, #0 - 80099e0: d002 beq.n 80099e8 - LWIP_DEBUGF(TCP_DEBUG, ("tcp_pcb_purge: data left on ->ooseq\n")); - tcp_free_ooseq(pcb); - 80099e2: 6878 ldr r0, [r7, #4] - 80099e4: f000 f986 bl 8009cf4 - } -#endif /* TCP_QUEUE_OOSEQ */ - - /* Stop the retransmission timer as it will expect data on unacked - queue if it fires */ - pcb->rtime = -1; - 80099e8: 687b ldr r3, [r7, #4] - 80099ea: f64f 72ff movw r2, #65535 @ 0xffff - 80099ee: 861a strh r2, [r3, #48] @ 0x30 - - tcp_segs_free(pcb->unsent); - 80099f0: 687b ldr r3, [r7, #4] - 80099f2: 6edb ldr r3, [r3, #108] @ 0x6c - 80099f4: 4618 mov r0, r3 - 80099f6: f7ff fdc7 bl 8009588 - tcp_segs_free(pcb->unacked); - 80099fa: 687b ldr r3, [r7, #4] - 80099fc: 6f1b ldr r3, [r3, #112] @ 0x70 - 80099fe: 4618 mov r0, r3 - 8009a00: f7ff fdc2 bl 8009588 - pcb->unacked = pcb->unsent = NULL; - 8009a04: 687b ldr r3, [r7, #4] - 8009a06: 2200 movs r2, #0 - 8009a08: 66da str r2, [r3, #108] @ 0x6c - 8009a0a: 687b ldr r3, [r7, #4] - 8009a0c: 6eda ldr r2, [r3, #108] @ 0x6c - 8009a0e: 687b ldr r3, [r7, #4] - 8009a10: 671a str r2, [r3, #112] @ 0x70 -#if TCP_OVERSIZE - pcb->unsent_oversize = 0; - 8009a12: 687b ldr r3, [r7, #4] - 8009a14: 2200 movs r2, #0 - 8009a16: f8a3 2068 strh.w r2, [r3, #104] @ 0x68 -#endif /* TCP_OVERSIZE */ - } -} - 8009a1a: 3708 adds r7, #8 - 8009a1c: 46bd mov sp, r7 - 8009a1e: bd80 pop {r7, pc} - 8009a20: 080181c4 .word 0x080181c4 - 8009a24: 08018810 .word 0x08018810 - 8009a28: 08018208 .word 0x08018208 - -08009a2c : - * @param pcblist PCB list to purge. - * @param pcb tcp_pcb to purge. The pcb itself is NOT deallocated! - */ -void -tcp_pcb_remove(struct tcp_pcb **pcblist, struct tcp_pcb *pcb) -{ - 8009a2c: b580 push {r7, lr} - 8009a2e: b084 sub sp, #16 - 8009a30: af00 add r7, sp, #0 - 8009a32: 6078 str r0, [r7, #4] - 8009a34: 6039 str r1, [r7, #0] - LWIP_ASSERT("tcp_pcb_remove: invalid pcb", pcb != NULL); - 8009a36: 683b ldr r3, [r7, #0] - 8009a38: 2b00 cmp r3, #0 - 8009a3a: d106 bne.n 8009a4a - 8009a3c: 4b3e ldr r3, [pc, #248] @ (8009b38 ) - 8009a3e: f640 0283 movw r2, #2179 @ 0x883 - 8009a42: 493e ldr r1, [pc, #248] @ (8009b3c ) - 8009a44: 483e ldr r0, [pc, #248] @ (8009b40 ) - 8009a46: f009 f917 bl 8012c78 - LWIP_ASSERT("tcp_pcb_remove: invalid pcblist", pcblist != NULL); - 8009a4a: 687b ldr r3, [r7, #4] - 8009a4c: 2b00 cmp r3, #0 - 8009a4e: d106 bne.n 8009a5e - 8009a50: 4b39 ldr r3, [pc, #228] @ (8009b38 ) - 8009a52: f640 0284 movw r2, #2180 @ 0x884 - 8009a56: 493b ldr r1, [pc, #236] @ (8009b44 ) - 8009a58: 4839 ldr r0, [pc, #228] @ (8009b40 ) - 8009a5a: f009 f90d bl 8012c78 - - TCP_RMV(pcblist, pcb); - 8009a5e: 687b ldr r3, [r7, #4] - 8009a60: 681b ldr r3, [r3, #0] - 8009a62: 683a ldr r2, [r7, #0] - 8009a64: 429a cmp r2, r3 - 8009a66: d105 bne.n 8009a74 - 8009a68: 687b ldr r3, [r7, #4] - 8009a6a: 681b ldr r3, [r3, #0] - 8009a6c: 68da ldr r2, [r3, #12] - 8009a6e: 687b ldr r3, [r7, #4] - 8009a70: 601a str r2, [r3, #0] - 8009a72: e013 b.n 8009a9c - 8009a74: 687b ldr r3, [r7, #4] - 8009a76: 681b ldr r3, [r3, #0] - 8009a78: 60fb str r3, [r7, #12] - 8009a7a: e00c b.n 8009a96 - 8009a7c: 68fb ldr r3, [r7, #12] - 8009a7e: 68db ldr r3, [r3, #12] - 8009a80: 683a ldr r2, [r7, #0] - 8009a82: 429a cmp r2, r3 - 8009a84: d104 bne.n 8009a90 - 8009a86: 683b ldr r3, [r7, #0] - 8009a88: 68da ldr r2, [r3, #12] - 8009a8a: 68fb ldr r3, [r7, #12] - 8009a8c: 60da str r2, [r3, #12] - 8009a8e: e005 b.n 8009a9c - 8009a90: 68fb ldr r3, [r7, #12] - 8009a92: 68db ldr r3, [r3, #12] - 8009a94: 60fb str r3, [r7, #12] - 8009a96: 68fb ldr r3, [r7, #12] - 8009a98: 2b00 cmp r3, #0 - 8009a9a: d1ef bne.n 8009a7c - 8009a9c: 683b ldr r3, [r7, #0] - 8009a9e: 2200 movs r2, #0 - 8009aa0: 60da str r2, [r3, #12] - - tcp_pcb_purge(pcb); - 8009aa2: 6838 ldr r0, [r7, #0] - 8009aa4: f7ff ff72 bl 800998c - - /* if there is an outstanding delayed ACKs, send it */ - if ((pcb->state != TIME_WAIT) && - 8009aa8: 683b ldr r3, [r7, #0] - 8009aaa: 7d1b ldrb r3, [r3, #20] - 8009aac: 2b0a cmp r3, #10 - 8009aae: d013 beq.n 8009ad8 - (pcb->state != LISTEN) && - 8009ab0: 683b ldr r3, [r7, #0] - 8009ab2: 7d1b ldrb r3, [r3, #20] - if ((pcb->state != TIME_WAIT) && - 8009ab4: 2b01 cmp r3, #1 - 8009ab6: d00f beq.n 8009ad8 - (pcb->flags & TF_ACK_DELAY)) { - 8009ab8: 683b ldr r3, [r7, #0] - 8009aba: 8b5b ldrh r3, [r3, #26] - 8009abc: f003 0301 and.w r3, r3, #1 - (pcb->state != LISTEN) && - 8009ac0: 2b00 cmp r3, #0 - 8009ac2: d009 beq.n 8009ad8 - tcp_ack_now(pcb); - 8009ac4: 683b ldr r3, [r7, #0] - 8009ac6: 8b5b ldrh r3, [r3, #26] - 8009ac8: f043 0302 orr.w r3, r3, #2 - 8009acc: b29a uxth r2, r3 - 8009ace: 683b ldr r3, [r7, #0] - 8009ad0: 835a strh r2, [r3, #26] - tcp_output(pcb); - 8009ad2: 6838 ldr r0, [r7, #0] - 8009ad4: f002 ff68 bl 800c9a8 - } - - if (pcb->state != LISTEN) { - 8009ad8: 683b ldr r3, [r7, #0] - 8009ada: 7d1b ldrb r3, [r3, #20] - 8009adc: 2b01 cmp r3, #1 - 8009ade: d020 beq.n 8009b22 - LWIP_ASSERT("unsent segments leaking", pcb->unsent == NULL); - 8009ae0: 683b ldr r3, [r7, #0] - 8009ae2: 6edb ldr r3, [r3, #108] @ 0x6c - 8009ae4: 2b00 cmp r3, #0 - 8009ae6: d006 beq.n 8009af6 - 8009ae8: 4b13 ldr r3, [pc, #76] @ (8009b38 ) - 8009aea: f640 0293 movw r2, #2195 @ 0x893 - 8009aee: 4916 ldr r1, [pc, #88] @ (8009b48 ) - 8009af0: 4813 ldr r0, [pc, #76] @ (8009b40 ) - 8009af2: f009 f8c1 bl 8012c78 - LWIP_ASSERT("unacked segments leaking", pcb->unacked == NULL); - 8009af6: 683b ldr r3, [r7, #0] - 8009af8: 6f1b ldr r3, [r3, #112] @ 0x70 - 8009afa: 2b00 cmp r3, #0 - 8009afc: d006 beq.n 8009b0c - 8009afe: 4b0e ldr r3, [pc, #56] @ (8009b38 ) - 8009b00: f640 0294 movw r2, #2196 @ 0x894 - 8009b04: 4911 ldr r1, [pc, #68] @ (8009b4c ) - 8009b06: 480e ldr r0, [pc, #56] @ (8009b40 ) - 8009b08: f009 f8b6 bl 8012c78 -#if TCP_QUEUE_OOSEQ - LWIP_ASSERT("ooseq segments leaking", pcb->ooseq == NULL); - 8009b0c: 683b ldr r3, [r7, #0] - 8009b0e: 6f5b ldr r3, [r3, #116] @ 0x74 - 8009b10: 2b00 cmp r3, #0 - 8009b12: d006 beq.n 8009b22 - 8009b14: 4b08 ldr r3, [pc, #32] @ (8009b38 ) - 8009b16: f640 0296 movw r2, #2198 @ 0x896 - 8009b1a: 490d ldr r1, [pc, #52] @ (8009b50 ) - 8009b1c: 4808 ldr r0, [pc, #32] @ (8009b40 ) - 8009b1e: f009 f8ab bl 8012c78 -#endif /* TCP_QUEUE_OOSEQ */ - } - - pcb->state = CLOSED; - 8009b22: 683b ldr r3, [r7, #0] - 8009b24: 2200 movs r2, #0 - 8009b26: 751a strb r2, [r3, #20] - /* reset the local port to prevent the pcb from being 'bound' */ - pcb->local_port = 0; - 8009b28: 683b ldr r3, [r7, #0] - 8009b2a: 2200 movs r2, #0 - 8009b2c: 82da strh r2, [r3, #22] - - LWIP_ASSERT("tcp_pcb_remove: tcp_pcbs_sane()", tcp_pcbs_sane()); -} - 8009b2e: bf00 nop - 8009b30: 3710 adds r7, #16 - 8009b32: 46bd mov sp, r7 - 8009b34: bd80 pop {r7, pc} - 8009b36: bf00 nop - 8009b38: 080181c4 .word 0x080181c4 - 8009b3c: 0801882c .word 0x0801882c - 8009b40: 08018208 .word 0x08018208 - 8009b44: 08018848 .word 0x08018848 - 8009b48: 08018868 .word 0x08018868 - 8009b4c: 08018880 .word 0x08018880 - 8009b50: 0801889c .word 0x0801889c - -08009b54 : - * - * @return u32_t pseudo random sequence number - */ -u32_t -tcp_next_iss(struct tcp_pcb *pcb) -{ - 8009b54: b580 push {r7, lr} - 8009b56: b082 sub sp, #8 - 8009b58: af00 add r7, sp, #0 - 8009b5a: 6078 str r0, [r7, #4] - LWIP_ASSERT("tcp_next_iss: invalid pcb", pcb != NULL); - return LWIP_HOOK_TCP_ISN(&pcb->local_ip, pcb->local_port, &pcb->remote_ip, pcb->remote_port); -#else /* LWIP_HOOK_TCP_ISN */ - static u32_t iss = 6510; - - LWIP_ASSERT("tcp_next_iss: invalid pcb", pcb != NULL); - 8009b5c: 687b ldr r3, [r7, #4] - 8009b5e: 2b00 cmp r3, #0 - 8009b60: d106 bne.n 8009b70 - 8009b62: 4b0a ldr r3, [pc, #40] @ (8009b8c ) - 8009b64: f640 02af movw r2, #2223 @ 0x8af - 8009b68: 4909 ldr r1, [pc, #36] @ (8009b90 ) - 8009b6a: 480a ldr r0, [pc, #40] @ (8009b94 ) - 8009b6c: f009 f884 bl 8012c78 - LWIP_UNUSED_ARG(pcb); - - iss += tcp_ticks; /* XXX */ - 8009b70: 4b09 ldr r3, [pc, #36] @ (8009b98 ) - 8009b72: 681a ldr r2, [r3, #0] - 8009b74: 4b09 ldr r3, [pc, #36] @ (8009b9c ) - 8009b76: 681b ldr r3, [r3, #0] - 8009b78: 4413 add r3, r2 - 8009b7a: 4a07 ldr r2, [pc, #28] @ (8009b98 ) - 8009b7c: 6013 str r3, [r2, #0] - return iss; - 8009b7e: 4b06 ldr r3, [pc, #24] @ (8009b98 ) - 8009b80: 681b ldr r3, [r3, #0] -#endif /* LWIP_HOOK_TCP_ISN */ -} - 8009b82: 4618 mov r0, r3 - 8009b84: 3708 adds r7, #8 - 8009b86: 46bd mov sp, r7 - 8009b88: bd80 pop {r7, pc} - 8009b8a: bf00 nop - 8009b8c: 080181c4 .word 0x080181c4 - 8009b90: 080188b4 .word 0x080188b4 - 8009b94: 08018208 .word 0x08018208 - 8009b98: 20000024 .word 0x20000024 - 8009b9c: 200190ec .word 0x200190ec - -08009ba0 : - * by calculating the minimum of TCP_MSS and the mtu (if set) of the target - * netif (if not NULL). - */ -u16_t -tcp_eff_send_mss_netif(u16_t sendmss, struct netif *outif, const ip_addr_t *dest) -{ - 8009ba0: b580 push {r7, lr} - 8009ba2: b086 sub sp, #24 - 8009ba4: af00 add r7, sp, #0 - 8009ba6: 4603 mov r3, r0 - 8009ba8: 60b9 str r1, [r7, #8] - 8009baa: 607a str r2, [r7, #4] - 8009bac: 81fb strh r3, [r7, #14] - u16_t mss_s; - u16_t mtu; - - LWIP_UNUSED_ARG(dest); /* in case IPv6 is disabled */ - - LWIP_ASSERT("tcp_eff_send_mss_netif: invalid dst_ip", dest != NULL); - 8009bae: 687b ldr r3, [r7, #4] - 8009bb0: 2b00 cmp r3, #0 - 8009bb2: d106 bne.n 8009bc2 - 8009bb4: 4b14 ldr r3, [pc, #80] @ (8009c08 ) - 8009bb6: f640 02c5 movw r2, #2245 @ 0x8c5 - 8009bba: 4914 ldr r1, [pc, #80] @ (8009c0c ) - 8009bbc: 4814 ldr r0, [pc, #80] @ (8009c10 ) - 8009bbe: f009 f85b bl 8012c78 - else -#endif /* LWIP_IPV4 */ -#endif /* LWIP_IPV6 */ -#if LWIP_IPV4 - { - if (outif == NULL) { - 8009bc2: 68bb ldr r3, [r7, #8] - 8009bc4: 2b00 cmp r3, #0 - 8009bc6: d101 bne.n 8009bcc - return sendmss; - 8009bc8: 89fb ldrh r3, [r7, #14] - 8009bca: e019 b.n 8009c00 - } - mtu = outif->mtu; - 8009bcc: 68bb ldr r3, [r7, #8] - 8009bce: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8009bd0: 82fb strh r3, [r7, #22] - } -#endif /* LWIP_IPV4 */ - - if (mtu != 0) { - 8009bd2: 8afb ldrh r3, [r7, #22] - 8009bd4: 2b00 cmp r3, #0 - 8009bd6: d012 beq.n 8009bfe - else -#endif /* LWIP_IPV4 */ -#endif /* LWIP_IPV6 */ -#if LWIP_IPV4 - { - offset = IP_HLEN + TCP_HLEN; - 8009bd8: 2328 movs r3, #40 @ 0x28 - 8009bda: 82bb strh r3, [r7, #20] - } -#endif /* LWIP_IPV4 */ - mss_s = (mtu > offset) ? (u16_t)(mtu - offset) : 0; - 8009bdc: 8afa ldrh r2, [r7, #22] - 8009bde: 8abb ldrh r3, [r7, #20] - 8009be0: 429a cmp r2, r3 - 8009be2: d904 bls.n 8009bee - 8009be4: 8afa ldrh r2, [r7, #22] - 8009be6: 8abb ldrh r3, [r7, #20] - 8009be8: 1ad3 subs r3, r2, r3 - 8009bea: b29b uxth r3, r3 - 8009bec: e000 b.n 8009bf0 - 8009bee: 2300 movs r3, #0 - 8009bf0: 827b strh r3, [r7, #18] - /* RFC 1122, chap 4.2.2.6: - * Eff.snd.MSS = min(SendMSS+20, MMS_S) - TCPhdrsize - IPoptionsize - * We correct for TCP options in tcp_write(), and don't support IP options. - */ - sendmss = LWIP_MIN(sendmss, mss_s); - 8009bf2: 8a7a ldrh r2, [r7, #18] - 8009bf4: 89fb ldrh r3, [r7, #14] - 8009bf6: 4293 cmp r3, r2 - 8009bf8: bf28 it cs - 8009bfa: 4613 movcs r3, r2 - 8009bfc: 81fb strh r3, [r7, #14] - } - return sendmss; - 8009bfe: 89fb ldrh r3, [r7, #14] -} - 8009c00: 4618 mov r0, r3 - 8009c02: 3718 adds r7, #24 - 8009c04: 46bd mov sp, r7 - 8009c06: bd80 pop {r7, pc} - 8009c08: 080181c4 .word 0x080181c4 - 8009c0c: 080188d0 .word 0x080188d0 - 8009c10: 08018208 .word 0x08018208 - -08009c14 : -#endif /* TCP_CALCULATE_EFF_SEND_MSS */ - -/** Helper function for tcp_netif_ip_addr_changed() that iterates a pcb list */ -static void -tcp_netif_ip_addr_changed_pcblist(const ip_addr_t *old_addr, struct tcp_pcb *pcb_list) -{ - 8009c14: b580 push {r7, lr} - 8009c16: b084 sub sp, #16 - 8009c18: af00 add r7, sp, #0 - 8009c1a: 6078 str r0, [r7, #4] - 8009c1c: 6039 str r1, [r7, #0] - struct tcp_pcb *pcb; - pcb = pcb_list; - 8009c1e: 683b ldr r3, [r7, #0] - 8009c20: 60fb str r3, [r7, #12] - - LWIP_ASSERT("tcp_netif_ip_addr_changed_pcblist: invalid old_addr", old_addr != NULL); - 8009c22: 687b ldr r3, [r7, #4] - 8009c24: 2b00 cmp r3, #0 - 8009c26: d119 bne.n 8009c5c - 8009c28: 4b10 ldr r3, [pc, #64] @ (8009c6c ) - 8009c2a: f44f 6210 mov.w r2, #2304 @ 0x900 - 8009c2e: 4910 ldr r1, [pc, #64] @ (8009c70 ) - 8009c30: 4810 ldr r0, [pc, #64] @ (8009c74 ) - 8009c32: f009 f821 bl 8012c78 - - while (pcb != NULL) { - 8009c36: e011 b.n 8009c5c - /* PCB bound to current local interface address? */ - if (ip_addr_cmp(&pcb->local_ip, old_addr) - 8009c38: 68fb ldr r3, [r7, #12] - 8009c3a: 681a ldr r2, [r3, #0] - 8009c3c: 687b ldr r3, [r7, #4] - 8009c3e: 681b ldr r3, [r3, #0] - 8009c40: 429a cmp r2, r3 - 8009c42: d108 bne.n 8009c56 - /* connections to link-local addresses must persist (RFC3927 ch. 1.9) */ - && (!IP_IS_V4_VAL(pcb->local_ip) || !ip4_addr_islinklocal(ip_2_ip4(&pcb->local_ip))) -#endif /* LWIP_AUTOIP */ - ) { - /* this connection must be aborted */ - struct tcp_pcb *next = pcb->next; - 8009c44: 68fb ldr r3, [r7, #12] - 8009c46: 68db ldr r3, [r3, #12] - 8009c48: 60bb str r3, [r7, #8] - LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_STATE, ("netif_set_ipaddr: aborting TCP pcb %p\n", (void *)pcb)); - tcp_abort(pcb); - 8009c4a: 68f8 ldr r0, [r7, #12] - 8009c4c: f7fe ffc4 bl 8008bd8 - pcb = next; - 8009c50: 68bb ldr r3, [r7, #8] - 8009c52: 60fb str r3, [r7, #12] - 8009c54: e002 b.n 8009c5c - } else { - pcb = pcb->next; - 8009c56: 68fb ldr r3, [r7, #12] - 8009c58: 68db ldr r3, [r3, #12] - 8009c5a: 60fb str r3, [r7, #12] - while (pcb != NULL) { - 8009c5c: 68fb ldr r3, [r7, #12] - 8009c5e: 2b00 cmp r3, #0 - 8009c60: d1ea bne.n 8009c38 - } - } -} - 8009c62: bf00 nop - 8009c64: bf00 nop - 8009c66: 3710 adds r7, #16 - 8009c68: 46bd mov sp, r7 - 8009c6a: bd80 pop {r7, pc} - 8009c6c: 080181c4 .word 0x080181c4 - 8009c70: 080188f8 .word 0x080188f8 - 8009c74: 08018208 .word 0x08018208 - -08009c78 : - * @param old_addr IP address of the netif before change - * @param new_addr IP address of the netif after change or NULL if netif has been removed - */ -void -tcp_netif_ip_addr_changed(const ip_addr_t *old_addr, const ip_addr_t *new_addr) -{ - 8009c78: b580 push {r7, lr} - 8009c7a: b084 sub sp, #16 - 8009c7c: af00 add r7, sp, #0 - 8009c7e: 6078 str r0, [r7, #4] - 8009c80: 6039 str r1, [r7, #0] - struct tcp_pcb_listen *lpcb; - - if (!ip_addr_isany(old_addr)) { - 8009c82: 687b ldr r3, [r7, #4] - 8009c84: 2b00 cmp r3, #0 - 8009c86: d02a beq.n 8009cde - 8009c88: 687b ldr r3, [r7, #4] - 8009c8a: 681b ldr r3, [r3, #0] - 8009c8c: 2b00 cmp r3, #0 - 8009c8e: d026 beq.n 8009cde - tcp_netif_ip_addr_changed_pcblist(old_addr, tcp_active_pcbs); - 8009c90: 4b15 ldr r3, [pc, #84] @ (8009ce8 ) - 8009c92: 681b ldr r3, [r3, #0] - 8009c94: 4619 mov r1, r3 - 8009c96: 6878 ldr r0, [r7, #4] - 8009c98: f7ff ffbc bl 8009c14 - tcp_netif_ip_addr_changed_pcblist(old_addr, tcp_bound_pcbs); - 8009c9c: 4b13 ldr r3, [pc, #76] @ (8009cec ) - 8009c9e: 681b ldr r3, [r3, #0] - 8009ca0: 4619 mov r1, r3 - 8009ca2: 6878 ldr r0, [r7, #4] - 8009ca4: f7ff ffb6 bl 8009c14 - - if (!ip_addr_isany(new_addr)) { - 8009ca8: 683b ldr r3, [r7, #0] - 8009caa: 2b00 cmp r3, #0 - 8009cac: d017 beq.n 8009cde - 8009cae: 683b ldr r3, [r7, #0] - 8009cb0: 681b ldr r3, [r3, #0] - 8009cb2: 2b00 cmp r3, #0 - 8009cb4: d013 beq.n 8009cde - /* PCB bound to current local interface address? */ - for (lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) { - 8009cb6: 4b0e ldr r3, [pc, #56] @ (8009cf0 ) - 8009cb8: 681b ldr r3, [r3, #0] - 8009cba: 60fb str r3, [r7, #12] - 8009cbc: e00c b.n 8009cd8 - /* PCB bound to current local interface address? */ - if (ip_addr_cmp(&lpcb->local_ip, old_addr)) { - 8009cbe: 68fb ldr r3, [r7, #12] - 8009cc0: 681a ldr r2, [r3, #0] - 8009cc2: 687b ldr r3, [r7, #4] - 8009cc4: 681b ldr r3, [r3, #0] - 8009cc6: 429a cmp r2, r3 - 8009cc8: d103 bne.n 8009cd2 - /* The PCB is listening to the old ipaddr and - * is set to listen to the new one instead */ - ip_addr_copy(lpcb->local_ip, *new_addr); - 8009cca: 683b ldr r3, [r7, #0] - 8009ccc: 681a ldr r2, [r3, #0] - 8009cce: 68fb ldr r3, [r7, #12] - 8009cd0: 601a str r2, [r3, #0] - for (lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) { - 8009cd2: 68fb ldr r3, [r7, #12] - 8009cd4: 68db ldr r3, [r3, #12] - 8009cd6: 60fb str r3, [r7, #12] - 8009cd8: 68fb ldr r3, [r7, #12] - 8009cda: 2b00 cmp r3, #0 - 8009cdc: d1ef bne.n 8009cbe - } - } - } - } -} - 8009cde: bf00 nop - 8009ce0: 3710 adds r7, #16 - 8009ce2: 46bd mov sp, r7 - 8009ce4: bd80 pop {r7, pc} - 8009ce6: bf00 nop - 8009ce8: 200190f8 .word 0x200190f8 - 8009cec: 200190f0 .word 0x200190f0 - 8009cf0: 200190f4 .word 0x200190f4 - -08009cf4 : - -#if TCP_QUEUE_OOSEQ -/* Free all ooseq pbufs (and possibly reset SACK state) */ -void -tcp_free_ooseq(struct tcp_pcb *pcb) -{ - 8009cf4: b580 push {r7, lr} - 8009cf6: b082 sub sp, #8 - 8009cf8: af00 add r7, sp, #0 - 8009cfa: 6078 str r0, [r7, #4] - if (pcb->ooseq) { - 8009cfc: 687b ldr r3, [r7, #4] - 8009cfe: 6f5b ldr r3, [r3, #116] @ 0x74 - 8009d00: 2b00 cmp r3, #0 - 8009d02: d007 beq.n 8009d14 - tcp_segs_free(pcb->ooseq); - 8009d04: 687b ldr r3, [r7, #4] - 8009d06: 6f5b ldr r3, [r3, #116] @ 0x74 - 8009d08: 4618 mov r0, r3 - 8009d0a: f7ff fc3d bl 8009588 - pcb->ooseq = NULL; - 8009d0e: 687b ldr r3, [r7, #4] - 8009d10: 2200 movs r2, #0 - 8009d12: 675a str r2, [r3, #116] @ 0x74 -#if LWIP_TCP_SACK_OUT - memset(pcb->rcv_sacks, 0, sizeof(pcb->rcv_sacks)); -#endif /* LWIP_TCP_SACK_OUT */ - } -} - 8009d14: bf00 nop - 8009d16: 3708 adds r7, #8 - 8009d18: 46bd mov sp, r7 - 8009d1a: bd80 pop {r7, pc} - -08009d1c : - * @param p received TCP segment to process (p->payload pointing to the TCP header) - * @param inp network interface on which this segment was received - */ -void -tcp_input(struct pbuf *p, struct netif *inp) -{ - 8009d1c: b590 push {r4, r7, lr} - 8009d1e: b08d sub sp, #52 @ 0x34 - 8009d20: af04 add r7, sp, #16 - 8009d22: 6078 str r0, [r7, #4] - 8009d24: 6039 str r1, [r7, #0] - u8_t hdrlen_bytes; - err_t err; - - LWIP_UNUSED_ARG(inp); - LWIP_ASSERT_CORE_LOCKED(); - LWIP_ASSERT("tcp_input: invalid pbuf", p != NULL); - 8009d26: 687b ldr r3, [r7, #4] - 8009d28: 2b00 cmp r3, #0 - 8009d2a: d105 bne.n 8009d38 - 8009d2c: 4b9b ldr r3, [pc, #620] @ (8009f9c ) - 8009d2e: 2283 movs r2, #131 @ 0x83 - 8009d30: 499b ldr r1, [pc, #620] @ (8009fa0 ) - 8009d32: 489c ldr r0, [pc, #624] @ (8009fa4 ) - 8009d34: f008 ffa0 bl 8012c78 - PERF_START; - - TCP_STATS_INC(tcp.recv); - MIB2_STATS_INC(mib2.tcpinsegs); - - tcphdr = (struct tcp_hdr *)p->payload; - 8009d38: 687b ldr r3, [r7, #4] - 8009d3a: 685b ldr r3, [r3, #4] - 8009d3c: 4a9a ldr r2, [pc, #616] @ (8009fa8 ) - 8009d3e: 6013 str r3, [r2, #0] -#if TCP_INPUT_DEBUG - tcp_debug_print(tcphdr); -#endif - - /* Check that TCP header fits in payload */ - if (p->len < TCP_HLEN) { - 8009d40: 687b ldr r3, [r7, #4] - 8009d42: 895b ldrh r3, [r3, #10] - 8009d44: 2b13 cmp r3, #19 - 8009d46: f240 83d1 bls.w 800a4ec - TCP_STATS_INC(tcp.lenerr); - goto dropped; - } - - /* Don't even process incoming broadcasts/multicasts. */ - if (ip_addr_isbroadcast(ip_current_dest_addr(), ip_current_netif()) || - 8009d4a: 4b98 ldr r3, [pc, #608] @ (8009fac ) - 8009d4c: 695b ldr r3, [r3, #20] - 8009d4e: 4a97 ldr r2, [pc, #604] @ (8009fac ) - 8009d50: 6812 ldr r2, [r2, #0] - 8009d52: 4611 mov r1, r2 - 8009d54: 4618 mov r0, r3 - 8009d56: f007 fe1d bl 8011994 - 8009d5a: 4603 mov r3, r0 - 8009d5c: 2b00 cmp r3, #0 - 8009d5e: f040 83c7 bne.w 800a4f0 - ip_addr_ismulticast(ip_current_dest_addr())) { - 8009d62: 4b92 ldr r3, [pc, #584] @ (8009fac ) - 8009d64: 695b ldr r3, [r3, #20] - 8009d66: f003 03f0 and.w r3, r3, #240 @ 0xf0 - if (ip_addr_isbroadcast(ip_current_dest_addr(), ip_current_netif()) || - 8009d6a: 2be0 cmp r3, #224 @ 0xe0 - 8009d6c: f000 83c0 beq.w 800a4f0 - } - } -#endif /* CHECKSUM_CHECK_TCP */ - - /* sanity-check header length */ - hdrlen_bytes = TCPH_HDRLEN_BYTES(tcphdr); - 8009d70: 4b8d ldr r3, [pc, #564] @ (8009fa8 ) - 8009d72: 681b ldr r3, [r3, #0] - 8009d74: 899b ldrh r3, [r3, #12] - 8009d76: b29b uxth r3, r3 - 8009d78: 4618 mov r0, r3 - 8009d7a: f7fc fe45 bl 8006a08 - 8009d7e: 4603 mov r3, r0 - 8009d80: 0b1b lsrs r3, r3, #12 - 8009d82: b29b uxth r3, r3 - 8009d84: b2db uxtb r3, r3 - 8009d86: 009b lsls r3, r3, #2 - 8009d88: 74bb strb r3, [r7, #18] - if ((hdrlen_bytes < TCP_HLEN) || (hdrlen_bytes > p->tot_len)) { - 8009d8a: 7cbb ldrb r3, [r7, #18] - 8009d8c: 2b13 cmp r3, #19 - 8009d8e: f240 83b1 bls.w 800a4f4 - 8009d92: 7cbb ldrb r3, [r7, #18] - 8009d94: b29a uxth r2, r3 - 8009d96: 687b ldr r3, [r7, #4] - 8009d98: 891b ldrh r3, [r3, #8] - 8009d9a: 429a cmp r2, r3 - 8009d9c: f200 83aa bhi.w 800a4f4 - goto dropped; - } - - /* Move the payload pointer in the pbuf so that it points to the - TCP data instead of the TCP header. */ - tcphdr_optlen = (u16_t)(hdrlen_bytes - TCP_HLEN); - 8009da0: 7cbb ldrb r3, [r7, #18] - 8009da2: b29b uxth r3, r3 - 8009da4: 3b14 subs r3, #20 - 8009da6: b29a uxth r2, r3 - 8009da8: 4b81 ldr r3, [pc, #516] @ (8009fb0 ) - 8009daa: 801a strh r2, [r3, #0] - tcphdr_opt2 = NULL; - 8009dac: 4b81 ldr r3, [pc, #516] @ (8009fb4 ) - 8009dae: 2200 movs r2, #0 - 8009db0: 601a str r2, [r3, #0] - if (p->len >= hdrlen_bytes) { - 8009db2: 687b ldr r3, [r7, #4] - 8009db4: 895a ldrh r2, [r3, #10] - 8009db6: 7cbb ldrb r3, [r7, #18] - 8009db8: b29b uxth r3, r3 - 8009dba: 429a cmp r2, r3 - 8009dbc: d309 bcc.n 8009dd2 - /* all options are in the first pbuf */ - tcphdr_opt1len = tcphdr_optlen; - 8009dbe: 4b7c ldr r3, [pc, #496] @ (8009fb0 ) - 8009dc0: 881a ldrh r2, [r3, #0] - 8009dc2: 4b7d ldr r3, [pc, #500] @ (8009fb8 ) - 8009dc4: 801a strh r2, [r3, #0] - pbuf_remove_header(p, hdrlen_bytes); /* cannot fail */ - 8009dc6: 7cbb ldrb r3, [r7, #18] - 8009dc8: 4619 mov r1, r3 - 8009dca: 6878 ldr r0, [r7, #4] - 8009dcc: f7fe f8e6 bl 8007f9c - 8009dd0: e04e b.n 8009e70 - } else { - u16_t opt2len; - /* TCP header fits into first pbuf, options don't - data is in the next pbuf */ - /* there must be a next pbuf, due to hdrlen_bytes sanity check above */ - LWIP_ASSERT("p->next != NULL", p->next != NULL); - 8009dd2: 687b ldr r3, [r7, #4] - 8009dd4: 681b ldr r3, [r3, #0] - 8009dd6: 2b00 cmp r3, #0 - 8009dd8: d105 bne.n 8009de6 - 8009dda: 4b70 ldr r3, [pc, #448] @ (8009f9c ) - 8009ddc: 22c2 movs r2, #194 @ 0xc2 - 8009dde: 4977 ldr r1, [pc, #476] @ (8009fbc ) - 8009de0: 4870 ldr r0, [pc, #448] @ (8009fa4 ) - 8009de2: f008 ff49 bl 8012c78 - - /* advance over the TCP header (cannot fail) */ - pbuf_remove_header(p, TCP_HLEN); - 8009de6: 2114 movs r1, #20 - 8009de8: 6878 ldr r0, [r7, #4] - 8009dea: f7fe f8d7 bl 8007f9c - - /* determine how long the first and second parts of the options are */ - tcphdr_opt1len = p->len; - 8009dee: 687b ldr r3, [r7, #4] - 8009df0: 895a ldrh r2, [r3, #10] - 8009df2: 4b71 ldr r3, [pc, #452] @ (8009fb8 ) - 8009df4: 801a strh r2, [r3, #0] - opt2len = (u16_t)(tcphdr_optlen - tcphdr_opt1len); - 8009df6: 4b6e ldr r3, [pc, #440] @ (8009fb0 ) - 8009df8: 881a ldrh r2, [r3, #0] - 8009dfa: 4b6f ldr r3, [pc, #444] @ (8009fb8 ) - 8009dfc: 881b ldrh r3, [r3, #0] - 8009dfe: 1ad3 subs r3, r2, r3 - 8009e00: 823b strh r3, [r7, #16] - - /* options continue in the next pbuf: set p to zero length and hide the - options in the next pbuf (adjusting p->tot_len) */ - pbuf_remove_header(p, tcphdr_opt1len); - 8009e02: 4b6d ldr r3, [pc, #436] @ (8009fb8 ) - 8009e04: 881b ldrh r3, [r3, #0] - 8009e06: 4619 mov r1, r3 - 8009e08: 6878 ldr r0, [r7, #4] - 8009e0a: f7fe f8c7 bl 8007f9c - - /* check that the options fit in the second pbuf */ - if (opt2len > p->next->len) { - 8009e0e: 687b ldr r3, [r7, #4] - 8009e10: 681b ldr r3, [r3, #0] - 8009e12: 895b ldrh r3, [r3, #10] - 8009e14: 8a3a ldrh r2, [r7, #16] - 8009e16: 429a cmp r2, r3 - 8009e18: f200 836e bhi.w 800a4f8 - TCP_STATS_INC(tcp.lenerr); - goto dropped; - } - - /* remember the pointer to the second part of the options */ - tcphdr_opt2 = (u8_t *)p->next->payload; - 8009e1c: 687b ldr r3, [r7, #4] - 8009e1e: 681b ldr r3, [r3, #0] - 8009e20: 685b ldr r3, [r3, #4] - 8009e22: 4a64 ldr r2, [pc, #400] @ (8009fb4 ) - 8009e24: 6013 str r3, [r2, #0] - - /* advance p->next to point after the options, and manually - adjust p->tot_len to keep it consistent with the changed p->next */ - pbuf_remove_header(p->next, opt2len); - 8009e26: 687b ldr r3, [r7, #4] - 8009e28: 681b ldr r3, [r3, #0] - 8009e2a: 8a3a ldrh r2, [r7, #16] - 8009e2c: 4611 mov r1, r2 - 8009e2e: 4618 mov r0, r3 - 8009e30: f7fe f8b4 bl 8007f9c - p->tot_len = (u16_t)(p->tot_len - opt2len); - 8009e34: 687b ldr r3, [r7, #4] - 8009e36: 891a ldrh r2, [r3, #8] - 8009e38: 8a3b ldrh r3, [r7, #16] - 8009e3a: 1ad3 subs r3, r2, r3 - 8009e3c: b29a uxth r2, r3 - 8009e3e: 687b ldr r3, [r7, #4] - 8009e40: 811a strh r2, [r3, #8] - - LWIP_ASSERT("p->len == 0", p->len == 0); - 8009e42: 687b ldr r3, [r7, #4] - 8009e44: 895b ldrh r3, [r3, #10] - 8009e46: 2b00 cmp r3, #0 - 8009e48: d005 beq.n 8009e56 - 8009e4a: 4b54 ldr r3, [pc, #336] @ (8009f9c ) - 8009e4c: 22df movs r2, #223 @ 0xdf - 8009e4e: 495c ldr r1, [pc, #368] @ (8009fc0 ) - 8009e50: 4854 ldr r0, [pc, #336] @ (8009fa4 ) - 8009e52: f008 ff11 bl 8012c78 - LWIP_ASSERT("p->tot_len == p->next->tot_len", p->tot_len == p->next->tot_len); - 8009e56: 687b ldr r3, [r7, #4] - 8009e58: 891a ldrh r2, [r3, #8] - 8009e5a: 687b ldr r3, [r7, #4] - 8009e5c: 681b ldr r3, [r3, #0] - 8009e5e: 891b ldrh r3, [r3, #8] - 8009e60: 429a cmp r2, r3 - 8009e62: d005 beq.n 8009e70 - 8009e64: 4b4d ldr r3, [pc, #308] @ (8009f9c ) - 8009e66: 22e0 movs r2, #224 @ 0xe0 - 8009e68: 4956 ldr r1, [pc, #344] @ (8009fc4 ) - 8009e6a: 484e ldr r0, [pc, #312] @ (8009fa4 ) - 8009e6c: f008 ff04 bl 8012c78 - } - - /* Convert fields in TCP header to host byte order. */ - tcphdr->src = lwip_ntohs(tcphdr->src); - 8009e70: 4b4d ldr r3, [pc, #308] @ (8009fa8 ) - 8009e72: 681b ldr r3, [r3, #0] - 8009e74: 881b ldrh r3, [r3, #0] - 8009e76: b29b uxth r3, r3 - 8009e78: 4a4b ldr r2, [pc, #300] @ (8009fa8 ) - 8009e7a: 6814 ldr r4, [r2, #0] - 8009e7c: 4618 mov r0, r3 - 8009e7e: f7fc fdc3 bl 8006a08 - 8009e82: 4603 mov r3, r0 - 8009e84: 8023 strh r3, [r4, #0] - tcphdr->dest = lwip_ntohs(tcphdr->dest); - 8009e86: 4b48 ldr r3, [pc, #288] @ (8009fa8 ) - 8009e88: 681b ldr r3, [r3, #0] - 8009e8a: 885b ldrh r3, [r3, #2] - 8009e8c: b29b uxth r3, r3 - 8009e8e: 4a46 ldr r2, [pc, #280] @ (8009fa8 ) - 8009e90: 6814 ldr r4, [r2, #0] - 8009e92: 4618 mov r0, r3 - 8009e94: f7fc fdb8 bl 8006a08 - 8009e98: 4603 mov r3, r0 - 8009e9a: 8063 strh r3, [r4, #2] - seqno = tcphdr->seqno = lwip_ntohl(tcphdr->seqno); - 8009e9c: 4b42 ldr r3, [pc, #264] @ (8009fa8 ) - 8009e9e: 681b ldr r3, [r3, #0] - 8009ea0: 685b ldr r3, [r3, #4] - 8009ea2: 4a41 ldr r2, [pc, #260] @ (8009fa8 ) - 8009ea4: 6814 ldr r4, [r2, #0] - 8009ea6: 4618 mov r0, r3 - 8009ea8: f7fc fdc3 bl 8006a32 - 8009eac: 4603 mov r3, r0 - 8009eae: 6063 str r3, [r4, #4] - 8009eb0: 6863 ldr r3, [r4, #4] - 8009eb2: 4a45 ldr r2, [pc, #276] @ (8009fc8 ) - 8009eb4: 6013 str r3, [r2, #0] - ackno = tcphdr->ackno = lwip_ntohl(tcphdr->ackno); - 8009eb6: 4b3c ldr r3, [pc, #240] @ (8009fa8 ) - 8009eb8: 681b ldr r3, [r3, #0] - 8009eba: 689b ldr r3, [r3, #8] - 8009ebc: 4a3a ldr r2, [pc, #232] @ (8009fa8 ) - 8009ebe: 6814 ldr r4, [r2, #0] - 8009ec0: 4618 mov r0, r3 - 8009ec2: f7fc fdb6 bl 8006a32 - 8009ec6: 4603 mov r3, r0 - 8009ec8: 60a3 str r3, [r4, #8] - 8009eca: 68a3 ldr r3, [r4, #8] - 8009ecc: 4a3f ldr r2, [pc, #252] @ (8009fcc ) - 8009ece: 6013 str r3, [r2, #0] - tcphdr->wnd = lwip_ntohs(tcphdr->wnd); - 8009ed0: 4b35 ldr r3, [pc, #212] @ (8009fa8 ) - 8009ed2: 681b ldr r3, [r3, #0] - 8009ed4: 89db ldrh r3, [r3, #14] - 8009ed6: b29b uxth r3, r3 - 8009ed8: 4a33 ldr r2, [pc, #204] @ (8009fa8 ) - 8009eda: 6814 ldr r4, [r2, #0] - 8009edc: 4618 mov r0, r3 - 8009ede: f7fc fd93 bl 8006a08 - 8009ee2: 4603 mov r3, r0 - 8009ee4: 81e3 strh r3, [r4, #14] - - flags = TCPH_FLAGS(tcphdr); - 8009ee6: 4b30 ldr r3, [pc, #192] @ (8009fa8 ) - 8009ee8: 681b ldr r3, [r3, #0] - 8009eea: 899b ldrh r3, [r3, #12] - 8009eec: b29b uxth r3, r3 - 8009eee: 4618 mov r0, r3 - 8009ef0: f7fc fd8a bl 8006a08 - 8009ef4: 4603 mov r3, r0 - 8009ef6: b2db uxtb r3, r3 - 8009ef8: f003 033f and.w r3, r3, #63 @ 0x3f - 8009efc: b2da uxtb r2, r3 - 8009efe: 4b34 ldr r3, [pc, #208] @ (8009fd0 ) - 8009f00: 701a strb r2, [r3, #0] - tcplen = p->tot_len; - 8009f02: 687b ldr r3, [r7, #4] - 8009f04: 891a ldrh r2, [r3, #8] - 8009f06: 4b33 ldr r3, [pc, #204] @ (8009fd4 ) - 8009f08: 801a strh r2, [r3, #0] - if (flags & (TCP_FIN | TCP_SYN)) { - 8009f0a: 4b31 ldr r3, [pc, #196] @ (8009fd0 ) - 8009f0c: 781b ldrb r3, [r3, #0] - 8009f0e: f003 0303 and.w r3, r3, #3 - 8009f12: 2b00 cmp r3, #0 - 8009f14: d00c beq.n 8009f30 - tcplen++; - 8009f16: 4b2f ldr r3, [pc, #188] @ (8009fd4 ) - 8009f18: 881b ldrh r3, [r3, #0] - 8009f1a: 3301 adds r3, #1 - 8009f1c: b29a uxth r2, r3 - 8009f1e: 4b2d ldr r3, [pc, #180] @ (8009fd4 ) - 8009f20: 801a strh r2, [r3, #0] - if (tcplen < p->tot_len) { - 8009f22: 687b ldr r3, [r7, #4] - 8009f24: 891a ldrh r2, [r3, #8] - 8009f26: 4b2b ldr r3, [pc, #172] @ (8009fd4 ) - 8009f28: 881b ldrh r3, [r3, #0] - 8009f2a: 429a cmp r2, r3 - 8009f2c: f200 82e6 bhi.w 800a4fc - } - } - - /* Demultiplex an incoming segment. First, we check if it is destined - for an active connection. */ - prev = NULL; - 8009f30: 2300 movs r3, #0 - 8009f32: 61bb str r3, [r7, #24] - - for (pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { - 8009f34: 4b28 ldr r3, [pc, #160] @ (8009fd8 ) - 8009f36: 681b ldr r3, [r3, #0] - 8009f38: 61fb str r3, [r7, #28] - 8009f3a: e09d b.n 800a078 - LWIP_ASSERT("tcp_input: active pcb->state != CLOSED", pcb->state != CLOSED); - 8009f3c: 69fb ldr r3, [r7, #28] - 8009f3e: 7d1b ldrb r3, [r3, #20] - 8009f40: 2b00 cmp r3, #0 - 8009f42: d105 bne.n 8009f50 - 8009f44: 4b15 ldr r3, [pc, #84] @ (8009f9c ) - 8009f46: 22fb movs r2, #251 @ 0xfb - 8009f48: 4924 ldr r1, [pc, #144] @ (8009fdc ) - 8009f4a: 4816 ldr r0, [pc, #88] @ (8009fa4 ) - 8009f4c: f008 fe94 bl 8012c78 - LWIP_ASSERT("tcp_input: active pcb->state != TIME-WAIT", pcb->state != TIME_WAIT); - 8009f50: 69fb ldr r3, [r7, #28] - 8009f52: 7d1b ldrb r3, [r3, #20] - 8009f54: 2b0a cmp r3, #10 - 8009f56: d105 bne.n 8009f64 - 8009f58: 4b10 ldr r3, [pc, #64] @ (8009f9c ) - 8009f5a: 22fc movs r2, #252 @ 0xfc - 8009f5c: 4920 ldr r1, [pc, #128] @ (8009fe0 ) - 8009f5e: 4811 ldr r0, [pc, #68] @ (8009fa4 ) - 8009f60: f008 fe8a bl 8012c78 - LWIP_ASSERT("tcp_input: active pcb->state != LISTEN", pcb->state != LISTEN); - 8009f64: 69fb ldr r3, [r7, #28] - 8009f66: 7d1b ldrb r3, [r3, #20] - 8009f68: 2b01 cmp r3, #1 - 8009f6a: d105 bne.n 8009f78 - 8009f6c: 4b0b ldr r3, [pc, #44] @ (8009f9c ) - 8009f6e: 22fd movs r2, #253 @ 0xfd - 8009f70: 491c ldr r1, [pc, #112] @ (8009fe4 ) - 8009f72: 480c ldr r0, [pc, #48] @ (8009fa4 ) - 8009f74: f008 fe80 bl 8012c78 - - /* check if PCB is bound to specific netif */ - if ((pcb->netif_idx != NETIF_NO_INDEX) && - 8009f78: 69fb ldr r3, [r7, #28] - 8009f7a: 7a1b ldrb r3, [r3, #8] - 8009f7c: 2b00 cmp r3, #0 - 8009f7e: d033 beq.n 8009fe8 - (pcb->netif_idx != netif_get_index(ip_data.current_input_netif))) { - 8009f80: 69fb ldr r3, [r7, #28] - 8009f82: 7a1a ldrb r2, [r3, #8] - 8009f84: 4b09 ldr r3, [pc, #36] @ (8009fac ) - 8009f86: 685b ldr r3, [r3, #4] - 8009f88: f893 3034 ldrb.w r3, [r3, #52] @ 0x34 - 8009f8c: 3301 adds r3, #1 - 8009f8e: b2db uxtb r3, r3 - if ((pcb->netif_idx != NETIF_NO_INDEX) && - 8009f90: 429a cmp r2, r3 - 8009f92: d029 beq.n 8009fe8 - prev = pcb; - 8009f94: 69fb ldr r3, [r7, #28] - 8009f96: 61bb str r3, [r7, #24] - continue; - 8009f98: e06b b.n 800a072 - 8009f9a: bf00 nop - 8009f9c: 0801892c .word 0x0801892c - 8009fa0: 08018960 .word 0x08018960 - 8009fa4: 08018978 .word 0x08018978 - 8009fa8: 20019114 .word 0x20019114 - 8009fac: 20006194 .word 0x20006194 - 8009fb0: 20019118 .word 0x20019118 - 8009fb4: 2001911c .word 0x2001911c - 8009fb8: 2001911a .word 0x2001911a - 8009fbc: 080189a0 .word 0x080189a0 - 8009fc0: 080189b0 .word 0x080189b0 - 8009fc4: 080189bc .word 0x080189bc - 8009fc8: 20019124 .word 0x20019124 - 8009fcc: 20019128 .word 0x20019128 - 8009fd0: 20019130 .word 0x20019130 - 8009fd4: 2001912e .word 0x2001912e - 8009fd8: 200190f8 .word 0x200190f8 - 8009fdc: 080189dc .word 0x080189dc - 8009fe0: 08018a04 .word 0x08018a04 - 8009fe4: 08018a30 .word 0x08018a30 - } - - if (pcb->remote_port == tcphdr->src && - 8009fe8: 69fb ldr r3, [r7, #28] - 8009fea: 8b1a ldrh r2, [r3, #24] - 8009fec: 4b72 ldr r3, [pc, #456] @ (800a1b8 ) - 8009fee: 681b ldr r3, [r3, #0] - 8009ff0: 881b ldrh r3, [r3, #0] - 8009ff2: b29b uxth r3, r3 - 8009ff4: 429a cmp r2, r3 - 8009ff6: d13a bne.n 800a06e - pcb->local_port == tcphdr->dest && - 8009ff8: 69fb ldr r3, [r7, #28] - 8009ffa: 8ada ldrh r2, [r3, #22] - 8009ffc: 4b6e ldr r3, [pc, #440] @ (800a1b8 ) - 8009ffe: 681b ldr r3, [r3, #0] - 800a000: 885b ldrh r3, [r3, #2] - 800a002: b29b uxth r3, r3 - if (pcb->remote_port == tcphdr->src && - 800a004: 429a cmp r2, r3 - 800a006: d132 bne.n 800a06e - ip_addr_cmp(&pcb->remote_ip, ip_current_src_addr()) && - 800a008: 69fb ldr r3, [r7, #28] - 800a00a: 685a ldr r2, [r3, #4] - 800a00c: 4b6b ldr r3, [pc, #428] @ (800a1bc ) - 800a00e: 691b ldr r3, [r3, #16] - pcb->local_port == tcphdr->dest && - 800a010: 429a cmp r2, r3 - 800a012: d12c bne.n 800a06e - ip_addr_cmp(&pcb->local_ip, ip_current_dest_addr())) { - 800a014: 69fb ldr r3, [r7, #28] - 800a016: 681a ldr r2, [r3, #0] - 800a018: 4b68 ldr r3, [pc, #416] @ (800a1bc ) - 800a01a: 695b ldr r3, [r3, #20] - ip_addr_cmp(&pcb->remote_ip, ip_current_src_addr()) && - 800a01c: 429a cmp r2, r3 - 800a01e: d126 bne.n 800a06e - /* Move this PCB to the front of the list so that subsequent - lookups will be faster (we exploit locality in TCP segment - arrivals). */ - LWIP_ASSERT("tcp_input: pcb->next != pcb (before cache)", pcb->next != pcb); - 800a020: 69fb ldr r3, [r7, #28] - 800a022: 68db ldr r3, [r3, #12] - 800a024: 69fa ldr r2, [r7, #28] - 800a026: 429a cmp r2, r3 - 800a028: d106 bne.n 800a038 - 800a02a: 4b65 ldr r3, [pc, #404] @ (800a1c0 ) - 800a02c: f240 120d movw r2, #269 @ 0x10d - 800a030: 4964 ldr r1, [pc, #400] @ (800a1c4 ) - 800a032: 4865 ldr r0, [pc, #404] @ (800a1c8 ) - 800a034: f008 fe20 bl 8012c78 - if (prev != NULL) { - 800a038: 69bb ldr r3, [r7, #24] - 800a03a: 2b00 cmp r3, #0 - 800a03c: d00a beq.n 800a054 - prev->next = pcb->next; - 800a03e: 69fb ldr r3, [r7, #28] - 800a040: 68da ldr r2, [r3, #12] - 800a042: 69bb ldr r3, [r7, #24] - 800a044: 60da str r2, [r3, #12] - pcb->next = tcp_active_pcbs; - 800a046: 4b61 ldr r3, [pc, #388] @ (800a1cc ) - 800a048: 681a ldr r2, [r3, #0] - 800a04a: 69fb ldr r3, [r7, #28] - 800a04c: 60da str r2, [r3, #12] - tcp_active_pcbs = pcb; - 800a04e: 4a5f ldr r2, [pc, #380] @ (800a1cc ) - 800a050: 69fb ldr r3, [r7, #28] - 800a052: 6013 str r3, [r2, #0] - } else { - TCP_STATS_INC(tcp.cachehit); - } - LWIP_ASSERT("tcp_input: pcb->next != pcb (after cache)", pcb->next != pcb); - 800a054: 69fb ldr r3, [r7, #28] - 800a056: 68db ldr r3, [r3, #12] - 800a058: 69fa ldr r2, [r7, #28] - 800a05a: 429a cmp r2, r3 - 800a05c: d111 bne.n 800a082 - 800a05e: 4b58 ldr r3, [pc, #352] @ (800a1c0 ) - 800a060: f240 1215 movw r2, #277 @ 0x115 - 800a064: 495a ldr r1, [pc, #360] @ (800a1d0 ) - 800a066: 4858 ldr r0, [pc, #352] @ (800a1c8 ) - 800a068: f008 fe06 bl 8012c78 - break; - 800a06c: e009 b.n 800a082 - } - prev = pcb; - 800a06e: 69fb ldr r3, [r7, #28] - 800a070: 61bb str r3, [r7, #24] - for (pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { - 800a072: 69fb ldr r3, [r7, #28] - 800a074: 68db ldr r3, [r3, #12] - 800a076: 61fb str r3, [r7, #28] - 800a078: 69fb ldr r3, [r7, #28] - 800a07a: 2b00 cmp r3, #0 - 800a07c: f47f af5e bne.w 8009f3c - 800a080: e000 b.n 800a084 - break; - 800a082: bf00 nop - } - - if (pcb == NULL) { - 800a084: 69fb ldr r3, [r7, #28] - 800a086: 2b00 cmp r3, #0 - 800a088: f040 80aa bne.w 800a1e0 - /* If it did not go to an active connection, we check the connections - in the TIME-WAIT state. */ - for (pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) { - 800a08c: 4b51 ldr r3, [pc, #324] @ (800a1d4 ) - 800a08e: 681b ldr r3, [r3, #0] - 800a090: 61fb str r3, [r7, #28] - 800a092: e03f b.n 800a114 - LWIP_ASSERT("tcp_input: TIME-WAIT pcb->state == TIME-WAIT", pcb->state == TIME_WAIT); - 800a094: 69fb ldr r3, [r7, #28] - 800a096: 7d1b ldrb r3, [r3, #20] - 800a098: 2b0a cmp r3, #10 - 800a09a: d006 beq.n 800a0aa - 800a09c: 4b48 ldr r3, [pc, #288] @ (800a1c0 ) - 800a09e: f240 121f movw r2, #287 @ 0x11f - 800a0a2: 494d ldr r1, [pc, #308] @ (800a1d8 ) - 800a0a4: 4848 ldr r0, [pc, #288] @ (800a1c8 ) - 800a0a6: f008 fde7 bl 8012c78 - - /* check if PCB is bound to specific netif */ - if ((pcb->netif_idx != NETIF_NO_INDEX) && - 800a0aa: 69fb ldr r3, [r7, #28] - 800a0ac: 7a1b ldrb r3, [r3, #8] - 800a0ae: 2b00 cmp r3, #0 - 800a0b0: d009 beq.n 800a0c6 - (pcb->netif_idx != netif_get_index(ip_data.current_input_netif))) { - 800a0b2: 69fb ldr r3, [r7, #28] - 800a0b4: 7a1a ldrb r2, [r3, #8] - 800a0b6: 4b41 ldr r3, [pc, #260] @ (800a1bc ) - 800a0b8: 685b ldr r3, [r3, #4] - 800a0ba: f893 3034 ldrb.w r3, [r3, #52] @ 0x34 - 800a0be: 3301 adds r3, #1 - 800a0c0: b2db uxtb r3, r3 - if ((pcb->netif_idx != NETIF_NO_INDEX) && - 800a0c2: 429a cmp r2, r3 - 800a0c4: d122 bne.n 800a10c - continue; - } - - if (pcb->remote_port == tcphdr->src && - 800a0c6: 69fb ldr r3, [r7, #28] - 800a0c8: 8b1a ldrh r2, [r3, #24] - 800a0ca: 4b3b ldr r3, [pc, #236] @ (800a1b8 ) - 800a0cc: 681b ldr r3, [r3, #0] - 800a0ce: 881b ldrh r3, [r3, #0] - 800a0d0: b29b uxth r3, r3 - 800a0d2: 429a cmp r2, r3 - 800a0d4: d11b bne.n 800a10e - pcb->local_port == tcphdr->dest && - 800a0d6: 69fb ldr r3, [r7, #28] - 800a0d8: 8ada ldrh r2, [r3, #22] - 800a0da: 4b37 ldr r3, [pc, #220] @ (800a1b8 ) - 800a0dc: 681b ldr r3, [r3, #0] - 800a0de: 885b ldrh r3, [r3, #2] - 800a0e0: b29b uxth r3, r3 - if (pcb->remote_port == tcphdr->src && - 800a0e2: 429a cmp r2, r3 - 800a0e4: d113 bne.n 800a10e - ip_addr_cmp(&pcb->remote_ip, ip_current_src_addr()) && - 800a0e6: 69fb ldr r3, [r7, #28] - 800a0e8: 685a ldr r2, [r3, #4] - 800a0ea: 4b34 ldr r3, [pc, #208] @ (800a1bc ) - 800a0ec: 691b ldr r3, [r3, #16] - pcb->local_port == tcphdr->dest && - 800a0ee: 429a cmp r2, r3 - 800a0f0: d10d bne.n 800a10e - ip_addr_cmp(&pcb->local_ip, ip_current_dest_addr())) { - 800a0f2: 69fb ldr r3, [r7, #28] - 800a0f4: 681a ldr r2, [r3, #0] - 800a0f6: 4b31 ldr r3, [pc, #196] @ (800a1bc ) - 800a0f8: 695b ldr r3, [r3, #20] - ip_addr_cmp(&pcb->remote_ip, ip_current_src_addr()) && - 800a0fa: 429a cmp r2, r3 - 800a0fc: d107 bne.n 800a10e -#ifdef LWIP_HOOK_TCP_INPACKET_PCB - if (LWIP_HOOK_TCP_INPACKET_PCB(pcb, tcphdr, tcphdr_optlen, tcphdr_opt1len, - tcphdr_opt2, p) == ERR_OK) -#endif - { - tcp_timewait_input(pcb); - 800a0fe: 69f8 ldr r0, [r7, #28] - 800a100: f000 fb56 bl 800a7b0 - } - pbuf_free(p); - 800a104: 6878 ldr r0, [r7, #4] - 800a106: f7fd ffcf bl 80080a8 - return; - 800a10a: e1fd b.n 800a508 - continue; - 800a10c: bf00 nop - for (pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) { - 800a10e: 69fb ldr r3, [r7, #28] - 800a110: 68db ldr r3, [r3, #12] - 800a112: 61fb str r3, [r7, #28] - 800a114: 69fb ldr r3, [r7, #28] - 800a116: 2b00 cmp r3, #0 - 800a118: d1bc bne.n 800a094 - } - } - - /* Finally, if we still did not get a match, we check all PCBs that - are LISTENing for incoming connections. */ - prev = NULL; - 800a11a: 2300 movs r3, #0 - 800a11c: 61bb str r3, [r7, #24] - for (lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) { - 800a11e: 4b2f ldr r3, [pc, #188] @ (800a1dc ) - 800a120: 681b ldr r3, [r3, #0] - 800a122: 617b str r3, [r7, #20] - 800a124: e02a b.n 800a17c - /* check if PCB is bound to specific netif */ - if ((lpcb->netif_idx != NETIF_NO_INDEX) && - 800a126: 697b ldr r3, [r7, #20] - 800a128: 7a1b ldrb r3, [r3, #8] - 800a12a: 2b00 cmp r3, #0 - 800a12c: d00c beq.n 800a148 - (lpcb->netif_idx != netif_get_index(ip_data.current_input_netif))) { - 800a12e: 697b ldr r3, [r7, #20] - 800a130: 7a1a ldrb r2, [r3, #8] - 800a132: 4b22 ldr r3, [pc, #136] @ (800a1bc ) - 800a134: 685b ldr r3, [r3, #4] - 800a136: f893 3034 ldrb.w r3, [r3, #52] @ 0x34 - 800a13a: 3301 adds r3, #1 - 800a13c: b2db uxtb r3, r3 - if ((lpcb->netif_idx != NETIF_NO_INDEX) && - 800a13e: 429a cmp r2, r3 - 800a140: d002 beq.n 800a148 - prev = (struct tcp_pcb *)lpcb; - 800a142: 697b ldr r3, [r7, #20] - 800a144: 61bb str r3, [r7, #24] - continue; - 800a146: e016 b.n 800a176 - } - - if (lpcb->local_port == tcphdr->dest) { - 800a148: 697b ldr r3, [r7, #20] - 800a14a: 8ada ldrh r2, [r3, #22] - 800a14c: 4b1a ldr r3, [pc, #104] @ (800a1b8 ) - 800a14e: 681b ldr r3, [r3, #0] - 800a150: 885b ldrh r3, [r3, #2] - 800a152: b29b uxth r3, r3 - 800a154: 429a cmp r2, r3 - 800a156: d10c bne.n 800a172 - lpcb_prev = prev; -#else /* SO_REUSE */ - break; -#endif /* SO_REUSE */ - } else if (IP_ADDR_PCB_VERSION_MATCH_EXACT(lpcb, ip_current_dest_addr())) { - if (ip_addr_cmp(&lpcb->local_ip, ip_current_dest_addr())) { - 800a158: 697b ldr r3, [r7, #20] - 800a15a: 681a ldr r2, [r3, #0] - 800a15c: 4b17 ldr r3, [pc, #92] @ (800a1bc ) - 800a15e: 695b ldr r3, [r3, #20] - 800a160: 429a cmp r2, r3 - 800a162: d00f beq.n 800a184 - /* found an exact match */ - break; - } else if (ip_addr_isany(&lpcb->local_ip)) { - 800a164: 697b ldr r3, [r7, #20] - 800a166: 2b00 cmp r3, #0 - 800a168: d00d beq.n 800a186 - 800a16a: 697b ldr r3, [r7, #20] - 800a16c: 681b ldr r3, [r3, #0] - 800a16e: 2b00 cmp r3, #0 - 800a170: d009 beq.n 800a186 - break; -#endif /* SO_REUSE */ - } - } - } - prev = (struct tcp_pcb *)lpcb; - 800a172: 697b ldr r3, [r7, #20] - 800a174: 61bb str r3, [r7, #24] - for (lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) { - 800a176: 697b ldr r3, [r7, #20] - 800a178: 68db ldr r3, [r3, #12] - 800a17a: 617b str r3, [r7, #20] - 800a17c: 697b ldr r3, [r7, #20] - 800a17e: 2b00 cmp r3, #0 - 800a180: d1d1 bne.n 800a126 - 800a182: e000 b.n 800a186 - break; - 800a184: bf00 nop - /* only pass to ANY if no specific local IP has been found */ - lpcb = lpcb_any; - prev = lpcb_prev; - } -#endif /* SO_REUSE */ - if (lpcb != NULL) { - 800a186: 697b ldr r3, [r7, #20] - 800a188: 2b00 cmp r3, #0 - 800a18a: d029 beq.n 800a1e0 - /* Move this PCB to the front of the list so that subsequent - lookups will be faster (we exploit locality in TCP segment - arrivals). */ - if (prev != NULL) { - 800a18c: 69bb ldr r3, [r7, #24] - 800a18e: 2b00 cmp r3, #0 - 800a190: d00a beq.n 800a1a8 - ((struct tcp_pcb_listen *)prev)->next = lpcb->next; - 800a192: 697b ldr r3, [r7, #20] - 800a194: 68da ldr r2, [r3, #12] - 800a196: 69bb ldr r3, [r7, #24] - 800a198: 60da str r2, [r3, #12] - /* our successor is the remainder of the listening list */ - lpcb->next = tcp_listen_pcbs.listen_pcbs; - 800a19a: 4b10 ldr r3, [pc, #64] @ (800a1dc ) - 800a19c: 681a ldr r2, [r3, #0] - 800a19e: 697b ldr r3, [r7, #20] - 800a1a0: 60da str r2, [r3, #12] - /* put this listening pcb at the head of the listening list */ - tcp_listen_pcbs.listen_pcbs = lpcb; - 800a1a2: 4a0e ldr r2, [pc, #56] @ (800a1dc ) - 800a1a4: 697b ldr r3, [r7, #20] - 800a1a6: 6013 str r3, [r2, #0] -#ifdef LWIP_HOOK_TCP_INPACKET_PCB - if (LWIP_HOOK_TCP_INPACKET_PCB((struct tcp_pcb *)lpcb, tcphdr, tcphdr_optlen, - tcphdr_opt1len, tcphdr_opt2, p) == ERR_OK) -#endif - { - tcp_listen_input(lpcb); - 800a1a8: 6978 ldr r0, [r7, #20] - 800a1aa: f000 fa03 bl 800a5b4 - } - pbuf_free(p); - 800a1ae: 6878 ldr r0, [r7, #4] - 800a1b0: f7fd ff7a bl 80080a8 - return; - 800a1b4: e1a8 b.n 800a508 - 800a1b6: bf00 nop - 800a1b8: 20019114 .word 0x20019114 - 800a1bc: 20006194 .word 0x20006194 - 800a1c0: 0801892c .word 0x0801892c - 800a1c4: 08018a58 .word 0x08018a58 - 800a1c8: 08018978 .word 0x08018978 - 800a1cc: 200190f8 .word 0x200190f8 - 800a1d0: 08018a84 .word 0x08018a84 - 800a1d4: 200190fc .word 0x200190fc - 800a1d8: 08018ab0 .word 0x08018ab0 - 800a1dc: 200190f4 .word 0x200190f4 - tcphdr_opt1len, tcphdr_opt2, p) != ERR_OK) { - pbuf_free(p); - return; - } -#endif - if (pcb != NULL) { - 800a1e0: 69fb ldr r3, [r7, #28] - 800a1e2: 2b00 cmp r3, #0 - 800a1e4: f000 8158 beq.w 800a498 -#if TCP_INPUT_DEBUG - tcp_debug_print_state(pcb->state); -#endif /* TCP_INPUT_DEBUG */ - - /* Set up a tcp_seg structure. */ - inseg.next = NULL; - 800a1e8: 4b95 ldr r3, [pc, #596] @ (800a440 ) - 800a1ea: 2200 movs r2, #0 - 800a1ec: 601a str r2, [r3, #0] - inseg.len = p->tot_len; - 800a1ee: 687b ldr r3, [r7, #4] - 800a1f0: 891a ldrh r2, [r3, #8] - 800a1f2: 4b93 ldr r3, [pc, #588] @ (800a440 ) - 800a1f4: 811a strh r2, [r3, #8] - inseg.p = p; - 800a1f6: 4a92 ldr r2, [pc, #584] @ (800a440 ) - 800a1f8: 687b ldr r3, [r7, #4] - 800a1fa: 6053 str r3, [r2, #4] - inseg.tcphdr = tcphdr; - 800a1fc: 4b91 ldr r3, [pc, #580] @ (800a444 ) - 800a1fe: 681b ldr r3, [r3, #0] - 800a200: 4a8f ldr r2, [pc, #572] @ (800a440 ) - 800a202: 60d3 str r3, [r2, #12] - - recv_data = NULL; - 800a204: 4b90 ldr r3, [pc, #576] @ (800a448 ) - 800a206: 2200 movs r2, #0 - 800a208: 601a str r2, [r3, #0] - recv_flags = 0; - 800a20a: 4b90 ldr r3, [pc, #576] @ (800a44c ) - 800a20c: 2200 movs r2, #0 - 800a20e: 701a strb r2, [r3, #0] - recv_acked = 0; - 800a210: 4b8f ldr r3, [pc, #572] @ (800a450 ) - 800a212: 2200 movs r2, #0 - 800a214: 801a strh r2, [r3, #0] - - if (flags & TCP_PSH) { - 800a216: 4b8f ldr r3, [pc, #572] @ (800a454 ) - 800a218: 781b ldrb r3, [r3, #0] - 800a21a: f003 0308 and.w r3, r3, #8 - 800a21e: 2b00 cmp r3, #0 - 800a220: d006 beq.n 800a230 - p->flags |= PBUF_FLAG_PUSH; - 800a222: 687b ldr r3, [r7, #4] - 800a224: 7b5b ldrb r3, [r3, #13] - 800a226: f043 0301 orr.w r3, r3, #1 - 800a22a: b2da uxtb r2, r3 - 800a22c: 687b ldr r3, [r7, #4] - 800a22e: 735a strb r2, [r3, #13] - } - - /* If there is data which was previously "refused" by upper layer */ - if (pcb->refused_data != NULL) { - 800a230: 69fb ldr r3, [r7, #28] - 800a232: 6f9b ldr r3, [r3, #120] @ 0x78 - 800a234: 2b00 cmp r3, #0 - 800a236: d017 beq.n 800a268 - if ((tcp_process_refused_data(pcb) == ERR_ABRT) || - 800a238: 69f8 ldr r0, [r7, #28] - 800a23a: f7ff f929 bl 8009490 - 800a23e: 4603 mov r3, r0 - 800a240: f113 0f0d cmn.w r3, #13 - 800a244: d007 beq.n 800a256 - ((pcb->refused_data != NULL) && (tcplen > 0))) { - 800a246: 69fb ldr r3, [r7, #28] - 800a248: 6f9b ldr r3, [r3, #120] @ 0x78 - if ((tcp_process_refused_data(pcb) == ERR_ABRT) || - 800a24a: 2b00 cmp r3, #0 - 800a24c: d00c beq.n 800a268 - ((pcb->refused_data != NULL) && (tcplen > 0))) { - 800a24e: 4b82 ldr r3, [pc, #520] @ (800a458 ) - 800a250: 881b ldrh r3, [r3, #0] - 800a252: 2b00 cmp r3, #0 - 800a254: d008 beq.n 800a268 - /* pcb has been aborted or refused data is still refused and the new - segment contains data */ - if (pcb->rcv_ann_wnd == 0) { - 800a256: 69fb ldr r3, [r7, #28] - 800a258: 8d5b ldrh r3, [r3, #42] @ 0x2a - 800a25a: 2b00 cmp r3, #0 - 800a25c: f040 80e3 bne.w 800a426 - /* this is a zero-window probe, we respond to it with current RCV.NXT - and drop the data segment */ - tcp_send_empty_ack(pcb); - 800a260: 69f8 ldr r0, [r7, #28] - 800a262: f003 f9a7 bl 800d5b4 - } - TCP_STATS_INC(tcp.drop); - MIB2_STATS_INC(mib2.tcpinerrs); - goto aborted; - 800a266: e0de b.n 800a426 - } - } - tcp_input_pcb = pcb; - 800a268: 4a7c ldr r2, [pc, #496] @ (800a45c ) - 800a26a: 69fb ldr r3, [r7, #28] - 800a26c: 6013 str r3, [r2, #0] - err = tcp_process(pcb); - 800a26e: 69f8 ldr r0, [r7, #28] - 800a270: f000 fb18 bl 800a8a4 - 800a274: 4603 mov r3, r0 - 800a276: 74fb strb r3, [r7, #19] - /* A return value of ERR_ABRT means that tcp_abort() was called - and that the pcb has been freed. If so, we don't do anything. */ - if (err != ERR_ABRT) { - 800a278: f997 3013 ldrsb.w r3, [r7, #19] - 800a27c: f113 0f0d cmn.w r3, #13 - 800a280: f000 80d3 beq.w 800a42a - if (recv_flags & TF_RESET) { - 800a284: 4b71 ldr r3, [pc, #452] @ (800a44c ) - 800a286: 781b ldrb r3, [r3, #0] - 800a288: f003 0308 and.w r3, r3, #8 - 800a28c: 2b00 cmp r3, #0 - 800a28e: d015 beq.n 800a2bc - /* TF_RESET means that the connection was reset by the other - end. We then call the error callback to inform the - application that the connection is dead before we - deallocate the PCB. */ - TCP_EVENT_ERR(pcb->state, pcb->errf, pcb->callback_arg, ERR_RST); - 800a290: 69fb ldr r3, [r7, #28] - 800a292: f8d3 3090 ldr.w r3, [r3, #144] @ 0x90 - 800a296: 2b00 cmp r3, #0 - 800a298: d008 beq.n 800a2ac - 800a29a: 69fb ldr r3, [r7, #28] - 800a29c: f8d3 3090 ldr.w r3, [r3, #144] @ 0x90 - 800a2a0: 69fa ldr r2, [r7, #28] - 800a2a2: 6912 ldr r2, [r2, #16] - 800a2a4: f06f 010d mvn.w r1, #13 - 800a2a8: 4610 mov r0, r2 - 800a2aa: 4798 blx r3 - tcp_pcb_remove(&tcp_active_pcbs, pcb); - 800a2ac: 69f9 ldr r1, [r7, #28] - 800a2ae: 486c ldr r0, [pc, #432] @ (800a460 ) - 800a2b0: f7ff fbbc bl 8009a2c - tcp_free(pcb); - 800a2b4: 69f8 ldr r0, [r7, #28] - 800a2b6: f7fe f9a7 bl 8008608 - 800a2ba: e0da b.n 800a472 - } else { - err = ERR_OK; - 800a2bc: 2300 movs r3, #0 - 800a2be: 74fb strb r3, [r7, #19] - /* If the application has registered a "sent" function to be - called when new send buffer space is available, we call it - now. */ - if (recv_acked > 0) { - 800a2c0: 4b63 ldr r3, [pc, #396] @ (800a450 ) - 800a2c2: 881b ldrh r3, [r3, #0] - 800a2c4: 2b00 cmp r3, #0 - 800a2c6: d01d beq.n 800a304 - while (acked > 0) { - acked16 = (u16_t)LWIP_MIN(acked, 0xffffu); - acked -= acked16; -#else - { - acked16 = recv_acked; - 800a2c8: 4b61 ldr r3, [pc, #388] @ (800a450 ) - 800a2ca: 881b ldrh r3, [r3, #0] - 800a2cc: 81fb strh r3, [r7, #14] -#endif - TCP_EVENT_SENT(pcb, (u16_t)acked16, err); - 800a2ce: 69fb ldr r3, [r7, #28] - 800a2d0: f8d3 3080 ldr.w r3, [r3, #128] @ 0x80 - 800a2d4: 2b00 cmp r3, #0 - 800a2d6: d00a beq.n 800a2ee - 800a2d8: 69fb ldr r3, [r7, #28] - 800a2da: f8d3 3080 ldr.w r3, [r3, #128] @ 0x80 - 800a2de: 69fa ldr r2, [r7, #28] - 800a2e0: 6910 ldr r0, [r2, #16] - 800a2e2: 89fa ldrh r2, [r7, #14] - 800a2e4: 69f9 ldr r1, [r7, #28] - 800a2e6: 4798 blx r3 - 800a2e8: 4603 mov r3, r0 - 800a2ea: 74fb strb r3, [r7, #19] - 800a2ec: e001 b.n 800a2f2 - 800a2ee: 2300 movs r3, #0 - 800a2f0: 74fb strb r3, [r7, #19] - if (err == ERR_ABRT) { - 800a2f2: f997 3013 ldrsb.w r3, [r7, #19] - 800a2f6: f113 0f0d cmn.w r3, #13 - 800a2fa: f000 8098 beq.w 800a42e - goto aborted; - } - } - recv_acked = 0; - 800a2fe: 4b54 ldr r3, [pc, #336] @ (800a450 ) - 800a300: 2200 movs r2, #0 - 800a302: 801a strh r2, [r3, #0] - } - if (tcp_input_delayed_close(pcb)) { - 800a304: 69f8 ldr r0, [r7, #28] - 800a306: f000 f915 bl 800a534 - 800a30a: 4603 mov r3, r0 - 800a30c: 2b00 cmp r3, #0 - 800a30e: f040 8090 bne.w 800a432 -#if TCP_QUEUE_OOSEQ && LWIP_WND_SCALE - while (recv_data != NULL) { - struct pbuf *rest = NULL; - pbuf_split_64k(recv_data, &rest); -#else /* TCP_QUEUE_OOSEQ && LWIP_WND_SCALE */ - if (recv_data != NULL) { - 800a312: 4b4d ldr r3, [pc, #308] @ (800a448 ) - 800a314: 681b ldr r3, [r3, #0] - 800a316: 2b00 cmp r3, #0 - 800a318: d041 beq.n 800a39e -#endif /* TCP_QUEUE_OOSEQ && LWIP_WND_SCALE */ - - LWIP_ASSERT("pcb->refused_data == NULL", pcb->refused_data == NULL); - 800a31a: 69fb ldr r3, [r7, #28] - 800a31c: 6f9b ldr r3, [r3, #120] @ 0x78 - 800a31e: 2b00 cmp r3, #0 - 800a320: d006 beq.n 800a330 - 800a322: 4b50 ldr r3, [pc, #320] @ (800a464 ) - 800a324: f44f 72f3 mov.w r2, #486 @ 0x1e6 - 800a328: 494f ldr r1, [pc, #316] @ (800a468 ) - 800a32a: 4850 ldr r0, [pc, #320] @ (800a46c ) - 800a32c: f008 fca4 bl 8012c78 - if (pcb->flags & TF_RXCLOSED) { - 800a330: 69fb ldr r3, [r7, #28] - 800a332: 8b5b ldrh r3, [r3, #26] - 800a334: f003 0310 and.w r3, r3, #16 - 800a338: 2b00 cmp r3, #0 - 800a33a: d008 beq.n 800a34e - /* received data although already closed -> abort (send RST) to - notify the remote host that not all data has been processed */ - pbuf_free(recv_data); - 800a33c: 4b42 ldr r3, [pc, #264] @ (800a448 ) - 800a33e: 681b ldr r3, [r3, #0] - 800a340: 4618 mov r0, r3 - 800a342: f7fd feb1 bl 80080a8 -#if TCP_QUEUE_OOSEQ && LWIP_WND_SCALE - if (rest != NULL) { - pbuf_free(rest); - } -#endif /* TCP_QUEUE_OOSEQ && LWIP_WND_SCALE */ - tcp_abort(pcb); - 800a346: 69f8 ldr r0, [r7, #28] - 800a348: f7fe fc46 bl 8008bd8 - goto aborted; - 800a34c: e091 b.n 800a472 - } - - /* Notify application that data has been received. */ - TCP_EVENT_RECV(pcb, recv_data, ERR_OK, err); - 800a34e: 69fb ldr r3, [r7, #28] - 800a350: f8d3 3084 ldr.w r3, [r3, #132] @ 0x84 - 800a354: 2b00 cmp r3, #0 - 800a356: d00c beq.n 800a372 - 800a358: 69fb ldr r3, [r7, #28] - 800a35a: f8d3 4084 ldr.w r4, [r3, #132] @ 0x84 - 800a35e: 69fb ldr r3, [r7, #28] - 800a360: 6918 ldr r0, [r3, #16] - 800a362: 4b39 ldr r3, [pc, #228] @ (800a448 ) - 800a364: 681a ldr r2, [r3, #0] - 800a366: 2300 movs r3, #0 - 800a368: 69f9 ldr r1, [r7, #28] - 800a36a: 47a0 blx r4 - 800a36c: 4603 mov r3, r0 - 800a36e: 74fb strb r3, [r7, #19] - 800a370: e008 b.n 800a384 - 800a372: 4b35 ldr r3, [pc, #212] @ (800a448 ) - 800a374: 681a ldr r2, [r3, #0] - 800a376: 2300 movs r3, #0 - 800a378: 69f9 ldr r1, [r7, #28] - 800a37a: 2000 movs r0, #0 - 800a37c: f7ff f95e bl 800963c - 800a380: 4603 mov r3, r0 - 800a382: 74fb strb r3, [r7, #19] - if (err == ERR_ABRT) { - 800a384: f997 3013 ldrsb.w r3, [r7, #19] - 800a388: f113 0f0d cmn.w r3, #13 - 800a38c: d053 beq.n 800a436 -#endif /* TCP_QUEUE_OOSEQ && LWIP_WND_SCALE */ - goto aborted; - } - - /* If the upper layer can't receive this data, store it */ - if (err != ERR_OK) { - 800a38e: f997 3013 ldrsb.w r3, [r7, #19] - 800a392: 2b00 cmp r3, #0 - 800a394: d003 beq.n 800a39e -#if TCP_QUEUE_OOSEQ && LWIP_WND_SCALE - if (rest != NULL) { - pbuf_cat(recv_data, rest); - } -#endif /* TCP_QUEUE_OOSEQ && LWIP_WND_SCALE */ - pcb->refused_data = recv_data; - 800a396: 4b2c ldr r3, [pc, #176] @ (800a448 ) - 800a398: 681a ldr r2, [r3, #0] - 800a39a: 69fb ldr r3, [r7, #28] - 800a39c: 679a str r2, [r3, #120] @ 0x78 - } - } - - /* If a FIN segment was received, we call the callback - function with a NULL buffer to indicate EOF. */ - if (recv_flags & TF_GOT_FIN) { - 800a39e: 4b2b ldr r3, [pc, #172] @ (800a44c ) - 800a3a0: 781b ldrb r3, [r3, #0] - 800a3a2: f003 0320 and.w r3, r3, #32 - 800a3a6: 2b00 cmp r3, #0 - 800a3a8: d030 beq.n 800a40c - if (pcb->refused_data != NULL) { - 800a3aa: 69fb ldr r3, [r7, #28] - 800a3ac: 6f9b ldr r3, [r3, #120] @ 0x78 - 800a3ae: 2b00 cmp r3, #0 - 800a3b0: d009 beq.n 800a3c6 - /* Delay this if we have refused data. */ - pcb->refused_data->flags |= PBUF_FLAG_TCP_FIN; - 800a3b2: 69fb ldr r3, [r7, #28] - 800a3b4: 6f9b ldr r3, [r3, #120] @ 0x78 - 800a3b6: 7b5a ldrb r2, [r3, #13] - 800a3b8: 69fb ldr r3, [r7, #28] - 800a3ba: 6f9b ldr r3, [r3, #120] @ 0x78 - 800a3bc: f042 0220 orr.w r2, r2, #32 - 800a3c0: b2d2 uxtb r2, r2 - 800a3c2: 735a strb r2, [r3, #13] - 800a3c4: e022 b.n 800a40c - } else { - /* correct rcv_wnd as the application won't call tcp_recved() - for the FIN's seqno */ - if (pcb->rcv_wnd != TCP_WND_MAX(pcb)) { - 800a3c6: 69fb ldr r3, [r7, #28] - 800a3c8: 8d1b ldrh r3, [r3, #40] @ 0x28 - 800a3ca: f5b3 6f06 cmp.w r3, #2144 @ 0x860 - 800a3ce: d005 beq.n 800a3dc - pcb->rcv_wnd++; - 800a3d0: 69fb ldr r3, [r7, #28] - 800a3d2: 8d1b ldrh r3, [r3, #40] @ 0x28 - 800a3d4: 3301 adds r3, #1 - 800a3d6: b29a uxth r2, r3 - 800a3d8: 69fb ldr r3, [r7, #28] - 800a3da: 851a strh r2, [r3, #40] @ 0x28 - } - TCP_EVENT_CLOSED(pcb, err); - 800a3dc: 69fb ldr r3, [r7, #28] - 800a3de: f8d3 3084 ldr.w r3, [r3, #132] @ 0x84 - 800a3e2: 2b00 cmp r3, #0 - 800a3e4: d00b beq.n 800a3fe - 800a3e6: 69fb ldr r3, [r7, #28] - 800a3e8: f8d3 4084 ldr.w r4, [r3, #132] @ 0x84 - 800a3ec: 69fb ldr r3, [r7, #28] - 800a3ee: 6918 ldr r0, [r3, #16] - 800a3f0: 2300 movs r3, #0 - 800a3f2: 2200 movs r2, #0 - 800a3f4: 69f9 ldr r1, [r7, #28] - 800a3f6: 47a0 blx r4 - 800a3f8: 4603 mov r3, r0 - 800a3fa: 74fb strb r3, [r7, #19] - 800a3fc: e001 b.n 800a402 - 800a3fe: 2300 movs r3, #0 - 800a400: 74fb strb r3, [r7, #19] - if (err == ERR_ABRT) { - 800a402: f997 3013 ldrsb.w r3, [r7, #19] - 800a406: f113 0f0d cmn.w r3, #13 - 800a40a: d016 beq.n 800a43a - goto aborted; - } - } - } - - tcp_input_pcb = NULL; - 800a40c: 4b13 ldr r3, [pc, #76] @ (800a45c ) - 800a40e: 2200 movs r2, #0 - 800a410: 601a str r2, [r3, #0] - if (tcp_input_delayed_close(pcb)) { - 800a412: 69f8 ldr r0, [r7, #28] - 800a414: f000 f88e bl 800a534 - 800a418: 4603 mov r3, r0 - 800a41a: 2b00 cmp r3, #0 - 800a41c: d128 bne.n 800a470 - goto aborted; - } - /* Try to send something out. */ - tcp_output(pcb); - 800a41e: 69f8 ldr r0, [r7, #28] - 800a420: f002 fac2 bl 800c9a8 - 800a424: e025 b.n 800a472 - goto aborted; - 800a426: bf00 nop - 800a428: e023 b.n 800a472 -#endif /* TCP_INPUT_DEBUG */ - } - } - /* Jump target if pcb has been aborted in a callback (by calling tcp_abort()). - Below this line, 'pcb' may not be dereferenced! */ -aborted: - 800a42a: bf00 nop - 800a42c: e021 b.n 800a472 - goto aborted; - 800a42e: bf00 nop - 800a430: e01f b.n 800a472 - goto aborted; - 800a432: bf00 nop - 800a434: e01d b.n 800a472 - goto aborted; - 800a436: bf00 nop - 800a438: e01b b.n 800a472 - goto aborted; - 800a43a: bf00 nop - 800a43c: e019 b.n 800a472 - 800a43e: bf00 nop - 800a440: 20019104 .word 0x20019104 - 800a444: 20019114 .word 0x20019114 - 800a448: 20019134 .word 0x20019134 - 800a44c: 20019131 .word 0x20019131 - 800a450: 2001912c .word 0x2001912c - 800a454: 20019130 .word 0x20019130 - 800a458: 2001912e .word 0x2001912e - 800a45c: 20019138 .word 0x20019138 - 800a460: 200190f8 .word 0x200190f8 - 800a464: 0801892c .word 0x0801892c - 800a468: 08018ae0 .word 0x08018ae0 - 800a46c: 08018978 .word 0x08018978 - goto aborted; - 800a470: bf00 nop - tcp_input_pcb = NULL; - 800a472: 4b27 ldr r3, [pc, #156] @ (800a510 ) - 800a474: 2200 movs r2, #0 - 800a476: 601a str r2, [r3, #0] - recv_data = NULL; - 800a478: 4b26 ldr r3, [pc, #152] @ (800a514 ) - 800a47a: 2200 movs r2, #0 - 800a47c: 601a str r2, [r3, #0] - - /* give up our reference to inseg.p */ - if (inseg.p != NULL) { - 800a47e: 4b26 ldr r3, [pc, #152] @ (800a518 ) - 800a480: 685b ldr r3, [r3, #4] - 800a482: 2b00 cmp r3, #0 - 800a484: d03f beq.n 800a506 - pbuf_free(inseg.p); - 800a486: 4b24 ldr r3, [pc, #144] @ (800a518 ) - 800a488: 685b ldr r3, [r3, #4] - 800a48a: 4618 mov r0, r3 - 800a48c: f7fd fe0c bl 80080a8 - inseg.p = NULL; - 800a490: 4b21 ldr r3, [pc, #132] @ (800a518 ) - 800a492: 2200 movs r2, #0 - 800a494: 605a str r2, [r3, #4] - pbuf_free(p); - } - - LWIP_ASSERT("tcp_input: tcp_pcbs_sane()", tcp_pcbs_sane()); - PERF_STOP("tcp_input"); - return; - 800a496: e036 b.n 800a506 - if (!(TCPH_FLAGS(tcphdr) & TCP_RST)) { - 800a498: 4b20 ldr r3, [pc, #128] @ (800a51c ) - 800a49a: 681b ldr r3, [r3, #0] - 800a49c: 899b ldrh r3, [r3, #12] - 800a49e: b29b uxth r3, r3 - 800a4a0: 4618 mov r0, r3 - 800a4a2: f7fc fab1 bl 8006a08 - 800a4a6: 4603 mov r3, r0 - 800a4a8: b2db uxtb r3, r3 - 800a4aa: f003 0304 and.w r3, r3, #4 - 800a4ae: 2b00 cmp r3, #0 - 800a4b0: d118 bne.n 800a4e4 - tcp_rst(NULL, ackno, seqno + tcplen, ip_current_dest_addr(), - 800a4b2: 4b1b ldr r3, [pc, #108] @ (800a520 ) - 800a4b4: 6819 ldr r1, [r3, #0] - 800a4b6: 4b1b ldr r3, [pc, #108] @ (800a524 ) - 800a4b8: 881b ldrh r3, [r3, #0] - 800a4ba: 461a mov r2, r3 - 800a4bc: 4b1a ldr r3, [pc, #104] @ (800a528 ) - 800a4be: 681b ldr r3, [r3, #0] - 800a4c0: 18d0 adds r0, r2, r3 - ip_current_src_addr(), tcphdr->dest, tcphdr->src); - 800a4c2: 4b16 ldr r3, [pc, #88] @ (800a51c ) - 800a4c4: 681b ldr r3, [r3, #0] - tcp_rst(NULL, ackno, seqno + tcplen, ip_current_dest_addr(), - 800a4c6: 885b ldrh r3, [r3, #2] - 800a4c8: b29b uxth r3, r3 - ip_current_src_addr(), tcphdr->dest, tcphdr->src); - 800a4ca: 4a14 ldr r2, [pc, #80] @ (800a51c ) - 800a4cc: 6812 ldr r2, [r2, #0] - tcp_rst(NULL, ackno, seqno + tcplen, ip_current_dest_addr(), - 800a4ce: 8812 ldrh r2, [r2, #0] - 800a4d0: b292 uxth r2, r2 - 800a4d2: 9202 str r2, [sp, #8] - 800a4d4: 9301 str r3, [sp, #4] - 800a4d6: 4b15 ldr r3, [pc, #84] @ (800a52c ) - 800a4d8: 9300 str r3, [sp, #0] - 800a4da: 4b15 ldr r3, [pc, #84] @ (800a530 ) - 800a4dc: 4602 mov r2, r0 - 800a4de: 2000 movs r0, #0 - 800a4e0: f003 f816 bl 800d510 - pbuf_free(p); - 800a4e4: 6878 ldr r0, [r7, #4] - 800a4e6: f7fd fddf bl 80080a8 - return; - 800a4ea: e00c b.n 800a506 - goto dropped; - 800a4ec: bf00 nop - 800a4ee: e006 b.n 800a4fe - goto dropped; - 800a4f0: bf00 nop - 800a4f2: e004 b.n 800a4fe - goto dropped; - 800a4f4: bf00 nop - 800a4f6: e002 b.n 800a4fe - goto dropped; - 800a4f8: bf00 nop - 800a4fa: e000 b.n 800a4fe - goto dropped; - 800a4fc: bf00 nop -dropped: - TCP_STATS_INC(tcp.drop); - MIB2_STATS_INC(mib2.tcpinerrs); - pbuf_free(p); - 800a4fe: 6878 ldr r0, [r7, #4] - 800a500: f7fd fdd2 bl 80080a8 - 800a504: e000 b.n 800a508 - return; - 800a506: bf00 nop -} - 800a508: 3724 adds r7, #36 @ 0x24 - 800a50a: 46bd mov sp, r7 - 800a50c: bd90 pop {r4, r7, pc} - 800a50e: bf00 nop - 800a510: 20019138 .word 0x20019138 - 800a514: 20019134 .word 0x20019134 - 800a518: 20019104 .word 0x20019104 - 800a51c: 20019114 .word 0x20019114 - 800a520: 20019128 .word 0x20019128 - 800a524: 2001912e .word 0x2001912e - 800a528: 20019124 .word 0x20019124 - 800a52c: 200061a4 .word 0x200061a4 - 800a530: 200061a8 .word 0x200061a8 - -0800a534 : - * any more. - * @returns 1 if the pcb has been closed and deallocated, 0 otherwise - */ -static int -tcp_input_delayed_close(struct tcp_pcb *pcb) -{ - 800a534: b580 push {r7, lr} - 800a536: b082 sub sp, #8 - 800a538: af00 add r7, sp, #0 - 800a53a: 6078 str r0, [r7, #4] - LWIP_ASSERT("tcp_input_delayed_close: invalid pcb", pcb != NULL); - 800a53c: 687b ldr r3, [r7, #4] - 800a53e: 2b00 cmp r3, #0 - 800a540: d106 bne.n 800a550 - 800a542: 4b17 ldr r3, [pc, #92] @ (800a5a0 ) - 800a544: f240 225a movw r2, #602 @ 0x25a - 800a548: 4916 ldr r1, [pc, #88] @ (800a5a4 ) - 800a54a: 4817 ldr r0, [pc, #92] @ (800a5a8 ) - 800a54c: f008 fb94 bl 8012c78 - - if (recv_flags & TF_CLOSED) { - 800a550: 4b16 ldr r3, [pc, #88] @ (800a5ac ) - 800a552: 781b ldrb r3, [r3, #0] - 800a554: f003 0310 and.w r3, r3, #16 - 800a558: 2b00 cmp r3, #0 - 800a55a: d01c beq.n 800a596 - /* The connection has been closed and we will deallocate the - PCB. */ - if (!(pcb->flags & TF_RXCLOSED)) { - 800a55c: 687b ldr r3, [r7, #4] - 800a55e: 8b5b ldrh r3, [r3, #26] - 800a560: f003 0310 and.w r3, r3, #16 - 800a564: 2b00 cmp r3, #0 - 800a566: d10d bne.n 800a584 - /* Connection closed although the application has only shut down the - tx side: call the PCB's err callback and indicate the closure to - ensure the application doesn't continue using the PCB. */ - TCP_EVENT_ERR(pcb->state, pcb->errf, pcb->callback_arg, ERR_CLSD); - 800a568: 687b ldr r3, [r7, #4] - 800a56a: f8d3 3090 ldr.w r3, [r3, #144] @ 0x90 - 800a56e: 2b00 cmp r3, #0 - 800a570: d008 beq.n 800a584 - 800a572: 687b ldr r3, [r7, #4] - 800a574: f8d3 3090 ldr.w r3, [r3, #144] @ 0x90 - 800a578: 687a ldr r2, [r7, #4] - 800a57a: 6912 ldr r2, [r2, #16] - 800a57c: f06f 010e mvn.w r1, #14 - 800a580: 4610 mov r0, r2 - 800a582: 4798 blx r3 - } - tcp_pcb_remove(&tcp_active_pcbs, pcb); - 800a584: 6879 ldr r1, [r7, #4] - 800a586: 480a ldr r0, [pc, #40] @ (800a5b0 ) - 800a588: f7ff fa50 bl 8009a2c - tcp_free(pcb); - 800a58c: 6878 ldr r0, [r7, #4] - 800a58e: f7fe f83b bl 8008608 - return 1; - 800a592: 2301 movs r3, #1 - 800a594: e000 b.n 800a598 - } - return 0; - 800a596: 2300 movs r3, #0 -} - 800a598: 4618 mov r0, r3 - 800a59a: 3708 adds r7, #8 - 800a59c: 46bd mov sp, r7 - 800a59e: bd80 pop {r7, pc} - 800a5a0: 0801892c .word 0x0801892c - 800a5a4: 08018afc .word 0x08018afc - 800a5a8: 08018978 .word 0x08018978 - 800a5ac: 20019131 .word 0x20019131 - 800a5b0: 200190f8 .word 0x200190f8 - -0800a5b4 : - * @note the segment which arrived is saved in global variables, therefore only the pcb - * involved is passed as a parameter to this function - */ -static void -tcp_listen_input(struct tcp_pcb_listen *pcb) -{ - 800a5b4: b590 push {r4, r7, lr} - 800a5b6: b08b sub sp, #44 @ 0x2c - 800a5b8: af04 add r7, sp, #16 - 800a5ba: 6078 str r0, [r7, #4] - struct tcp_pcb *npcb; - u32_t iss; - err_t rc; - - if (flags & TCP_RST) { - 800a5bc: 4b6f ldr r3, [pc, #444] @ (800a77c ) - 800a5be: 781b ldrb r3, [r3, #0] - 800a5c0: f003 0304 and.w r3, r3, #4 - 800a5c4: 2b00 cmp r3, #0 - 800a5c6: f040 80d2 bne.w 800a76e - /* An incoming RST should be ignored. Return. */ - return; - } - - LWIP_ASSERT("tcp_listen_input: invalid pcb", pcb != NULL); - 800a5ca: 687b ldr r3, [r7, #4] - 800a5cc: 2b00 cmp r3, #0 - 800a5ce: d106 bne.n 800a5de - 800a5d0: 4b6b ldr r3, [pc, #428] @ (800a780 ) - 800a5d2: f240 2281 movw r2, #641 @ 0x281 - 800a5d6: 496b ldr r1, [pc, #428] @ (800a784 ) - 800a5d8: 486b ldr r0, [pc, #428] @ (800a788 ) - 800a5da: f008 fb4d bl 8012c78 - - /* In the LISTEN state, we check for incoming SYN segments, - creates a new PCB, and responds with a SYN|ACK. */ - if (flags & TCP_ACK) { - 800a5de: 4b67 ldr r3, [pc, #412] @ (800a77c ) - 800a5e0: 781b ldrb r3, [r3, #0] - 800a5e2: f003 0310 and.w r3, r3, #16 - 800a5e6: 2b00 cmp r3, #0 - 800a5e8: d019 beq.n 800a61e - /* For incoming segments with the ACK flag set, respond with a - RST. */ - LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_listen_input: ACK in LISTEN, sending reset\n")); - tcp_rst((const struct tcp_pcb *)pcb, ackno, seqno + tcplen, ip_current_dest_addr(), - 800a5ea: 4b68 ldr r3, [pc, #416] @ (800a78c ) - 800a5ec: 6819 ldr r1, [r3, #0] - 800a5ee: 4b68 ldr r3, [pc, #416] @ (800a790 ) - 800a5f0: 881b ldrh r3, [r3, #0] - 800a5f2: 461a mov r2, r3 - 800a5f4: 4b67 ldr r3, [pc, #412] @ (800a794 ) - 800a5f6: 681b ldr r3, [r3, #0] - 800a5f8: 18d0 adds r0, r2, r3 - ip_current_src_addr(), tcphdr->dest, tcphdr->src); - 800a5fa: 4b67 ldr r3, [pc, #412] @ (800a798 ) - 800a5fc: 681b ldr r3, [r3, #0] - tcp_rst((const struct tcp_pcb *)pcb, ackno, seqno + tcplen, ip_current_dest_addr(), - 800a5fe: 885b ldrh r3, [r3, #2] - 800a600: b29b uxth r3, r3 - ip_current_src_addr(), tcphdr->dest, tcphdr->src); - 800a602: 4a65 ldr r2, [pc, #404] @ (800a798 ) - 800a604: 6812 ldr r2, [r2, #0] - tcp_rst((const struct tcp_pcb *)pcb, ackno, seqno + tcplen, ip_current_dest_addr(), - 800a606: 8812 ldrh r2, [r2, #0] - 800a608: b292 uxth r2, r2 - 800a60a: 9202 str r2, [sp, #8] - 800a60c: 9301 str r3, [sp, #4] - 800a60e: 4b63 ldr r3, [pc, #396] @ (800a79c ) - 800a610: 9300 str r3, [sp, #0] - 800a612: 4b63 ldr r3, [pc, #396] @ (800a7a0 ) - 800a614: 4602 mov r2, r0 - 800a616: 6878 ldr r0, [r7, #4] - 800a618: f002 ff7a bl 800d510 - tcp_abandon(npcb, 0); - return; - } - tcp_output(npcb); - } - return; - 800a61c: e0a9 b.n 800a772 - } else if (flags & TCP_SYN) { - 800a61e: 4b57 ldr r3, [pc, #348] @ (800a77c ) - 800a620: 781b ldrb r3, [r3, #0] - 800a622: f003 0302 and.w r3, r3, #2 - 800a626: 2b00 cmp r3, #0 - 800a628: f000 80a3 beq.w 800a772 - npcb = tcp_alloc(pcb->prio); - 800a62c: 687b ldr r3, [r7, #4] - 800a62e: 7d5b ldrb r3, [r3, #21] - 800a630: 4618 mov r0, r3 - 800a632: f7ff f927 bl 8009884 - 800a636: 6178 str r0, [r7, #20] - if (npcb == NULL) { - 800a638: 697b ldr r3, [r7, #20] - 800a63a: 2b00 cmp r3, #0 - 800a63c: d111 bne.n 800a662 - TCP_EVENT_ACCEPT(pcb, NULL, pcb->callback_arg, ERR_MEM, err); - 800a63e: 687b ldr r3, [r7, #4] - 800a640: 699b ldr r3, [r3, #24] - 800a642: 2b00 cmp r3, #0 - 800a644: d00a beq.n 800a65c - 800a646: 687b ldr r3, [r7, #4] - 800a648: 699b ldr r3, [r3, #24] - 800a64a: 687a ldr r2, [r7, #4] - 800a64c: 6910 ldr r0, [r2, #16] - 800a64e: f04f 32ff mov.w r2, #4294967295 - 800a652: 2100 movs r1, #0 - 800a654: 4798 blx r3 - 800a656: 4603 mov r3, r0 - 800a658: 73bb strb r3, [r7, #14] - return; - 800a65a: e08b b.n 800a774 - TCP_EVENT_ACCEPT(pcb, NULL, pcb->callback_arg, ERR_MEM, err); - 800a65c: 23f0 movs r3, #240 @ 0xf0 - 800a65e: 73bb strb r3, [r7, #14] - return; - 800a660: e088 b.n 800a774 - ip_addr_copy(npcb->local_ip, *ip_current_dest_addr()); - 800a662: 4b50 ldr r3, [pc, #320] @ (800a7a4 ) - 800a664: 695a ldr r2, [r3, #20] - 800a666: 697b ldr r3, [r7, #20] - 800a668: 601a str r2, [r3, #0] - ip_addr_copy(npcb->remote_ip, *ip_current_src_addr()); - 800a66a: 4b4e ldr r3, [pc, #312] @ (800a7a4 ) - 800a66c: 691a ldr r2, [r3, #16] - 800a66e: 697b ldr r3, [r7, #20] - 800a670: 605a str r2, [r3, #4] - npcb->local_port = pcb->local_port; - 800a672: 687b ldr r3, [r7, #4] - 800a674: 8ada ldrh r2, [r3, #22] - 800a676: 697b ldr r3, [r7, #20] - 800a678: 82da strh r2, [r3, #22] - npcb->remote_port = tcphdr->src; - 800a67a: 4b47 ldr r3, [pc, #284] @ (800a798 ) - 800a67c: 681b ldr r3, [r3, #0] - 800a67e: 881b ldrh r3, [r3, #0] - 800a680: b29a uxth r2, r3 - 800a682: 697b ldr r3, [r7, #20] - 800a684: 831a strh r2, [r3, #24] - npcb->state = SYN_RCVD; - 800a686: 697b ldr r3, [r7, #20] - 800a688: 2203 movs r2, #3 - 800a68a: 751a strb r2, [r3, #20] - npcb->rcv_nxt = seqno + 1; - 800a68c: 4b41 ldr r3, [pc, #260] @ (800a794 ) - 800a68e: 681b ldr r3, [r3, #0] - 800a690: 1c5a adds r2, r3, #1 - 800a692: 697b ldr r3, [r7, #20] - 800a694: 625a str r2, [r3, #36] @ 0x24 - npcb->rcv_ann_right_edge = npcb->rcv_nxt; - 800a696: 697b ldr r3, [r7, #20] - 800a698: 6a5a ldr r2, [r3, #36] @ 0x24 - 800a69a: 697b ldr r3, [r7, #20] - 800a69c: 62da str r2, [r3, #44] @ 0x2c - iss = tcp_next_iss(npcb); - 800a69e: 6978 ldr r0, [r7, #20] - 800a6a0: f7ff fa58 bl 8009b54 - 800a6a4: 6138 str r0, [r7, #16] - npcb->snd_wl2 = iss; - 800a6a6: 697b ldr r3, [r7, #20] - 800a6a8: 693a ldr r2, [r7, #16] - 800a6aa: 659a str r2, [r3, #88] @ 0x58 - npcb->snd_nxt = iss; - 800a6ac: 697b ldr r3, [r7, #20] - 800a6ae: 693a ldr r2, [r7, #16] - 800a6b0: 651a str r2, [r3, #80] @ 0x50 - npcb->lastack = iss; - 800a6b2: 697b ldr r3, [r7, #20] - 800a6b4: 693a ldr r2, [r7, #16] - 800a6b6: 645a str r2, [r3, #68] @ 0x44 - npcb->snd_lbb = iss; - 800a6b8: 697b ldr r3, [r7, #20] - 800a6ba: 693a ldr r2, [r7, #16] - 800a6bc: 65da str r2, [r3, #92] @ 0x5c - npcb->snd_wl1 = seqno - 1;/* initialise to seqno-1 to force window update */ - 800a6be: 4b35 ldr r3, [pc, #212] @ (800a794 ) - 800a6c0: 681b ldr r3, [r3, #0] - 800a6c2: 1e5a subs r2, r3, #1 - 800a6c4: 697b ldr r3, [r7, #20] - 800a6c6: 655a str r2, [r3, #84] @ 0x54 - npcb->callback_arg = pcb->callback_arg; - 800a6c8: 687b ldr r3, [r7, #4] - 800a6ca: 691a ldr r2, [r3, #16] - 800a6cc: 697b ldr r3, [r7, #20] - 800a6ce: 611a str r2, [r3, #16] - npcb->listener = pcb; - 800a6d0: 697b ldr r3, [r7, #20] - 800a6d2: 687a ldr r2, [r7, #4] - 800a6d4: 67da str r2, [r3, #124] @ 0x7c - npcb->so_options = pcb->so_options & SOF_INHERITED; - 800a6d6: 687b ldr r3, [r7, #4] - 800a6d8: 7a5b ldrb r3, [r3, #9] - 800a6da: f003 030c and.w r3, r3, #12 - 800a6de: b2da uxtb r2, r3 - 800a6e0: 697b ldr r3, [r7, #20] - 800a6e2: 725a strb r2, [r3, #9] - npcb->netif_idx = pcb->netif_idx; - 800a6e4: 687b ldr r3, [r7, #4] - 800a6e6: 7a1a ldrb r2, [r3, #8] - 800a6e8: 697b ldr r3, [r7, #20] - 800a6ea: 721a strb r2, [r3, #8] - TCP_REG_ACTIVE(npcb); - 800a6ec: 4b2e ldr r3, [pc, #184] @ (800a7a8 ) - 800a6ee: 681a ldr r2, [r3, #0] - 800a6f0: 697b ldr r3, [r7, #20] - 800a6f2: 60da str r2, [r3, #12] - 800a6f4: 4a2c ldr r2, [pc, #176] @ (800a7a8 ) - 800a6f6: 697b ldr r3, [r7, #20] - 800a6f8: 6013 str r3, [r2, #0] - 800a6fa: f003 f8cb bl 800d894 - 800a6fe: 4b2b ldr r3, [pc, #172] @ (800a7ac ) - 800a700: 2201 movs r2, #1 - 800a702: 701a strb r2, [r3, #0] - tcp_parseopt(npcb); - 800a704: 6978 ldr r0, [r7, #20] - 800a706: f001 fd8b bl 800c220 - npcb->snd_wnd = tcphdr->wnd; - 800a70a: 4b23 ldr r3, [pc, #140] @ (800a798 ) - 800a70c: 681b ldr r3, [r3, #0] - 800a70e: 89db ldrh r3, [r3, #14] - 800a710: b29a uxth r2, r3 - 800a712: 697b ldr r3, [r7, #20] - 800a714: f8a3 2060 strh.w r2, [r3, #96] @ 0x60 - npcb->snd_wnd_max = npcb->snd_wnd; - 800a718: 697b ldr r3, [r7, #20] - 800a71a: f8b3 2060 ldrh.w r2, [r3, #96] @ 0x60 - 800a71e: 697b ldr r3, [r7, #20] - 800a720: f8a3 2062 strh.w r2, [r3, #98] @ 0x62 - npcb->mss = tcp_eff_send_mss(npcb->mss, &npcb->local_ip, &npcb->remote_ip); - 800a724: 697b ldr r3, [r7, #20] - 800a726: 8e5c ldrh r4, [r3, #50] @ 0x32 - 800a728: 697b ldr r3, [r7, #20] - 800a72a: 3304 adds r3, #4 - 800a72c: 4618 mov r0, r3 - 800a72e: f006 fe7d bl 801142c - 800a732: 4601 mov r1, r0 - 800a734: 697b ldr r3, [r7, #20] - 800a736: 3304 adds r3, #4 - 800a738: 461a mov r2, r3 - 800a73a: 4620 mov r0, r4 - 800a73c: f7ff fa30 bl 8009ba0 - 800a740: 4603 mov r3, r0 - 800a742: 461a mov r2, r3 - 800a744: 697b ldr r3, [r7, #20] - 800a746: 865a strh r2, [r3, #50] @ 0x32 - rc = tcp_enqueue_flags(npcb, TCP_SYN | TCP_ACK); - 800a748: 2112 movs r1, #18 - 800a74a: 6978 ldr r0, [r7, #20] - 800a74c: f002 f83e bl 800c7cc - 800a750: 4603 mov r3, r0 - 800a752: 73fb strb r3, [r7, #15] - if (rc != ERR_OK) { - 800a754: f997 300f ldrsb.w r3, [r7, #15] - 800a758: 2b00 cmp r3, #0 - 800a75a: d004 beq.n 800a766 - tcp_abandon(npcb, 0); - 800a75c: 2100 movs r1, #0 - 800a75e: 6978 ldr r0, [r7, #20] - 800a760: f7fe f97c bl 8008a5c - return; - 800a764: e006 b.n 800a774 - tcp_output(npcb); - 800a766: 6978 ldr r0, [r7, #20] - 800a768: f002 f91e bl 800c9a8 - return; - 800a76c: e001 b.n 800a772 - return; - 800a76e: bf00 nop - 800a770: e000 b.n 800a774 - return; - 800a772: bf00 nop -} - 800a774: 371c adds r7, #28 - 800a776: 46bd mov sp, r7 - 800a778: bd90 pop {r4, r7, pc} - 800a77a: bf00 nop - 800a77c: 20019130 .word 0x20019130 - 800a780: 0801892c .word 0x0801892c - 800a784: 08018b24 .word 0x08018b24 - 800a788: 08018978 .word 0x08018978 - 800a78c: 20019128 .word 0x20019128 - 800a790: 2001912e .word 0x2001912e - 800a794: 20019124 .word 0x20019124 - 800a798: 20019114 .word 0x20019114 - 800a79c: 200061a4 .word 0x200061a4 - 800a7a0: 200061a8 .word 0x200061a8 - 800a7a4: 20006194 .word 0x20006194 - 800a7a8: 200190f8 .word 0x200190f8 - 800a7ac: 20019100 .word 0x20019100 - -0800a7b0 : - * @note the segment which arrived is saved in global variables, therefore only the pcb - * involved is passed as a parameter to this function - */ -static void -tcp_timewait_input(struct tcp_pcb *pcb) -{ - 800a7b0: b580 push {r7, lr} - 800a7b2: b086 sub sp, #24 - 800a7b4: af04 add r7, sp, #16 - 800a7b6: 6078 str r0, [r7, #4] - /* RFC 1337: in TIME_WAIT, ignore RST and ACK FINs + any 'acceptable' segments */ - /* RFC 793 3.9 Event Processing - Segment Arrives: - * - first check sequence number - we skip that one in TIME_WAIT (always - * acceptable since we only send ACKs) - * - second check the RST bit (... return) */ - if (flags & TCP_RST) { - 800a7b8: 4b2f ldr r3, [pc, #188] @ (800a878 ) - 800a7ba: 781b ldrb r3, [r3, #0] - 800a7bc: f003 0304 and.w r3, r3, #4 - 800a7c0: 2b00 cmp r3, #0 - 800a7c2: d153 bne.n 800a86c - return; - } - - LWIP_ASSERT("tcp_timewait_input: invalid pcb", pcb != NULL); - 800a7c4: 687b ldr r3, [r7, #4] - 800a7c6: 2b00 cmp r3, #0 - 800a7c8: d106 bne.n 800a7d8 - 800a7ca: 4b2c ldr r3, [pc, #176] @ (800a87c ) - 800a7cc: f240 22ee movw r2, #750 @ 0x2ee - 800a7d0: 492b ldr r1, [pc, #172] @ (800a880 ) - 800a7d2: 482c ldr r0, [pc, #176] @ (800a884 ) - 800a7d4: f008 fa50 bl 8012c78 - - /* - fourth, check the SYN bit, */ - if (flags & TCP_SYN) { - 800a7d8: 4b27 ldr r3, [pc, #156] @ (800a878 ) - 800a7da: 781b ldrb r3, [r3, #0] - 800a7dc: f003 0302 and.w r3, r3, #2 - 800a7e0: 2b00 cmp r3, #0 - 800a7e2: d02a beq.n 800a83a - /* If an incoming segment is not acceptable, an acknowledgment - should be sent in reply */ - if (TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt, pcb->rcv_nxt + pcb->rcv_wnd)) { - 800a7e4: 4b28 ldr r3, [pc, #160] @ (800a888 ) - 800a7e6: 681a ldr r2, [r3, #0] - 800a7e8: 687b ldr r3, [r7, #4] - 800a7ea: 6a5b ldr r3, [r3, #36] @ 0x24 - 800a7ec: 1ad3 subs r3, r2, r3 - 800a7ee: 2b00 cmp r3, #0 - 800a7f0: db2d blt.n 800a84e - 800a7f2: 4b25 ldr r3, [pc, #148] @ (800a888 ) - 800a7f4: 681a ldr r2, [r3, #0] - 800a7f6: 687b ldr r3, [r7, #4] - 800a7f8: 6a5b ldr r3, [r3, #36] @ 0x24 - 800a7fa: 6879 ldr r1, [r7, #4] - 800a7fc: 8d09 ldrh r1, [r1, #40] @ 0x28 - 800a7fe: 440b add r3, r1 - 800a800: 1ad3 subs r3, r2, r3 - 800a802: 2b00 cmp r3, #0 - 800a804: dc23 bgt.n 800a84e - /* If the SYN is in the window it is an error, send a reset */ - tcp_rst(pcb, ackno, seqno + tcplen, ip_current_dest_addr(), - 800a806: 4b21 ldr r3, [pc, #132] @ (800a88c ) - 800a808: 6819 ldr r1, [r3, #0] - 800a80a: 4b21 ldr r3, [pc, #132] @ (800a890 ) - 800a80c: 881b ldrh r3, [r3, #0] - 800a80e: 461a mov r2, r3 - 800a810: 4b1d ldr r3, [pc, #116] @ (800a888 ) - 800a812: 681b ldr r3, [r3, #0] - 800a814: 18d0 adds r0, r2, r3 - ip_current_src_addr(), tcphdr->dest, tcphdr->src); - 800a816: 4b1f ldr r3, [pc, #124] @ (800a894 ) - 800a818: 681b ldr r3, [r3, #0] - tcp_rst(pcb, ackno, seqno + tcplen, ip_current_dest_addr(), - 800a81a: 885b ldrh r3, [r3, #2] - 800a81c: b29b uxth r3, r3 - ip_current_src_addr(), tcphdr->dest, tcphdr->src); - 800a81e: 4a1d ldr r2, [pc, #116] @ (800a894 ) - 800a820: 6812 ldr r2, [r2, #0] - tcp_rst(pcb, ackno, seqno + tcplen, ip_current_dest_addr(), - 800a822: 8812 ldrh r2, [r2, #0] - 800a824: b292 uxth r2, r2 - 800a826: 9202 str r2, [sp, #8] - 800a828: 9301 str r3, [sp, #4] - 800a82a: 4b1b ldr r3, [pc, #108] @ (800a898 ) - 800a82c: 9300 str r3, [sp, #0] - 800a82e: 4b1b ldr r3, [pc, #108] @ (800a89c ) - 800a830: 4602 mov r2, r0 - 800a832: 6878 ldr r0, [r7, #4] - 800a834: f002 fe6c bl 800d510 - return; - 800a838: e01b b.n 800a872 - } - } else if (flags & TCP_FIN) { - 800a83a: 4b0f ldr r3, [pc, #60] @ (800a878 ) - 800a83c: 781b ldrb r3, [r3, #0] - 800a83e: f003 0301 and.w r3, r3, #1 - 800a842: 2b00 cmp r3, #0 - 800a844: d003 beq.n 800a84e - /* - eighth, check the FIN bit: Remain in the TIME-WAIT state. - Restart the 2 MSL time-wait timeout.*/ - pcb->tmr = tcp_ticks; - 800a846: 4b16 ldr r3, [pc, #88] @ (800a8a0 ) - 800a848: 681a ldr r2, [r3, #0] - 800a84a: 687b ldr r3, [r7, #4] - 800a84c: 621a str r2, [r3, #32] - } - - if ((tcplen > 0)) { - 800a84e: 4b10 ldr r3, [pc, #64] @ (800a890 ) - 800a850: 881b ldrh r3, [r3, #0] - 800a852: 2b00 cmp r3, #0 - 800a854: d00c beq.n 800a870 - /* Acknowledge data, FIN or out-of-window SYN */ - tcp_ack_now(pcb); - 800a856: 687b ldr r3, [r7, #4] - 800a858: 8b5b ldrh r3, [r3, #26] - 800a85a: f043 0302 orr.w r3, r3, #2 - 800a85e: b29a uxth r2, r3 - 800a860: 687b ldr r3, [r7, #4] - 800a862: 835a strh r2, [r3, #26] - tcp_output(pcb); - 800a864: 6878 ldr r0, [r7, #4] - 800a866: f002 f89f bl 800c9a8 - } - return; - 800a86a: e001 b.n 800a870 - return; - 800a86c: bf00 nop - 800a86e: e000 b.n 800a872 - return; - 800a870: bf00 nop -} - 800a872: 3708 adds r7, #8 - 800a874: 46bd mov sp, r7 - 800a876: bd80 pop {r7, pc} - 800a878: 20019130 .word 0x20019130 - 800a87c: 0801892c .word 0x0801892c - 800a880: 08018b44 .word 0x08018b44 - 800a884: 08018978 .word 0x08018978 - 800a888: 20019124 .word 0x20019124 - 800a88c: 20019128 .word 0x20019128 - 800a890: 2001912e .word 0x2001912e - 800a894: 20019114 .word 0x20019114 - 800a898: 200061a4 .word 0x200061a4 - 800a89c: 200061a8 .word 0x200061a8 - 800a8a0: 200190ec .word 0x200190ec - -0800a8a4 : - * @note the segment which arrived is saved in global variables, therefore only the pcb - * involved is passed as a parameter to this function - */ -static err_t -tcp_process(struct tcp_pcb *pcb) -{ - 800a8a4: b590 push {r4, r7, lr} - 800a8a6: b08d sub sp, #52 @ 0x34 - 800a8a8: af04 add r7, sp, #16 - 800a8aa: 6078 str r0, [r7, #4] - struct tcp_seg *rseg; - u8_t acceptable = 0; - 800a8ac: 2300 movs r3, #0 - 800a8ae: 76fb strb r3, [r7, #27] - err_t err; - - err = ERR_OK; - 800a8b0: 2300 movs r3, #0 - 800a8b2: 76bb strb r3, [r7, #26] - - LWIP_ASSERT("tcp_process: invalid pcb", pcb != NULL); - 800a8b4: 687b ldr r3, [r7, #4] - 800a8b6: 2b00 cmp r3, #0 - 800a8b8: d106 bne.n 800a8c8 - 800a8ba: 4b9d ldr r3, [pc, #628] @ (800ab30 ) - 800a8bc: f44f 7247 mov.w r2, #796 @ 0x31c - 800a8c0: 499c ldr r1, [pc, #624] @ (800ab34 ) - 800a8c2: 489d ldr r0, [pc, #628] @ (800ab38 ) - 800a8c4: f008 f9d8 bl 8012c78 - - /* Process incoming RST segments. */ - if (flags & TCP_RST) { - 800a8c8: 4b9c ldr r3, [pc, #624] @ (800ab3c ) - 800a8ca: 781b ldrb r3, [r3, #0] - 800a8cc: f003 0304 and.w r3, r3, #4 - 800a8d0: 2b00 cmp r3, #0 - 800a8d2: d04e beq.n 800a972 - /* First, determine if the reset is acceptable. */ - if (pcb->state == SYN_SENT) { - 800a8d4: 687b ldr r3, [r7, #4] - 800a8d6: 7d1b ldrb r3, [r3, #20] - 800a8d8: 2b02 cmp r3, #2 - 800a8da: d108 bne.n 800a8ee - /* "In the SYN-SENT state (a RST received in response to an initial SYN), - the RST is acceptable if the ACK field acknowledges the SYN." */ - if (ackno == pcb->snd_nxt) { - 800a8dc: 687b ldr r3, [r7, #4] - 800a8de: 6d1a ldr r2, [r3, #80] @ 0x50 - 800a8e0: 4b97 ldr r3, [pc, #604] @ (800ab40 ) - 800a8e2: 681b ldr r3, [r3, #0] - 800a8e4: 429a cmp r2, r3 - 800a8e6: d123 bne.n 800a930 - acceptable = 1; - 800a8e8: 2301 movs r3, #1 - 800a8ea: 76fb strb r3, [r7, #27] - 800a8ec: e020 b.n 800a930 - } - } else { - /* "In all states except SYN-SENT, all reset (RST) segments are validated - by checking their SEQ-fields." */ - if (seqno == pcb->rcv_nxt) { - 800a8ee: 687b ldr r3, [r7, #4] - 800a8f0: 6a5a ldr r2, [r3, #36] @ 0x24 - 800a8f2: 4b94 ldr r3, [pc, #592] @ (800ab44 ) - 800a8f4: 681b ldr r3, [r3, #0] - 800a8f6: 429a cmp r2, r3 - 800a8f8: d102 bne.n 800a900 - acceptable = 1; - 800a8fa: 2301 movs r3, #1 - 800a8fc: 76fb strb r3, [r7, #27] - 800a8fe: e017 b.n 800a930 - } else if (TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt, - 800a900: 4b90 ldr r3, [pc, #576] @ (800ab44 ) - 800a902: 681a ldr r2, [r3, #0] - 800a904: 687b ldr r3, [r7, #4] - 800a906: 6a5b ldr r3, [r3, #36] @ 0x24 - 800a908: 1ad3 subs r3, r2, r3 - 800a90a: 2b00 cmp r3, #0 - 800a90c: db10 blt.n 800a930 - 800a90e: 4b8d ldr r3, [pc, #564] @ (800ab44 ) - 800a910: 681a ldr r2, [r3, #0] - 800a912: 687b ldr r3, [r7, #4] - 800a914: 6a5b ldr r3, [r3, #36] @ 0x24 - 800a916: 6879 ldr r1, [r7, #4] - 800a918: 8d09 ldrh r1, [r1, #40] @ 0x28 - 800a91a: 440b add r3, r1 - 800a91c: 1ad3 subs r3, r2, r3 - 800a91e: 2b00 cmp r3, #0 - 800a920: dc06 bgt.n 800a930 - pcb->rcv_nxt + pcb->rcv_wnd)) { - /* If the sequence number is inside the window, we send a challenge ACK - and wait for a re-send with matching sequence number. - This follows RFC 5961 section 3.2 and addresses CVE-2004-0230 - (RST spoofing attack), which is present in RFC 793 RST handling. */ - tcp_ack_now(pcb); - 800a922: 687b ldr r3, [r7, #4] - 800a924: 8b5b ldrh r3, [r3, #26] - 800a926: f043 0302 orr.w r3, r3, #2 - 800a92a: b29a uxth r2, r3 - 800a92c: 687b ldr r3, [r7, #4] - 800a92e: 835a strh r2, [r3, #26] - } - } - - if (acceptable) { - 800a930: 7efb ldrb r3, [r7, #27] - 800a932: 2b00 cmp r3, #0 - 800a934: d01b beq.n 800a96e - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_process: Connection RESET\n")); - LWIP_ASSERT("tcp_input: pcb->state != CLOSED", pcb->state != CLOSED); - 800a936: 687b ldr r3, [r7, #4] - 800a938: 7d1b ldrb r3, [r3, #20] - 800a93a: 2b00 cmp r3, #0 - 800a93c: d106 bne.n 800a94c - 800a93e: 4b7c ldr r3, [pc, #496] @ (800ab30 ) - 800a940: f44f 724e mov.w r2, #824 @ 0x338 - 800a944: 4980 ldr r1, [pc, #512] @ (800ab48 ) - 800a946: 487c ldr r0, [pc, #496] @ (800ab38 ) - 800a948: f008 f996 bl 8012c78 - recv_flags |= TF_RESET; - 800a94c: 4b7f ldr r3, [pc, #508] @ (800ab4c ) - 800a94e: 781b ldrb r3, [r3, #0] - 800a950: f043 0308 orr.w r3, r3, #8 - 800a954: b2da uxtb r2, r3 - 800a956: 4b7d ldr r3, [pc, #500] @ (800ab4c ) - 800a958: 701a strb r2, [r3, #0] - tcp_clear_flags(pcb, TF_ACK_DELAY); - 800a95a: 687b ldr r3, [r7, #4] - 800a95c: 8b5b ldrh r3, [r3, #26] - 800a95e: f023 0301 bic.w r3, r3, #1 - 800a962: b29a uxth r2, r3 - 800a964: 687b ldr r3, [r7, #4] - 800a966: 835a strh r2, [r3, #26] - return ERR_RST; - 800a968: f06f 030d mvn.w r3, #13 - 800a96c: e37a b.n 800b064 - } else { - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_process: unacceptable reset seqno %"U32_F" rcv_nxt %"U32_F"\n", - seqno, pcb->rcv_nxt)); - LWIP_DEBUGF(TCP_DEBUG, ("tcp_process: unacceptable reset seqno %"U32_F" rcv_nxt %"U32_F"\n", - seqno, pcb->rcv_nxt)); - return ERR_OK; - 800a96e: 2300 movs r3, #0 - 800a970: e378 b.n 800b064 - } - } - - if ((flags & TCP_SYN) && (pcb->state != SYN_SENT && pcb->state != SYN_RCVD)) { - 800a972: 4b72 ldr r3, [pc, #456] @ (800ab3c ) - 800a974: 781b ldrb r3, [r3, #0] - 800a976: f003 0302 and.w r3, r3, #2 - 800a97a: 2b00 cmp r3, #0 - 800a97c: d010 beq.n 800a9a0 - 800a97e: 687b ldr r3, [r7, #4] - 800a980: 7d1b ldrb r3, [r3, #20] - 800a982: 2b02 cmp r3, #2 - 800a984: d00c beq.n 800a9a0 - 800a986: 687b ldr r3, [r7, #4] - 800a988: 7d1b ldrb r3, [r3, #20] - 800a98a: 2b03 cmp r3, #3 - 800a98c: d008 beq.n 800a9a0 - /* Cope with new connection attempt after remote end crashed */ - tcp_ack_now(pcb); - 800a98e: 687b ldr r3, [r7, #4] - 800a990: 8b5b ldrh r3, [r3, #26] - 800a992: f043 0302 orr.w r3, r3, #2 - 800a996: b29a uxth r2, r3 - 800a998: 687b ldr r3, [r7, #4] - 800a99a: 835a strh r2, [r3, #26] - return ERR_OK; - 800a99c: 2300 movs r3, #0 - 800a99e: e361 b.n 800b064 - } - - if ((pcb->flags & TF_RXCLOSED) == 0) { - 800a9a0: 687b ldr r3, [r7, #4] - 800a9a2: 8b5b ldrh r3, [r3, #26] - 800a9a4: f003 0310 and.w r3, r3, #16 - 800a9a8: 2b00 cmp r3, #0 - 800a9aa: d103 bne.n 800a9b4 - /* Update the PCB (in)activity timer unless rx is closed (see tcp_shutdown) */ - pcb->tmr = tcp_ticks; - 800a9ac: 4b68 ldr r3, [pc, #416] @ (800ab50 ) - 800a9ae: 681a ldr r2, [r3, #0] - 800a9b0: 687b ldr r3, [r7, #4] - 800a9b2: 621a str r2, [r3, #32] - } - pcb->keep_cnt_sent = 0; - 800a9b4: 687b ldr r3, [r7, #4] - 800a9b6: 2200 movs r2, #0 - 800a9b8: f883 209b strb.w r2, [r3, #155] @ 0x9b - pcb->persist_probe = 0; - 800a9bc: 687b ldr r3, [r7, #4] - 800a9be: 2200 movs r2, #0 - 800a9c0: f883 209a strb.w r2, [r3, #154] @ 0x9a - - tcp_parseopt(pcb); - 800a9c4: 6878 ldr r0, [r7, #4] - 800a9c6: f001 fc2b bl 800c220 - - /* Do different things depending on the TCP state. */ - switch (pcb->state) { - 800a9ca: 687b ldr r3, [r7, #4] - 800a9cc: 7d1b ldrb r3, [r3, #20] - 800a9ce: 3b02 subs r3, #2 - 800a9d0: 2b07 cmp r3, #7 - 800a9d2: f200 8337 bhi.w 800b044 - 800a9d6: a201 add r2, pc, #4 @ (adr r2, 800a9dc ) - 800a9d8: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 800a9dc: 0800a9fd .word 0x0800a9fd - 800a9e0: 0800ac2d .word 0x0800ac2d - 800a9e4: 0800ada5 .word 0x0800ada5 - 800a9e8: 0800adcf .word 0x0800adcf - 800a9ec: 0800aef3 .word 0x0800aef3 - 800a9f0: 0800ada5 .word 0x0800ada5 - 800a9f4: 0800af7f .word 0x0800af7f - 800a9f8: 0800b00f .word 0x0800b00f - case SYN_SENT: - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("SYN-SENT: ackno %"U32_F" pcb->snd_nxt %"U32_F" unacked %"U32_F"\n", ackno, - pcb->snd_nxt, lwip_ntohl(pcb->unacked->tcphdr->seqno))); - /* received SYN ACK with expected sequence number? */ - if ((flags & TCP_ACK) && (flags & TCP_SYN) - 800a9fc: 4b4f ldr r3, [pc, #316] @ (800ab3c ) - 800a9fe: 781b ldrb r3, [r3, #0] - 800aa00: f003 0310 and.w r3, r3, #16 - 800aa04: 2b00 cmp r3, #0 - 800aa06: f000 80e4 beq.w 800abd2 - 800aa0a: 4b4c ldr r3, [pc, #304] @ (800ab3c ) - 800aa0c: 781b ldrb r3, [r3, #0] - 800aa0e: f003 0302 and.w r3, r3, #2 - 800aa12: 2b00 cmp r3, #0 - 800aa14: f000 80dd beq.w 800abd2 - && (ackno == pcb->lastack + 1)) { - 800aa18: 687b ldr r3, [r7, #4] - 800aa1a: 6c5b ldr r3, [r3, #68] @ 0x44 - 800aa1c: 1c5a adds r2, r3, #1 - 800aa1e: 4b48 ldr r3, [pc, #288] @ (800ab40 ) - 800aa20: 681b ldr r3, [r3, #0] - 800aa22: 429a cmp r2, r3 - 800aa24: f040 80d5 bne.w 800abd2 - pcb->rcv_nxt = seqno + 1; - 800aa28: 4b46 ldr r3, [pc, #280] @ (800ab44 ) - 800aa2a: 681b ldr r3, [r3, #0] - 800aa2c: 1c5a adds r2, r3, #1 - 800aa2e: 687b ldr r3, [r7, #4] - 800aa30: 625a str r2, [r3, #36] @ 0x24 - pcb->rcv_ann_right_edge = pcb->rcv_nxt; - 800aa32: 687b ldr r3, [r7, #4] - 800aa34: 6a5a ldr r2, [r3, #36] @ 0x24 - 800aa36: 687b ldr r3, [r7, #4] - 800aa38: 62da str r2, [r3, #44] @ 0x2c - pcb->lastack = ackno; - 800aa3a: 4b41 ldr r3, [pc, #260] @ (800ab40 ) - 800aa3c: 681a ldr r2, [r3, #0] - 800aa3e: 687b ldr r3, [r7, #4] - 800aa40: 645a str r2, [r3, #68] @ 0x44 - pcb->snd_wnd = tcphdr->wnd; - 800aa42: 4b44 ldr r3, [pc, #272] @ (800ab54 ) - 800aa44: 681b ldr r3, [r3, #0] - 800aa46: 89db ldrh r3, [r3, #14] - 800aa48: b29a uxth r2, r3 - 800aa4a: 687b ldr r3, [r7, #4] - 800aa4c: f8a3 2060 strh.w r2, [r3, #96] @ 0x60 - pcb->snd_wnd_max = pcb->snd_wnd; - 800aa50: 687b ldr r3, [r7, #4] - 800aa52: f8b3 2060 ldrh.w r2, [r3, #96] @ 0x60 - 800aa56: 687b ldr r3, [r7, #4] - 800aa58: f8a3 2062 strh.w r2, [r3, #98] @ 0x62 - pcb->snd_wl1 = seqno - 1; /* initialise to seqno - 1 to force window update */ - 800aa5c: 4b39 ldr r3, [pc, #228] @ (800ab44 ) - 800aa5e: 681b ldr r3, [r3, #0] - 800aa60: 1e5a subs r2, r3, #1 - 800aa62: 687b ldr r3, [r7, #4] - 800aa64: 655a str r2, [r3, #84] @ 0x54 - pcb->state = ESTABLISHED; - 800aa66: 687b ldr r3, [r7, #4] - 800aa68: 2204 movs r2, #4 - 800aa6a: 751a strb r2, [r3, #20] - -#if TCP_CALCULATE_EFF_SEND_MSS - pcb->mss = tcp_eff_send_mss(pcb->mss, &pcb->local_ip, &pcb->remote_ip); - 800aa6c: 687b ldr r3, [r7, #4] - 800aa6e: 8e5c ldrh r4, [r3, #50] @ 0x32 - 800aa70: 687b ldr r3, [r7, #4] - 800aa72: 3304 adds r3, #4 - 800aa74: 4618 mov r0, r3 - 800aa76: f006 fcd9 bl 801142c - 800aa7a: 4601 mov r1, r0 - 800aa7c: 687b ldr r3, [r7, #4] - 800aa7e: 3304 adds r3, #4 - 800aa80: 461a mov r2, r3 - 800aa82: 4620 mov r0, r4 - 800aa84: f7ff f88c bl 8009ba0 - 800aa88: 4603 mov r3, r0 - 800aa8a: 461a mov r2, r3 - 800aa8c: 687b ldr r3, [r7, #4] - 800aa8e: 865a strh r2, [r3, #50] @ 0x32 -#endif /* TCP_CALCULATE_EFF_SEND_MSS */ - - pcb->cwnd = LWIP_TCP_CALC_INITIAL_CWND(pcb->mss); - 800aa90: 687b ldr r3, [r7, #4] - 800aa92: 8e5b ldrh r3, [r3, #50] @ 0x32 - 800aa94: 009a lsls r2, r3, #2 - 800aa96: 687b ldr r3, [r7, #4] - 800aa98: 8e5b ldrh r3, [r3, #50] @ 0x32 - 800aa9a: 005b lsls r3, r3, #1 - 800aa9c: f241 111c movw r1, #4380 @ 0x111c - 800aaa0: 428b cmp r3, r1 - 800aaa2: bf38 it cc - 800aaa4: 460b movcc r3, r1 - 800aaa6: 429a cmp r2, r3 - 800aaa8: d204 bcs.n 800aab4 - 800aaaa: 687b ldr r3, [r7, #4] - 800aaac: 8e5b ldrh r3, [r3, #50] @ 0x32 - 800aaae: 009b lsls r3, r3, #2 - 800aab0: b29b uxth r3, r3 - 800aab2: e00d b.n 800aad0 - 800aab4: 687b ldr r3, [r7, #4] - 800aab6: 8e5b ldrh r3, [r3, #50] @ 0x32 - 800aab8: 005b lsls r3, r3, #1 - 800aaba: f241 121c movw r2, #4380 @ 0x111c - 800aabe: 4293 cmp r3, r2 - 800aac0: d904 bls.n 800aacc - 800aac2: 687b ldr r3, [r7, #4] - 800aac4: 8e5b ldrh r3, [r3, #50] @ 0x32 - 800aac6: 005b lsls r3, r3, #1 - 800aac8: b29b uxth r3, r3 - 800aaca: e001 b.n 800aad0 - 800aacc: f241 131c movw r3, #4380 @ 0x111c - 800aad0: 687a ldr r2, [r7, #4] - 800aad2: f8a2 3048 strh.w r3, [r2, #72] @ 0x48 - LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_process (SENT): cwnd %"TCPWNDSIZE_F - " ssthresh %"TCPWNDSIZE_F"\n", - pcb->cwnd, pcb->ssthresh)); - LWIP_ASSERT("pcb->snd_queuelen > 0", (pcb->snd_queuelen > 0)); - 800aad6: 687b ldr r3, [r7, #4] - 800aad8: f8b3 3066 ldrh.w r3, [r3, #102] @ 0x66 - 800aadc: 2b00 cmp r3, #0 - 800aade: d106 bne.n 800aaee - 800aae0: 4b13 ldr r3, [pc, #76] @ (800ab30 ) - 800aae2: f44f 725b mov.w r2, #876 @ 0x36c - 800aae6: 491c ldr r1, [pc, #112] @ (800ab58 ) - 800aae8: 4813 ldr r0, [pc, #76] @ (800ab38 ) - 800aaea: f008 f8c5 bl 8012c78 - --pcb->snd_queuelen; - 800aaee: 687b ldr r3, [r7, #4] - 800aaf0: f8b3 3066 ldrh.w r3, [r3, #102] @ 0x66 - 800aaf4: 3b01 subs r3, #1 - 800aaf6: b29a uxth r2, r3 - 800aaf8: 687b ldr r3, [r7, #4] - 800aafa: f8a3 2066 strh.w r2, [r3, #102] @ 0x66 - LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_process: SYN-SENT --queuelen %"TCPWNDSIZE_F"\n", (tcpwnd_size_t)pcb->snd_queuelen)); - rseg = pcb->unacked; - 800aafe: 687b ldr r3, [r7, #4] - 800ab00: 6f1b ldr r3, [r3, #112] @ 0x70 - 800ab02: 61fb str r3, [r7, #28] - if (rseg == NULL) { - 800ab04: 69fb ldr r3, [r7, #28] - 800ab06: 2b00 cmp r3, #0 - 800ab08: d12a bne.n 800ab60 - /* might happen if tcp_output fails in tcp_rexmit_rto() - in which case the segment is on the unsent list */ - rseg = pcb->unsent; - 800ab0a: 687b ldr r3, [r7, #4] - 800ab0c: 6edb ldr r3, [r3, #108] @ 0x6c - 800ab0e: 61fb str r3, [r7, #28] - LWIP_ASSERT("no segment to free", rseg != NULL); - 800ab10: 69fb ldr r3, [r7, #28] - 800ab12: 2b00 cmp r3, #0 - 800ab14: d106 bne.n 800ab24 - 800ab16: 4b06 ldr r3, [pc, #24] @ (800ab30 ) - 800ab18: f44f 725d mov.w r2, #884 @ 0x374 - 800ab1c: 490f ldr r1, [pc, #60] @ (800ab5c ) - 800ab1e: 4806 ldr r0, [pc, #24] @ (800ab38 ) - 800ab20: f008 f8aa bl 8012c78 - pcb->unsent = rseg->next; - 800ab24: 69fb ldr r3, [r7, #28] - 800ab26: 681a ldr r2, [r3, #0] - 800ab28: 687b ldr r3, [r7, #4] - 800ab2a: 66da str r2, [r3, #108] @ 0x6c - 800ab2c: e01c b.n 800ab68 - 800ab2e: bf00 nop - 800ab30: 0801892c .word 0x0801892c - 800ab34: 08018b64 .word 0x08018b64 - 800ab38: 08018978 .word 0x08018978 - 800ab3c: 20019130 .word 0x20019130 - 800ab40: 20019128 .word 0x20019128 - 800ab44: 20019124 .word 0x20019124 - 800ab48: 08018b80 .word 0x08018b80 - 800ab4c: 20019131 .word 0x20019131 - 800ab50: 200190ec .word 0x200190ec - 800ab54: 20019114 .word 0x20019114 - 800ab58: 08018ba0 .word 0x08018ba0 - 800ab5c: 08018bb8 .word 0x08018bb8 - } else { - pcb->unacked = rseg->next; - 800ab60: 69fb ldr r3, [r7, #28] - 800ab62: 681a ldr r2, [r3, #0] - 800ab64: 687b ldr r3, [r7, #4] - 800ab66: 671a str r2, [r3, #112] @ 0x70 - } - tcp_seg_free(rseg); - 800ab68: 69f8 ldr r0, [r7, #28] - 800ab6a: f7fe fd22 bl 80095b2 - - /* If there's nothing left to acknowledge, stop the retransmit - timer, otherwise reset it to start again */ - if (pcb->unacked == NULL) { - 800ab6e: 687b ldr r3, [r7, #4] - 800ab70: 6f1b ldr r3, [r3, #112] @ 0x70 - 800ab72: 2b00 cmp r3, #0 - 800ab74: d104 bne.n 800ab80 - pcb->rtime = -1; - 800ab76: 687b ldr r3, [r7, #4] - 800ab78: f64f 72ff movw r2, #65535 @ 0xffff - 800ab7c: 861a strh r2, [r3, #48] @ 0x30 - 800ab7e: e006 b.n 800ab8e - } else { - pcb->rtime = 0; - 800ab80: 687b ldr r3, [r7, #4] - 800ab82: 2200 movs r2, #0 - 800ab84: 861a strh r2, [r3, #48] @ 0x30 - pcb->nrtx = 0; - 800ab86: 687b ldr r3, [r7, #4] - 800ab88: 2200 movs r2, #0 - 800ab8a: f883 2042 strb.w r2, [r3, #66] @ 0x42 - } - - /* Call the user specified function to call when successfully - * connected. */ - TCP_EVENT_CONNECTED(pcb, ERR_OK, err); - 800ab8e: 687b ldr r3, [r7, #4] - 800ab90: f8d3 3088 ldr.w r3, [r3, #136] @ 0x88 - 800ab94: 2b00 cmp r3, #0 - 800ab96: d00a beq.n 800abae - 800ab98: 687b ldr r3, [r7, #4] - 800ab9a: f8d3 3088 ldr.w r3, [r3, #136] @ 0x88 - 800ab9e: 687a ldr r2, [r7, #4] - 800aba0: 6910 ldr r0, [r2, #16] - 800aba2: 2200 movs r2, #0 - 800aba4: 6879 ldr r1, [r7, #4] - 800aba6: 4798 blx r3 - 800aba8: 4603 mov r3, r0 - 800abaa: 76bb strb r3, [r7, #26] - 800abac: e001 b.n 800abb2 - 800abae: 2300 movs r3, #0 - 800abb0: 76bb strb r3, [r7, #26] - if (err == ERR_ABRT) { - 800abb2: f997 301a ldrsb.w r3, [r7, #26] - 800abb6: f113 0f0d cmn.w r3, #13 - 800abba: d102 bne.n 800abc2 - return ERR_ABRT; - 800abbc: f06f 030c mvn.w r3, #12 - 800abc0: e250 b.n 800b064 - } - tcp_ack_now(pcb); - 800abc2: 687b ldr r3, [r7, #4] - 800abc4: 8b5b ldrh r3, [r3, #26] - 800abc6: f043 0302 orr.w r3, r3, #2 - 800abca: b29a uxth r2, r3 - 800abcc: 687b ldr r3, [r7, #4] - 800abce: 835a strh r2, [r3, #26] - if (pcb->nrtx < TCP_SYNMAXRTX) { - pcb->rtime = 0; - tcp_rexmit_rto(pcb); - } - } - break; - 800abd0: e23a b.n 800b048 - else if (flags & TCP_ACK) { - 800abd2: 4b98 ldr r3, [pc, #608] @ (800ae34 ) - 800abd4: 781b ldrb r3, [r3, #0] - 800abd6: f003 0310 and.w r3, r3, #16 - 800abda: 2b00 cmp r3, #0 - 800abdc: f000 8234 beq.w 800b048 - tcp_rst(pcb, ackno, seqno + tcplen, ip_current_dest_addr(), - 800abe0: 4b95 ldr r3, [pc, #596] @ (800ae38 ) - 800abe2: 6819 ldr r1, [r3, #0] - 800abe4: 4b95 ldr r3, [pc, #596] @ (800ae3c ) - 800abe6: 881b ldrh r3, [r3, #0] - 800abe8: 461a mov r2, r3 - 800abea: 4b95 ldr r3, [pc, #596] @ (800ae40 ) - 800abec: 681b ldr r3, [r3, #0] - 800abee: 18d0 adds r0, r2, r3 - ip_current_src_addr(), tcphdr->dest, tcphdr->src); - 800abf0: 4b94 ldr r3, [pc, #592] @ (800ae44 ) - 800abf2: 681b ldr r3, [r3, #0] - tcp_rst(pcb, ackno, seqno + tcplen, ip_current_dest_addr(), - 800abf4: 885b ldrh r3, [r3, #2] - 800abf6: b29b uxth r3, r3 - ip_current_src_addr(), tcphdr->dest, tcphdr->src); - 800abf8: 4a92 ldr r2, [pc, #584] @ (800ae44 ) - 800abfa: 6812 ldr r2, [r2, #0] - tcp_rst(pcb, ackno, seqno + tcplen, ip_current_dest_addr(), - 800abfc: 8812 ldrh r2, [r2, #0] - 800abfe: b292 uxth r2, r2 - 800ac00: 9202 str r2, [sp, #8] - 800ac02: 9301 str r3, [sp, #4] - 800ac04: 4b90 ldr r3, [pc, #576] @ (800ae48 ) - 800ac06: 9300 str r3, [sp, #0] - 800ac08: 4b90 ldr r3, [pc, #576] @ (800ae4c ) - 800ac0a: 4602 mov r2, r0 - 800ac0c: 6878 ldr r0, [r7, #4] - 800ac0e: f002 fc7f bl 800d510 - if (pcb->nrtx < TCP_SYNMAXRTX) { - 800ac12: 687b ldr r3, [r7, #4] - 800ac14: f893 3042 ldrb.w r3, [r3, #66] @ 0x42 - 800ac18: 2b05 cmp r3, #5 - 800ac1a: f200 8215 bhi.w 800b048 - pcb->rtime = 0; - 800ac1e: 687b ldr r3, [r7, #4] - 800ac20: 2200 movs r2, #0 - 800ac22: 861a strh r2, [r3, #48] @ 0x30 - tcp_rexmit_rto(pcb); - 800ac24: 6878 ldr r0, [r7, #4] - 800ac26: f002 fa4b bl 800d0c0 - break; - 800ac2a: e20d b.n 800b048 - case SYN_RCVD: - if (flags & TCP_ACK) { - 800ac2c: 4b81 ldr r3, [pc, #516] @ (800ae34 ) - 800ac2e: 781b ldrb r3, [r3, #0] - 800ac30: f003 0310 and.w r3, r3, #16 - 800ac34: 2b00 cmp r3, #0 - 800ac36: f000 80a1 beq.w 800ad7c - /* expected ACK number? */ - if (TCP_SEQ_BETWEEN(ackno, pcb->lastack + 1, pcb->snd_nxt)) { - 800ac3a: 4b7f ldr r3, [pc, #508] @ (800ae38 ) - 800ac3c: 681a ldr r2, [r3, #0] - 800ac3e: 687b ldr r3, [r7, #4] - 800ac40: 6c5b ldr r3, [r3, #68] @ 0x44 - 800ac42: 1ad3 subs r3, r2, r3 - 800ac44: 3b01 subs r3, #1 - 800ac46: 2b00 cmp r3, #0 - 800ac48: db7e blt.n 800ad48 - 800ac4a: 4b7b ldr r3, [pc, #492] @ (800ae38 ) - 800ac4c: 681a ldr r2, [r3, #0] - 800ac4e: 687b ldr r3, [r7, #4] - 800ac50: 6d1b ldr r3, [r3, #80] @ 0x50 - 800ac52: 1ad3 subs r3, r2, r3 - 800ac54: 2b00 cmp r3, #0 - 800ac56: dc77 bgt.n 800ad48 - pcb->state = ESTABLISHED; - 800ac58: 687b ldr r3, [r7, #4] - 800ac5a: 2204 movs r2, #4 - 800ac5c: 751a strb r2, [r3, #20] - LWIP_DEBUGF(TCP_DEBUG, ("TCP connection established %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest)); -#if LWIP_CALLBACK_API || TCP_LISTEN_BACKLOG - if (pcb->listener == NULL) { - 800ac5e: 687b ldr r3, [r7, #4] - 800ac60: 6fdb ldr r3, [r3, #124] @ 0x7c - 800ac62: 2b00 cmp r3, #0 - 800ac64: d102 bne.n 800ac6c - /* listen pcb might be closed by now */ - err = ERR_VAL; - 800ac66: 23fa movs r3, #250 @ 0xfa - 800ac68: 76bb strb r3, [r7, #26] - 800ac6a: e01d b.n 800aca8 - } else -#endif /* LWIP_CALLBACK_API || TCP_LISTEN_BACKLOG */ - { -#if LWIP_CALLBACK_API - LWIP_ASSERT("pcb->listener->accept != NULL", pcb->listener->accept != NULL); - 800ac6c: 687b ldr r3, [r7, #4] - 800ac6e: 6fdb ldr r3, [r3, #124] @ 0x7c - 800ac70: 699b ldr r3, [r3, #24] - 800ac72: 2b00 cmp r3, #0 - 800ac74: d106 bne.n 800ac84 - 800ac76: 4b76 ldr r3, [pc, #472] @ (800ae50 ) - 800ac78: f44f 726a mov.w r2, #936 @ 0x3a8 - 800ac7c: 4975 ldr r1, [pc, #468] @ (800ae54 ) - 800ac7e: 4876 ldr r0, [pc, #472] @ (800ae58 ) - 800ac80: f007 fffa bl 8012c78 -#endif - tcp_backlog_accepted(pcb); - /* Call the accept function. */ - TCP_EVENT_ACCEPT(pcb->listener, pcb, pcb->callback_arg, ERR_OK, err); - 800ac84: 687b ldr r3, [r7, #4] - 800ac86: 6fdb ldr r3, [r3, #124] @ 0x7c - 800ac88: 699b ldr r3, [r3, #24] - 800ac8a: 2b00 cmp r3, #0 - 800ac8c: d00a beq.n 800aca4 - 800ac8e: 687b ldr r3, [r7, #4] - 800ac90: 6fdb ldr r3, [r3, #124] @ 0x7c - 800ac92: 699b ldr r3, [r3, #24] - 800ac94: 687a ldr r2, [r7, #4] - 800ac96: 6910 ldr r0, [r2, #16] - 800ac98: 2200 movs r2, #0 - 800ac9a: 6879 ldr r1, [r7, #4] - 800ac9c: 4798 blx r3 - 800ac9e: 4603 mov r3, r0 - 800aca0: 76bb strb r3, [r7, #26] - 800aca2: e001 b.n 800aca8 - 800aca4: 23f0 movs r3, #240 @ 0xf0 - 800aca6: 76bb strb r3, [r7, #26] - } - if (err != ERR_OK) { - 800aca8: f997 301a ldrsb.w r3, [r7, #26] - 800acac: 2b00 cmp r3, #0 - 800acae: d00a beq.n 800acc6 - /* If the accept function returns with an error, we abort - * the connection. */ - /* Already aborted? */ - if (err != ERR_ABRT) { - 800acb0: f997 301a ldrsb.w r3, [r7, #26] - 800acb4: f113 0f0d cmn.w r3, #13 - 800acb8: d002 beq.n 800acc0 - tcp_abort(pcb); - 800acba: 6878 ldr r0, [r7, #4] - 800acbc: f7fd ff8c bl 8008bd8 - } - return ERR_ABRT; - 800acc0: f06f 030c mvn.w r3, #12 - 800acc4: e1ce b.n 800b064 - } - /* If there was any data contained within this ACK, - * we'd better pass it on to the application as well. */ - tcp_receive(pcb); - 800acc6: 6878 ldr r0, [r7, #4] - 800acc8: f000 fae0 bl 800b28c - - /* Prevent ACK for SYN to generate a sent event */ - if (recv_acked != 0) { - 800accc: 4b63 ldr r3, [pc, #396] @ (800ae5c ) - 800acce: 881b ldrh r3, [r3, #0] - 800acd0: 2b00 cmp r3, #0 - 800acd2: d005 beq.n 800ace0 - recv_acked--; - 800acd4: 4b61 ldr r3, [pc, #388] @ (800ae5c ) - 800acd6: 881b ldrh r3, [r3, #0] - 800acd8: 3b01 subs r3, #1 - 800acda: b29a uxth r2, r3 - 800acdc: 4b5f ldr r3, [pc, #380] @ (800ae5c ) - 800acde: 801a strh r2, [r3, #0] - } - - pcb->cwnd = LWIP_TCP_CALC_INITIAL_CWND(pcb->mss); - 800ace0: 687b ldr r3, [r7, #4] - 800ace2: 8e5b ldrh r3, [r3, #50] @ 0x32 - 800ace4: 009a lsls r2, r3, #2 - 800ace6: 687b ldr r3, [r7, #4] - 800ace8: 8e5b ldrh r3, [r3, #50] @ 0x32 - 800acea: 005b lsls r3, r3, #1 - 800acec: f241 111c movw r1, #4380 @ 0x111c - 800acf0: 428b cmp r3, r1 - 800acf2: bf38 it cc - 800acf4: 460b movcc r3, r1 - 800acf6: 429a cmp r2, r3 - 800acf8: d204 bcs.n 800ad04 - 800acfa: 687b ldr r3, [r7, #4] - 800acfc: 8e5b ldrh r3, [r3, #50] @ 0x32 - 800acfe: 009b lsls r3, r3, #2 - 800ad00: b29b uxth r3, r3 - 800ad02: e00d b.n 800ad20 - 800ad04: 687b ldr r3, [r7, #4] - 800ad06: 8e5b ldrh r3, [r3, #50] @ 0x32 - 800ad08: 005b lsls r3, r3, #1 - 800ad0a: f241 121c movw r2, #4380 @ 0x111c - 800ad0e: 4293 cmp r3, r2 - 800ad10: d904 bls.n 800ad1c - 800ad12: 687b ldr r3, [r7, #4] - 800ad14: 8e5b ldrh r3, [r3, #50] @ 0x32 - 800ad16: 005b lsls r3, r3, #1 - 800ad18: b29b uxth r3, r3 - 800ad1a: e001 b.n 800ad20 - 800ad1c: f241 131c movw r3, #4380 @ 0x111c - 800ad20: 687a ldr r2, [r7, #4] - 800ad22: f8a2 3048 strh.w r3, [r2, #72] @ 0x48 - LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_process (SYN_RCVD): cwnd %"TCPWNDSIZE_F - " ssthresh %"TCPWNDSIZE_F"\n", - pcb->cwnd, pcb->ssthresh)); - - if (recv_flags & TF_GOT_FIN) { - 800ad26: 4b4e ldr r3, [pc, #312] @ (800ae60 ) - 800ad28: 781b ldrb r3, [r3, #0] - 800ad2a: f003 0320 and.w r3, r3, #32 - 800ad2e: 2b00 cmp r3, #0 - 800ad30: d037 beq.n 800ada2 - tcp_ack_now(pcb); - 800ad32: 687b ldr r3, [r7, #4] - 800ad34: 8b5b ldrh r3, [r3, #26] - 800ad36: f043 0302 orr.w r3, r3, #2 - 800ad3a: b29a uxth r2, r3 - 800ad3c: 687b ldr r3, [r7, #4] - 800ad3e: 835a strh r2, [r3, #26] - pcb->state = CLOSE_WAIT; - 800ad40: 687b ldr r3, [r7, #4] - 800ad42: 2207 movs r2, #7 - 800ad44: 751a strb r2, [r3, #20] - if (recv_flags & TF_GOT_FIN) { - 800ad46: e02c b.n 800ada2 - } - } else { - /* incorrect ACK number, send RST */ - tcp_rst(pcb, ackno, seqno + tcplen, ip_current_dest_addr(), - 800ad48: 4b3b ldr r3, [pc, #236] @ (800ae38 ) - 800ad4a: 6819 ldr r1, [r3, #0] - 800ad4c: 4b3b ldr r3, [pc, #236] @ (800ae3c ) - 800ad4e: 881b ldrh r3, [r3, #0] - 800ad50: 461a mov r2, r3 - 800ad52: 4b3b ldr r3, [pc, #236] @ (800ae40 ) - 800ad54: 681b ldr r3, [r3, #0] - 800ad56: 18d0 adds r0, r2, r3 - ip_current_src_addr(), tcphdr->dest, tcphdr->src); - 800ad58: 4b3a ldr r3, [pc, #232] @ (800ae44 ) - 800ad5a: 681b ldr r3, [r3, #0] - tcp_rst(pcb, ackno, seqno + tcplen, ip_current_dest_addr(), - 800ad5c: 885b ldrh r3, [r3, #2] - 800ad5e: b29b uxth r3, r3 - ip_current_src_addr(), tcphdr->dest, tcphdr->src); - 800ad60: 4a38 ldr r2, [pc, #224] @ (800ae44 ) - 800ad62: 6812 ldr r2, [r2, #0] - tcp_rst(pcb, ackno, seqno + tcplen, ip_current_dest_addr(), - 800ad64: 8812 ldrh r2, [r2, #0] - 800ad66: b292 uxth r2, r2 - 800ad68: 9202 str r2, [sp, #8] - 800ad6a: 9301 str r3, [sp, #4] - 800ad6c: 4b36 ldr r3, [pc, #216] @ (800ae48 ) - 800ad6e: 9300 str r3, [sp, #0] - 800ad70: 4b36 ldr r3, [pc, #216] @ (800ae4c ) - 800ad72: 4602 mov r2, r0 - 800ad74: 6878 ldr r0, [r7, #4] - 800ad76: f002 fbcb bl 800d510 - } - } else if ((flags & TCP_SYN) && (seqno == pcb->rcv_nxt - 1)) { - /* Looks like another copy of the SYN - retransmit our SYN-ACK */ - tcp_rexmit(pcb); - } - break; - 800ad7a: e167 b.n 800b04c - } else if ((flags & TCP_SYN) && (seqno == pcb->rcv_nxt - 1)) { - 800ad7c: 4b2d ldr r3, [pc, #180] @ (800ae34 ) - 800ad7e: 781b ldrb r3, [r3, #0] - 800ad80: f003 0302 and.w r3, r3, #2 - 800ad84: 2b00 cmp r3, #0 - 800ad86: f000 8161 beq.w 800b04c - 800ad8a: 687b ldr r3, [r7, #4] - 800ad8c: 6a5b ldr r3, [r3, #36] @ 0x24 - 800ad8e: 1e5a subs r2, r3, #1 - 800ad90: 4b2b ldr r3, [pc, #172] @ (800ae40 ) - 800ad92: 681b ldr r3, [r3, #0] - 800ad94: 429a cmp r2, r3 - 800ad96: f040 8159 bne.w 800b04c - tcp_rexmit(pcb); - 800ad9a: 6878 ldr r0, [r7, #4] - 800ad9c: f002 f9b2 bl 800d104 - break; - 800ada0: e154 b.n 800b04c - 800ada2: e153 b.n 800b04c - case CLOSE_WAIT: - /* FALLTHROUGH */ - case ESTABLISHED: - tcp_receive(pcb); - 800ada4: 6878 ldr r0, [r7, #4] - 800ada6: f000 fa71 bl 800b28c - if (recv_flags & TF_GOT_FIN) { /* passive close */ - 800adaa: 4b2d ldr r3, [pc, #180] @ (800ae60 ) - 800adac: 781b ldrb r3, [r3, #0] - 800adae: f003 0320 and.w r3, r3, #32 - 800adb2: 2b00 cmp r3, #0 - 800adb4: f000 814c beq.w 800b050 - tcp_ack_now(pcb); - 800adb8: 687b ldr r3, [r7, #4] - 800adba: 8b5b ldrh r3, [r3, #26] - 800adbc: f043 0302 orr.w r3, r3, #2 - 800adc0: b29a uxth r2, r3 - 800adc2: 687b ldr r3, [r7, #4] - 800adc4: 835a strh r2, [r3, #26] - pcb->state = CLOSE_WAIT; - 800adc6: 687b ldr r3, [r7, #4] - 800adc8: 2207 movs r2, #7 - 800adca: 751a strb r2, [r3, #20] - } - break; - 800adcc: e140 b.n 800b050 - case FIN_WAIT_1: - tcp_receive(pcb); - 800adce: 6878 ldr r0, [r7, #4] - 800add0: f000 fa5c bl 800b28c - if (recv_flags & TF_GOT_FIN) { - 800add4: 4b22 ldr r3, [pc, #136] @ (800ae60 ) - 800add6: 781b ldrb r3, [r3, #0] - 800add8: f003 0320 and.w r3, r3, #32 - 800addc: 2b00 cmp r3, #0 - 800adde: d071 beq.n 800aec4 - if ((flags & TCP_ACK) && (ackno == pcb->snd_nxt) && - 800ade0: 4b14 ldr r3, [pc, #80] @ (800ae34 ) - 800ade2: 781b ldrb r3, [r3, #0] - 800ade4: f003 0310 and.w r3, r3, #16 - 800ade8: 2b00 cmp r3, #0 - 800adea: d060 beq.n 800aeae - 800adec: 687b ldr r3, [r7, #4] - 800adee: 6d1a ldr r2, [r3, #80] @ 0x50 - 800adf0: 4b11 ldr r3, [pc, #68] @ (800ae38 ) - 800adf2: 681b ldr r3, [r3, #0] - 800adf4: 429a cmp r2, r3 - 800adf6: d15a bne.n 800aeae - pcb->unsent == NULL) { - 800adf8: 687b ldr r3, [r7, #4] - 800adfa: 6edb ldr r3, [r3, #108] @ 0x6c - if ((flags & TCP_ACK) && (ackno == pcb->snd_nxt) && - 800adfc: 2b00 cmp r3, #0 - 800adfe: d156 bne.n 800aeae - LWIP_DEBUGF(TCP_DEBUG, - ("TCP connection closed: FIN_WAIT_1 %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest)); - tcp_ack_now(pcb); - 800ae00: 687b ldr r3, [r7, #4] - 800ae02: 8b5b ldrh r3, [r3, #26] - 800ae04: f043 0302 orr.w r3, r3, #2 - 800ae08: b29a uxth r2, r3 - 800ae0a: 687b ldr r3, [r7, #4] - 800ae0c: 835a strh r2, [r3, #26] - tcp_pcb_purge(pcb); - 800ae0e: 6878 ldr r0, [r7, #4] - 800ae10: f7fe fdbc bl 800998c - TCP_RMV_ACTIVE(pcb); - 800ae14: 4b13 ldr r3, [pc, #76] @ (800ae64 ) - 800ae16: 681b ldr r3, [r3, #0] - 800ae18: 687a ldr r2, [r7, #4] - 800ae1a: 429a cmp r2, r3 - 800ae1c: d105 bne.n 800ae2a - 800ae1e: 4b11 ldr r3, [pc, #68] @ (800ae64 ) - 800ae20: 681b ldr r3, [r3, #0] - 800ae22: 68db ldr r3, [r3, #12] - 800ae24: 4a0f ldr r2, [pc, #60] @ (800ae64 ) - 800ae26: 6013 str r3, [r2, #0] - 800ae28: e02e b.n 800ae88 - 800ae2a: 4b0e ldr r3, [pc, #56] @ (800ae64 ) - 800ae2c: 681b ldr r3, [r3, #0] - 800ae2e: 617b str r3, [r7, #20] - 800ae30: e027 b.n 800ae82 - 800ae32: bf00 nop - 800ae34: 20019130 .word 0x20019130 - 800ae38: 20019128 .word 0x20019128 - 800ae3c: 2001912e .word 0x2001912e - 800ae40: 20019124 .word 0x20019124 - 800ae44: 20019114 .word 0x20019114 - 800ae48: 200061a4 .word 0x200061a4 - 800ae4c: 200061a8 .word 0x200061a8 - 800ae50: 0801892c .word 0x0801892c - 800ae54: 08018bcc .word 0x08018bcc - 800ae58: 08018978 .word 0x08018978 - 800ae5c: 2001912c .word 0x2001912c - 800ae60: 20019131 .word 0x20019131 - 800ae64: 200190f8 .word 0x200190f8 - 800ae68: 697b ldr r3, [r7, #20] - 800ae6a: 68db ldr r3, [r3, #12] - 800ae6c: 687a ldr r2, [r7, #4] - 800ae6e: 429a cmp r2, r3 - 800ae70: d104 bne.n 800ae7c - 800ae72: 687b ldr r3, [r7, #4] - 800ae74: 68da ldr r2, [r3, #12] - 800ae76: 697b ldr r3, [r7, #20] - 800ae78: 60da str r2, [r3, #12] - 800ae7a: e005 b.n 800ae88 - 800ae7c: 697b ldr r3, [r7, #20] - 800ae7e: 68db ldr r3, [r3, #12] - 800ae80: 617b str r3, [r7, #20] - 800ae82: 697b ldr r3, [r7, #20] - 800ae84: 2b00 cmp r3, #0 - 800ae86: d1ef bne.n 800ae68 - 800ae88: 687b ldr r3, [r7, #4] - 800ae8a: 2200 movs r2, #0 - 800ae8c: 60da str r2, [r3, #12] - 800ae8e: 4b77 ldr r3, [pc, #476] @ (800b06c ) - 800ae90: 2201 movs r2, #1 - 800ae92: 701a strb r2, [r3, #0] - pcb->state = TIME_WAIT; - 800ae94: 687b ldr r3, [r7, #4] - 800ae96: 220a movs r2, #10 - 800ae98: 751a strb r2, [r3, #20] - TCP_REG(&tcp_tw_pcbs, pcb); - 800ae9a: 4b75 ldr r3, [pc, #468] @ (800b070 ) - 800ae9c: 681a ldr r2, [r3, #0] - 800ae9e: 687b ldr r3, [r7, #4] - 800aea0: 60da str r2, [r3, #12] - 800aea2: 4a73 ldr r2, [pc, #460] @ (800b070 ) - 800aea4: 687b ldr r3, [r7, #4] - 800aea6: 6013 str r3, [r2, #0] - 800aea8: f002 fcf4 bl 800d894 - } - } else if ((flags & TCP_ACK) && (ackno == pcb->snd_nxt) && - pcb->unsent == NULL) { - pcb->state = FIN_WAIT_2; - } - break; - 800aeac: e0d2 b.n 800b054 - tcp_ack_now(pcb); - 800aeae: 687b ldr r3, [r7, #4] - 800aeb0: 8b5b ldrh r3, [r3, #26] - 800aeb2: f043 0302 orr.w r3, r3, #2 - 800aeb6: b29a uxth r2, r3 - 800aeb8: 687b ldr r3, [r7, #4] - 800aeba: 835a strh r2, [r3, #26] - pcb->state = CLOSING; - 800aebc: 687b ldr r3, [r7, #4] - 800aebe: 2208 movs r2, #8 - 800aec0: 751a strb r2, [r3, #20] - break; - 800aec2: e0c7 b.n 800b054 - } else if ((flags & TCP_ACK) && (ackno == pcb->snd_nxt) && - 800aec4: 4b6b ldr r3, [pc, #428] @ (800b074 ) - 800aec6: 781b ldrb r3, [r3, #0] - 800aec8: f003 0310 and.w r3, r3, #16 - 800aecc: 2b00 cmp r3, #0 - 800aece: f000 80c1 beq.w 800b054 - 800aed2: 687b ldr r3, [r7, #4] - 800aed4: 6d1a ldr r2, [r3, #80] @ 0x50 - 800aed6: 4b68 ldr r3, [pc, #416] @ (800b078 ) - 800aed8: 681b ldr r3, [r3, #0] - 800aeda: 429a cmp r2, r3 - 800aedc: f040 80ba bne.w 800b054 - pcb->unsent == NULL) { - 800aee0: 687b ldr r3, [r7, #4] - 800aee2: 6edb ldr r3, [r3, #108] @ 0x6c - } else if ((flags & TCP_ACK) && (ackno == pcb->snd_nxt) && - 800aee4: 2b00 cmp r3, #0 - 800aee6: f040 80b5 bne.w 800b054 - pcb->state = FIN_WAIT_2; - 800aeea: 687b ldr r3, [r7, #4] - 800aeec: 2206 movs r2, #6 - 800aeee: 751a strb r2, [r3, #20] - break; - 800aef0: e0b0 b.n 800b054 - case FIN_WAIT_2: - tcp_receive(pcb); - 800aef2: 6878 ldr r0, [r7, #4] - 800aef4: f000 f9ca bl 800b28c - if (recv_flags & TF_GOT_FIN) { - 800aef8: 4b60 ldr r3, [pc, #384] @ (800b07c ) - 800aefa: 781b ldrb r3, [r3, #0] - 800aefc: f003 0320 and.w r3, r3, #32 - 800af00: 2b00 cmp r3, #0 - 800af02: f000 80a9 beq.w 800b058 - LWIP_DEBUGF(TCP_DEBUG, ("TCP connection closed: FIN_WAIT_2 %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest)); - tcp_ack_now(pcb); - 800af06: 687b ldr r3, [r7, #4] - 800af08: 8b5b ldrh r3, [r3, #26] - 800af0a: f043 0302 orr.w r3, r3, #2 - 800af0e: b29a uxth r2, r3 - 800af10: 687b ldr r3, [r7, #4] - 800af12: 835a strh r2, [r3, #26] - tcp_pcb_purge(pcb); - 800af14: 6878 ldr r0, [r7, #4] - 800af16: f7fe fd39 bl 800998c - TCP_RMV_ACTIVE(pcb); - 800af1a: 4b59 ldr r3, [pc, #356] @ (800b080 ) - 800af1c: 681b ldr r3, [r3, #0] - 800af1e: 687a ldr r2, [r7, #4] - 800af20: 429a cmp r2, r3 - 800af22: d105 bne.n 800af30 - 800af24: 4b56 ldr r3, [pc, #344] @ (800b080 ) - 800af26: 681b ldr r3, [r3, #0] - 800af28: 68db ldr r3, [r3, #12] - 800af2a: 4a55 ldr r2, [pc, #340] @ (800b080 ) - 800af2c: 6013 str r3, [r2, #0] - 800af2e: e013 b.n 800af58 - 800af30: 4b53 ldr r3, [pc, #332] @ (800b080 ) - 800af32: 681b ldr r3, [r3, #0] - 800af34: 613b str r3, [r7, #16] - 800af36: e00c b.n 800af52 - 800af38: 693b ldr r3, [r7, #16] - 800af3a: 68db ldr r3, [r3, #12] - 800af3c: 687a ldr r2, [r7, #4] - 800af3e: 429a cmp r2, r3 - 800af40: d104 bne.n 800af4c - 800af42: 687b ldr r3, [r7, #4] - 800af44: 68da ldr r2, [r3, #12] - 800af46: 693b ldr r3, [r7, #16] - 800af48: 60da str r2, [r3, #12] - 800af4a: e005 b.n 800af58 - 800af4c: 693b ldr r3, [r7, #16] - 800af4e: 68db ldr r3, [r3, #12] - 800af50: 613b str r3, [r7, #16] - 800af52: 693b ldr r3, [r7, #16] - 800af54: 2b00 cmp r3, #0 - 800af56: d1ef bne.n 800af38 - 800af58: 687b ldr r3, [r7, #4] - 800af5a: 2200 movs r2, #0 - 800af5c: 60da str r2, [r3, #12] - 800af5e: 4b43 ldr r3, [pc, #268] @ (800b06c ) - 800af60: 2201 movs r2, #1 - 800af62: 701a strb r2, [r3, #0] - pcb->state = TIME_WAIT; - 800af64: 687b ldr r3, [r7, #4] - 800af66: 220a movs r2, #10 - 800af68: 751a strb r2, [r3, #20] - TCP_REG(&tcp_tw_pcbs, pcb); - 800af6a: 4b41 ldr r3, [pc, #260] @ (800b070 ) - 800af6c: 681a ldr r2, [r3, #0] - 800af6e: 687b ldr r3, [r7, #4] - 800af70: 60da str r2, [r3, #12] - 800af72: 4a3f ldr r2, [pc, #252] @ (800b070 ) - 800af74: 687b ldr r3, [r7, #4] - 800af76: 6013 str r3, [r2, #0] - 800af78: f002 fc8c bl 800d894 - } - break; - 800af7c: e06c b.n 800b058 - case CLOSING: - tcp_receive(pcb); - 800af7e: 6878 ldr r0, [r7, #4] - 800af80: f000 f984 bl 800b28c - if ((flags & TCP_ACK) && ackno == pcb->snd_nxt && pcb->unsent == NULL) { - 800af84: 4b3b ldr r3, [pc, #236] @ (800b074 ) - 800af86: 781b ldrb r3, [r3, #0] - 800af88: f003 0310 and.w r3, r3, #16 - 800af8c: 2b00 cmp r3, #0 - 800af8e: d065 beq.n 800b05c - 800af90: 687b ldr r3, [r7, #4] - 800af92: 6d1a ldr r2, [r3, #80] @ 0x50 - 800af94: 4b38 ldr r3, [pc, #224] @ (800b078 ) - 800af96: 681b ldr r3, [r3, #0] - 800af98: 429a cmp r2, r3 - 800af9a: d15f bne.n 800b05c - 800af9c: 687b ldr r3, [r7, #4] - 800af9e: 6edb ldr r3, [r3, #108] @ 0x6c - 800afa0: 2b00 cmp r3, #0 - 800afa2: d15b bne.n 800b05c - LWIP_DEBUGF(TCP_DEBUG, ("TCP connection closed: CLOSING %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest)); - tcp_pcb_purge(pcb); - 800afa4: 6878 ldr r0, [r7, #4] - 800afa6: f7fe fcf1 bl 800998c - TCP_RMV_ACTIVE(pcb); - 800afaa: 4b35 ldr r3, [pc, #212] @ (800b080 ) - 800afac: 681b ldr r3, [r3, #0] - 800afae: 687a ldr r2, [r7, #4] - 800afb0: 429a cmp r2, r3 - 800afb2: d105 bne.n 800afc0 - 800afb4: 4b32 ldr r3, [pc, #200] @ (800b080 ) - 800afb6: 681b ldr r3, [r3, #0] - 800afb8: 68db ldr r3, [r3, #12] - 800afba: 4a31 ldr r2, [pc, #196] @ (800b080 ) - 800afbc: 6013 str r3, [r2, #0] - 800afbe: e013 b.n 800afe8 - 800afc0: 4b2f ldr r3, [pc, #188] @ (800b080 ) - 800afc2: 681b ldr r3, [r3, #0] - 800afc4: 60fb str r3, [r7, #12] - 800afc6: e00c b.n 800afe2 - 800afc8: 68fb ldr r3, [r7, #12] - 800afca: 68db ldr r3, [r3, #12] - 800afcc: 687a ldr r2, [r7, #4] - 800afce: 429a cmp r2, r3 - 800afd0: d104 bne.n 800afdc - 800afd2: 687b ldr r3, [r7, #4] - 800afd4: 68da ldr r2, [r3, #12] - 800afd6: 68fb ldr r3, [r7, #12] - 800afd8: 60da str r2, [r3, #12] - 800afda: e005 b.n 800afe8 - 800afdc: 68fb ldr r3, [r7, #12] - 800afde: 68db ldr r3, [r3, #12] - 800afe0: 60fb str r3, [r7, #12] - 800afe2: 68fb ldr r3, [r7, #12] - 800afe4: 2b00 cmp r3, #0 - 800afe6: d1ef bne.n 800afc8 - 800afe8: 687b ldr r3, [r7, #4] - 800afea: 2200 movs r2, #0 - 800afec: 60da str r2, [r3, #12] - 800afee: 4b1f ldr r3, [pc, #124] @ (800b06c ) - 800aff0: 2201 movs r2, #1 - 800aff2: 701a strb r2, [r3, #0] - pcb->state = TIME_WAIT; - 800aff4: 687b ldr r3, [r7, #4] - 800aff6: 220a movs r2, #10 - 800aff8: 751a strb r2, [r3, #20] - TCP_REG(&tcp_tw_pcbs, pcb); - 800affa: 4b1d ldr r3, [pc, #116] @ (800b070 ) - 800affc: 681a ldr r2, [r3, #0] - 800affe: 687b ldr r3, [r7, #4] - 800b000: 60da str r2, [r3, #12] - 800b002: 4a1b ldr r2, [pc, #108] @ (800b070 ) - 800b004: 687b ldr r3, [r7, #4] - 800b006: 6013 str r3, [r2, #0] - 800b008: f002 fc44 bl 800d894 - } - break; - 800b00c: e026 b.n 800b05c - case LAST_ACK: - tcp_receive(pcb); - 800b00e: 6878 ldr r0, [r7, #4] - 800b010: f000 f93c bl 800b28c - if ((flags & TCP_ACK) && ackno == pcb->snd_nxt && pcb->unsent == NULL) { - 800b014: 4b17 ldr r3, [pc, #92] @ (800b074 ) - 800b016: 781b ldrb r3, [r3, #0] - 800b018: f003 0310 and.w r3, r3, #16 - 800b01c: 2b00 cmp r3, #0 - 800b01e: d01f beq.n 800b060 - 800b020: 687b ldr r3, [r7, #4] - 800b022: 6d1a ldr r2, [r3, #80] @ 0x50 - 800b024: 4b14 ldr r3, [pc, #80] @ (800b078 ) - 800b026: 681b ldr r3, [r3, #0] - 800b028: 429a cmp r2, r3 - 800b02a: d119 bne.n 800b060 - 800b02c: 687b ldr r3, [r7, #4] - 800b02e: 6edb ldr r3, [r3, #108] @ 0x6c - 800b030: 2b00 cmp r3, #0 - 800b032: d115 bne.n 800b060 - LWIP_DEBUGF(TCP_DEBUG, ("TCP connection closed: LAST_ACK %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest)); - /* bugfix #21699: don't set pcb->state to CLOSED here or we risk leaking segments */ - recv_flags |= TF_CLOSED; - 800b034: 4b11 ldr r3, [pc, #68] @ (800b07c ) - 800b036: 781b ldrb r3, [r3, #0] - 800b038: f043 0310 orr.w r3, r3, #16 - 800b03c: b2da uxtb r2, r3 - 800b03e: 4b0f ldr r3, [pc, #60] @ (800b07c ) - 800b040: 701a strb r2, [r3, #0] - } - break; - 800b042: e00d b.n 800b060 - default: - break; - 800b044: bf00 nop - 800b046: e00c b.n 800b062 - break; - 800b048: bf00 nop - 800b04a: e00a b.n 800b062 - break; - 800b04c: bf00 nop - 800b04e: e008 b.n 800b062 - break; - 800b050: bf00 nop - 800b052: e006 b.n 800b062 - break; - 800b054: bf00 nop - 800b056: e004 b.n 800b062 - break; - 800b058: bf00 nop - 800b05a: e002 b.n 800b062 - break; - 800b05c: bf00 nop - 800b05e: e000 b.n 800b062 - break; - 800b060: bf00 nop - } - return ERR_OK; - 800b062: 2300 movs r3, #0 -} - 800b064: 4618 mov r0, r3 - 800b066: 3724 adds r7, #36 @ 0x24 - 800b068: 46bd mov sp, r7 - 800b06a: bd90 pop {r4, r7, pc} - 800b06c: 20019100 .word 0x20019100 - 800b070: 200190fc .word 0x200190fc - 800b074: 20019130 .word 0x20019130 - 800b078: 20019128 .word 0x20019128 - 800b07c: 20019131 .word 0x20019131 - 800b080: 200190f8 .word 0x200190f8 - -0800b084 : - * - * Called from tcp_receive() - */ -static void -tcp_oos_insert_segment(struct tcp_seg *cseg, struct tcp_seg *next) -{ - 800b084: b590 push {r4, r7, lr} - 800b086: b085 sub sp, #20 - 800b088: af00 add r7, sp, #0 - 800b08a: 6078 str r0, [r7, #4] - 800b08c: 6039 str r1, [r7, #0] - struct tcp_seg *old_seg; - - LWIP_ASSERT("tcp_oos_insert_segment: invalid cseg", cseg != NULL); - 800b08e: 687b ldr r3, [r7, #4] - 800b090: 2b00 cmp r3, #0 - 800b092: d106 bne.n 800b0a2 - 800b094: 4b3b ldr r3, [pc, #236] @ (800b184 ) - 800b096: f240 421f movw r2, #1055 @ 0x41f - 800b09a: 493b ldr r1, [pc, #236] @ (800b188 ) - 800b09c: 483b ldr r0, [pc, #236] @ (800b18c ) - 800b09e: f007 fdeb bl 8012c78 - - if (TCPH_FLAGS(cseg->tcphdr) & TCP_FIN) { - 800b0a2: 687b ldr r3, [r7, #4] - 800b0a4: 68db ldr r3, [r3, #12] - 800b0a6: 899b ldrh r3, [r3, #12] - 800b0a8: b29b uxth r3, r3 - 800b0aa: 4618 mov r0, r3 - 800b0ac: f7fb fcac bl 8006a08 - 800b0b0: 4603 mov r3, r0 - 800b0b2: b2db uxtb r3, r3 - 800b0b4: f003 0301 and.w r3, r3, #1 - 800b0b8: 2b00 cmp r3, #0 - 800b0ba: d028 beq.n 800b10e - /* received segment overlaps all following segments */ - tcp_segs_free(next); - 800b0bc: 6838 ldr r0, [r7, #0] - 800b0be: f7fe fa63 bl 8009588 - next = NULL; - 800b0c2: 2300 movs r3, #0 - 800b0c4: 603b str r3, [r7, #0] - 800b0c6: e056 b.n 800b176 - oos queue may have segments with FIN flag */ - while (next && - TCP_SEQ_GEQ((seqno + cseg->len), - (next->tcphdr->seqno + next->len))) { - /* cseg with FIN already processed */ - if (TCPH_FLAGS(next->tcphdr) & TCP_FIN) { - 800b0c8: 683b ldr r3, [r7, #0] - 800b0ca: 68db ldr r3, [r3, #12] - 800b0cc: 899b ldrh r3, [r3, #12] - 800b0ce: b29b uxth r3, r3 - 800b0d0: 4618 mov r0, r3 - 800b0d2: f7fb fc99 bl 8006a08 - 800b0d6: 4603 mov r3, r0 - 800b0d8: b2db uxtb r3, r3 - 800b0da: f003 0301 and.w r3, r3, #1 - 800b0de: 2b00 cmp r3, #0 - 800b0e0: d00d beq.n 800b0fe - TCPH_SET_FLAG(cseg->tcphdr, TCP_FIN); - 800b0e2: 687b ldr r3, [r7, #4] - 800b0e4: 68db ldr r3, [r3, #12] - 800b0e6: 899b ldrh r3, [r3, #12] - 800b0e8: b29c uxth r4, r3 - 800b0ea: 2001 movs r0, #1 - 800b0ec: f7fb fc8c bl 8006a08 - 800b0f0: 4603 mov r3, r0 - 800b0f2: 461a mov r2, r3 - 800b0f4: 687b ldr r3, [r7, #4] - 800b0f6: 68db ldr r3, [r3, #12] - 800b0f8: 4322 orrs r2, r4 - 800b0fa: b292 uxth r2, r2 - 800b0fc: 819a strh r2, [r3, #12] - } - old_seg = next; - 800b0fe: 683b ldr r3, [r7, #0] - 800b100: 60fb str r3, [r7, #12] - next = next->next; - 800b102: 683b ldr r3, [r7, #0] - 800b104: 681b ldr r3, [r3, #0] - 800b106: 603b str r3, [r7, #0] - tcp_seg_free(old_seg); - 800b108: 68f8 ldr r0, [r7, #12] - 800b10a: f7fe fa52 bl 80095b2 - while (next && - 800b10e: 683b ldr r3, [r7, #0] - 800b110: 2b00 cmp r3, #0 - 800b112: d00e beq.n 800b132 - TCP_SEQ_GEQ((seqno + cseg->len), - 800b114: 687b ldr r3, [r7, #4] - 800b116: 891b ldrh r3, [r3, #8] - 800b118: 461a mov r2, r3 - 800b11a: 4b1d ldr r3, [pc, #116] @ (800b190 ) - 800b11c: 681b ldr r3, [r3, #0] - 800b11e: 441a add r2, r3 - 800b120: 683b ldr r3, [r7, #0] - 800b122: 68db ldr r3, [r3, #12] - 800b124: 685b ldr r3, [r3, #4] - 800b126: 6839 ldr r1, [r7, #0] - 800b128: 8909 ldrh r1, [r1, #8] - 800b12a: 440b add r3, r1 - 800b12c: 1ad3 subs r3, r2, r3 - while (next && - 800b12e: 2b00 cmp r3, #0 - 800b130: daca bge.n 800b0c8 - } - if (next && - 800b132: 683b ldr r3, [r7, #0] - 800b134: 2b00 cmp r3, #0 - 800b136: d01e beq.n 800b176 - TCP_SEQ_GT(seqno + cseg->len, next->tcphdr->seqno)) { - 800b138: 687b ldr r3, [r7, #4] - 800b13a: 891b ldrh r3, [r3, #8] - 800b13c: 461a mov r2, r3 - 800b13e: 4b14 ldr r3, [pc, #80] @ (800b190 ) - 800b140: 681b ldr r3, [r3, #0] - 800b142: 441a add r2, r3 - 800b144: 683b ldr r3, [r7, #0] - 800b146: 68db ldr r3, [r3, #12] - 800b148: 685b ldr r3, [r3, #4] - 800b14a: 1ad3 subs r3, r2, r3 - if (next && - 800b14c: 2b00 cmp r3, #0 - 800b14e: dd12 ble.n 800b176 - /* We need to trim the incoming segment. */ - cseg->len = (u16_t)(next->tcphdr->seqno - seqno); - 800b150: 683b ldr r3, [r7, #0] - 800b152: 68db ldr r3, [r3, #12] - 800b154: 685b ldr r3, [r3, #4] - 800b156: b29a uxth r2, r3 - 800b158: 4b0d ldr r3, [pc, #52] @ (800b190 ) - 800b15a: 681b ldr r3, [r3, #0] - 800b15c: b29b uxth r3, r3 - 800b15e: 1ad3 subs r3, r2, r3 - 800b160: b29a uxth r2, r3 - 800b162: 687b ldr r3, [r7, #4] - 800b164: 811a strh r2, [r3, #8] - pbuf_realloc(cseg->p, cseg->len); - 800b166: 687b ldr r3, [r7, #4] - 800b168: 685a ldr r2, [r3, #4] - 800b16a: 687b ldr r3, [r7, #4] - 800b16c: 891b ldrh r3, [r3, #8] - 800b16e: 4619 mov r1, r3 - 800b170: 4610 mov r0, r2 - 800b172: f7fc fe15 bl 8007da0 - } - } - cseg->next = next; - 800b176: 687b ldr r3, [r7, #4] - 800b178: 683a ldr r2, [r7, #0] - 800b17a: 601a str r2, [r3, #0] -} - 800b17c: bf00 nop - 800b17e: 3714 adds r7, #20 - 800b180: 46bd mov sp, r7 - 800b182: bd90 pop {r4, r7, pc} - 800b184: 0801892c .word 0x0801892c - 800b188: 08018bec .word 0x08018bec - 800b18c: 08018978 .word 0x08018978 - 800b190: 20019124 .word 0x20019124 - -0800b194 : - -/** Remove segments from a list if the incoming ACK acknowledges them */ -static struct tcp_seg * -tcp_free_acked_segments(struct tcp_pcb *pcb, struct tcp_seg *seg_list, const char *dbg_list_name, - struct tcp_seg *dbg_other_seg_list) -{ - 800b194: b5b0 push {r4, r5, r7, lr} - 800b196: b086 sub sp, #24 - 800b198: af00 add r7, sp, #0 - 800b19a: 60f8 str r0, [r7, #12] - 800b19c: 60b9 str r1, [r7, #8] - 800b19e: 607a str r2, [r7, #4] - 800b1a0: 603b str r3, [r7, #0] - u16_t clen; - - LWIP_UNUSED_ARG(dbg_list_name); - LWIP_UNUSED_ARG(dbg_other_seg_list); - - while (seg_list != NULL && - 800b1a2: e03e b.n 800b222 - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: removing %"U32_F":%"U32_F" from pcb->%s\n", - lwip_ntohl(seg_list->tcphdr->seqno), - lwip_ntohl(seg_list->tcphdr->seqno) + TCP_TCPLEN(seg_list), - dbg_list_name)); - - next = seg_list; - 800b1a4: 68bb ldr r3, [r7, #8] - 800b1a6: 617b str r3, [r7, #20] - seg_list = seg_list->next; - 800b1a8: 68bb ldr r3, [r7, #8] - 800b1aa: 681b ldr r3, [r3, #0] - 800b1ac: 60bb str r3, [r7, #8] - - clen = pbuf_clen(next->p); - 800b1ae: 697b ldr r3, [r7, #20] - 800b1b0: 685b ldr r3, [r3, #4] - 800b1b2: 4618 mov r0, r3 - 800b1b4: f7fd f800 bl 80081b8 - 800b1b8: 4603 mov r3, r0 - 800b1ba: 827b strh r3, [r7, #18] - LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_receive: queuelen %"TCPWNDSIZE_F" ... ", - (tcpwnd_size_t)pcb->snd_queuelen)); - LWIP_ASSERT("pcb->snd_queuelen >= pbuf_clen(next->p)", (pcb->snd_queuelen >= clen)); - 800b1bc: 68fb ldr r3, [r7, #12] - 800b1be: f8b3 3066 ldrh.w r3, [r3, #102] @ 0x66 - 800b1c2: 8a7a ldrh r2, [r7, #18] - 800b1c4: 429a cmp r2, r3 - 800b1c6: d906 bls.n 800b1d6 - 800b1c8: 4b2a ldr r3, [pc, #168] @ (800b274 ) - 800b1ca: f240 4257 movw r2, #1111 @ 0x457 - 800b1ce: 492a ldr r1, [pc, #168] @ (800b278 ) - 800b1d0: 482a ldr r0, [pc, #168] @ (800b27c ) - 800b1d2: f007 fd51 bl 8012c78 - - pcb->snd_queuelen = (u16_t)(pcb->snd_queuelen - clen); - 800b1d6: 68fb ldr r3, [r7, #12] - 800b1d8: f8b3 2066 ldrh.w r2, [r3, #102] @ 0x66 - 800b1dc: 8a7b ldrh r3, [r7, #18] - 800b1de: 1ad3 subs r3, r2, r3 - 800b1e0: b29a uxth r2, r3 - 800b1e2: 68fb ldr r3, [r7, #12] - 800b1e4: f8a3 2066 strh.w r2, [r3, #102] @ 0x66 - recv_acked = (tcpwnd_size_t)(recv_acked + next->len); - 800b1e8: 697b ldr r3, [r7, #20] - 800b1ea: 891a ldrh r2, [r3, #8] - 800b1ec: 4b24 ldr r3, [pc, #144] @ (800b280 ) - 800b1ee: 881b ldrh r3, [r3, #0] - 800b1f0: 4413 add r3, r2 - 800b1f2: b29a uxth r2, r3 - 800b1f4: 4b22 ldr r3, [pc, #136] @ (800b280 ) - 800b1f6: 801a strh r2, [r3, #0] - tcp_seg_free(next); - 800b1f8: 6978 ldr r0, [r7, #20] - 800b1fa: f7fe f9da bl 80095b2 - - LWIP_DEBUGF(TCP_QLEN_DEBUG, ("%"TCPWNDSIZE_F" (after freeing %s)\n", - (tcpwnd_size_t)pcb->snd_queuelen, - dbg_list_name)); - if (pcb->snd_queuelen != 0) { - 800b1fe: 68fb ldr r3, [r7, #12] - 800b200: f8b3 3066 ldrh.w r3, [r3, #102] @ 0x66 - 800b204: 2b00 cmp r3, #0 - 800b206: d00c beq.n 800b222 - LWIP_ASSERT("tcp_receive: valid queue length", - 800b208: 68bb ldr r3, [r7, #8] - 800b20a: 2b00 cmp r3, #0 - 800b20c: d109 bne.n 800b222 - 800b20e: 683b ldr r3, [r7, #0] - 800b210: 2b00 cmp r3, #0 - 800b212: d106 bne.n 800b222 - 800b214: 4b17 ldr r3, [pc, #92] @ (800b274 ) - 800b216: f240 4261 movw r2, #1121 @ 0x461 - 800b21a: 491a ldr r1, [pc, #104] @ (800b284 ) - 800b21c: 4817 ldr r0, [pc, #92] @ (800b27c ) - 800b21e: f007 fd2b bl 8012c78 - while (seg_list != NULL && - 800b222: 68bb ldr r3, [r7, #8] - 800b224: 2b00 cmp r3, #0 - 800b226: d020 beq.n 800b26a - TCP_SEQ_LEQ(lwip_ntohl(seg_list->tcphdr->seqno) + - 800b228: 68bb ldr r3, [r7, #8] - 800b22a: 68db ldr r3, [r3, #12] - 800b22c: 685b ldr r3, [r3, #4] - 800b22e: 4618 mov r0, r3 - 800b230: f7fb fbff bl 8006a32 - 800b234: 4604 mov r4, r0 - 800b236: 68bb ldr r3, [r7, #8] - 800b238: 891b ldrh r3, [r3, #8] - 800b23a: 461d mov r5, r3 - 800b23c: 68bb ldr r3, [r7, #8] - 800b23e: 68db ldr r3, [r3, #12] - 800b240: 899b ldrh r3, [r3, #12] - 800b242: b29b uxth r3, r3 - 800b244: 4618 mov r0, r3 - 800b246: f7fb fbdf bl 8006a08 - 800b24a: 4603 mov r3, r0 - 800b24c: b2db uxtb r3, r3 - 800b24e: f003 0303 and.w r3, r3, #3 - 800b252: 2b00 cmp r3, #0 - 800b254: d001 beq.n 800b25a - 800b256: 2301 movs r3, #1 - 800b258: e000 b.n 800b25c - 800b25a: 2300 movs r3, #0 - 800b25c: 442b add r3, r5 - 800b25e: 18e2 adds r2, r4, r3 - 800b260: 4b09 ldr r3, [pc, #36] @ (800b288 ) - 800b262: 681b ldr r3, [r3, #0] - 800b264: 1ad3 subs r3, r2, r3 - while (seg_list != NULL && - 800b266: 2b00 cmp r3, #0 - 800b268: dd9c ble.n 800b1a4 - seg_list != NULL || dbg_other_seg_list != NULL); - } - } - return seg_list; - 800b26a: 68bb ldr r3, [r7, #8] -} - 800b26c: 4618 mov r0, r3 - 800b26e: 3718 adds r7, #24 - 800b270: 46bd mov sp, r7 - 800b272: bdb0 pop {r4, r5, r7, pc} - 800b274: 0801892c .word 0x0801892c - 800b278: 08018c14 .word 0x08018c14 - 800b27c: 08018978 .word 0x08018978 - 800b280: 2001912c .word 0x2001912c - 800b284: 08018c3c .word 0x08018c3c - 800b288: 20019128 .word 0x20019128 - -0800b28c : - * - * Called from tcp_process(). - */ -static void -tcp_receive(struct tcp_pcb *pcb) -{ - 800b28c: b5b0 push {r4, r5, r7, lr} - 800b28e: b094 sub sp, #80 @ 0x50 - 800b290: af00 add r7, sp, #0 - 800b292: 6078 str r0, [r7, #4] - s16_t m; - u32_t right_wnd_edge; - int found_dupack = 0; - 800b294: 2300 movs r3, #0 - 800b296: 64bb str r3, [r7, #72] @ 0x48 - - LWIP_ASSERT("tcp_receive: invalid pcb", pcb != NULL); - 800b298: 687b ldr r3, [r7, #4] - 800b29a: 2b00 cmp r3, #0 - 800b29c: d106 bne.n 800b2ac - 800b29e: 4b91 ldr r3, [pc, #580] @ (800b4e4 ) - 800b2a0: f240 427b movw r2, #1147 @ 0x47b - 800b2a4: 4990 ldr r1, [pc, #576] @ (800b4e8 ) - 800b2a6: 4891 ldr r0, [pc, #580] @ (800b4ec ) - 800b2a8: f007 fce6 bl 8012c78 - LWIP_ASSERT("tcp_receive: wrong state", pcb->state >= ESTABLISHED); - 800b2ac: 687b ldr r3, [r7, #4] - 800b2ae: 7d1b ldrb r3, [r3, #20] - 800b2b0: 2b03 cmp r3, #3 - 800b2b2: d806 bhi.n 800b2c2 - 800b2b4: 4b8b ldr r3, [pc, #556] @ (800b4e4 ) - 800b2b6: f240 427c movw r2, #1148 @ 0x47c - 800b2ba: 498d ldr r1, [pc, #564] @ (800b4f0 ) - 800b2bc: 488b ldr r0, [pc, #556] @ (800b4ec ) - 800b2be: f007 fcdb bl 8012c78 - - if (flags & TCP_ACK) { - 800b2c2: 4b8c ldr r3, [pc, #560] @ (800b4f4 ) - 800b2c4: 781b ldrb r3, [r3, #0] - 800b2c6: f003 0310 and.w r3, r3, #16 - 800b2ca: 2b00 cmp r3, #0 - 800b2cc: f000 8264 beq.w 800b798 - right_wnd_edge = pcb->snd_wnd + pcb->snd_wl2; - 800b2d0: 687b ldr r3, [r7, #4] - 800b2d2: f8b3 3060 ldrh.w r3, [r3, #96] @ 0x60 - 800b2d6: 461a mov r2, r3 - 800b2d8: 687b ldr r3, [r7, #4] - 800b2da: 6d9b ldr r3, [r3, #88] @ 0x58 - 800b2dc: 4413 add r3, r2 - 800b2de: 633b str r3, [r7, #48] @ 0x30 - - /* Update window. */ - if (TCP_SEQ_LT(pcb->snd_wl1, seqno) || - 800b2e0: 687b ldr r3, [r7, #4] - 800b2e2: 6d5a ldr r2, [r3, #84] @ 0x54 - 800b2e4: 4b84 ldr r3, [pc, #528] @ (800b4f8 ) - 800b2e6: 681b ldr r3, [r3, #0] - 800b2e8: 1ad3 subs r3, r2, r3 - 800b2ea: 2b00 cmp r3, #0 - 800b2ec: db1b blt.n 800b326 - (pcb->snd_wl1 == seqno && TCP_SEQ_LT(pcb->snd_wl2, ackno)) || - 800b2ee: 687b ldr r3, [r7, #4] - 800b2f0: 6d5a ldr r2, [r3, #84] @ 0x54 - 800b2f2: 4b81 ldr r3, [pc, #516] @ (800b4f8 ) - 800b2f4: 681b ldr r3, [r3, #0] - if (TCP_SEQ_LT(pcb->snd_wl1, seqno) || - 800b2f6: 429a cmp r2, r3 - 800b2f8: d106 bne.n 800b308 - (pcb->snd_wl1 == seqno && TCP_SEQ_LT(pcb->snd_wl2, ackno)) || - 800b2fa: 687b ldr r3, [r7, #4] - 800b2fc: 6d9a ldr r2, [r3, #88] @ 0x58 - 800b2fe: 4b7f ldr r3, [pc, #508] @ (800b4fc ) - 800b300: 681b ldr r3, [r3, #0] - 800b302: 1ad3 subs r3, r2, r3 - 800b304: 2b00 cmp r3, #0 - 800b306: db0e blt.n 800b326 - (pcb->snd_wl2 == ackno && (u32_t)SND_WND_SCALE(pcb, tcphdr->wnd) > pcb->snd_wnd)) { - 800b308: 687b ldr r3, [r7, #4] - 800b30a: 6d9a ldr r2, [r3, #88] @ 0x58 - 800b30c: 4b7b ldr r3, [pc, #492] @ (800b4fc ) - 800b30e: 681b ldr r3, [r3, #0] - (pcb->snd_wl1 == seqno && TCP_SEQ_LT(pcb->snd_wl2, ackno)) || - 800b310: 429a cmp r2, r3 - 800b312: d125 bne.n 800b360 - (pcb->snd_wl2 == ackno && (u32_t)SND_WND_SCALE(pcb, tcphdr->wnd) > pcb->snd_wnd)) { - 800b314: 4b7a ldr r3, [pc, #488] @ (800b500 ) - 800b316: 681b ldr r3, [r3, #0] - 800b318: 89db ldrh r3, [r3, #14] - 800b31a: b29a uxth r2, r3 - 800b31c: 687b ldr r3, [r7, #4] - 800b31e: f8b3 3060 ldrh.w r3, [r3, #96] @ 0x60 - 800b322: 429a cmp r2, r3 - 800b324: d91c bls.n 800b360 - pcb->snd_wnd = SND_WND_SCALE(pcb, tcphdr->wnd); - 800b326: 4b76 ldr r3, [pc, #472] @ (800b500 ) - 800b328: 681b ldr r3, [r3, #0] - 800b32a: 89db ldrh r3, [r3, #14] - 800b32c: b29a uxth r2, r3 - 800b32e: 687b ldr r3, [r7, #4] - 800b330: f8a3 2060 strh.w r2, [r3, #96] @ 0x60 - /* keep track of the biggest window announced by the remote host to calculate - the maximum segment size */ - if (pcb->snd_wnd_max < pcb->snd_wnd) { - 800b334: 687b ldr r3, [r7, #4] - 800b336: f8b3 2062 ldrh.w r2, [r3, #98] @ 0x62 - 800b33a: 687b ldr r3, [r7, #4] - 800b33c: f8b3 3060 ldrh.w r3, [r3, #96] @ 0x60 - 800b340: 429a cmp r2, r3 - 800b342: d205 bcs.n 800b350 - pcb->snd_wnd_max = pcb->snd_wnd; - 800b344: 687b ldr r3, [r7, #4] - 800b346: f8b3 2060 ldrh.w r2, [r3, #96] @ 0x60 - 800b34a: 687b ldr r3, [r7, #4] - 800b34c: f8a3 2062 strh.w r2, [r3, #98] @ 0x62 - } - pcb->snd_wl1 = seqno; - 800b350: 4b69 ldr r3, [pc, #420] @ (800b4f8 ) - 800b352: 681a ldr r2, [r3, #0] - 800b354: 687b ldr r3, [r7, #4] - 800b356: 655a str r2, [r3, #84] @ 0x54 - pcb->snd_wl2 = ackno; - 800b358: 4b68 ldr r3, [pc, #416] @ (800b4fc ) - 800b35a: 681a ldr r2, [r3, #0] - 800b35c: 687b ldr r3, [r7, #4] - 800b35e: 659a str r2, [r3, #88] @ 0x58 - * If it only passes 1, should reset dupack counter - * - */ - - /* Clause 1 */ - if (TCP_SEQ_LEQ(ackno, pcb->lastack)) { - 800b360: 4b66 ldr r3, [pc, #408] @ (800b4fc ) - 800b362: 681a ldr r2, [r3, #0] - 800b364: 687b ldr r3, [r7, #4] - 800b366: 6c5b ldr r3, [r3, #68] @ 0x44 - 800b368: 1ad3 subs r3, r2, r3 - 800b36a: 2b00 cmp r3, #0 - 800b36c: dc58 bgt.n 800b420 - /* Clause 2 */ - if (tcplen == 0) { - 800b36e: 4b65 ldr r3, [pc, #404] @ (800b504 ) - 800b370: 881b ldrh r3, [r3, #0] - 800b372: 2b00 cmp r3, #0 - 800b374: d14b bne.n 800b40e - /* Clause 3 */ - if (pcb->snd_wl2 + pcb->snd_wnd == right_wnd_edge) { - 800b376: 687b ldr r3, [r7, #4] - 800b378: 6d9b ldr r3, [r3, #88] @ 0x58 - 800b37a: 687a ldr r2, [r7, #4] - 800b37c: f8b2 2060 ldrh.w r2, [r2, #96] @ 0x60 - 800b380: 4413 add r3, r2 - 800b382: 6b3a ldr r2, [r7, #48] @ 0x30 - 800b384: 429a cmp r2, r3 - 800b386: d142 bne.n 800b40e - /* Clause 4 */ - if (pcb->rtime >= 0) { - 800b388: 687b ldr r3, [r7, #4] - 800b38a: f9b3 3030 ldrsh.w r3, [r3, #48] @ 0x30 - 800b38e: 2b00 cmp r3, #0 - 800b390: db3d blt.n 800b40e - /* Clause 5 */ - if (pcb->lastack == ackno) { - 800b392: 687b ldr r3, [r7, #4] - 800b394: 6c5a ldr r2, [r3, #68] @ 0x44 - 800b396: 4b59 ldr r3, [pc, #356] @ (800b4fc ) - 800b398: 681b ldr r3, [r3, #0] - 800b39a: 429a cmp r2, r3 - 800b39c: d137 bne.n 800b40e - found_dupack = 1; - 800b39e: 2301 movs r3, #1 - 800b3a0: 64bb str r3, [r7, #72] @ 0x48 - if ((u8_t)(pcb->dupacks + 1) > pcb->dupacks) { - 800b3a2: 687b ldr r3, [r7, #4] - 800b3a4: f893 3043 ldrb.w r3, [r3, #67] @ 0x43 - 800b3a8: 2bff cmp r3, #255 @ 0xff - 800b3aa: d007 beq.n 800b3bc - ++pcb->dupacks; - 800b3ac: 687b ldr r3, [r7, #4] - 800b3ae: f893 3043 ldrb.w r3, [r3, #67] @ 0x43 - 800b3b2: 3301 adds r3, #1 - 800b3b4: b2da uxtb r2, r3 - 800b3b6: 687b ldr r3, [r7, #4] - 800b3b8: f883 2043 strb.w r2, [r3, #67] @ 0x43 - } - if (pcb->dupacks > 3) { - 800b3bc: 687b ldr r3, [r7, #4] - 800b3be: f893 3043 ldrb.w r3, [r3, #67] @ 0x43 - 800b3c2: 2b03 cmp r3, #3 - 800b3c4: d91b bls.n 800b3fe - /* Inflate the congestion window */ - TCP_WND_INC(pcb->cwnd, pcb->mss); - 800b3c6: 687b ldr r3, [r7, #4] - 800b3c8: f8b3 2048 ldrh.w r2, [r3, #72] @ 0x48 - 800b3cc: 687b ldr r3, [r7, #4] - 800b3ce: 8e5b ldrh r3, [r3, #50] @ 0x32 - 800b3d0: 4413 add r3, r2 - 800b3d2: b29a uxth r2, r3 - 800b3d4: 687b ldr r3, [r7, #4] - 800b3d6: f8b3 3048 ldrh.w r3, [r3, #72] @ 0x48 - 800b3da: 429a cmp r2, r3 - 800b3dc: d30a bcc.n 800b3f4 - 800b3de: 687b ldr r3, [r7, #4] - 800b3e0: f8b3 2048 ldrh.w r2, [r3, #72] @ 0x48 - 800b3e4: 687b ldr r3, [r7, #4] - 800b3e6: 8e5b ldrh r3, [r3, #50] @ 0x32 - 800b3e8: 4413 add r3, r2 - 800b3ea: b29a uxth r2, r3 - 800b3ec: 687b ldr r3, [r7, #4] - 800b3ee: f8a3 2048 strh.w r2, [r3, #72] @ 0x48 - 800b3f2: e004 b.n 800b3fe - 800b3f4: 687b ldr r3, [r7, #4] - 800b3f6: f64f 72ff movw r2, #65535 @ 0xffff - 800b3fa: f8a3 2048 strh.w r2, [r3, #72] @ 0x48 - } - if (pcb->dupacks >= 3) { - 800b3fe: 687b ldr r3, [r7, #4] - 800b400: f893 3043 ldrb.w r3, [r3, #67] @ 0x43 - 800b404: 2b02 cmp r3, #2 - 800b406: d902 bls.n 800b40e - /* Do fast retransmit (checked via TF_INFR, not via dupacks count) */ - tcp_rexmit_fast(pcb); - 800b408: 6878 ldr r0, [r7, #4] - 800b40a: f001 fee7 bl 800d1dc - } - } - } - /* If Clause (1) or more is true, but not a duplicate ack, reset - * count of consecutive duplicate acks */ - if (!found_dupack) { - 800b40e: 6cbb ldr r3, [r7, #72] @ 0x48 - 800b410: 2b00 cmp r3, #0 - 800b412: f040 8161 bne.w 800b6d8 - pcb->dupacks = 0; - 800b416: 687b ldr r3, [r7, #4] - 800b418: 2200 movs r2, #0 - 800b41a: f883 2043 strb.w r2, [r3, #67] @ 0x43 - 800b41e: e15b b.n 800b6d8 - } - } else if (TCP_SEQ_BETWEEN(ackno, pcb->lastack + 1, pcb->snd_nxt)) { - 800b420: 4b36 ldr r3, [pc, #216] @ (800b4fc ) - 800b422: 681a ldr r2, [r3, #0] - 800b424: 687b ldr r3, [r7, #4] - 800b426: 6c5b ldr r3, [r3, #68] @ 0x44 - 800b428: 1ad3 subs r3, r2, r3 - 800b42a: 3b01 subs r3, #1 - 800b42c: 2b00 cmp r3, #0 - 800b42e: f2c0 814e blt.w 800b6ce - 800b432: 4b32 ldr r3, [pc, #200] @ (800b4fc ) - 800b434: 681a ldr r2, [r3, #0] - 800b436: 687b ldr r3, [r7, #4] - 800b438: 6d1b ldr r3, [r3, #80] @ 0x50 - 800b43a: 1ad3 subs r3, r2, r3 - 800b43c: 2b00 cmp r3, #0 - 800b43e: f300 8146 bgt.w 800b6ce - tcpwnd_size_t acked; - - /* Reset the "IN Fast Retransmit" flag, since we are no longer - in fast retransmit. Also reset the congestion window to the - slow start threshold. */ - if (pcb->flags & TF_INFR) { - 800b442: 687b ldr r3, [r7, #4] - 800b444: 8b5b ldrh r3, [r3, #26] - 800b446: f003 0304 and.w r3, r3, #4 - 800b44a: 2b00 cmp r3, #0 - 800b44c: d010 beq.n 800b470 - tcp_clear_flags(pcb, TF_INFR); - 800b44e: 687b ldr r3, [r7, #4] - 800b450: 8b5b ldrh r3, [r3, #26] - 800b452: f023 0304 bic.w r3, r3, #4 - 800b456: b29a uxth r2, r3 - 800b458: 687b ldr r3, [r7, #4] - 800b45a: 835a strh r2, [r3, #26] - pcb->cwnd = pcb->ssthresh; - 800b45c: 687b ldr r3, [r7, #4] - 800b45e: f8b3 204a ldrh.w r2, [r3, #74] @ 0x4a - 800b462: 687b ldr r3, [r7, #4] - 800b464: f8a3 2048 strh.w r2, [r3, #72] @ 0x48 - pcb->bytes_acked = 0; - 800b468: 687b ldr r3, [r7, #4] - 800b46a: 2200 movs r2, #0 - 800b46c: f8a3 206a strh.w r2, [r3, #106] @ 0x6a - } - - /* Reset the number of retransmissions. */ - pcb->nrtx = 0; - 800b470: 687b ldr r3, [r7, #4] - 800b472: 2200 movs r2, #0 - 800b474: f883 2042 strb.w r2, [r3, #66] @ 0x42 - - /* Reset the retransmission time-out. */ - pcb->rto = (s16_t)((pcb->sa >> 3) + pcb->sv); - 800b478: 687b ldr r3, [r7, #4] - 800b47a: f9b3 303c ldrsh.w r3, [r3, #60] @ 0x3c - 800b47e: 10db asrs r3, r3, #3 - 800b480: b21b sxth r3, r3 - 800b482: b29a uxth r2, r3 - 800b484: 687b ldr r3, [r7, #4] - 800b486: f9b3 303e ldrsh.w r3, [r3, #62] @ 0x3e - 800b48a: b29b uxth r3, r3 - 800b48c: 4413 add r3, r2 - 800b48e: b29b uxth r3, r3 - 800b490: b21a sxth r2, r3 - 800b492: 687b ldr r3, [r7, #4] - 800b494: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 - - /* Record how much data this ACK acks */ - acked = (tcpwnd_size_t)(ackno - pcb->lastack); - 800b498: 4b18 ldr r3, [pc, #96] @ (800b4fc ) - 800b49a: 681b ldr r3, [r3, #0] - 800b49c: b29a uxth r2, r3 - 800b49e: 687b ldr r3, [r7, #4] - 800b4a0: 6c5b ldr r3, [r3, #68] @ 0x44 - 800b4a2: b29b uxth r3, r3 - 800b4a4: 1ad3 subs r3, r2, r3 - 800b4a6: 85fb strh r3, [r7, #46] @ 0x2e - - /* Reset the fast retransmit variables. */ - pcb->dupacks = 0; - 800b4a8: 687b ldr r3, [r7, #4] - 800b4aa: 2200 movs r2, #0 - 800b4ac: f883 2043 strb.w r2, [r3, #67] @ 0x43 - pcb->lastack = ackno; - 800b4b0: 4b12 ldr r3, [pc, #72] @ (800b4fc ) - 800b4b2: 681a ldr r2, [r3, #0] - 800b4b4: 687b ldr r3, [r7, #4] - 800b4b6: 645a str r2, [r3, #68] @ 0x44 - - /* Update the congestion control variables (cwnd and - ssthresh). */ - if (pcb->state >= ESTABLISHED) { - 800b4b8: 687b ldr r3, [r7, #4] - 800b4ba: 7d1b ldrb r3, [r3, #20] - 800b4bc: 2b03 cmp r3, #3 - 800b4be: f240 8097 bls.w 800b5f0 - if (pcb->cwnd < pcb->ssthresh) { - 800b4c2: 687b ldr r3, [r7, #4] - 800b4c4: f8b3 2048 ldrh.w r2, [r3, #72] @ 0x48 - 800b4c8: 687b ldr r3, [r7, #4] - 800b4ca: f8b3 304a ldrh.w r3, [r3, #74] @ 0x4a - 800b4ce: 429a cmp r2, r3 - 800b4d0: d245 bcs.n 800b55e - tcpwnd_size_t increase; - /* limit to 1 SMSS segment during period following RTO */ - u8_t num_seg = (pcb->flags & TF_RTO) ? 1 : 2; - 800b4d2: 687b ldr r3, [r7, #4] - 800b4d4: 8b5b ldrh r3, [r3, #26] - 800b4d6: f403 6300 and.w r3, r3, #2048 @ 0x800 - 800b4da: 2b00 cmp r3, #0 - 800b4dc: d014 beq.n 800b508 - 800b4de: 2301 movs r3, #1 - 800b4e0: e013 b.n 800b50a - 800b4e2: bf00 nop - 800b4e4: 0801892c .word 0x0801892c - 800b4e8: 08018c5c .word 0x08018c5c - 800b4ec: 08018978 .word 0x08018978 - 800b4f0: 08018c78 .word 0x08018c78 - 800b4f4: 20019130 .word 0x20019130 - 800b4f8: 20019124 .word 0x20019124 - 800b4fc: 20019128 .word 0x20019128 - 800b500: 20019114 .word 0x20019114 - 800b504: 2001912e .word 0x2001912e - 800b508: 2302 movs r3, #2 - 800b50a: f887 302d strb.w r3, [r7, #45] @ 0x2d - /* RFC 3465, section 2.2 Slow Start */ - increase = LWIP_MIN(acked, (tcpwnd_size_t)(num_seg * pcb->mss)); - 800b50e: f897 302d ldrb.w r3, [r7, #45] @ 0x2d - 800b512: b29a uxth r2, r3 - 800b514: 687b ldr r3, [r7, #4] - 800b516: 8e5b ldrh r3, [r3, #50] @ 0x32 - 800b518: fb12 f303 smulbb r3, r2, r3 - 800b51c: b29b uxth r3, r3 - 800b51e: 8dfa ldrh r2, [r7, #46] @ 0x2e - 800b520: 4293 cmp r3, r2 - 800b522: bf28 it cs - 800b524: 4613 movcs r3, r2 - 800b526: 857b strh r3, [r7, #42] @ 0x2a - TCP_WND_INC(pcb->cwnd, increase); - 800b528: 687b ldr r3, [r7, #4] - 800b52a: f8b3 2048 ldrh.w r2, [r3, #72] @ 0x48 - 800b52e: 8d7b ldrh r3, [r7, #42] @ 0x2a - 800b530: 4413 add r3, r2 - 800b532: b29a uxth r2, r3 - 800b534: 687b ldr r3, [r7, #4] - 800b536: f8b3 3048 ldrh.w r3, [r3, #72] @ 0x48 - 800b53a: 429a cmp r2, r3 - 800b53c: d309 bcc.n 800b552 - 800b53e: 687b ldr r3, [r7, #4] - 800b540: f8b3 2048 ldrh.w r2, [r3, #72] @ 0x48 - 800b544: 8d7b ldrh r3, [r7, #42] @ 0x2a - 800b546: 4413 add r3, r2 - 800b548: b29a uxth r2, r3 - 800b54a: 687b ldr r3, [r7, #4] - 800b54c: f8a3 2048 strh.w r2, [r3, #72] @ 0x48 - 800b550: e04e b.n 800b5f0 - 800b552: 687b ldr r3, [r7, #4] - 800b554: f64f 72ff movw r2, #65535 @ 0xffff - 800b558: f8a3 2048 strh.w r2, [r3, #72] @ 0x48 - 800b55c: e048 b.n 800b5f0 - LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_receive: slow start cwnd %"TCPWNDSIZE_F"\n", pcb->cwnd)); - } else { - /* RFC 3465, section 2.1 Congestion Avoidance */ - TCP_WND_INC(pcb->bytes_acked, acked); - 800b55e: 687b ldr r3, [r7, #4] - 800b560: f8b3 206a ldrh.w r2, [r3, #106] @ 0x6a - 800b564: 8dfb ldrh r3, [r7, #46] @ 0x2e - 800b566: 4413 add r3, r2 - 800b568: b29a uxth r2, r3 - 800b56a: 687b ldr r3, [r7, #4] - 800b56c: f8b3 306a ldrh.w r3, [r3, #106] @ 0x6a - 800b570: 429a cmp r2, r3 - 800b572: d309 bcc.n 800b588 - 800b574: 687b ldr r3, [r7, #4] - 800b576: f8b3 206a ldrh.w r2, [r3, #106] @ 0x6a - 800b57a: 8dfb ldrh r3, [r7, #46] @ 0x2e - 800b57c: 4413 add r3, r2 - 800b57e: b29a uxth r2, r3 - 800b580: 687b ldr r3, [r7, #4] - 800b582: f8a3 206a strh.w r2, [r3, #106] @ 0x6a - 800b586: e004 b.n 800b592 - 800b588: 687b ldr r3, [r7, #4] - 800b58a: f64f 72ff movw r2, #65535 @ 0xffff - 800b58e: f8a3 206a strh.w r2, [r3, #106] @ 0x6a - if (pcb->bytes_acked >= pcb->cwnd) { - 800b592: 687b ldr r3, [r7, #4] - 800b594: f8b3 206a ldrh.w r2, [r3, #106] @ 0x6a - 800b598: 687b ldr r3, [r7, #4] - 800b59a: f8b3 3048 ldrh.w r3, [r3, #72] @ 0x48 - 800b59e: 429a cmp r2, r3 - 800b5a0: d326 bcc.n 800b5f0 - pcb->bytes_acked = (tcpwnd_size_t)(pcb->bytes_acked - pcb->cwnd); - 800b5a2: 687b ldr r3, [r7, #4] - 800b5a4: f8b3 206a ldrh.w r2, [r3, #106] @ 0x6a - 800b5a8: 687b ldr r3, [r7, #4] - 800b5aa: f8b3 3048 ldrh.w r3, [r3, #72] @ 0x48 - 800b5ae: 1ad3 subs r3, r2, r3 - 800b5b0: b29a uxth r2, r3 - 800b5b2: 687b ldr r3, [r7, #4] - 800b5b4: f8a3 206a strh.w r2, [r3, #106] @ 0x6a - TCP_WND_INC(pcb->cwnd, pcb->mss); - 800b5b8: 687b ldr r3, [r7, #4] - 800b5ba: f8b3 2048 ldrh.w r2, [r3, #72] @ 0x48 - 800b5be: 687b ldr r3, [r7, #4] - 800b5c0: 8e5b ldrh r3, [r3, #50] @ 0x32 - 800b5c2: 4413 add r3, r2 - 800b5c4: b29a uxth r2, r3 - 800b5c6: 687b ldr r3, [r7, #4] - 800b5c8: f8b3 3048 ldrh.w r3, [r3, #72] @ 0x48 - 800b5cc: 429a cmp r2, r3 - 800b5ce: d30a bcc.n 800b5e6 - 800b5d0: 687b ldr r3, [r7, #4] - 800b5d2: f8b3 2048 ldrh.w r2, [r3, #72] @ 0x48 - 800b5d6: 687b ldr r3, [r7, #4] - 800b5d8: 8e5b ldrh r3, [r3, #50] @ 0x32 - 800b5da: 4413 add r3, r2 - 800b5dc: b29a uxth r2, r3 - 800b5de: 687b ldr r3, [r7, #4] - 800b5e0: f8a3 2048 strh.w r2, [r3, #72] @ 0x48 - 800b5e4: e004 b.n 800b5f0 - 800b5e6: 687b ldr r3, [r7, #4] - 800b5e8: f64f 72ff movw r2, #65535 @ 0xffff - 800b5ec: f8a3 2048 strh.w r2, [r3, #72] @ 0x48 - pcb->unacked != NULL ? - lwip_ntohl(pcb->unacked->tcphdr->seqno) + TCP_TCPLEN(pcb->unacked) : 0)); - - /* Remove segment from the unacknowledged list if the incoming - ACK acknowledges them. */ - pcb->unacked = tcp_free_acked_segments(pcb, pcb->unacked, "unacked", pcb->unsent); - 800b5f0: 687b ldr r3, [r7, #4] - 800b5f2: 6f19 ldr r1, [r3, #112] @ 0x70 - 800b5f4: 687b ldr r3, [r7, #4] - 800b5f6: 6edb ldr r3, [r3, #108] @ 0x6c - 800b5f8: 4a98 ldr r2, [pc, #608] @ (800b85c ) - 800b5fa: 6878 ldr r0, [r7, #4] - 800b5fc: f7ff fdca bl 800b194 - 800b600: 4602 mov r2, r0 - 800b602: 687b ldr r3, [r7, #4] - 800b604: 671a str r2, [r3, #112] @ 0x70 - on the list are acknowledged by the ACK. This may seem - strange since an "unsent" segment shouldn't be acked. The - rationale is that lwIP puts all outstanding segments on the - ->unsent list after a retransmission, so these segments may - in fact have been sent once. */ - pcb->unsent = tcp_free_acked_segments(pcb, pcb->unsent, "unsent", pcb->unacked); - 800b606: 687b ldr r3, [r7, #4] - 800b608: 6ed9 ldr r1, [r3, #108] @ 0x6c - 800b60a: 687b ldr r3, [r7, #4] - 800b60c: 6f1b ldr r3, [r3, #112] @ 0x70 - 800b60e: 4a94 ldr r2, [pc, #592] @ (800b860 ) - 800b610: 6878 ldr r0, [r7, #4] - 800b612: f7ff fdbf bl 800b194 - 800b616: 4602 mov r2, r0 - 800b618: 687b ldr r3, [r7, #4] - 800b61a: 66da str r2, [r3, #108] @ 0x6c - - /* If there's nothing left to acknowledge, stop the retransmit - timer, otherwise reset it to start again */ - if (pcb->unacked == NULL) { - 800b61c: 687b ldr r3, [r7, #4] - 800b61e: 6f1b ldr r3, [r3, #112] @ 0x70 - 800b620: 2b00 cmp r3, #0 - 800b622: d104 bne.n 800b62e - pcb->rtime = -1; - 800b624: 687b ldr r3, [r7, #4] - 800b626: f64f 72ff movw r2, #65535 @ 0xffff - 800b62a: 861a strh r2, [r3, #48] @ 0x30 - 800b62c: e002 b.n 800b634 - } else { - pcb->rtime = 0; - 800b62e: 687b ldr r3, [r7, #4] - 800b630: 2200 movs r2, #0 - 800b632: 861a strh r2, [r3, #48] @ 0x30 - } - - pcb->polltmr = 0; - 800b634: 687b ldr r3, [r7, #4] - 800b636: 2200 movs r2, #0 - 800b638: 771a strb r2, [r3, #28] - -#if TCP_OVERSIZE - if (pcb->unsent == NULL) { - 800b63a: 687b ldr r3, [r7, #4] - 800b63c: 6edb ldr r3, [r3, #108] @ 0x6c - 800b63e: 2b00 cmp r3, #0 - 800b640: d103 bne.n 800b64a - pcb->unsent_oversize = 0; - 800b642: 687b ldr r3, [r7, #4] - 800b644: 2200 movs r2, #0 - 800b646: f8a3 2068 strh.w r2, [r3, #104] @ 0x68 - /* Inform neighbor reachability of forward progress. */ - nd6_reachability_hint(ip6_current_src_addr()); - } -#endif /* LWIP_IPV6 && LWIP_ND6_TCP_REACHABILITY_HINTS*/ - - pcb->snd_buf = (tcpwnd_size_t)(pcb->snd_buf + recv_acked); - 800b64a: 687b ldr r3, [r7, #4] - 800b64c: f8b3 2064 ldrh.w r2, [r3, #100] @ 0x64 - 800b650: 4b84 ldr r3, [pc, #528] @ (800b864 ) - 800b652: 881b ldrh r3, [r3, #0] - 800b654: 4413 add r3, r2 - 800b656: b29a uxth r2, r3 - 800b658: 687b ldr r3, [r7, #4] - 800b65a: f8a3 2064 strh.w r2, [r3, #100] @ 0x64 - /* check if this ACK ends our retransmission of in-flight data */ - if (pcb->flags & TF_RTO) { - 800b65e: 687b ldr r3, [r7, #4] - 800b660: 8b5b ldrh r3, [r3, #26] - 800b662: f403 6300 and.w r3, r3, #2048 @ 0x800 - 800b666: 2b00 cmp r3, #0 - 800b668: d035 beq.n 800b6d6 - /* RTO is done if - 1) both queues are empty or - 2) unacked is empty and unsent head contains data not part of RTO or - 3) unacked head contains data not part of RTO */ - if (pcb->unacked == NULL) { - 800b66a: 687b ldr r3, [r7, #4] - 800b66c: 6f1b ldr r3, [r3, #112] @ 0x70 - 800b66e: 2b00 cmp r3, #0 - 800b670: d118 bne.n 800b6a4 - if ((pcb->unsent == NULL) || - 800b672: 687b ldr r3, [r7, #4] - 800b674: 6edb ldr r3, [r3, #108] @ 0x6c - 800b676: 2b00 cmp r3, #0 - 800b678: d00c beq.n 800b694 - (TCP_SEQ_LEQ(pcb->rto_end, lwip_ntohl(pcb->unsent->tcphdr->seqno)))) { - 800b67a: 687b ldr r3, [r7, #4] - 800b67c: 6cdc ldr r4, [r3, #76] @ 0x4c - 800b67e: 687b ldr r3, [r7, #4] - 800b680: 6edb ldr r3, [r3, #108] @ 0x6c - 800b682: 68db ldr r3, [r3, #12] - 800b684: 685b ldr r3, [r3, #4] - 800b686: 4618 mov r0, r3 - 800b688: f7fb f9d3 bl 8006a32 - 800b68c: 4603 mov r3, r0 - 800b68e: 1ae3 subs r3, r4, r3 - if ((pcb->unsent == NULL) || - 800b690: 2b00 cmp r3, #0 - 800b692: dc20 bgt.n 800b6d6 - tcp_clear_flags(pcb, TF_RTO); - 800b694: 687b ldr r3, [r7, #4] - 800b696: 8b5b ldrh r3, [r3, #26] - 800b698: f423 6300 bic.w r3, r3, #2048 @ 0x800 - 800b69c: b29a uxth r2, r3 - 800b69e: 687b ldr r3, [r7, #4] - 800b6a0: 835a strh r2, [r3, #26] - } else if (TCP_SEQ_BETWEEN(ackno, pcb->lastack + 1, pcb->snd_nxt)) { - 800b6a2: e018 b.n 800b6d6 - } - } else if (TCP_SEQ_LEQ(pcb->rto_end, lwip_ntohl(pcb->unacked->tcphdr->seqno))) { - 800b6a4: 687b ldr r3, [r7, #4] - 800b6a6: 6cdc ldr r4, [r3, #76] @ 0x4c - 800b6a8: 687b ldr r3, [r7, #4] - 800b6aa: 6f1b ldr r3, [r3, #112] @ 0x70 - 800b6ac: 68db ldr r3, [r3, #12] - 800b6ae: 685b ldr r3, [r3, #4] - 800b6b0: 4618 mov r0, r3 - 800b6b2: f7fb f9be bl 8006a32 - 800b6b6: 4603 mov r3, r0 - 800b6b8: 1ae3 subs r3, r4, r3 - 800b6ba: 2b00 cmp r3, #0 - 800b6bc: dc0b bgt.n 800b6d6 - tcp_clear_flags(pcb, TF_RTO); - 800b6be: 687b ldr r3, [r7, #4] - 800b6c0: 8b5b ldrh r3, [r3, #26] - 800b6c2: f423 6300 bic.w r3, r3, #2048 @ 0x800 - 800b6c6: b29a uxth r2, r3 - 800b6c8: 687b ldr r3, [r7, #4] - 800b6ca: 835a strh r2, [r3, #26] - } else if (TCP_SEQ_BETWEEN(ackno, pcb->lastack + 1, pcb->snd_nxt)) { - 800b6cc: e003 b.n 800b6d6 - } - } - /* End of ACK for new data processing. */ - } else { - /* Out of sequence ACK, didn't really ack anything */ - tcp_send_empty_ack(pcb); - 800b6ce: 6878 ldr r0, [r7, #4] - 800b6d0: f001 ff70 bl 800d5b4 - 800b6d4: e000 b.n 800b6d8 - } else if (TCP_SEQ_BETWEEN(ackno, pcb->lastack + 1, pcb->snd_nxt)) { - 800b6d6: bf00 nop - pcb->rttest, pcb->rtseq, ackno)); - - /* RTT estimation calculations. This is done by checking if the - incoming segment acknowledges the segment we use to take a - round-trip time measurement. */ - if (pcb->rttest && TCP_SEQ_LT(pcb->rtseq, ackno)) { - 800b6d8: 687b ldr r3, [r7, #4] - 800b6da: 6b5b ldr r3, [r3, #52] @ 0x34 - 800b6dc: 2b00 cmp r3, #0 - 800b6de: d05b beq.n 800b798 - 800b6e0: 687b ldr r3, [r7, #4] - 800b6e2: 6b9a ldr r2, [r3, #56] @ 0x38 - 800b6e4: 4b60 ldr r3, [pc, #384] @ (800b868 ) - 800b6e6: 681b ldr r3, [r3, #0] - 800b6e8: 1ad3 subs r3, r2, r3 - 800b6ea: 2b00 cmp r3, #0 - 800b6ec: da54 bge.n 800b798 - /* diff between this shouldn't exceed 32K since this are tcp timer ticks - and a round-trip shouldn't be that long... */ - m = (s16_t)(tcp_ticks - pcb->rttest); - 800b6ee: 4b5f ldr r3, [pc, #380] @ (800b86c ) - 800b6f0: 681b ldr r3, [r3, #0] - 800b6f2: b29a uxth r2, r3 - 800b6f4: 687b ldr r3, [r7, #4] - 800b6f6: 6b5b ldr r3, [r3, #52] @ 0x34 - 800b6f8: b29b uxth r3, r3 - 800b6fa: 1ad3 subs r3, r2, r3 - 800b6fc: b29b uxth r3, r3 - 800b6fe: f8a7 304e strh.w r3, [r7, #78] @ 0x4e - - LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_receive: experienced rtt %"U16_F" ticks (%"U16_F" msec).\n", - m, (u16_t)(m * TCP_SLOW_INTERVAL))); - - /* This is taken directly from VJs original code in his paper */ - m = (s16_t)(m - (pcb->sa >> 3)); - 800b702: f8b7 204e ldrh.w r2, [r7, #78] @ 0x4e - 800b706: 687b ldr r3, [r7, #4] - 800b708: f9b3 303c ldrsh.w r3, [r3, #60] @ 0x3c - 800b70c: 10db asrs r3, r3, #3 - 800b70e: b21b sxth r3, r3 - 800b710: b29b uxth r3, r3 - 800b712: 1ad3 subs r3, r2, r3 - 800b714: b29b uxth r3, r3 - 800b716: f8a7 304e strh.w r3, [r7, #78] @ 0x4e - pcb->sa = (s16_t)(pcb->sa + m); - 800b71a: 687b ldr r3, [r7, #4] - 800b71c: f9b3 303c ldrsh.w r3, [r3, #60] @ 0x3c - 800b720: b29a uxth r2, r3 - 800b722: f8b7 304e ldrh.w r3, [r7, #78] @ 0x4e - 800b726: 4413 add r3, r2 - 800b728: b29b uxth r3, r3 - 800b72a: b21a sxth r2, r3 - 800b72c: 687b ldr r3, [r7, #4] - 800b72e: 879a strh r2, [r3, #60] @ 0x3c - if (m < 0) { - 800b730: f9b7 304e ldrsh.w r3, [r7, #78] @ 0x4e - 800b734: 2b00 cmp r3, #0 - 800b736: da05 bge.n 800b744 - m = (s16_t) - m; - 800b738: f8b7 304e ldrh.w r3, [r7, #78] @ 0x4e - 800b73c: 425b negs r3, r3 - 800b73e: b29b uxth r3, r3 - 800b740: f8a7 304e strh.w r3, [r7, #78] @ 0x4e - } - m = (s16_t)(m - (pcb->sv >> 2)); - 800b744: f8b7 204e ldrh.w r2, [r7, #78] @ 0x4e - 800b748: 687b ldr r3, [r7, #4] - 800b74a: f9b3 303e ldrsh.w r3, [r3, #62] @ 0x3e - 800b74e: 109b asrs r3, r3, #2 - 800b750: b21b sxth r3, r3 - 800b752: b29b uxth r3, r3 - 800b754: 1ad3 subs r3, r2, r3 - 800b756: b29b uxth r3, r3 - 800b758: f8a7 304e strh.w r3, [r7, #78] @ 0x4e - pcb->sv = (s16_t)(pcb->sv + m); - 800b75c: 687b ldr r3, [r7, #4] - 800b75e: f9b3 303e ldrsh.w r3, [r3, #62] @ 0x3e - 800b762: b29a uxth r2, r3 - 800b764: f8b7 304e ldrh.w r3, [r7, #78] @ 0x4e - 800b768: 4413 add r3, r2 - 800b76a: b29b uxth r3, r3 - 800b76c: b21a sxth r2, r3 - 800b76e: 687b ldr r3, [r7, #4] - 800b770: 87da strh r2, [r3, #62] @ 0x3e - pcb->rto = (s16_t)((pcb->sa >> 3) + pcb->sv); - 800b772: 687b ldr r3, [r7, #4] - 800b774: f9b3 303c ldrsh.w r3, [r3, #60] @ 0x3c - 800b778: 10db asrs r3, r3, #3 - 800b77a: b21b sxth r3, r3 - 800b77c: b29a uxth r2, r3 - 800b77e: 687b ldr r3, [r7, #4] - 800b780: f9b3 303e ldrsh.w r3, [r3, #62] @ 0x3e - 800b784: b29b uxth r3, r3 - 800b786: 4413 add r3, r2 - 800b788: b29b uxth r3, r3 - 800b78a: b21a sxth r2, r3 - 800b78c: 687b ldr r3, [r7, #4] - 800b78e: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 - - LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_receive: RTO %"U16_F" (%"U16_F" milliseconds)\n", - pcb->rto, (u16_t)(pcb->rto * TCP_SLOW_INTERVAL))); - - pcb->rttest = 0; - 800b792: 687b ldr r3, [r7, #4] - 800b794: 2200 movs r2, #0 - 800b796: 635a str r2, [r3, #52] @ 0x34 - - /* If the incoming segment contains data, we must process it - further unless the pcb already received a FIN. - (RFC 793, chapter 3.9, "SEGMENT ARRIVES" in states CLOSE-WAIT, CLOSING, - LAST-ACK and TIME-WAIT: "Ignore the segment text.") */ - if ((tcplen > 0) && (pcb->state < CLOSE_WAIT)) { - 800b798: 4b35 ldr r3, [pc, #212] @ (800b870 ) - 800b79a: 881b ldrh r3, [r3, #0] - 800b79c: 2b00 cmp r3, #0 - 800b79e: f000 84df beq.w 800c160 - 800b7a2: 687b ldr r3, [r7, #4] - 800b7a4: 7d1b ldrb r3, [r3, #20] - 800b7a6: 2b06 cmp r3, #6 - 800b7a8: f200 84da bhi.w 800c160 - this if the sequence number of the incoming segment is less - than rcv_nxt, and the sequence number plus the length of the - segment is larger than rcv_nxt. */ - /* if (TCP_SEQ_LT(seqno, pcb->rcv_nxt)) { - if (TCP_SEQ_LT(pcb->rcv_nxt, seqno + tcplen)) {*/ - if (TCP_SEQ_BETWEEN(pcb->rcv_nxt, seqno + 1, seqno + tcplen - 1)) { - 800b7ac: 687b ldr r3, [r7, #4] - 800b7ae: 6a5a ldr r2, [r3, #36] @ 0x24 - 800b7b0: 4b30 ldr r3, [pc, #192] @ (800b874 ) - 800b7b2: 681b ldr r3, [r3, #0] - 800b7b4: 1ad3 subs r3, r2, r3 - 800b7b6: 3b01 subs r3, #1 - 800b7b8: 2b00 cmp r3, #0 - 800b7ba: f2c0 808f blt.w 800b8dc - 800b7be: 687b ldr r3, [r7, #4] - 800b7c0: 6a5a ldr r2, [r3, #36] @ 0x24 - 800b7c2: 4b2b ldr r3, [pc, #172] @ (800b870 ) - 800b7c4: 881b ldrh r3, [r3, #0] - 800b7c6: 4619 mov r1, r3 - 800b7c8: 4b2a ldr r3, [pc, #168] @ (800b874 ) - 800b7ca: 681b ldr r3, [r3, #0] - 800b7cc: 440b add r3, r1 - 800b7ce: 1ad3 subs r3, r2, r3 - 800b7d0: 3301 adds r3, #1 - 800b7d2: 2b00 cmp r3, #0 - 800b7d4: f300 8082 bgt.w 800b8dc - - After we are done with adjusting the pbuf pointers we must - adjust the ->data pointer in the seg and the segment - length.*/ - - struct pbuf *p = inseg.p; - 800b7d8: 4b27 ldr r3, [pc, #156] @ (800b878 ) - 800b7da: 685b ldr r3, [r3, #4] - 800b7dc: 647b str r3, [r7, #68] @ 0x44 - u32_t off32 = pcb->rcv_nxt - seqno; - 800b7de: 687b ldr r3, [r7, #4] - 800b7e0: 6a5a ldr r2, [r3, #36] @ 0x24 - 800b7e2: 4b24 ldr r3, [pc, #144] @ (800b874 ) - 800b7e4: 681b ldr r3, [r3, #0] - 800b7e6: 1ad3 subs r3, r2, r3 - 800b7e8: 627b str r3, [r7, #36] @ 0x24 - u16_t new_tot_len, off; - LWIP_ASSERT("inseg.p != NULL", inseg.p); - 800b7ea: 4b23 ldr r3, [pc, #140] @ (800b878 ) - 800b7ec: 685b ldr r3, [r3, #4] - 800b7ee: 2b00 cmp r3, #0 - 800b7f0: d106 bne.n 800b800 - 800b7f2: 4b22 ldr r3, [pc, #136] @ (800b87c ) - 800b7f4: f240 5294 movw r2, #1428 @ 0x594 - 800b7f8: 4921 ldr r1, [pc, #132] @ (800b880 ) - 800b7fa: 4822 ldr r0, [pc, #136] @ (800b884 ) - 800b7fc: f007 fa3c bl 8012c78 - LWIP_ASSERT("insane offset!", (off32 < 0xffff)); - 800b800: 6a7b ldr r3, [r7, #36] @ 0x24 - 800b802: f64f 72fe movw r2, #65534 @ 0xfffe - 800b806: 4293 cmp r3, r2 - 800b808: d906 bls.n 800b818 - 800b80a: 4b1c ldr r3, [pc, #112] @ (800b87c ) - 800b80c: f240 5295 movw r2, #1429 @ 0x595 - 800b810: 491d ldr r1, [pc, #116] @ (800b888 ) - 800b812: 481c ldr r0, [pc, #112] @ (800b884 ) - 800b814: f007 fa30 bl 8012c78 - off = (u16_t)off32; - 800b818: 6a7b ldr r3, [r7, #36] @ 0x24 - 800b81a: f8a7 3042 strh.w r3, [r7, #66] @ 0x42 - LWIP_ASSERT("pbuf too short!", (((s32_t)inseg.p->tot_len) >= off)); - 800b81e: 4b16 ldr r3, [pc, #88] @ (800b878 ) - 800b820: 685b ldr r3, [r3, #4] - 800b822: 891b ldrh r3, [r3, #8] - 800b824: f8b7 2042 ldrh.w r2, [r7, #66] @ 0x42 - 800b828: 429a cmp r2, r3 - 800b82a: d906 bls.n 800b83a - 800b82c: 4b13 ldr r3, [pc, #76] @ (800b87c ) - 800b82e: f240 5297 movw r2, #1431 @ 0x597 - 800b832: 4916 ldr r1, [pc, #88] @ (800b88c ) - 800b834: 4813 ldr r0, [pc, #76] @ (800b884 ) - 800b836: f007 fa1f bl 8012c78 - inseg.len -= off; - 800b83a: 4b0f ldr r3, [pc, #60] @ (800b878 ) - 800b83c: 891a ldrh r2, [r3, #8] - 800b83e: f8b7 3042 ldrh.w r3, [r7, #66] @ 0x42 - 800b842: 1ad3 subs r3, r2, r3 - 800b844: b29a uxth r2, r3 - 800b846: 4b0c ldr r3, [pc, #48] @ (800b878 ) - 800b848: 811a strh r2, [r3, #8] - new_tot_len = (u16_t)(inseg.p->tot_len - off); - 800b84a: 4b0b ldr r3, [pc, #44] @ (800b878 ) - 800b84c: 685b ldr r3, [r3, #4] - 800b84e: 891a ldrh r2, [r3, #8] - 800b850: f8b7 3042 ldrh.w r3, [r7, #66] @ 0x42 - 800b854: 1ad3 subs r3, r2, r3 - 800b856: 847b strh r3, [r7, #34] @ 0x22 - while (p->len < off) { - 800b858: e02a b.n 800b8b0 - 800b85a: bf00 nop - 800b85c: 08018c94 .word 0x08018c94 - 800b860: 08018c9c .word 0x08018c9c - 800b864: 2001912c .word 0x2001912c - 800b868: 20019128 .word 0x20019128 - 800b86c: 200190ec .word 0x200190ec - 800b870: 2001912e .word 0x2001912e - 800b874: 20019124 .word 0x20019124 - 800b878: 20019104 .word 0x20019104 - 800b87c: 0801892c .word 0x0801892c - 800b880: 08018ca4 .word 0x08018ca4 - 800b884: 08018978 .word 0x08018978 - 800b888: 08018cb4 .word 0x08018cb4 - 800b88c: 08018cc4 .word 0x08018cc4 - off -= p->len; - 800b890: 6c7b ldr r3, [r7, #68] @ 0x44 - 800b892: 895b ldrh r3, [r3, #10] - 800b894: f8b7 2042 ldrh.w r2, [r7, #66] @ 0x42 - 800b898: 1ad3 subs r3, r2, r3 - 800b89a: f8a7 3042 strh.w r3, [r7, #66] @ 0x42 - /* all pbufs up to and including this one have len==0, so tot_len is equal */ - p->tot_len = new_tot_len; - 800b89e: 6c7b ldr r3, [r7, #68] @ 0x44 - 800b8a0: 8c7a ldrh r2, [r7, #34] @ 0x22 - 800b8a2: 811a strh r2, [r3, #8] - p->len = 0; - 800b8a4: 6c7b ldr r3, [r7, #68] @ 0x44 - 800b8a6: 2200 movs r2, #0 - 800b8a8: 815a strh r2, [r3, #10] - p = p->next; - 800b8aa: 6c7b ldr r3, [r7, #68] @ 0x44 - 800b8ac: 681b ldr r3, [r3, #0] - 800b8ae: 647b str r3, [r7, #68] @ 0x44 - while (p->len < off) { - 800b8b0: 6c7b ldr r3, [r7, #68] @ 0x44 - 800b8b2: 895b ldrh r3, [r3, #10] - 800b8b4: f8b7 2042 ldrh.w r2, [r7, #66] @ 0x42 - 800b8b8: 429a cmp r2, r3 - 800b8ba: d8e9 bhi.n 800b890 - } - /* cannot fail... */ - pbuf_remove_header(p, off); - 800b8bc: f8b7 3042 ldrh.w r3, [r7, #66] @ 0x42 - 800b8c0: 4619 mov r1, r3 - 800b8c2: 6c78 ldr r0, [r7, #68] @ 0x44 - 800b8c4: f7fc fb6a bl 8007f9c - inseg.tcphdr->seqno = seqno = pcb->rcv_nxt; - 800b8c8: 687b ldr r3, [r7, #4] - 800b8ca: 6a5b ldr r3, [r3, #36] @ 0x24 - 800b8cc: 4a90 ldr r2, [pc, #576] @ (800bb10 ) - 800b8ce: 6013 str r3, [r2, #0] - 800b8d0: 4b90 ldr r3, [pc, #576] @ (800bb14 ) - 800b8d2: 68db ldr r3, [r3, #12] - 800b8d4: 4a8e ldr r2, [pc, #568] @ (800bb10 ) - 800b8d6: 6812 ldr r2, [r2, #0] - 800b8d8: 605a str r2, [r3, #4] - if (TCP_SEQ_BETWEEN(pcb->rcv_nxt, seqno + 1, seqno + tcplen - 1)) { - 800b8da: e00d b.n 800b8f8 - } else { - if (TCP_SEQ_LT(seqno, pcb->rcv_nxt)) { - 800b8dc: 4b8c ldr r3, [pc, #560] @ (800bb10 ) - 800b8de: 681a ldr r2, [r3, #0] - 800b8e0: 687b ldr r3, [r7, #4] - 800b8e2: 6a5b ldr r3, [r3, #36] @ 0x24 - 800b8e4: 1ad3 subs r3, r2, r3 - 800b8e6: 2b00 cmp r3, #0 - 800b8e8: da06 bge.n 800b8f8 - /* the whole segment is < rcv_nxt */ - /* must be a duplicate of a packet that has already been correctly handled */ - - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: duplicate seqno %"U32_F"\n", seqno)); - tcp_ack_now(pcb); - 800b8ea: 687b ldr r3, [r7, #4] - 800b8ec: 8b5b ldrh r3, [r3, #26] - 800b8ee: f043 0302 orr.w r3, r3, #2 - 800b8f2: b29a uxth r2, r3 - 800b8f4: 687b ldr r3, [r7, #4] - 800b8f6: 835a strh r2, [r3, #26] - } - - /* The sequence number must be within the window (above rcv_nxt - and below rcv_nxt + rcv_wnd) in order to be further - processed. */ - if (TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt, - 800b8f8: 4b85 ldr r3, [pc, #532] @ (800bb10 ) - 800b8fa: 681a ldr r2, [r3, #0] - 800b8fc: 687b ldr r3, [r7, #4] - 800b8fe: 6a5b ldr r3, [r3, #36] @ 0x24 - 800b900: 1ad3 subs r3, r2, r3 - 800b902: 2b00 cmp r3, #0 - 800b904: f2c0 8427 blt.w 800c156 - 800b908: 4b81 ldr r3, [pc, #516] @ (800bb10 ) - 800b90a: 681a ldr r2, [r3, #0] - 800b90c: 687b ldr r3, [r7, #4] - 800b90e: 6a5b ldr r3, [r3, #36] @ 0x24 - 800b910: 6879 ldr r1, [r7, #4] - 800b912: 8d09 ldrh r1, [r1, #40] @ 0x28 - 800b914: 440b add r3, r1 - 800b916: 1ad3 subs r3, r2, r3 - 800b918: 3301 adds r3, #1 - 800b91a: 2b00 cmp r3, #0 - 800b91c: f300 841b bgt.w 800c156 - pcb->rcv_nxt + pcb->rcv_wnd - 1)) { - if (pcb->rcv_nxt == seqno) { - 800b920: 687b ldr r3, [r7, #4] - 800b922: 6a5a ldr r2, [r3, #36] @ 0x24 - 800b924: 4b7a ldr r3, [pc, #488] @ (800bb10 ) - 800b926: 681b ldr r3, [r3, #0] - 800b928: 429a cmp r2, r3 - 800b92a: f040 8298 bne.w 800be5e - /* The incoming segment is the next in sequence. We check if - we have to trim the end of the segment and update rcv_nxt - and pass the data to the application. */ - tcplen = TCP_TCPLEN(&inseg); - 800b92e: 4b79 ldr r3, [pc, #484] @ (800bb14 ) - 800b930: 891c ldrh r4, [r3, #8] - 800b932: 4b78 ldr r3, [pc, #480] @ (800bb14 ) - 800b934: 68db ldr r3, [r3, #12] - 800b936: 899b ldrh r3, [r3, #12] - 800b938: b29b uxth r3, r3 - 800b93a: 4618 mov r0, r3 - 800b93c: f7fb f864 bl 8006a08 - 800b940: 4603 mov r3, r0 - 800b942: b2db uxtb r3, r3 - 800b944: f003 0303 and.w r3, r3, #3 - 800b948: 2b00 cmp r3, #0 - 800b94a: d001 beq.n 800b950 - 800b94c: 2301 movs r3, #1 - 800b94e: e000 b.n 800b952 - 800b950: 2300 movs r3, #0 - 800b952: 4423 add r3, r4 - 800b954: b29a uxth r2, r3 - 800b956: 4b70 ldr r3, [pc, #448] @ (800bb18 ) - 800b958: 801a strh r2, [r3, #0] - - if (tcplen > pcb->rcv_wnd) { - 800b95a: 687b ldr r3, [r7, #4] - 800b95c: 8d1a ldrh r2, [r3, #40] @ 0x28 - 800b95e: 4b6e ldr r3, [pc, #440] @ (800bb18 ) - 800b960: 881b ldrh r3, [r3, #0] - 800b962: 429a cmp r2, r3 - 800b964: d274 bcs.n 800ba50 - LWIP_DEBUGF(TCP_INPUT_DEBUG, - ("tcp_receive: other end overran receive window" - "seqno %"U32_F" len %"U16_F" right edge %"U32_F"\n", - seqno, tcplen, pcb->rcv_nxt + pcb->rcv_wnd)); - if (TCPH_FLAGS(inseg.tcphdr) & TCP_FIN) { - 800b966: 4b6b ldr r3, [pc, #428] @ (800bb14 ) - 800b968: 68db ldr r3, [r3, #12] - 800b96a: 899b ldrh r3, [r3, #12] - 800b96c: b29b uxth r3, r3 - 800b96e: 4618 mov r0, r3 - 800b970: f7fb f84a bl 8006a08 - 800b974: 4603 mov r3, r0 - 800b976: b2db uxtb r3, r3 - 800b978: f003 0301 and.w r3, r3, #1 - 800b97c: 2b00 cmp r3, #0 - 800b97e: d01e beq.n 800b9be - /* Must remove the FIN from the header as we're trimming - * that byte of sequence-space from the packet */ - TCPH_FLAGS_SET(inseg.tcphdr, TCPH_FLAGS(inseg.tcphdr) & ~(unsigned int)TCP_FIN); - 800b980: 4b64 ldr r3, [pc, #400] @ (800bb14 ) - 800b982: 68db ldr r3, [r3, #12] - 800b984: 899b ldrh r3, [r3, #12] - 800b986: b29b uxth r3, r3 - 800b988: b21b sxth r3, r3 - 800b98a: f423 537c bic.w r3, r3, #16128 @ 0x3f00 - 800b98e: b21c sxth r4, r3 - 800b990: 4b60 ldr r3, [pc, #384] @ (800bb14 ) - 800b992: 68db ldr r3, [r3, #12] - 800b994: 899b ldrh r3, [r3, #12] - 800b996: b29b uxth r3, r3 - 800b998: 4618 mov r0, r3 - 800b99a: f7fb f835 bl 8006a08 - 800b99e: 4603 mov r3, r0 - 800b9a0: b2db uxtb r3, r3 - 800b9a2: f003 033e and.w r3, r3, #62 @ 0x3e - 800b9a6: b29b uxth r3, r3 - 800b9a8: 4618 mov r0, r3 - 800b9aa: f7fb f82d bl 8006a08 - 800b9ae: 4603 mov r3, r0 - 800b9b0: b21b sxth r3, r3 - 800b9b2: 4323 orrs r3, r4 - 800b9b4: b21a sxth r2, r3 - 800b9b6: 4b57 ldr r3, [pc, #348] @ (800bb14 ) - 800b9b8: 68db ldr r3, [r3, #12] - 800b9ba: b292 uxth r2, r2 - 800b9bc: 819a strh r2, [r3, #12] - } - /* Adjust length of segment to fit in the window. */ - TCPWND_CHECK16(pcb->rcv_wnd); - inseg.len = (u16_t)pcb->rcv_wnd; - 800b9be: 687b ldr r3, [r7, #4] - 800b9c0: 8d1a ldrh r2, [r3, #40] @ 0x28 - 800b9c2: 4b54 ldr r3, [pc, #336] @ (800bb14 ) - 800b9c4: 811a strh r2, [r3, #8] - if (TCPH_FLAGS(inseg.tcphdr) & TCP_SYN) { - 800b9c6: 4b53 ldr r3, [pc, #332] @ (800bb14 ) - 800b9c8: 68db ldr r3, [r3, #12] - 800b9ca: 899b ldrh r3, [r3, #12] - 800b9cc: b29b uxth r3, r3 - 800b9ce: 4618 mov r0, r3 - 800b9d0: f7fb f81a bl 8006a08 - 800b9d4: 4603 mov r3, r0 - 800b9d6: b2db uxtb r3, r3 - 800b9d8: f003 0302 and.w r3, r3, #2 - 800b9dc: 2b00 cmp r3, #0 - 800b9de: d005 beq.n 800b9ec - inseg.len -= 1; - 800b9e0: 4b4c ldr r3, [pc, #304] @ (800bb14 ) - 800b9e2: 891b ldrh r3, [r3, #8] - 800b9e4: 3b01 subs r3, #1 - 800b9e6: b29a uxth r2, r3 - 800b9e8: 4b4a ldr r3, [pc, #296] @ (800bb14 ) - 800b9ea: 811a strh r2, [r3, #8] - } - pbuf_realloc(inseg.p, inseg.len); - 800b9ec: 4b49 ldr r3, [pc, #292] @ (800bb14 ) - 800b9ee: 685b ldr r3, [r3, #4] - 800b9f0: 4a48 ldr r2, [pc, #288] @ (800bb14 ) - 800b9f2: 8912 ldrh r2, [r2, #8] - 800b9f4: 4611 mov r1, r2 - 800b9f6: 4618 mov r0, r3 - 800b9f8: f7fc f9d2 bl 8007da0 - tcplen = TCP_TCPLEN(&inseg); - 800b9fc: 4b45 ldr r3, [pc, #276] @ (800bb14 ) - 800b9fe: 891c ldrh r4, [r3, #8] - 800ba00: 4b44 ldr r3, [pc, #272] @ (800bb14 ) - 800ba02: 68db ldr r3, [r3, #12] - 800ba04: 899b ldrh r3, [r3, #12] - 800ba06: b29b uxth r3, r3 - 800ba08: 4618 mov r0, r3 - 800ba0a: f7fa fffd bl 8006a08 - 800ba0e: 4603 mov r3, r0 - 800ba10: b2db uxtb r3, r3 - 800ba12: f003 0303 and.w r3, r3, #3 - 800ba16: 2b00 cmp r3, #0 - 800ba18: d001 beq.n 800ba1e - 800ba1a: 2301 movs r3, #1 - 800ba1c: e000 b.n 800ba20 - 800ba1e: 2300 movs r3, #0 - 800ba20: 4423 add r3, r4 - 800ba22: b29a uxth r2, r3 - 800ba24: 4b3c ldr r3, [pc, #240] @ (800bb18 ) - 800ba26: 801a strh r2, [r3, #0] - LWIP_ASSERT("tcp_receive: segment not trimmed correctly to rcv_wnd\n", - 800ba28: 4b3b ldr r3, [pc, #236] @ (800bb18 ) - 800ba2a: 881b ldrh r3, [r3, #0] - 800ba2c: 461a mov r2, r3 - 800ba2e: 4b38 ldr r3, [pc, #224] @ (800bb10 ) - 800ba30: 681b ldr r3, [r3, #0] - 800ba32: 441a add r2, r3 - 800ba34: 687b ldr r3, [r7, #4] - 800ba36: 6a5b ldr r3, [r3, #36] @ 0x24 - 800ba38: 6879 ldr r1, [r7, #4] - 800ba3a: 8d09 ldrh r1, [r1, #40] @ 0x28 - 800ba3c: 440b add r3, r1 - 800ba3e: 429a cmp r2, r3 - 800ba40: d006 beq.n 800ba50 - 800ba42: 4b36 ldr r3, [pc, #216] @ (800bb1c ) - 800ba44: f240 52cb movw r2, #1483 @ 0x5cb - 800ba48: 4935 ldr r1, [pc, #212] @ (800bb20 ) - 800ba4a: 4836 ldr r0, [pc, #216] @ (800bb24 ) - 800ba4c: f007 f914 bl 8012c78 - } -#if TCP_QUEUE_OOSEQ - /* Received in-sequence data, adjust ooseq data if: - - FIN has been received or - - inseq overlaps with ooseq */ - if (pcb->ooseq != NULL) { - 800ba50: 687b ldr r3, [r7, #4] - 800ba52: 6f5b ldr r3, [r3, #116] @ 0x74 - 800ba54: 2b00 cmp r3, #0 - 800ba56: f000 80e6 beq.w 800bc26 - if (TCPH_FLAGS(inseg.tcphdr) & TCP_FIN) { - 800ba5a: 4b2e ldr r3, [pc, #184] @ (800bb14 ) - 800ba5c: 68db ldr r3, [r3, #12] - 800ba5e: 899b ldrh r3, [r3, #12] - 800ba60: b29b uxth r3, r3 - 800ba62: 4618 mov r0, r3 - 800ba64: f7fa ffd0 bl 8006a08 - 800ba68: 4603 mov r3, r0 - 800ba6a: b2db uxtb r3, r3 - 800ba6c: f003 0301 and.w r3, r3, #1 - 800ba70: 2b00 cmp r3, #0 - 800ba72: d010 beq.n 800ba96 - LWIP_DEBUGF(TCP_INPUT_DEBUG, - ("tcp_receive: received in-order FIN, binning ooseq queue\n")); - /* Received in-order FIN means anything that was received - * out of order must now have been received in-order, so - * bin the ooseq queue */ - while (pcb->ooseq != NULL) { - 800ba74: e00a b.n 800ba8c - struct tcp_seg *old_ooseq = pcb->ooseq; - 800ba76: 687b ldr r3, [r7, #4] - 800ba78: 6f5b ldr r3, [r3, #116] @ 0x74 - 800ba7a: 60fb str r3, [r7, #12] - pcb->ooseq = pcb->ooseq->next; - 800ba7c: 687b ldr r3, [r7, #4] - 800ba7e: 6f5b ldr r3, [r3, #116] @ 0x74 - 800ba80: 681a ldr r2, [r3, #0] - 800ba82: 687b ldr r3, [r7, #4] - 800ba84: 675a str r2, [r3, #116] @ 0x74 - tcp_seg_free(old_ooseq); - 800ba86: 68f8 ldr r0, [r7, #12] - 800ba88: f7fd fd93 bl 80095b2 - while (pcb->ooseq != NULL) { - 800ba8c: 687b ldr r3, [r7, #4] - 800ba8e: 6f5b ldr r3, [r3, #116] @ 0x74 - 800ba90: 2b00 cmp r3, #0 - 800ba92: d1f0 bne.n 800ba76 - 800ba94: e0c7 b.n 800bc26 - } - } else { - struct tcp_seg *next = pcb->ooseq; - 800ba96: 687b ldr r3, [r7, #4] - 800ba98: 6f5b ldr r3, [r3, #116] @ 0x74 - 800ba9a: 63fb str r3, [r7, #60] @ 0x3c - /* Remove all segments on ooseq that are covered by inseg already. - * FIN is copied from ooseq to inseg if present. */ - while (next && - 800ba9c: e051 b.n 800bb42 - TCP_SEQ_GEQ(seqno + tcplen, - next->tcphdr->seqno + next->len)) { - struct tcp_seg *tmp; - /* inseg cannot have FIN here (already processed above) */ - if ((TCPH_FLAGS(next->tcphdr) & TCP_FIN) != 0 && - 800ba9e: 6bfb ldr r3, [r7, #60] @ 0x3c - 800baa0: 68db ldr r3, [r3, #12] - 800baa2: 899b ldrh r3, [r3, #12] - 800baa4: b29b uxth r3, r3 - 800baa6: 4618 mov r0, r3 - 800baa8: f7fa ffae bl 8006a08 - 800baac: 4603 mov r3, r0 - 800baae: b2db uxtb r3, r3 - 800bab0: f003 0301 and.w r3, r3, #1 - 800bab4: 2b00 cmp r3, #0 - 800bab6: d03c beq.n 800bb32 - (TCPH_FLAGS(inseg.tcphdr) & TCP_SYN) == 0) { - 800bab8: 4b16 ldr r3, [pc, #88] @ (800bb14 ) - 800baba: 68db ldr r3, [r3, #12] - 800babc: 899b ldrh r3, [r3, #12] - 800babe: b29b uxth r3, r3 - 800bac0: 4618 mov r0, r3 - 800bac2: f7fa ffa1 bl 8006a08 - 800bac6: 4603 mov r3, r0 - 800bac8: b2db uxtb r3, r3 - 800baca: f003 0302 and.w r3, r3, #2 - if ((TCPH_FLAGS(next->tcphdr) & TCP_FIN) != 0 && - 800bace: 2b00 cmp r3, #0 - 800bad0: d12f bne.n 800bb32 - TCPH_SET_FLAG(inseg.tcphdr, TCP_FIN); - 800bad2: 4b10 ldr r3, [pc, #64] @ (800bb14 ) - 800bad4: 68db ldr r3, [r3, #12] - 800bad6: 899b ldrh r3, [r3, #12] - 800bad8: b29c uxth r4, r3 - 800bada: 2001 movs r0, #1 - 800badc: f7fa ff94 bl 8006a08 - 800bae0: 4603 mov r3, r0 - 800bae2: 461a mov r2, r3 - 800bae4: 4b0b ldr r3, [pc, #44] @ (800bb14 ) - 800bae6: 68db ldr r3, [r3, #12] - 800bae8: 4322 orrs r2, r4 - 800baea: b292 uxth r2, r2 - 800baec: 819a strh r2, [r3, #12] - tcplen = TCP_TCPLEN(&inseg); - 800baee: 4b09 ldr r3, [pc, #36] @ (800bb14 ) - 800baf0: 891c ldrh r4, [r3, #8] - 800baf2: 4b08 ldr r3, [pc, #32] @ (800bb14 ) - 800baf4: 68db ldr r3, [r3, #12] - 800baf6: 899b ldrh r3, [r3, #12] - 800baf8: b29b uxth r3, r3 - 800bafa: 4618 mov r0, r3 - 800bafc: f7fa ff84 bl 8006a08 - 800bb00: 4603 mov r3, r0 - 800bb02: b2db uxtb r3, r3 - 800bb04: f003 0303 and.w r3, r3, #3 - 800bb08: 2b00 cmp r3, #0 - 800bb0a: d00d beq.n 800bb28 - 800bb0c: 2301 movs r3, #1 - 800bb0e: e00c b.n 800bb2a - 800bb10: 20019124 .word 0x20019124 - 800bb14: 20019104 .word 0x20019104 - 800bb18: 2001912e .word 0x2001912e - 800bb1c: 0801892c .word 0x0801892c - 800bb20: 08018cd4 .word 0x08018cd4 - 800bb24: 08018978 .word 0x08018978 - 800bb28: 2300 movs r3, #0 - 800bb2a: 4423 add r3, r4 - 800bb2c: b29a uxth r2, r3 - 800bb2e: 4b98 ldr r3, [pc, #608] @ (800bd90 ) - 800bb30: 801a strh r2, [r3, #0] - } - tmp = next; - 800bb32: 6bfb ldr r3, [r7, #60] @ 0x3c - 800bb34: 613b str r3, [r7, #16] - next = next->next; - 800bb36: 6bfb ldr r3, [r7, #60] @ 0x3c - 800bb38: 681b ldr r3, [r3, #0] - 800bb3a: 63fb str r3, [r7, #60] @ 0x3c - tcp_seg_free(tmp); - 800bb3c: 6938 ldr r0, [r7, #16] - 800bb3e: f7fd fd38 bl 80095b2 - while (next && - 800bb42: 6bfb ldr r3, [r7, #60] @ 0x3c - 800bb44: 2b00 cmp r3, #0 - 800bb46: d00e beq.n 800bb66 - TCP_SEQ_GEQ(seqno + tcplen, - 800bb48: 4b91 ldr r3, [pc, #580] @ (800bd90 ) - 800bb4a: 881b ldrh r3, [r3, #0] - 800bb4c: 461a mov r2, r3 - 800bb4e: 4b91 ldr r3, [pc, #580] @ (800bd94 ) - 800bb50: 681b ldr r3, [r3, #0] - 800bb52: 441a add r2, r3 - 800bb54: 6bfb ldr r3, [r7, #60] @ 0x3c - 800bb56: 68db ldr r3, [r3, #12] - 800bb58: 685b ldr r3, [r3, #4] - 800bb5a: 6bf9 ldr r1, [r7, #60] @ 0x3c - 800bb5c: 8909 ldrh r1, [r1, #8] - 800bb5e: 440b add r3, r1 - 800bb60: 1ad3 subs r3, r2, r3 - while (next && - 800bb62: 2b00 cmp r3, #0 - 800bb64: da9b bge.n 800ba9e - } - /* Now trim right side of inseg if it overlaps with the first - * segment on ooseq */ - if (next && - 800bb66: 6bfb ldr r3, [r7, #60] @ 0x3c - 800bb68: 2b00 cmp r3, #0 - 800bb6a: d059 beq.n 800bc20 - TCP_SEQ_GT(seqno + tcplen, - 800bb6c: 4b88 ldr r3, [pc, #544] @ (800bd90 ) - 800bb6e: 881b ldrh r3, [r3, #0] - 800bb70: 461a mov r2, r3 - 800bb72: 4b88 ldr r3, [pc, #544] @ (800bd94 ) - 800bb74: 681b ldr r3, [r3, #0] - 800bb76: 441a add r2, r3 - 800bb78: 6bfb ldr r3, [r7, #60] @ 0x3c - 800bb7a: 68db ldr r3, [r3, #12] - 800bb7c: 685b ldr r3, [r3, #4] - 800bb7e: 1ad3 subs r3, r2, r3 - if (next && - 800bb80: 2b00 cmp r3, #0 - 800bb82: dd4d ble.n 800bc20 - next->tcphdr->seqno)) { - /* inseg cannot have FIN here (already processed above) */ - inseg.len = (u16_t)(next->tcphdr->seqno - seqno); - 800bb84: 6bfb ldr r3, [r7, #60] @ 0x3c - 800bb86: 68db ldr r3, [r3, #12] - 800bb88: 685b ldr r3, [r3, #4] - 800bb8a: b29a uxth r2, r3 - 800bb8c: 4b81 ldr r3, [pc, #516] @ (800bd94 ) - 800bb8e: 681b ldr r3, [r3, #0] - 800bb90: b29b uxth r3, r3 - 800bb92: 1ad3 subs r3, r2, r3 - 800bb94: b29a uxth r2, r3 - 800bb96: 4b80 ldr r3, [pc, #512] @ (800bd98 ) - 800bb98: 811a strh r2, [r3, #8] - if (TCPH_FLAGS(inseg.tcphdr) & TCP_SYN) { - 800bb9a: 4b7f ldr r3, [pc, #508] @ (800bd98 ) - 800bb9c: 68db ldr r3, [r3, #12] - 800bb9e: 899b ldrh r3, [r3, #12] - 800bba0: b29b uxth r3, r3 - 800bba2: 4618 mov r0, r3 - 800bba4: f7fa ff30 bl 8006a08 - 800bba8: 4603 mov r3, r0 - 800bbaa: b2db uxtb r3, r3 - 800bbac: f003 0302 and.w r3, r3, #2 - 800bbb0: 2b00 cmp r3, #0 - 800bbb2: d005 beq.n 800bbc0 - inseg.len -= 1; - 800bbb4: 4b78 ldr r3, [pc, #480] @ (800bd98 ) - 800bbb6: 891b ldrh r3, [r3, #8] - 800bbb8: 3b01 subs r3, #1 - 800bbba: b29a uxth r2, r3 - 800bbbc: 4b76 ldr r3, [pc, #472] @ (800bd98 ) - 800bbbe: 811a strh r2, [r3, #8] - } - pbuf_realloc(inseg.p, inseg.len); - 800bbc0: 4b75 ldr r3, [pc, #468] @ (800bd98 ) - 800bbc2: 685b ldr r3, [r3, #4] - 800bbc4: 4a74 ldr r2, [pc, #464] @ (800bd98 ) - 800bbc6: 8912 ldrh r2, [r2, #8] - 800bbc8: 4611 mov r1, r2 - 800bbca: 4618 mov r0, r3 - 800bbcc: f7fc f8e8 bl 8007da0 - tcplen = TCP_TCPLEN(&inseg); - 800bbd0: 4b71 ldr r3, [pc, #452] @ (800bd98 ) - 800bbd2: 891c ldrh r4, [r3, #8] - 800bbd4: 4b70 ldr r3, [pc, #448] @ (800bd98 ) - 800bbd6: 68db ldr r3, [r3, #12] - 800bbd8: 899b ldrh r3, [r3, #12] - 800bbda: b29b uxth r3, r3 - 800bbdc: 4618 mov r0, r3 - 800bbde: f7fa ff13 bl 8006a08 - 800bbe2: 4603 mov r3, r0 - 800bbe4: b2db uxtb r3, r3 - 800bbe6: f003 0303 and.w r3, r3, #3 - 800bbea: 2b00 cmp r3, #0 - 800bbec: d001 beq.n 800bbf2 - 800bbee: 2301 movs r3, #1 - 800bbf0: e000 b.n 800bbf4 - 800bbf2: 2300 movs r3, #0 - 800bbf4: 4423 add r3, r4 - 800bbf6: b29a uxth r2, r3 - 800bbf8: 4b65 ldr r3, [pc, #404] @ (800bd90 ) - 800bbfa: 801a strh r2, [r3, #0] - LWIP_ASSERT("tcp_receive: segment not trimmed correctly to ooseq queue\n", - 800bbfc: 4b64 ldr r3, [pc, #400] @ (800bd90 ) - 800bbfe: 881b ldrh r3, [r3, #0] - 800bc00: 461a mov r2, r3 - 800bc02: 4b64 ldr r3, [pc, #400] @ (800bd94 ) - 800bc04: 681b ldr r3, [r3, #0] - 800bc06: 441a add r2, r3 - 800bc08: 6bfb ldr r3, [r7, #60] @ 0x3c - 800bc0a: 68db ldr r3, [r3, #12] - 800bc0c: 685b ldr r3, [r3, #4] - 800bc0e: 429a cmp r2, r3 - 800bc10: d006 beq.n 800bc20 - 800bc12: 4b62 ldr r3, [pc, #392] @ (800bd9c ) - 800bc14: f240 52fc movw r2, #1532 @ 0x5fc - 800bc18: 4961 ldr r1, [pc, #388] @ (800bda0 ) - 800bc1a: 4862 ldr r0, [pc, #392] @ (800bda4 ) - 800bc1c: f007 f82c bl 8012c78 - (seqno + tcplen) == next->tcphdr->seqno); - } - pcb->ooseq = next; - 800bc20: 687b ldr r3, [r7, #4] - 800bc22: 6bfa ldr r2, [r7, #60] @ 0x3c - 800bc24: 675a str r2, [r3, #116] @ 0x74 - } - } -#endif /* TCP_QUEUE_OOSEQ */ - - pcb->rcv_nxt = seqno + tcplen; - 800bc26: 4b5a ldr r3, [pc, #360] @ (800bd90 ) - 800bc28: 881b ldrh r3, [r3, #0] - 800bc2a: 461a mov r2, r3 - 800bc2c: 4b59 ldr r3, [pc, #356] @ (800bd94 ) - 800bc2e: 681b ldr r3, [r3, #0] - 800bc30: 441a add r2, r3 - 800bc32: 687b ldr r3, [r7, #4] - 800bc34: 625a str r2, [r3, #36] @ 0x24 - - /* Update the receiver's (our) window. */ - LWIP_ASSERT("tcp_receive: tcplen > rcv_wnd\n", pcb->rcv_wnd >= tcplen); - 800bc36: 687b ldr r3, [r7, #4] - 800bc38: 8d1a ldrh r2, [r3, #40] @ 0x28 - 800bc3a: 4b55 ldr r3, [pc, #340] @ (800bd90 ) - 800bc3c: 881b ldrh r3, [r3, #0] - 800bc3e: 429a cmp r2, r3 - 800bc40: d206 bcs.n 800bc50 - 800bc42: 4b56 ldr r3, [pc, #344] @ (800bd9c ) - 800bc44: f240 6207 movw r2, #1543 @ 0x607 - 800bc48: 4957 ldr r1, [pc, #348] @ (800bda8 ) - 800bc4a: 4856 ldr r0, [pc, #344] @ (800bda4 ) - 800bc4c: f007 f814 bl 8012c78 - pcb->rcv_wnd -= tcplen; - 800bc50: 687b ldr r3, [r7, #4] - 800bc52: 8d1a ldrh r2, [r3, #40] @ 0x28 - 800bc54: 4b4e ldr r3, [pc, #312] @ (800bd90 ) - 800bc56: 881b ldrh r3, [r3, #0] - 800bc58: 1ad3 subs r3, r2, r3 - 800bc5a: b29a uxth r2, r3 - 800bc5c: 687b ldr r3, [r7, #4] - 800bc5e: 851a strh r2, [r3, #40] @ 0x28 - - tcp_update_rcv_ann_wnd(pcb); - 800bc60: 6878 ldr r0, [r7, #4] - 800bc62: f7fc ffc5 bl 8008bf0 - chains its data on this pbuf as well. - - If the segment was a FIN, we set the TF_GOT_FIN flag that will - be used to indicate to the application that the remote side has - closed its end of the connection. */ - if (inseg.p->tot_len > 0) { - 800bc66: 4b4c ldr r3, [pc, #304] @ (800bd98 ) - 800bc68: 685b ldr r3, [r3, #4] - 800bc6a: 891b ldrh r3, [r3, #8] - 800bc6c: 2b00 cmp r3, #0 - 800bc6e: d006 beq.n 800bc7e - recv_data = inseg.p; - 800bc70: 4b49 ldr r3, [pc, #292] @ (800bd98 ) - 800bc72: 685b ldr r3, [r3, #4] - 800bc74: 4a4d ldr r2, [pc, #308] @ (800bdac ) - 800bc76: 6013 str r3, [r2, #0] - /* Since this pbuf now is the responsibility of the - application, we delete our reference to it so that we won't - (mistakingly) deallocate it. */ - inseg.p = NULL; - 800bc78: 4b47 ldr r3, [pc, #284] @ (800bd98 ) - 800bc7a: 2200 movs r2, #0 - 800bc7c: 605a str r2, [r3, #4] - } - if (TCPH_FLAGS(inseg.tcphdr) & TCP_FIN) { - 800bc7e: 4b46 ldr r3, [pc, #280] @ (800bd98 ) - 800bc80: 68db ldr r3, [r3, #12] - 800bc82: 899b ldrh r3, [r3, #12] - 800bc84: b29b uxth r3, r3 - 800bc86: 4618 mov r0, r3 - 800bc88: f7fa febe bl 8006a08 - 800bc8c: 4603 mov r3, r0 - 800bc8e: b2db uxtb r3, r3 - 800bc90: f003 0301 and.w r3, r3, #1 - 800bc94: 2b00 cmp r3, #0 - 800bc96: f000 80b8 beq.w 800be0a - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: received FIN.\n")); - recv_flags |= TF_GOT_FIN; - 800bc9a: 4b45 ldr r3, [pc, #276] @ (800bdb0 ) - 800bc9c: 781b ldrb r3, [r3, #0] - 800bc9e: f043 0320 orr.w r3, r3, #32 - 800bca2: b2da uxtb r2, r3 - 800bca4: 4b42 ldr r3, [pc, #264] @ (800bdb0 ) - 800bca6: 701a strb r2, [r3, #0] - } - -#if TCP_QUEUE_OOSEQ - /* We now check if we have segments on the ->ooseq queue that - are now in sequence. */ - while (pcb->ooseq != NULL && - 800bca8: e0af b.n 800be0a - pcb->ooseq->tcphdr->seqno == pcb->rcv_nxt) { - - struct tcp_seg *cseg = pcb->ooseq; - 800bcaa: 687b ldr r3, [r7, #4] - 800bcac: 6f5b ldr r3, [r3, #116] @ 0x74 - 800bcae: 60bb str r3, [r7, #8] - seqno = pcb->ooseq->tcphdr->seqno; - 800bcb0: 687b ldr r3, [r7, #4] - 800bcb2: 6f5b ldr r3, [r3, #116] @ 0x74 - 800bcb4: 68db ldr r3, [r3, #12] - 800bcb6: 685b ldr r3, [r3, #4] - 800bcb8: 4a36 ldr r2, [pc, #216] @ (800bd94 ) - 800bcba: 6013 str r3, [r2, #0] - - pcb->rcv_nxt += TCP_TCPLEN(cseg); - 800bcbc: 68bb ldr r3, [r7, #8] - 800bcbe: 891b ldrh r3, [r3, #8] - 800bcc0: 461c mov r4, r3 - 800bcc2: 68bb ldr r3, [r7, #8] - 800bcc4: 68db ldr r3, [r3, #12] - 800bcc6: 899b ldrh r3, [r3, #12] - 800bcc8: b29b uxth r3, r3 - 800bcca: 4618 mov r0, r3 - 800bccc: f7fa fe9c bl 8006a08 - 800bcd0: 4603 mov r3, r0 - 800bcd2: b2db uxtb r3, r3 - 800bcd4: f003 0303 and.w r3, r3, #3 - 800bcd8: 2b00 cmp r3, #0 - 800bcda: d001 beq.n 800bce0 - 800bcdc: 2301 movs r3, #1 - 800bcde: e000 b.n 800bce2 - 800bce0: 2300 movs r3, #0 - 800bce2: 191a adds r2, r3, r4 - 800bce4: 687b ldr r3, [r7, #4] - 800bce6: 6a5b ldr r3, [r3, #36] @ 0x24 - 800bce8: 441a add r2, r3 - 800bcea: 687b ldr r3, [r7, #4] - 800bcec: 625a str r2, [r3, #36] @ 0x24 - LWIP_ASSERT("tcp_receive: ooseq tcplen > rcv_wnd\n", - 800bcee: 687b ldr r3, [r7, #4] - 800bcf0: 8d1b ldrh r3, [r3, #40] @ 0x28 - 800bcf2: 461c mov r4, r3 - 800bcf4: 68bb ldr r3, [r7, #8] - 800bcf6: 891b ldrh r3, [r3, #8] - 800bcf8: 461d mov r5, r3 - 800bcfa: 68bb ldr r3, [r7, #8] - 800bcfc: 68db ldr r3, [r3, #12] - 800bcfe: 899b ldrh r3, [r3, #12] - 800bd00: b29b uxth r3, r3 - 800bd02: 4618 mov r0, r3 - 800bd04: f7fa fe80 bl 8006a08 - 800bd08: 4603 mov r3, r0 - 800bd0a: b2db uxtb r3, r3 - 800bd0c: f003 0303 and.w r3, r3, #3 - 800bd10: 2b00 cmp r3, #0 - 800bd12: d001 beq.n 800bd18 - 800bd14: 2301 movs r3, #1 - 800bd16: e000 b.n 800bd1a - 800bd18: 2300 movs r3, #0 - 800bd1a: 442b add r3, r5 - 800bd1c: 429c cmp r4, r3 - 800bd1e: d206 bcs.n 800bd2e - 800bd20: 4b1e ldr r3, [pc, #120] @ (800bd9c ) - 800bd22: f240 622b movw r2, #1579 @ 0x62b - 800bd26: 4923 ldr r1, [pc, #140] @ (800bdb4 ) - 800bd28: 481e ldr r0, [pc, #120] @ (800bda4 ) - 800bd2a: f006 ffa5 bl 8012c78 - pcb->rcv_wnd >= TCP_TCPLEN(cseg)); - pcb->rcv_wnd -= TCP_TCPLEN(cseg); - 800bd2e: 68bb ldr r3, [r7, #8] - 800bd30: 891b ldrh r3, [r3, #8] - 800bd32: 461c mov r4, r3 - 800bd34: 68bb ldr r3, [r7, #8] - 800bd36: 68db ldr r3, [r3, #12] - 800bd38: 899b ldrh r3, [r3, #12] - 800bd3a: b29b uxth r3, r3 - 800bd3c: 4618 mov r0, r3 - 800bd3e: f7fa fe63 bl 8006a08 - 800bd42: 4603 mov r3, r0 - 800bd44: b2db uxtb r3, r3 - 800bd46: f003 0303 and.w r3, r3, #3 - 800bd4a: 2b00 cmp r3, #0 - 800bd4c: d001 beq.n 800bd52 - 800bd4e: 2301 movs r3, #1 - 800bd50: e000 b.n 800bd54 - 800bd52: 2300 movs r3, #0 - 800bd54: 1919 adds r1, r3, r4 - 800bd56: 687b ldr r3, [r7, #4] - 800bd58: 8d1a ldrh r2, [r3, #40] @ 0x28 - 800bd5a: b28b uxth r3, r1 - 800bd5c: 1ad3 subs r3, r2, r3 - 800bd5e: b29a uxth r2, r3 - 800bd60: 687b ldr r3, [r7, #4] - 800bd62: 851a strh r2, [r3, #40] @ 0x28 - - tcp_update_rcv_ann_wnd(pcb); - 800bd64: 6878 ldr r0, [r7, #4] - 800bd66: f7fc ff43 bl 8008bf0 - - if (cseg->p->tot_len > 0) { - 800bd6a: 68bb ldr r3, [r7, #8] - 800bd6c: 685b ldr r3, [r3, #4] - 800bd6e: 891b ldrh r3, [r3, #8] - 800bd70: 2b00 cmp r3, #0 - 800bd72: d028 beq.n 800bdc6 - /* Chain this pbuf onto the pbuf that we will pass to - the application. */ - /* With window scaling, this can overflow recv_data->tot_len, but - that's not a problem since we explicitly fix that before passing - recv_data to the application. */ - if (recv_data) { - 800bd74: 4b0d ldr r3, [pc, #52] @ (800bdac ) - 800bd76: 681b ldr r3, [r3, #0] - 800bd78: 2b00 cmp r3, #0 - 800bd7a: d01d beq.n 800bdb8 - pbuf_cat(recv_data, cseg->p); - 800bd7c: 4b0b ldr r3, [pc, #44] @ (800bdac ) - 800bd7e: 681a ldr r2, [r3, #0] - 800bd80: 68bb ldr r3, [r7, #8] - 800bd82: 685b ldr r3, [r3, #4] - 800bd84: 4619 mov r1, r3 - 800bd86: 4610 mov r0, r2 - 800bd88: f7fc fa50 bl 800822c - 800bd8c: e018 b.n 800bdc0 - 800bd8e: bf00 nop - 800bd90: 2001912e .word 0x2001912e - 800bd94: 20019124 .word 0x20019124 - 800bd98: 20019104 .word 0x20019104 - 800bd9c: 0801892c .word 0x0801892c - 800bda0: 08018d0c .word 0x08018d0c - 800bda4: 08018978 .word 0x08018978 - 800bda8: 08018d48 .word 0x08018d48 - 800bdac: 20019134 .word 0x20019134 - 800bdb0: 20019131 .word 0x20019131 - 800bdb4: 08018d68 .word 0x08018d68 - } else { - recv_data = cseg->p; - 800bdb8: 68bb ldr r3, [r7, #8] - 800bdba: 685b ldr r3, [r3, #4] - 800bdbc: 4a70 ldr r2, [pc, #448] @ (800bf80 ) - 800bdbe: 6013 str r3, [r2, #0] - } - cseg->p = NULL; - 800bdc0: 68bb ldr r3, [r7, #8] - 800bdc2: 2200 movs r2, #0 - 800bdc4: 605a str r2, [r3, #4] - } - if (TCPH_FLAGS(cseg->tcphdr) & TCP_FIN) { - 800bdc6: 68bb ldr r3, [r7, #8] - 800bdc8: 68db ldr r3, [r3, #12] - 800bdca: 899b ldrh r3, [r3, #12] - 800bdcc: b29b uxth r3, r3 - 800bdce: 4618 mov r0, r3 - 800bdd0: f7fa fe1a bl 8006a08 - 800bdd4: 4603 mov r3, r0 - 800bdd6: b2db uxtb r3, r3 - 800bdd8: f003 0301 and.w r3, r3, #1 - 800bddc: 2b00 cmp r3, #0 - 800bdde: d00d beq.n 800bdfc - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: dequeued FIN.\n")); - recv_flags |= TF_GOT_FIN; - 800bde0: 4b68 ldr r3, [pc, #416] @ (800bf84 ) - 800bde2: 781b ldrb r3, [r3, #0] - 800bde4: f043 0320 orr.w r3, r3, #32 - 800bde8: b2da uxtb r2, r3 - 800bdea: 4b66 ldr r3, [pc, #408] @ (800bf84 ) - 800bdec: 701a strb r2, [r3, #0] - if (pcb->state == ESTABLISHED) { /* force passive close or we can move to active close */ - 800bdee: 687b ldr r3, [r7, #4] - 800bdf0: 7d1b ldrb r3, [r3, #20] - 800bdf2: 2b04 cmp r3, #4 - 800bdf4: d102 bne.n 800bdfc - pcb->state = CLOSE_WAIT; - 800bdf6: 687b ldr r3, [r7, #4] - 800bdf8: 2207 movs r2, #7 - 800bdfa: 751a strb r2, [r3, #20] - } - } - - pcb->ooseq = cseg->next; - 800bdfc: 68bb ldr r3, [r7, #8] - 800bdfe: 681a ldr r2, [r3, #0] - 800be00: 687b ldr r3, [r7, #4] - 800be02: 675a str r2, [r3, #116] @ 0x74 - tcp_seg_free(cseg); - 800be04: 68b8 ldr r0, [r7, #8] - 800be06: f7fd fbd4 bl 80095b2 - while (pcb->ooseq != NULL && - 800be0a: 687b ldr r3, [r7, #4] - 800be0c: 6f5b ldr r3, [r3, #116] @ 0x74 - 800be0e: 2b00 cmp r3, #0 - 800be10: d008 beq.n 800be24 - pcb->ooseq->tcphdr->seqno == pcb->rcv_nxt) { - 800be12: 687b ldr r3, [r7, #4] - 800be14: 6f5b ldr r3, [r3, #116] @ 0x74 - 800be16: 68db ldr r3, [r3, #12] - 800be18: 685a ldr r2, [r3, #4] - 800be1a: 687b ldr r3, [r7, #4] - 800be1c: 6a5b ldr r3, [r3, #36] @ 0x24 - while (pcb->ooseq != NULL && - 800be1e: 429a cmp r2, r3 - 800be20: f43f af43 beq.w 800bcaa -#endif /* LWIP_TCP_SACK_OUT */ -#endif /* TCP_QUEUE_OOSEQ */ - - - /* Acknowledge the segment(s). */ - tcp_ack(pcb); - 800be24: 687b ldr r3, [r7, #4] - 800be26: 8b5b ldrh r3, [r3, #26] - 800be28: f003 0301 and.w r3, r3, #1 - 800be2c: 2b00 cmp r3, #0 - 800be2e: d00e beq.n 800be4e - 800be30: 687b ldr r3, [r7, #4] - 800be32: 8b5b ldrh r3, [r3, #26] - 800be34: f023 0301 bic.w r3, r3, #1 - 800be38: b29a uxth r2, r3 - 800be3a: 687b ldr r3, [r7, #4] - 800be3c: 835a strh r2, [r3, #26] - 800be3e: 687b ldr r3, [r7, #4] - 800be40: 8b5b ldrh r3, [r3, #26] - 800be42: f043 0302 orr.w r3, r3, #2 - 800be46: b29a uxth r2, r3 - 800be48: 687b ldr r3, [r7, #4] - 800be4a: 835a strh r2, [r3, #26] - if (pcb->rcv_nxt == seqno) { - 800be4c: e187 b.n 800c15e - tcp_ack(pcb); - 800be4e: 687b ldr r3, [r7, #4] - 800be50: 8b5b ldrh r3, [r3, #26] - 800be52: f043 0301 orr.w r3, r3, #1 - 800be56: b29a uxth r2, r3 - 800be58: 687b ldr r3, [r7, #4] - 800be5a: 835a strh r2, [r3, #26] - if (pcb->rcv_nxt == seqno) { - 800be5c: e17f b.n 800c15e - } else { - /* We get here if the incoming segment is out-of-sequence. */ - -#if TCP_QUEUE_OOSEQ - /* We queue the segment on the ->ooseq queue. */ - if (pcb->ooseq == NULL) { - 800be5e: 687b ldr r3, [r7, #4] - 800be60: 6f5b ldr r3, [r3, #116] @ 0x74 - 800be62: 2b00 cmp r3, #0 - 800be64: d106 bne.n 800be74 - pcb->ooseq = tcp_seg_copy(&inseg); - 800be66: 4848 ldr r0, [pc, #288] @ (800bf88 ) - 800be68: f7fd fbbc bl 80095e4 - 800be6c: 4602 mov r2, r0 - 800be6e: 687b ldr r3, [r7, #4] - 800be70: 675a str r2, [r3, #116] @ 0x74 - 800be72: e16c b.n 800c14e -#if LWIP_TCP_SACK_OUT - /* This is the left edge of the lowest possible SACK range. - It may start before the newly received segment (possibly adjusted below). */ - u32_t sackbeg = TCP_SEQ_LT(seqno, pcb->ooseq->tcphdr->seqno) ? seqno : pcb->ooseq->tcphdr->seqno; -#endif /* LWIP_TCP_SACK_OUT */ - struct tcp_seg *next, *prev = NULL; - 800be74: 2300 movs r3, #0 - 800be76: 637b str r3, [r7, #52] @ 0x34 - for (next = pcb->ooseq; next != NULL; next = next->next) { - 800be78: 687b ldr r3, [r7, #4] - 800be7a: 6f5b ldr r3, [r3, #116] @ 0x74 - 800be7c: 63bb str r3, [r7, #56] @ 0x38 - 800be7e: e156 b.n 800c12e - if (seqno == next->tcphdr->seqno) { - 800be80: 6bbb ldr r3, [r7, #56] @ 0x38 - 800be82: 68db ldr r3, [r3, #12] - 800be84: 685a ldr r2, [r3, #4] - 800be86: 4b41 ldr r3, [pc, #260] @ (800bf8c ) - 800be88: 681b ldr r3, [r3, #0] - 800be8a: 429a cmp r2, r3 - 800be8c: d11d bne.n 800beca - /* The sequence number of the incoming segment is the - same as the sequence number of the segment on - ->ooseq. We check the lengths to see which one to - discard. */ - if (inseg.len > next->len) { - 800be8e: 4b3e ldr r3, [pc, #248] @ (800bf88 ) - 800be90: 891a ldrh r2, [r3, #8] - 800be92: 6bbb ldr r3, [r7, #56] @ 0x38 - 800be94: 891b ldrh r3, [r3, #8] - 800be96: 429a cmp r2, r3 - 800be98: f240 814e bls.w 800c138 - /* The incoming segment is larger than the old - segment. We replace some segments with the new - one. */ - struct tcp_seg *cseg = tcp_seg_copy(&inseg); - 800be9c: 483a ldr r0, [pc, #232] @ (800bf88 ) - 800be9e: f7fd fba1 bl 80095e4 - 800bea2: 6178 str r0, [r7, #20] - if (cseg != NULL) { - 800bea4: 697b ldr r3, [r7, #20] - 800bea6: 2b00 cmp r3, #0 - 800bea8: f000 8148 beq.w 800c13c - if (prev != NULL) { - 800beac: 6b7b ldr r3, [r7, #52] @ 0x34 - 800beae: 2b00 cmp r3, #0 - 800beb0: d003 beq.n 800beba - prev->next = cseg; - 800beb2: 6b7b ldr r3, [r7, #52] @ 0x34 - 800beb4: 697a ldr r2, [r7, #20] - 800beb6: 601a str r2, [r3, #0] - 800beb8: e002 b.n 800bec0 - } else { - pcb->ooseq = cseg; - 800beba: 687b ldr r3, [r7, #4] - 800bebc: 697a ldr r2, [r7, #20] - 800bebe: 675a str r2, [r3, #116] @ 0x74 - } - tcp_oos_insert_segment(cseg, next); - 800bec0: 6bb9 ldr r1, [r7, #56] @ 0x38 - 800bec2: 6978 ldr r0, [r7, #20] - 800bec4: f7ff f8de bl 800b084 - } - break; - 800bec8: e138 b.n 800c13c - segment was smaller than the old one; in either - case, we ditch the incoming segment. */ - break; - } - } else { - if (prev == NULL) { - 800beca: 6b7b ldr r3, [r7, #52] @ 0x34 - 800becc: 2b00 cmp r3, #0 - 800bece: d117 bne.n 800bf00 - if (TCP_SEQ_LT(seqno, next->tcphdr->seqno)) { - 800bed0: 4b2e ldr r3, [pc, #184] @ (800bf8c ) - 800bed2: 681a ldr r2, [r3, #0] - 800bed4: 6bbb ldr r3, [r7, #56] @ 0x38 - 800bed6: 68db ldr r3, [r3, #12] - 800bed8: 685b ldr r3, [r3, #4] - 800beda: 1ad3 subs r3, r2, r3 - 800bedc: 2b00 cmp r3, #0 - 800bede: da57 bge.n 800bf90 - /* The sequence number of the incoming segment is lower - than the sequence number of the first segment on the - queue. We put the incoming segment first on the - queue. */ - struct tcp_seg *cseg = tcp_seg_copy(&inseg); - 800bee0: 4829 ldr r0, [pc, #164] @ (800bf88 ) - 800bee2: f7fd fb7f bl 80095e4 - 800bee6: 61b8 str r0, [r7, #24] - if (cseg != NULL) { - 800bee8: 69bb ldr r3, [r7, #24] - 800beea: 2b00 cmp r3, #0 - 800beec: f000 8128 beq.w 800c140 - pcb->ooseq = cseg; - 800bef0: 687b ldr r3, [r7, #4] - 800bef2: 69ba ldr r2, [r7, #24] - 800bef4: 675a str r2, [r3, #116] @ 0x74 - tcp_oos_insert_segment(cseg, next); - 800bef6: 6bb9 ldr r1, [r7, #56] @ 0x38 - 800bef8: 69b8 ldr r0, [r7, #24] - 800befa: f7ff f8c3 bl 800b084 - } - break; - 800befe: e11f b.n 800c140 - } - } else { - /*if (TCP_SEQ_LT(prev->tcphdr->seqno, seqno) && - TCP_SEQ_LT(seqno, next->tcphdr->seqno)) {*/ - if (TCP_SEQ_BETWEEN(seqno, prev->tcphdr->seqno + 1, next->tcphdr->seqno - 1)) { - 800bf00: 4b22 ldr r3, [pc, #136] @ (800bf8c ) - 800bf02: 681a ldr r2, [r3, #0] - 800bf04: 6b7b ldr r3, [r7, #52] @ 0x34 - 800bf06: 68db ldr r3, [r3, #12] - 800bf08: 685b ldr r3, [r3, #4] - 800bf0a: 1ad3 subs r3, r2, r3 - 800bf0c: 3b01 subs r3, #1 - 800bf0e: 2b00 cmp r3, #0 - 800bf10: db3e blt.n 800bf90 - 800bf12: 4b1e ldr r3, [pc, #120] @ (800bf8c ) - 800bf14: 681a ldr r2, [r3, #0] - 800bf16: 6bbb ldr r3, [r7, #56] @ 0x38 - 800bf18: 68db ldr r3, [r3, #12] - 800bf1a: 685b ldr r3, [r3, #4] - 800bf1c: 1ad3 subs r3, r2, r3 - 800bf1e: 3301 adds r3, #1 - 800bf20: 2b00 cmp r3, #0 - 800bf22: dc35 bgt.n 800bf90 - /* The sequence number of the incoming segment is in - between the sequence numbers of the previous and - the next segment on ->ooseq. We trim trim the previous - segment, delete next segments that included in received segment - and trim received, if needed. */ - struct tcp_seg *cseg = tcp_seg_copy(&inseg); - 800bf24: 4818 ldr r0, [pc, #96] @ (800bf88 ) - 800bf26: f7fd fb5d bl 80095e4 - 800bf2a: 61f8 str r0, [r7, #28] - if (cseg != NULL) { - 800bf2c: 69fb ldr r3, [r7, #28] - 800bf2e: 2b00 cmp r3, #0 - 800bf30: f000 8108 beq.w 800c144 - if (TCP_SEQ_GT(prev->tcphdr->seqno + prev->len, seqno)) { - 800bf34: 6b7b ldr r3, [r7, #52] @ 0x34 - 800bf36: 68db ldr r3, [r3, #12] - 800bf38: 685b ldr r3, [r3, #4] - 800bf3a: 6b7a ldr r2, [r7, #52] @ 0x34 - 800bf3c: 8912 ldrh r2, [r2, #8] - 800bf3e: 441a add r2, r3 - 800bf40: 4b12 ldr r3, [pc, #72] @ (800bf8c ) - 800bf42: 681b ldr r3, [r3, #0] - 800bf44: 1ad3 subs r3, r2, r3 - 800bf46: 2b00 cmp r3, #0 - 800bf48: dd12 ble.n 800bf70 - /* We need to trim the prev segment. */ - prev->len = (u16_t)(seqno - prev->tcphdr->seqno); - 800bf4a: 4b10 ldr r3, [pc, #64] @ (800bf8c ) - 800bf4c: 681b ldr r3, [r3, #0] - 800bf4e: b29a uxth r2, r3 - 800bf50: 6b7b ldr r3, [r7, #52] @ 0x34 - 800bf52: 68db ldr r3, [r3, #12] - 800bf54: 685b ldr r3, [r3, #4] - 800bf56: b29b uxth r3, r3 - 800bf58: 1ad3 subs r3, r2, r3 - 800bf5a: b29a uxth r2, r3 - 800bf5c: 6b7b ldr r3, [r7, #52] @ 0x34 - 800bf5e: 811a strh r2, [r3, #8] - pbuf_realloc(prev->p, prev->len); - 800bf60: 6b7b ldr r3, [r7, #52] @ 0x34 - 800bf62: 685a ldr r2, [r3, #4] - 800bf64: 6b7b ldr r3, [r7, #52] @ 0x34 - 800bf66: 891b ldrh r3, [r3, #8] - 800bf68: 4619 mov r1, r3 - 800bf6a: 4610 mov r0, r2 - 800bf6c: f7fb ff18 bl 8007da0 - } - prev->next = cseg; - 800bf70: 6b7b ldr r3, [r7, #52] @ 0x34 - 800bf72: 69fa ldr r2, [r7, #28] - 800bf74: 601a str r2, [r3, #0] - tcp_oos_insert_segment(cseg, next); - 800bf76: 6bb9 ldr r1, [r7, #56] @ 0x38 - 800bf78: 69f8 ldr r0, [r7, #28] - 800bf7a: f7ff f883 bl 800b084 - } - break; - 800bf7e: e0e1 b.n 800c144 - 800bf80: 20019134 .word 0x20019134 - 800bf84: 20019131 .word 0x20019131 - 800bf88: 20019104 .word 0x20019104 - 800bf8c: 20019124 .word 0x20019124 -#endif /* LWIP_TCP_SACK_OUT */ - - /* We don't use 'prev' below, so let's set it to current 'next'. - This way even if we break the loop below, 'prev' will be pointing - at the segment right in front of the newly added one. */ - prev = next; - 800bf90: 6bbb ldr r3, [r7, #56] @ 0x38 - 800bf92: 637b str r3, [r7, #52] @ 0x34 - - /* If the "next" segment is the last segment on the - ooseq queue, we add the incoming segment to the end - of the list. */ - if (next->next == NULL && - 800bf94: 6bbb ldr r3, [r7, #56] @ 0x38 - 800bf96: 681b ldr r3, [r3, #0] - 800bf98: 2b00 cmp r3, #0 - 800bf9a: f040 80c5 bne.w 800c128 - TCP_SEQ_GT(seqno, next->tcphdr->seqno)) { - 800bf9e: 4b7f ldr r3, [pc, #508] @ (800c19c ) - 800bfa0: 681a ldr r2, [r3, #0] - 800bfa2: 6bbb ldr r3, [r7, #56] @ 0x38 - 800bfa4: 68db ldr r3, [r3, #12] - 800bfa6: 685b ldr r3, [r3, #4] - 800bfa8: 1ad3 subs r3, r2, r3 - if (next->next == NULL && - 800bfaa: 2b00 cmp r3, #0 - 800bfac: f340 80bc ble.w 800c128 - if (TCPH_FLAGS(next->tcphdr) & TCP_FIN) { - 800bfb0: 6bbb ldr r3, [r7, #56] @ 0x38 - 800bfb2: 68db ldr r3, [r3, #12] - 800bfb4: 899b ldrh r3, [r3, #12] - 800bfb6: b29b uxth r3, r3 - 800bfb8: 4618 mov r0, r3 - 800bfba: f7fa fd25 bl 8006a08 - 800bfbe: 4603 mov r3, r0 - 800bfc0: b2db uxtb r3, r3 - 800bfc2: f003 0301 and.w r3, r3, #1 - 800bfc6: 2b00 cmp r3, #0 - 800bfc8: f040 80be bne.w 800c148 - /* segment "next" already contains all data */ - break; - } - next->next = tcp_seg_copy(&inseg); - 800bfcc: 4874 ldr r0, [pc, #464] @ (800c1a0 ) - 800bfce: f7fd fb09 bl 80095e4 - 800bfd2: 4602 mov r2, r0 - 800bfd4: 6bbb ldr r3, [r7, #56] @ 0x38 - 800bfd6: 601a str r2, [r3, #0] - if (next->next != NULL) { - 800bfd8: 6bbb ldr r3, [r7, #56] @ 0x38 - 800bfda: 681b ldr r3, [r3, #0] - 800bfdc: 2b00 cmp r3, #0 - 800bfde: f000 80b5 beq.w 800c14c - if (TCP_SEQ_GT(next->tcphdr->seqno + next->len, seqno)) { - 800bfe2: 6bbb ldr r3, [r7, #56] @ 0x38 - 800bfe4: 68db ldr r3, [r3, #12] - 800bfe6: 685b ldr r3, [r3, #4] - 800bfe8: 6bba ldr r2, [r7, #56] @ 0x38 - 800bfea: 8912 ldrh r2, [r2, #8] - 800bfec: 441a add r2, r3 - 800bfee: 4b6b ldr r3, [pc, #428] @ (800c19c ) - 800bff0: 681b ldr r3, [r3, #0] - 800bff2: 1ad3 subs r3, r2, r3 - 800bff4: 2b00 cmp r3, #0 - 800bff6: dd12 ble.n 800c01e - /* We need to trim the last segment. */ - next->len = (u16_t)(seqno - next->tcphdr->seqno); - 800bff8: 4b68 ldr r3, [pc, #416] @ (800c19c ) - 800bffa: 681b ldr r3, [r3, #0] - 800bffc: b29a uxth r2, r3 - 800bffe: 6bbb ldr r3, [r7, #56] @ 0x38 - 800c000: 68db ldr r3, [r3, #12] - 800c002: 685b ldr r3, [r3, #4] - 800c004: b29b uxth r3, r3 - 800c006: 1ad3 subs r3, r2, r3 - 800c008: b29a uxth r2, r3 - 800c00a: 6bbb ldr r3, [r7, #56] @ 0x38 - 800c00c: 811a strh r2, [r3, #8] - pbuf_realloc(next->p, next->len); - 800c00e: 6bbb ldr r3, [r7, #56] @ 0x38 - 800c010: 685a ldr r2, [r3, #4] - 800c012: 6bbb ldr r3, [r7, #56] @ 0x38 - 800c014: 891b ldrh r3, [r3, #8] - 800c016: 4619 mov r1, r3 - 800c018: 4610 mov r0, r2 - 800c01a: f7fb fec1 bl 8007da0 - } - /* check if the remote side overruns our receive window */ - if (TCP_SEQ_GT((u32_t)tcplen + seqno, pcb->rcv_nxt + (u32_t)pcb->rcv_wnd)) { - 800c01e: 4b61 ldr r3, [pc, #388] @ (800c1a4 ) - 800c020: 881b ldrh r3, [r3, #0] - 800c022: 461a mov r2, r3 - 800c024: 4b5d ldr r3, [pc, #372] @ (800c19c ) - 800c026: 681b ldr r3, [r3, #0] - 800c028: 441a add r2, r3 - 800c02a: 687b ldr r3, [r7, #4] - 800c02c: 6a5b ldr r3, [r3, #36] @ 0x24 - 800c02e: 6879 ldr r1, [r7, #4] - 800c030: 8d09 ldrh r1, [r1, #40] @ 0x28 - 800c032: 440b add r3, r1 - 800c034: 1ad3 subs r3, r2, r3 - 800c036: 2b00 cmp r3, #0 - 800c038: f340 8088 ble.w 800c14c - LWIP_DEBUGF(TCP_INPUT_DEBUG, - ("tcp_receive: other end overran receive window" - "seqno %"U32_F" len %"U16_F" right edge %"U32_F"\n", - seqno, tcplen, pcb->rcv_nxt + pcb->rcv_wnd)); - if (TCPH_FLAGS(next->next->tcphdr) & TCP_FIN) { - 800c03c: 6bbb ldr r3, [r7, #56] @ 0x38 - 800c03e: 681b ldr r3, [r3, #0] - 800c040: 68db ldr r3, [r3, #12] - 800c042: 899b ldrh r3, [r3, #12] - 800c044: b29b uxth r3, r3 - 800c046: 4618 mov r0, r3 - 800c048: f7fa fcde bl 8006a08 - 800c04c: 4603 mov r3, r0 - 800c04e: b2db uxtb r3, r3 - 800c050: f003 0301 and.w r3, r3, #1 - 800c054: 2b00 cmp r3, #0 - 800c056: d021 beq.n 800c09c - /* Must remove the FIN from the header as we're trimming - * that byte of sequence-space from the packet */ - TCPH_FLAGS_SET(next->next->tcphdr, TCPH_FLAGS(next->next->tcphdr) & ~TCP_FIN); - 800c058: 6bbb ldr r3, [r7, #56] @ 0x38 - 800c05a: 681b ldr r3, [r3, #0] - 800c05c: 68db ldr r3, [r3, #12] - 800c05e: 899b ldrh r3, [r3, #12] - 800c060: b29b uxth r3, r3 - 800c062: b21b sxth r3, r3 - 800c064: f423 537c bic.w r3, r3, #16128 @ 0x3f00 - 800c068: b21c sxth r4, r3 - 800c06a: 6bbb ldr r3, [r7, #56] @ 0x38 - 800c06c: 681b ldr r3, [r3, #0] - 800c06e: 68db ldr r3, [r3, #12] - 800c070: 899b ldrh r3, [r3, #12] - 800c072: b29b uxth r3, r3 - 800c074: 4618 mov r0, r3 - 800c076: f7fa fcc7 bl 8006a08 - 800c07a: 4603 mov r3, r0 - 800c07c: b2db uxtb r3, r3 - 800c07e: f003 033e and.w r3, r3, #62 @ 0x3e - 800c082: b29b uxth r3, r3 - 800c084: 4618 mov r0, r3 - 800c086: f7fa fcbf bl 8006a08 - 800c08a: 4603 mov r3, r0 - 800c08c: b21b sxth r3, r3 - 800c08e: 4323 orrs r3, r4 - 800c090: b21a sxth r2, r3 - 800c092: 6bbb ldr r3, [r7, #56] @ 0x38 - 800c094: 681b ldr r3, [r3, #0] - 800c096: 68db ldr r3, [r3, #12] - 800c098: b292 uxth r2, r2 - 800c09a: 819a strh r2, [r3, #12] - } - /* Adjust length of segment to fit in the window. */ - next->next->len = (u16_t)(pcb->rcv_nxt + pcb->rcv_wnd - seqno); - 800c09c: 687b ldr r3, [r7, #4] - 800c09e: 6a5b ldr r3, [r3, #36] @ 0x24 - 800c0a0: b29a uxth r2, r3 - 800c0a2: 687b ldr r3, [r7, #4] - 800c0a4: 8d1b ldrh r3, [r3, #40] @ 0x28 - 800c0a6: 4413 add r3, r2 - 800c0a8: b299 uxth r1, r3 - 800c0aa: 4b3c ldr r3, [pc, #240] @ (800c19c ) - 800c0ac: 681b ldr r3, [r3, #0] - 800c0ae: b29a uxth r2, r3 - 800c0b0: 6bbb ldr r3, [r7, #56] @ 0x38 - 800c0b2: 681b ldr r3, [r3, #0] - 800c0b4: 1a8a subs r2, r1, r2 - 800c0b6: b292 uxth r2, r2 - 800c0b8: 811a strh r2, [r3, #8] - pbuf_realloc(next->next->p, next->next->len); - 800c0ba: 6bbb ldr r3, [r7, #56] @ 0x38 - 800c0bc: 681b ldr r3, [r3, #0] - 800c0be: 685a ldr r2, [r3, #4] - 800c0c0: 6bbb ldr r3, [r7, #56] @ 0x38 - 800c0c2: 681b ldr r3, [r3, #0] - 800c0c4: 891b ldrh r3, [r3, #8] - 800c0c6: 4619 mov r1, r3 - 800c0c8: 4610 mov r0, r2 - 800c0ca: f7fb fe69 bl 8007da0 - tcplen = TCP_TCPLEN(next->next); - 800c0ce: 6bbb ldr r3, [r7, #56] @ 0x38 - 800c0d0: 681b ldr r3, [r3, #0] - 800c0d2: 891c ldrh r4, [r3, #8] - 800c0d4: 6bbb ldr r3, [r7, #56] @ 0x38 - 800c0d6: 681b ldr r3, [r3, #0] - 800c0d8: 68db ldr r3, [r3, #12] - 800c0da: 899b ldrh r3, [r3, #12] - 800c0dc: b29b uxth r3, r3 - 800c0de: 4618 mov r0, r3 - 800c0e0: f7fa fc92 bl 8006a08 - 800c0e4: 4603 mov r3, r0 - 800c0e6: b2db uxtb r3, r3 - 800c0e8: f003 0303 and.w r3, r3, #3 - 800c0ec: 2b00 cmp r3, #0 - 800c0ee: d001 beq.n 800c0f4 - 800c0f0: 2301 movs r3, #1 - 800c0f2: e000 b.n 800c0f6 - 800c0f4: 2300 movs r3, #0 - 800c0f6: 4423 add r3, r4 - 800c0f8: b29a uxth r2, r3 - 800c0fa: 4b2a ldr r3, [pc, #168] @ (800c1a4 ) - 800c0fc: 801a strh r2, [r3, #0] - LWIP_ASSERT("tcp_receive: segment not trimmed correctly to rcv_wnd\n", - 800c0fe: 4b29 ldr r3, [pc, #164] @ (800c1a4 ) - 800c100: 881b ldrh r3, [r3, #0] - 800c102: 461a mov r2, r3 - 800c104: 4b25 ldr r3, [pc, #148] @ (800c19c ) - 800c106: 681b ldr r3, [r3, #0] - 800c108: 441a add r2, r3 - 800c10a: 687b ldr r3, [r7, #4] - 800c10c: 6a5b ldr r3, [r3, #36] @ 0x24 - 800c10e: 6879 ldr r1, [r7, #4] - 800c110: 8d09 ldrh r1, [r1, #40] @ 0x28 - 800c112: 440b add r3, r1 - 800c114: 429a cmp r2, r3 - 800c116: d019 beq.n 800c14c - 800c118: 4b23 ldr r3, [pc, #140] @ (800c1a8 ) - 800c11a: f44f 62df mov.w r2, #1784 @ 0x6f8 - 800c11e: 4923 ldr r1, [pc, #140] @ (800c1ac ) - 800c120: 4823 ldr r0, [pc, #140] @ (800c1b0 ) - 800c122: f006 fda9 bl 8012c78 - (seqno + tcplen) == (pcb->rcv_nxt + pcb->rcv_wnd)); - } - } - break; - 800c126: e011 b.n 800c14c - for (next = pcb->ooseq; next != NULL; next = next->next) { - 800c128: 6bbb ldr r3, [r7, #56] @ 0x38 - 800c12a: 681b ldr r3, [r3, #0] - 800c12c: 63bb str r3, [r7, #56] @ 0x38 - 800c12e: 6bbb ldr r3, [r7, #56] @ 0x38 - 800c130: 2b00 cmp r3, #0 - 800c132: f47f aea5 bne.w 800be80 - 800c136: e00a b.n 800c14e - break; - 800c138: bf00 nop - 800c13a: e008 b.n 800c14e - break; - 800c13c: bf00 nop - 800c13e: e006 b.n 800c14e - break; - 800c140: bf00 nop - 800c142: e004 b.n 800c14e - break; - 800c144: bf00 nop - 800c146: e002 b.n 800c14e - break; - 800c148: bf00 nop - 800c14a: e000 b.n 800c14e - break; - 800c14c: bf00 nop -#endif /* TCP_OOSEQ_BYTES_LIMIT || TCP_OOSEQ_PBUFS_LIMIT */ -#endif /* TCP_QUEUE_OOSEQ */ - - /* We send the ACK packet after we've (potentially) dealt with SACKs, - so they can be included in the acknowledgment. */ - tcp_send_empty_ack(pcb); - 800c14e: 6878 ldr r0, [r7, #4] - 800c150: f001 fa30 bl 800d5b4 - if (pcb->rcv_nxt == seqno) { - 800c154: e003 b.n 800c15e - } - } else { - /* The incoming segment is not within the window. */ - tcp_send_empty_ack(pcb); - 800c156: 6878 ldr r0, [r7, #4] - 800c158: f001 fa2c bl 800d5b4 - if (TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt, - 800c15c: e01a b.n 800c194 - 800c15e: e019 b.n 800c194 - } - } else { - /* Segments with length 0 is taken care of here. Segments that - fall out of the window are ACKed. */ - if (!TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt, pcb->rcv_nxt + pcb->rcv_wnd - 1)) { - 800c160: 4b0e ldr r3, [pc, #56] @ (800c19c ) - 800c162: 681a ldr r2, [r3, #0] - 800c164: 687b ldr r3, [r7, #4] - 800c166: 6a5b ldr r3, [r3, #36] @ 0x24 - 800c168: 1ad3 subs r3, r2, r3 - 800c16a: 2b00 cmp r3, #0 - 800c16c: db0a blt.n 800c184 - 800c16e: 4b0b ldr r3, [pc, #44] @ (800c19c ) - 800c170: 681a ldr r2, [r3, #0] - 800c172: 687b ldr r3, [r7, #4] - 800c174: 6a5b ldr r3, [r3, #36] @ 0x24 - 800c176: 6879 ldr r1, [r7, #4] - 800c178: 8d09 ldrh r1, [r1, #40] @ 0x28 - 800c17a: 440b add r3, r1 - 800c17c: 1ad3 subs r3, r2, r3 - 800c17e: 3301 adds r3, #1 - 800c180: 2b00 cmp r3, #0 - 800c182: dd07 ble.n 800c194 - tcp_ack_now(pcb); - 800c184: 687b ldr r3, [r7, #4] - 800c186: 8b5b ldrh r3, [r3, #26] - 800c188: f043 0302 orr.w r3, r3, #2 - 800c18c: b29a uxth r2, r3 - 800c18e: 687b ldr r3, [r7, #4] - 800c190: 835a strh r2, [r3, #26] - } - } -} - 800c192: e7ff b.n 800c194 - 800c194: bf00 nop - 800c196: 3750 adds r7, #80 @ 0x50 - 800c198: 46bd mov sp, r7 - 800c19a: bdb0 pop {r4, r5, r7, pc} - 800c19c: 20019124 .word 0x20019124 - 800c1a0: 20019104 .word 0x20019104 - 800c1a4: 2001912e .word 0x2001912e - 800c1a8: 0801892c .word 0x0801892c - 800c1ac: 08018cd4 .word 0x08018cd4 - 800c1b0: 08018978 .word 0x08018978 - -0800c1b4 : - -static u8_t -tcp_get_next_optbyte(void) -{ - 800c1b4: b480 push {r7} - 800c1b6: b083 sub sp, #12 - 800c1b8: af00 add r7, sp, #0 - u16_t optidx = tcp_optidx++; - 800c1ba: 4b15 ldr r3, [pc, #84] @ (800c210 ) - 800c1bc: 881b ldrh r3, [r3, #0] - 800c1be: 1c5a adds r2, r3, #1 - 800c1c0: b291 uxth r1, r2 - 800c1c2: 4a13 ldr r2, [pc, #76] @ (800c210 ) - 800c1c4: 8011 strh r1, [r2, #0] - 800c1c6: 80fb strh r3, [r7, #6] - if ((tcphdr_opt2 == NULL) || (optidx < tcphdr_opt1len)) { - 800c1c8: 4b12 ldr r3, [pc, #72] @ (800c214 ) - 800c1ca: 681b ldr r3, [r3, #0] - 800c1cc: 2b00 cmp r3, #0 - 800c1ce: d004 beq.n 800c1da - 800c1d0: 4b11 ldr r3, [pc, #68] @ (800c218 ) - 800c1d2: 881b ldrh r3, [r3, #0] - 800c1d4: 88fa ldrh r2, [r7, #6] - 800c1d6: 429a cmp r2, r3 - 800c1d8: d208 bcs.n 800c1ec - u8_t *opts = (u8_t *)tcphdr + TCP_HLEN; - 800c1da: 4b10 ldr r3, [pc, #64] @ (800c21c ) - 800c1dc: 681b ldr r3, [r3, #0] - 800c1de: 3314 adds r3, #20 - 800c1e0: 603b str r3, [r7, #0] - return opts[optidx]; - 800c1e2: 88fb ldrh r3, [r7, #6] - 800c1e4: 683a ldr r2, [r7, #0] - 800c1e6: 4413 add r3, r2 - 800c1e8: 781b ldrb r3, [r3, #0] - 800c1ea: e00b b.n 800c204 - } else { - u8_t idx = (u8_t)(optidx - tcphdr_opt1len); - 800c1ec: 88fb ldrh r3, [r7, #6] - 800c1ee: b2da uxtb r2, r3 - 800c1f0: 4b09 ldr r3, [pc, #36] @ (800c218 ) - 800c1f2: 881b ldrh r3, [r3, #0] - 800c1f4: b2db uxtb r3, r3 - 800c1f6: 1ad3 subs r3, r2, r3 - 800c1f8: 717b strb r3, [r7, #5] - return tcphdr_opt2[idx]; - 800c1fa: 4b06 ldr r3, [pc, #24] @ (800c214 ) - 800c1fc: 681a ldr r2, [r3, #0] - 800c1fe: 797b ldrb r3, [r7, #5] - 800c200: 4413 add r3, r2 - 800c202: 781b ldrb r3, [r3, #0] - } -} - 800c204: 4618 mov r0, r3 - 800c206: 370c adds r7, #12 - 800c208: 46bd mov sp, r7 - 800c20a: f85d 7b04 ldr.w r7, [sp], #4 - 800c20e: 4770 bx lr - 800c210: 20019120 .word 0x20019120 - 800c214: 2001911c .word 0x2001911c - 800c218: 2001911a .word 0x2001911a - 800c21c: 20019114 .word 0x20019114 - -0800c220 : - * - * @param pcb the tcp_pcb for which a segment arrived - */ -static void -tcp_parseopt(struct tcp_pcb *pcb) -{ - 800c220: b580 push {r7, lr} - 800c222: b084 sub sp, #16 - 800c224: af00 add r7, sp, #0 - 800c226: 6078 str r0, [r7, #4] - u16_t mss; -#if LWIP_TCP_TIMESTAMPS - u32_t tsval; -#endif - - LWIP_ASSERT("tcp_parseopt: invalid pcb", pcb != NULL); - 800c228: 687b ldr r3, [r7, #4] - 800c22a: 2b00 cmp r3, #0 - 800c22c: d106 bne.n 800c23c - 800c22e: 4b32 ldr r3, [pc, #200] @ (800c2f8 ) - 800c230: f240 727d movw r2, #1917 @ 0x77d - 800c234: 4931 ldr r1, [pc, #196] @ (800c2fc ) - 800c236: 4832 ldr r0, [pc, #200] @ (800c300 ) - 800c238: f006 fd1e bl 8012c78 - - /* Parse the TCP MSS option, if present. */ - if (tcphdr_optlen != 0) { - 800c23c: 4b31 ldr r3, [pc, #196] @ (800c304 ) - 800c23e: 881b ldrh r3, [r3, #0] - 800c240: 2b00 cmp r3, #0 - 800c242: d056 beq.n 800c2f2 - for (tcp_optidx = 0; tcp_optidx < tcphdr_optlen; ) { - 800c244: 4b30 ldr r3, [pc, #192] @ (800c308 ) - 800c246: 2200 movs r2, #0 - 800c248: 801a strh r2, [r3, #0] - 800c24a: e046 b.n 800c2da - u8_t opt = tcp_get_next_optbyte(); - 800c24c: f7ff ffb2 bl 800c1b4 - 800c250: 4603 mov r3, r0 - 800c252: 73fb strb r3, [r7, #15] - switch (opt) { - 800c254: 7bfb ldrb r3, [r7, #15] - 800c256: 2b02 cmp r3, #2 - 800c258: d006 beq.n 800c268 - 800c25a: 2b02 cmp r3, #2 - 800c25c: dc2a bgt.n 800c2b4 - 800c25e: 2b00 cmp r3, #0 - 800c260: d042 beq.n 800c2e8 - 800c262: 2b01 cmp r3, #1 - 800c264: d038 beq.n 800c2d8 - 800c266: e025 b.n 800c2b4 - /* NOP option. */ - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: NOP\n")); - break; - case LWIP_TCP_OPT_MSS: - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: MSS\n")); - if (tcp_get_next_optbyte() != LWIP_TCP_OPT_LEN_MSS || (tcp_optidx - 2 + LWIP_TCP_OPT_LEN_MSS) > tcphdr_optlen) { - 800c268: f7ff ffa4 bl 800c1b4 - 800c26c: 4603 mov r3, r0 - 800c26e: 2b04 cmp r3, #4 - 800c270: d13c bne.n 800c2ec - 800c272: 4b25 ldr r3, [pc, #148] @ (800c308 ) - 800c274: 881b ldrh r3, [r3, #0] - 800c276: 3301 adds r3, #1 - 800c278: 4a22 ldr r2, [pc, #136] @ (800c304 ) - 800c27a: 8812 ldrh r2, [r2, #0] - 800c27c: 4293 cmp r3, r2 - 800c27e: da35 bge.n 800c2ec - /* Bad length */ - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: bad length\n")); - return; - } - /* An MSS option with the right option length. */ - mss = (u16_t)(tcp_get_next_optbyte() << 8); - 800c280: f7ff ff98 bl 800c1b4 - 800c284: 4603 mov r3, r0 - 800c286: 021b lsls r3, r3, #8 - 800c288: 81bb strh r3, [r7, #12] - mss |= tcp_get_next_optbyte(); - 800c28a: f7ff ff93 bl 800c1b4 - 800c28e: 4603 mov r3, r0 - 800c290: 461a mov r2, r3 - 800c292: 89bb ldrh r3, [r7, #12] - 800c294: 4313 orrs r3, r2 - 800c296: 81bb strh r3, [r7, #12] - /* Limit the mss to the configured TCP_MSS and prevent division by zero */ - pcb->mss = ((mss > TCP_MSS) || (mss == 0)) ? TCP_MSS : mss; - 800c298: 89bb ldrh r3, [r7, #12] - 800c29a: f5b3 7f06 cmp.w r3, #536 @ 0x218 - 800c29e: d804 bhi.n 800c2aa - 800c2a0: 89bb ldrh r3, [r7, #12] - 800c2a2: 2b00 cmp r3, #0 - 800c2a4: d001 beq.n 800c2aa - 800c2a6: 89ba ldrh r2, [r7, #12] - 800c2a8: e001 b.n 800c2ae - 800c2aa: f44f 7206 mov.w r2, #536 @ 0x218 - 800c2ae: 687b ldr r3, [r7, #4] - 800c2b0: 865a strh r2, [r3, #50] @ 0x32 - break; - 800c2b2: e012 b.n 800c2da - } - break; -#endif /* LWIP_TCP_SACK_OUT */ - default: - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: other\n")); - data = tcp_get_next_optbyte(); - 800c2b4: f7ff ff7e bl 800c1b4 - 800c2b8: 4603 mov r3, r0 - 800c2ba: 72fb strb r3, [r7, #11] - if (data < 2) { - 800c2bc: 7afb ldrb r3, [r7, #11] - 800c2be: 2b01 cmp r3, #1 - 800c2c0: d916 bls.n 800c2f0 - and we don't process them further. */ - return; - } - /* All other options have a length field, so that we easily - can skip past them. */ - tcp_optidx += data - 2; - 800c2c2: 7afb ldrb r3, [r7, #11] - 800c2c4: b29a uxth r2, r3 - 800c2c6: 4b10 ldr r3, [pc, #64] @ (800c308 ) - 800c2c8: 881b ldrh r3, [r3, #0] - 800c2ca: 4413 add r3, r2 - 800c2cc: b29b uxth r3, r3 - 800c2ce: 3b02 subs r3, #2 - 800c2d0: b29a uxth r2, r3 - 800c2d2: 4b0d ldr r3, [pc, #52] @ (800c308 ) - 800c2d4: 801a strh r2, [r3, #0] - 800c2d6: e000 b.n 800c2da - break; - 800c2d8: bf00 nop - for (tcp_optidx = 0; tcp_optidx < tcphdr_optlen; ) { - 800c2da: 4b0b ldr r3, [pc, #44] @ (800c308 ) - 800c2dc: 881a ldrh r2, [r3, #0] - 800c2de: 4b09 ldr r3, [pc, #36] @ (800c304 ) - 800c2e0: 881b ldrh r3, [r3, #0] - 800c2e2: 429a cmp r2, r3 - 800c2e4: d3b2 bcc.n 800c24c - 800c2e6: e004 b.n 800c2f2 - return; - 800c2e8: bf00 nop - 800c2ea: e002 b.n 800c2f2 - return; - 800c2ec: bf00 nop - 800c2ee: e000 b.n 800c2f2 - return; - 800c2f0: bf00 nop - } - } - } -} - 800c2f2: 3710 adds r7, #16 - 800c2f4: 46bd mov sp, r7 - 800c2f6: bd80 pop {r7, pc} - 800c2f8: 0801892c .word 0x0801892c - 800c2fc: 08018d90 .word 0x08018d90 - 800c300: 08018978 .word 0x08018978 - 800c304: 20019118 .word 0x20019118 - 800c308: 20019120 .word 0x20019120 - -0800c30c : - -void -tcp_trigger_input_pcb_close(void) -{ - 800c30c: b480 push {r7} - 800c30e: af00 add r7, sp, #0 - recv_flags |= TF_CLOSED; - 800c310: 4b05 ldr r3, [pc, #20] @ (800c328 ) - 800c312: 781b ldrb r3, [r3, #0] - 800c314: f043 0310 orr.w r3, r3, #16 - 800c318: b2da uxtb r2, r3 - 800c31a: 4b03 ldr r3, [pc, #12] @ (800c328 ) - 800c31c: 701a strb r2, [r3, #0] -} - 800c31e: bf00 nop - 800c320: 46bd mov sp, r7 - 800c322: f85d 7b04 ldr.w r7, [sp], #4 - 800c326: 4770 bx lr - 800c328: 20019131 .word 0x20019131 - -0800c32c : -static err_t tcp_output_segment(struct tcp_seg *seg, struct tcp_pcb *pcb, struct netif *netif); - -/* tcp_route: common code that returns a fixed bound netif or calls ip_route */ -static struct netif * -tcp_route(const struct tcp_pcb *pcb, const ip_addr_t *src, const ip_addr_t *dst) -{ - 800c32c: b580 push {r7, lr} - 800c32e: b084 sub sp, #16 - 800c330: af00 add r7, sp, #0 - 800c332: 60f8 str r0, [r7, #12] - 800c334: 60b9 str r1, [r7, #8] - 800c336: 607a str r2, [r7, #4] - LWIP_UNUSED_ARG(src); /* in case IPv4-only and source-based routing is disabled */ - - if ((pcb != NULL) && (pcb->netif_idx != NETIF_NO_INDEX)) { - 800c338: 68fb ldr r3, [r7, #12] - 800c33a: 2b00 cmp r3, #0 - 800c33c: d00a beq.n 800c354 - 800c33e: 68fb ldr r3, [r7, #12] - 800c340: 7a1b ldrb r3, [r3, #8] - 800c342: 2b00 cmp r3, #0 - 800c344: d006 beq.n 800c354 - return netif_get_by_index(pcb->netif_idx); - 800c346: 68fb ldr r3, [r7, #12] - 800c348: 7a1b ldrb r3, [r3, #8] - 800c34a: 4618 mov r0, r3 - 800c34c: f7fb fb4e bl 80079ec - 800c350: 4603 mov r3, r0 - 800c352: e003 b.n 800c35c - } else { - return ip_route(src, dst); - 800c354: 6878 ldr r0, [r7, #4] - 800c356: f005 f869 bl 801142c - 800c35a: 4603 mov r3, r0 - } -} - 800c35c: 4618 mov r0, r3 - 800c35e: 3710 adds r7, #16 - 800c360: 46bd mov sp, r7 - 800c362: bd80 pop {r7, pc} - -0800c364 : - * The TCP header is filled in except ackno and wnd. - * p is freed on failure. - */ -static struct tcp_seg * -tcp_create_segment(const struct tcp_pcb *pcb, struct pbuf *p, u8_t hdrflags, u32_t seqno, u8_t optflags) -{ - 800c364: b590 push {r4, r7, lr} - 800c366: b087 sub sp, #28 - 800c368: af00 add r7, sp, #0 - 800c36a: 60f8 str r0, [r7, #12] - 800c36c: 60b9 str r1, [r7, #8] - 800c36e: 603b str r3, [r7, #0] - 800c370: 4613 mov r3, r2 - 800c372: 71fb strb r3, [r7, #7] - struct tcp_seg *seg; - u8_t optlen; - - LWIP_ASSERT("tcp_create_segment: invalid pcb", pcb != NULL); - 800c374: 68fb ldr r3, [r7, #12] - 800c376: 2b00 cmp r3, #0 - 800c378: d105 bne.n 800c386 - 800c37a: 4b43 ldr r3, [pc, #268] @ (800c488 ) - 800c37c: 22a3 movs r2, #163 @ 0xa3 - 800c37e: 4943 ldr r1, [pc, #268] @ (800c48c ) - 800c380: 4843 ldr r0, [pc, #268] @ (800c490 ) - 800c382: f006 fc79 bl 8012c78 - LWIP_ASSERT("tcp_create_segment: invalid pbuf", p != NULL); - 800c386: 68bb ldr r3, [r7, #8] - 800c388: 2b00 cmp r3, #0 - 800c38a: d105 bne.n 800c398 - 800c38c: 4b3e ldr r3, [pc, #248] @ (800c488 ) - 800c38e: 22a4 movs r2, #164 @ 0xa4 - 800c390: 4940 ldr r1, [pc, #256] @ (800c494 ) - 800c392: 483f ldr r0, [pc, #252] @ (800c490 ) - 800c394: f006 fc70 bl 8012c78 - - optlen = LWIP_TCP_OPT_LENGTH_SEGMENT(optflags, pcb); - 800c398: f897 3028 ldrb.w r3, [r7, #40] @ 0x28 - 800c39c: 009b lsls r3, r3, #2 - 800c39e: b2db uxtb r3, r3 - 800c3a0: f003 0304 and.w r3, r3, #4 - 800c3a4: 75fb strb r3, [r7, #23] - - if ((seg = (struct tcp_seg *)memp_malloc(MEMP_TCP_SEG)) == NULL) { - 800c3a6: 2003 movs r0, #3 - 800c3a8: f7fa ff8e bl 80072c8 - 800c3ac: 6138 str r0, [r7, #16] - 800c3ae: 693b ldr r3, [r7, #16] - 800c3b0: 2b00 cmp r3, #0 - 800c3b2: d104 bne.n 800c3be - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("tcp_create_segment: no memory.\n")); - pbuf_free(p); - 800c3b4: 68b8 ldr r0, [r7, #8] - 800c3b6: f7fb fe77 bl 80080a8 - return NULL; - 800c3ba: 2300 movs r3, #0 - 800c3bc: e060 b.n 800c480 - } - seg->flags = optflags; - 800c3be: 693b ldr r3, [r7, #16] - 800c3c0: f897 2028 ldrb.w r2, [r7, #40] @ 0x28 - 800c3c4: 729a strb r2, [r3, #10] - seg->next = NULL; - 800c3c6: 693b ldr r3, [r7, #16] - 800c3c8: 2200 movs r2, #0 - 800c3ca: 601a str r2, [r3, #0] - seg->p = p; - 800c3cc: 693b ldr r3, [r7, #16] - 800c3ce: 68ba ldr r2, [r7, #8] - 800c3d0: 605a str r2, [r3, #4] - LWIP_ASSERT("p->tot_len >= optlen", p->tot_len >= optlen); - 800c3d2: 68bb ldr r3, [r7, #8] - 800c3d4: 891a ldrh r2, [r3, #8] - 800c3d6: 7dfb ldrb r3, [r7, #23] - 800c3d8: b29b uxth r3, r3 - 800c3da: 429a cmp r2, r3 - 800c3dc: d205 bcs.n 800c3ea - 800c3de: 4b2a ldr r3, [pc, #168] @ (800c488 ) - 800c3e0: 22b0 movs r2, #176 @ 0xb0 - 800c3e2: 492d ldr r1, [pc, #180] @ (800c498 ) - 800c3e4: 482a ldr r0, [pc, #168] @ (800c490 ) - 800c3e6: f006 fc47 bl 8012c78 - seg->len = p->tot_len - optlen; - 800c3ea: 68bb ldr r3, [r7, #8] - 800c3ec: 891a ldrh r2, [r3, #8] - 800c3ee: 7dfb ldrb r3, [r7, #23] - 800c3f0: b29b uxth r3, r3 - 800c3f2: 1ad3 subs r3, r2, r3 - 800c3f4: b29a uxth r2, r3 - 800c3f6: 693b ldr r3, [r7, #16] - 800c3f8: 811a strh r2, [r3, #8] - LWIP_ASSERT("invalid optflags passed: TF_SEG_DATA_CHECKSUMMED", - (optflags & TF_SEG_DATA_CHECKSUMMED) == 0); -#endif /* TCP_CHECKSUM_ON_COPY */ - - /* build TCP header */ - if (pbuf_add_header(p, TCP_HLEN)) { - 800c3fa: 2114 movs r1, #20 - 800c3fc: 68b8 ldr r0, [r7, #8] - 800c3fe: f7fb fdbd bl 8007f7c - 800c402: 4603 mov r3, r0 - 800c404: 2b00 cmp r3, #0 - 800c406: d004 beq.n 800c412 - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("tcp_create_segment: no room for TCP header in pbuf.\n")); - TCP_STATS_INC(tcp.err); - tcp_seg_free(seg); - 800c408: 6938 ldr r0, [r7, #16] - 800c40a: f7fd f8d2 bl 80095b2 - return NULL; - 800c40e: 2300 movs r3, #0 - 800c410: e036 b.n 800c480 - } - seg->tcphdr = (struct tcp_hdr *)seg->p->payload; - 800c412: 693b ldr r3, [r7, #16] - 800c414: 685b ldr r3, [r3, #4] - 800c416: 685a ldr r2, [r3, #4] - 800c418: 693b ldr r3, [r7, #16] - 800c41a: 60da str r2, [r3, #12] - seg->tcphdr->src = lwip_htons(pcb->local_port); - 800c41c: 68fb ldr r3, [r7, #12] - 800c41e: 8ada ldrh r2, [r3, #22] - 800c420: 693b ldr r3, [r7, #16] - 800c422: 68dc ldr r4, [r3, #12] - 800c424: 4610 mov r0, r2 - 800c426: f7fa faef bl 8006a08 - 800c42a: 4603 mov r3, r0 - 800c42c: 8023 strh r3, [r4, #0] - seg->tcphdr->dest = lwip_htons(pcb->remote_port); - 800c42e: 68fb ldr r3, [r7, #12] - 800c430: 8b1a ldrh r2, [r3, #24] - 800c432: 693b ldr r3, [r7, #16] - 800c434: 68dc ldr r4, [r3, #12] - 800c436: 4610 mov r0, r2 - 800c438: f7fa fae6 bl 8006a08 - 800c43c: 4603 mov r3, r0 - 800c43e: 8063 strh r3, [r4, #2] - seg->tcphdr->seqno = lwip_htonl(seqno); - 800c440: 693b ldr r3, [r7, #16] - 800c442: 68dc ldr r4, [r3, #12] - 800c444: 6838 ldr r0, [r7, #0] - 800c446: f7fa faf4 bl 8006a32 - 800c44a: 4603 mov r3, r0 - 800c44c: 6063 str r3, [r4, #4] - /* ackno is set in tcp_output */ - TCPH_HDRLEN_FLAGS_SET(seg->tcphdr, (5 + optlen / 4), hdrflags); - 800c44e: 7dfb ldrb r3, [r7, #23] - 800c450: 089b lsrs r3, r3, #2 - 800c452: b2db uxtb r3, r3 - 800c454: 3305 adds r3, #5 - 800c456: b29b uxth r3, r3 - 800c458: 031b lsls r3, r3, #12 - 800c45a: b29a uxth r2, r3 - 800c45c: 79fb ldrb r3, [r7, #7] - 800c45e: b29b uxth r3, r3 - 800c460: 4313 orrs r3, r2 - 800c462: b29a uxth r2, r3 - 800c464: 693b ldr r3, [r7, #16] - 800c466: 68dc ldr r4, [r3, #12] - 800c468: 4610 mov r0, r2 - 800c46a: f7fa facd bl 8006a08 - 800c46e: 4603 mov r3, r0 - 800c470: 81a3 strh r3, [r4, #12] - /* wnd and chksum are set in tcp_output */ - seg->tcphdr->urgp = 0; - 800c472: 693b ldr r3, [r7, #16] - 800c474: 68db ldr r3, [r3, #12] - 800c476: 2200 movs r2, #0 - 800c478: 749a strb r2, [r3, #18] - 800c47a: 2200 movs r2, #0 - 800c47c: 74da strb r2, [r3, #19] - return seg; - 800c47e: 693b ldr r3, [r7, #16] -} - 800c480: 4618 mov r0, r3 - 800c482: 371c adds r7, #28 - 800c484: 46bd mov sp, r7 - 800c486: bd90 pop {r4, r7, pc} - 800c488: 08018dac .word 0x08018dac - 800c48c: 08018de0 .word 0x08018de0 - 800c490: 08018e00 .word 0x08018e00 - 800c494: 08018e28 .word 0x08018e28 - 800c498: 08018e4c .word 0x08018e4c - -0800c49c : - * @param pcb the tcp_pcb for which to split the unsent head - * @param split the amount of payload to remain in the head - */ -err_t -tcp_split_unsent_seg(struct tcp_pcb *pcb, u16_t split) -{ - 800c49c: b590 push {r4, r7, lr} - 800c49e: b08b sub sp, #44 @ 0x2c - 800c4a0: af02 add r7, sp, #8 - 800c4a2: 6078 str r0, [r7, #4] - 800c4a4: 460b mov r3, r1 - 800c4a6: 807b strh r3, [r7, #2] - struct tcp_seg *seg = NULL, *useg = NULL; - 800c4a8: 2300 movs r3, #0 - 800c4aa: 61fb str r3, [r7, #28] - 800c4ac: 2300 movs r3, #0 - 800c4ae: 617b str r3, [r7, #20] - struct pbuf *p = NULL; - 800c4b0: 2300 movs r3, #0 - 800c4b2: 613b str r3, [r7, #16] - u16_t chksum = 0; - u8_t chksum_swapped = 0; - struct pbuf *q; -#endif /* TCP_CHECKSUM_ON_COPY */ - - LWIP_ASSERT("tcp_split_unsent_seg: invalid pcb", pcb != NULL); - 800c4b4: 687b ldr r3, [r7, #4] - 800c4b6: 2b00 cmp r3, #0 - 800c4b8: d106 bne.n 800c4c8 - 800c4ba: 4b95 ldr r3, [pc, #596] @ (800c710 ) - 800c4bc: f240 324b movw r2, #843 @ 0x34b - 800c4c0: 4994 ldr r1, [pc, #592] @ (800c714 ) - 800c4c2: 4895 ldr r0, [pc, #596] @ (800c718 ) - 800c4c4: f006 fbd8 bl 8012c78 - - useg = pcb->unsent; - 800c4c8: 687b ldr r3, [r7, #4] - 800c4ca: 6edb ldr r3, [r3, #108] @ 0x6c - 800c4cc: 617b str r3, [r7, #20] - if (useg == NULL) { - 800c4ce: 697b ldr r3, [r7, #20] - 800c4d0: 2b00 cmp r3, #0 - 800c4d2: d102 bne.n 800c4da - return ERR_MEM; - 800c4d4: f04f 33ff mov.w r3, #4294967295 - 800c4d8: e116 b.n 800c708 - } - - if (split == 0) { - 800c4da: 887b ldrh r3, [r7, #2] - 800c4dc: 2b00 cmp r3, #0 - 800c4de: d109 bne.n 800c4f4 - LWIP_ASSERT("Can't split segment into length 0", 0); - 800c4e0: 4b8b ldr r3, [pc, #556] @ (800c710 ) - 800c4e2: f240 3253 movw r2, #851 @ 0x353 - 800c4e6: 498d ldr r1, [pc, #564] @ (800c71c ) - 800c4e8: 488b ldr r0, [pc, #556] @ (800c718 ) - 800c4ea: f006 fbc5 bl 8012c78 - return ERR_VAL; - 800c4ee: f06f 0305 mvn.w r3, #5 - 800c4f2: e109 b.n 800c708 - } - - if (useg->len <= split) { - 800c4f4: 697b ldr r3, [r7, #20] - 800c4f6: 891b ldrh r3, [r3, #8] - 800c4f8: 887a ldrh r2, [r7, #2] - 800c4fa: 429a cmp r2, r3 - 800c4fc: d301 bcc.n 800c502 - return ERR_OK; - 800c4fe: 2300 movs r3, #0 - 800c500: e102 b.n 800c708 - } - - LWIP_ASSERT("split <= mss", split <= pcb->mss); - 800c502: 687b ldr r3, [r7, #4] - 800c504: 8e5b ldrh r3, [r3, #50] @ 0x32 - 800c506: 887a ldrh r2, [r7, #2] - 800c508: 429a cmp r2, r3 - 800c50a: d906 bls.n 800c51a - 800c50c: 4b80 ldr r3, [pc, #512] @ (800c710 ) - 800c50e: f240 325b movw r2, #859 @ 0x35b - 800c512: 4983 ldr r1, [pc, #524] @ (800c720 ) - 800c514: 4880 ldr r0, [pc, #512] @ (800c718 ) - 800c516: f006 fbaf bl 8012c78 - LWIP_ASSERT("useg->len > 0", useg->len > 0); - 800c51a: 697b ldr r3, [r7, #20] - 800c51c: 891b ldrh r3, [r3, #8] - 800c51e: 2b00 cmp r3, #0 - 800c520: d106 bne.n 800c530 - 800c522: 4b7b ldr r3, [pc, #492] @ (800c710 ) - 800c524: f44f 7257 mov.w r2, #860 @ 0x35c - 800c528: 497e ldr r1, [pc, #504] @ (800c724 ) - 800c52a: 487b ldr r0, [pc, #492] @ (800c718 ) - 800c52c: f006 fba4 bl 8012c78 - * to split this packet so we may actually exceed the max value by - * one! - */ - LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_enqueue: split_unsent_seg: %u\n", (unsigned int)pcb->snd_queuelen)); - - optflags = useg->flags; - 800c530: 697b ldr r3, [r7, #20] - 800c532: 7a9b ldrb r3, [r3, #10] - 800c534: 73fb strb r3, [r7, #15] -#if TCP_CHECKSUM_ON_COPY - /* Remove since checksum is not stored until after tcp_create_segment() */ - optflags &= ~TF_SEG_DATA_CHECKSUMMED; -#endif /* TCP_CHECKSUM_ON_COPY */ - optlen = LWIP_TCP_OPT_LENGTH(optflags); - 800c536: 7bfb ldrb r3, [r7, #15] - 800c538: 009b lsls r3, r3, #2 - 800c53a: b2db uxtb r3, r3 - 800c53c: f003 0304 and.w r3, r3, #4 - 800c540: 73bb strb r3, [r7, #14] - remainder = useg->len - split; - 800c542: 697b ldr r3, [r7, #20] - 800c544: 891a ldrh r2, [r3, #8] - 800c546: 887b ldrh r3, [r7, #2] - 800c548: 1ad3 subs r3, r2, r3 - 800c54a: 81bb strh r3, [r7, #12] - - /* Create new pbuf for the remainder of the split */ - p = pbuf_alloc(PBUF_TRANSPORT, remainder + optlen, PBUF_RAM); - 800c54c: 7bbb ldrb r3, [r7, #14] - 800c54e: b29a uxth r2, r3 - 800c550: 89bb ldrh r3, [r7, #12] - 800c552: 4413 add r3, r2 - 800c554: b29b uxth r3, r3 - 800c556: f44f 7220 mov.w r2, #640 @ 0x280 - 800c55a: 4619 mov r1, r3 - 800c55c: 2036 movs r0, #54 @ 0x36 - 800c55e: f7fb fac1 bl 8007ae4 - 800c562: 6138 str r0, [r7, #16] - if (p == NULL) { - 800c564: 693b ldr r3, [r7, #16] - 800c566: 2b00 cmp r3, #0 - 800c568: f000 80b7 beq.w 800c6da - ("tcp_split_unsent_seg: could not allocate memory for pbuf remainder %u\n", remainder)); - goto memerr; - } - - /* Offset into the original pbuf is past TCP/IP headers, options, and split amount */ - offset = useg->p->tot_len - useg->len + split; - 800c56c: 697b ldr r3, [r7, #20] - 800c56e: 685b ldr r3, [r3, #4] - 800c570: 891a ldrh r2, [r3, #8] - 800c572: 697b ldr r3, [r7, #20] - 800c574: 891b ldrh r3, [r3, #8] - 800c576: 1ad3 subs r3, r2, r3 - 800c578: b29a uxth r2, r3 - 800c57a: 887b ldrh r3, [r7, #2] - 800c57c: 4413 add r3, r2 - 800c57e: 817b strh r3, [r7, #10] - /* Copy remainder into new pbuf, headers and options will not be filled out */ - if (pbuf_copy_partial(useg->p, (u8_t *)p->payload + optlen, remainder, offset ) != remainder) { - 800c580: 697b ldr r3, [r7, #20] - 800c582: 6858 ldr r0, [r3, #4] - 800c584: 693b ldr r3, [r7, #16] - 800c586: 685a ldr r2, [r3, #4] - 800c588: 7bbb ldrb r3, [r7, #14] - 800c58a: 18d1 adds r1, r2, r3 - 800c58c: 897b ldrh r3, [r7, #10] - 800c58e: 89ba ldrh r2, [r7, #12] - 800c590: f7fb ff84 bl 800849c - 800c594: 4603 mov r3, r0 - 800c596: 461a mov r2, r3 - 800c598: 89bb ldrh r3, [r7, #12] - 800c59a: 4293 cmp r3, r2 - 800c59c: f040 809f bne.w 800c6de -#endif /* TCP_CHECKSUM_ON_COPY */ - - /* Options are created when calling tcp_output() */ - - /* Migrate flags from original segment */ - split_flags = TCPH_FLAGS(useg->tcphdr); - 800c5a0: 697b ldr r3, [r7, #20] - 800c5a2: 68db ldr r3, [r3, #12] - 800c5a4: 899b ldrh r3, [r3, #12] - 800c5a6: b29b uxth r3, r3 - 800c5a8: 4618 mov r0, r3 - 800c5aa: f7fa fa2d bl 8006a08 - 800c5ae: 4603 mov r3, r0 - 800c5b0: b2db uxtb r3, r3 - 800c5b2: f003 033f and.w r3, r3, #63 @ 0x3f - 800c5b6: 76fb strb r3, [r7, #27] - remainder_flags = 0; /* ACK added in tcp_output() */ - 800c5b8: 2300 movs r3, #0 - 800c5ba: 76bb strb r3, [r7, #26] - - if (split_flags & TCP_PSH) { - 800c5bc: 7efb ldrb r3, [r7, #27] - 800c5be: f003 0308 and.w r3, r3, #8 - 800c5c2: 2b00 cmp r3, #0 - 800c5c4: d007 beq.n 800c5d6 - split_flags &= ~TCP_PSH; - 800c5c6: 7efb ldrb r3, [r7, #27] - 800c5c8: f023 0308 bic.w r3, r3, #8 - 800c5cc: 76fb strb r3, [r7, #27] - remainder_flags |= TCP_PSH; - 800c5ce: 7ebb ldrb r3, [r7, #26] - 800c5d0: f043 0308 orr.w r3, r3, #8 - 800c5d4: 76bb strb r3, [r7, #26] - } - if (split_flags & TCP_FIN) { - 800c5d6: 7efb ldrb r3, [r7, #27] - 800c5d8: f003 0301 and.w r3, r3, #1 - 800c5dc: 2b00 cmp r3, #0 - 800c5de: d007 beq.n 800c5f0 - split_flags &= ~TCP_FIN; - 800c5e0: 7efb ldrb r3, [r7, #27] - 800c5e2: f023 0301 bic.w r3, r3, #1 - 800c5e6: 76fb strb r3, [r7, #27] - remainder_flags |= TCP_FIN; - 800c5e8: 7ebb ldrb r3, [r7, #26] - 800c5ea: f043 0301 orr.w r3, r3, #1 - 800c5ee: 76bb strb r3, [r7, #26] - } - /* SYN should be left on split, RST should not be present with data */ - - seg = tcp_create_segment(pcb, p, remainder_flags, lwip_ntohl(useg->tcphdr->seqno) + split, optflags); - 800c5f0: 697b ldr r3, [r7, #20] - 800c5f2: 68db ldr r3, [r3, #12] - 800c5f4: 685b ldr r3, [r3, #4] - 800c5f6: 4618 mov r0, r3 - 800c5f8: f7fa fa1b bl 8006a32 - 800c5fc: 4602 mov r2, r0 - 800c5fe: 887b ldrh r3, [r7, #2] - 800c600: 18d1 adds r1, r2, r3 - 800c602: 7eba ldrb r2, [r7, #26] - 800c604: 7bfb ldrb r3, [r7, #15] - 800c606: 9300 str r3, [sp, #0] - 800c608: 460b mov r3, r1 - 800c60a: 6939 ldr r1, [r7, #16] - 800c60c: 6878 ldr r0, [r7, #4] - 800c60e: f7ff fea9 bl 800c364 - 800c612: 61f8 str r0, [r7, #28] - if (seg == NULL) { - 800c614: 69fb ldr r3, [r7, #28] - 800c616: 2b00 cmp r3, #0 - 800c618: d063 beq.n 800c6e2 - seg->chksum_swapped = chksum_swapped; - seg->flags |= TF_SEG_DATA_CHECKSUMMED; -#endif /* TCP_CHECKSUM_ON_COPY */ - - /* Remove this segment from the queue since trimming it may free pbufs */ - pcb->snd_queuelen -= pbuf_clen(useg->p); - 800c61a: 697b ldr r3, [r7, #20] - 800c61c: 685b ldr r3, [r3, #4] - 800c61e: 4618 mov r0, r3 - 800c620: f7fb fdca bl 80081b8 - 800c624: 4603 mov r3, r0 - 800c626: 461a mov r2, r3 - 800c628: 687b ldr r3, [r7, #4] - 800c62a: f8b3 3066 ldrh.w r3, [r3, #102] @ 0x66 - 800c62e: 1a9b subs r3, r3, r2 - 800c630: b29a uxth r2, r3 - 800c632: 687b ldr r3, [r7, #4] - 800c634: f8a3 2066 strh.w r2, [r3, #102] @ 0x66 - - /* Trim the original pbuf into our split size. At this point our remainder segment must be setup - successfully because we are modifying the original segment */ - pbuf_realloc(useg->p, useg->p->tot_len - remainder); - 800c638: 697b ldr r3, [r7, #20] - 800c63a: 6858 ldr r0, [r3, #4] - 800c63c: 697b ldr r3, [r7, #20] - 800c63e: 685b ldr r3, [r3, #4] - 800c640: 891a ldrh r2, [r3, #8] - 800c642: 89bb ldrh r3, [r7, #12] - 800c644: 1ad3 subs r3, r2, r3 - 800c646: b29b uxth r3, r3 - 800c648: 4619 mov r1, r3 - 800c64a: f7fb fba9 bl 8007da0 - useg->len -= remainder; - 800c64e: 697b ldr r3, [r7, #20] - 800c650: 891a ldrh r2, [r3, #8] - 800c652: 89bb ldrh r3, [r7, #12] - 800c654: 1ad3 subs r3, r2, r3 - 800c656: b29a uxth r2, r3 - 800c658: 697b ldr r3, [r7, #20] - 800c65a: 811a strh r2, [r3, #8] - TCPH_SET_FLAG(useg->tcphdr, split_flags); - 800c65c: 697b ldr r3, [r7, #20] - 800c65e: 68db ldr r3, [r3, #12] - 800c660: 899b ldrh r3, [r3, #12] - 800c662: b29c uxth r4, r3 - 800c664: 7efb ldrb r3, [r7, #27] - 800c666: b29b uxth r3, r3 - 800c668: 4618 mov r0, r3 - 800c66a: f7fa f9cd bl 8006a08 - 800c66e: 4603 mov r3, r0 - 800c670: 461a mov r2, r3 - 800c672: 697b ldr r3, [r7, #20] - 800c674: 68db ldr r3, [r3, #12] - 800c676: 4322 orrs r2, r4 - 800c678: b292 uxth r2, r2 - 800c67a: 819a strh r2, [r3, #12] - /* By trimming, realloc may have actually shrunk the pbuf, so clear oversize_left */ - useg->oversize_left = 0; -#endif /* TCP_OVERSIZE_DBGCHECK */ - - /* Add back to the queue with new trimmed pbuf */ - pcb->snd_queuelen += pbuf_clen(useg->p); - 800c67c: 697b ldr r3, [r7, #20] - 800c67e: 685b ldr r3, [r3, #4] - 800c680: 4618 mov r0, r3 - 800c682: f7fb fd99 bl 80081b8 - 800c686: 4603 mov r3, r0 - 800c688: 461a mov r2, r3 - 800c68a: 687b ldr r3, [r7, #4] - 800c68c: f8b3 3066 ldrh.w r3, [r3, #102] @ 0x66 - 800c690: 4413 add r3, r2 - 800c692: b29a uxth r2, r3 - 800c694: 687b ldr r3, [r7, #4] - 800c696: f8a3 2066 strh.w r2, [r3, #102] @ 0x66 -#endif /* TCP_CHECKSUM_ON_COPY */ - - /* Update number of segments on the queues. Note that length now may - * exceed TCP_SND_QUEUELEN! We don't have to touch pcb->snd_buf - * because the total amount of data is constant when packet is split */ - pcb->snd_queuelen += pbuf_clen(seg->p); - 800c69a: 69fb ldr r3, [r7, #28] - 800c69c: 685b ldr r3, [r3, #4] - 800c69e: 4618 mov r0, r3 - 800c6a0: f7fb fd8a bl 80081b8 - 800c6a4: 4603 mov r3, r0 - 800c6a6: 461a mov r2, r3 - 800c6a8: 687b ldr r3, [r7, #4] - 800c6aa: f8b3 3066 ldrh.w r3, [r3, #102] @ 0x66 - 800c6ae: 4413 add r3, r2 - 800c6b0: b29a uxth r2, r3 - 800c6b2: 687b ldr r3, [r7, #4] - 800c6b4: f8a3 2066 strh.w r2, [r3, #102] @ 0x66 - - /* Finally insert remainder into queue after split (which stays head) */ - seg->next = useg->next; - 800c6b8: 697b ldr r3, [r7, #20] - 800c6ba: 681a ldr r2, [r3, #0] - 800c6bc: 69fb ldr r3, [r7, #28] - 800c6be: 601a str r2, [r3, #0] - useg->next = seg; - 800c6c0: 697b ldr r3, [r7, #20] - 800c6c2: 69fa ldr r2, [r7, #28] - 800c6c4: 601a str r2, [r3, #0] - -#if TCP_OVERSIZE - /* If remainder is last segment on the unsent, ensure we clear the oversize amount - * because the remainder is always sized to the exact remaining amount */ - if (seg->next == NULL) { - 800c6c6: 69fb ldr r3, [r7, #28] - 800c6c8: 681b ldr r3, [r3, #0] - 800c6ca: 2b00 cmp r3, #0 - 800c6cc: d103 bne.n 800c6d6 - pcb->unsent_oversize = 0; - 800c6ce: 687b ldr r3, [r7, #4] - 800c6d0: 2200 movs r2, #0 - 800c6d2: f8a3 2068 strh.w r2, [r3, #104] @ 0x68 - } -#endif /* TCP_OVERSIZE */ - - return ERR_OK; - 800c6d6: 2300 movs r3, #0 - 800c6d8: e016 b.n 800c708 - goto memerr; - 800c6da: bf00 nop - 800c6dc: e002 b.n 800c6e4 - goto memerr; - 800c6de: bf00 nop - 800c6e0: e000 b.n 800c6e4 - goto memerr; - 800c6e2: bf00 nop -memerr: - TCP_STATS_INC(tcp.memerr); - - LWIP_ASSERT("seg == NULL", seg == NULL); - 800c6e4: 69fb ldr r3, [r7, #28] - 800c6e6: 2b00 cmp r3, #0 - 800c6e8: d006 beq.n 800c6f8 - 800c6ea: 4b09 ldr r3, [pc, #36] @ (800c710 ) - 800c6ec: f44f 7276 mov.w r2, #984 @ 0x3d8 - 800c6f0: 490d ldr r1, [pc, #52] @ (800c728 ) - 800c6f2: 4809 ldr r0, [pc, #36] @ (800c718 ) - 800c6f4: f006 fac0 bl 8012c78 - if (p != NULL) { - 800c6f8: 693b ldr r3, [r7, #16] - 800c6fa: 2b00 cmp r3, #0 - 800c6fc: d002 beq.n 800c704 - pbuf_free(p); - 800c6fe: 6938 ldr r0, [r7, #16] - 800c700: f7fb fcd2 bl 80080a8 - } - - return ERR_MEM; - 800c704: f04f 33ff mov.w r3, #4294967295 -} - 800c708: 4618 mov r0, r3 - 800c70a: 3724 adds r7, #36 @ 0x24 - 800c70c: 46bd mov sp, r7 - 800c70e: bd90 pop {r4, r7, pc} - 800c710: 08018dac .word 0x08018dac - 800c714: 08019140 .word 0x08019140 - 800c718: 08018e00 .word 0x08018e00 - 800c71c: 08019164 .word 0x08019164 - 800c720: 08019188 .word 0x08019188 - 800c724: 08019198 .word 0x08019198 - 800c728: 080191a8 .word 0x080191a8 - -0800c72c : - * @param pcb the tcp_pcb over which to send a segment - * @return ERR_OK if sent, another err_t otherwise - */ -err_t -tcp_send_fin(struct tcp_pcb *pcb) -{ - 800c72c: b590 push {r4, r7, lr} - 800c72e: b085 sub sp, #20 - 800c730: af00 add r7, sp, #0 - 800c732: 6078 str r0, [r7, #4] - LWIP_ASSERT("tcp_send_fin: invalid pcb", pcb != NULL); - 800c734: 687b ldr r3, [r7, #4] - 800c736: 2b00 cmp r3, #0 - 800c738: d106 bne.n 800c748 - 800c73a: 4b21 ldr r3, [pc, #132] @ (800c7c0 ) - 800c73c: f240 32eb movw r2, #1003 @ 0x3eb - 800c740: 4920 ldr r1, [pc, #128] @ (800c7c4 ) - 800c742: 4821 ldr r0, [pc, #132] @ (800c7c8 ) - 800c744: f006 fa98 bl 8012c78 - - /* first, try to add the fin to the last unsent segment */ - if (pcb->unsent != NULL) { - 800c748: 687b ldr r3, [r7, #4] - 800c74a: 6edb ldr r3, [r3, #108] @ 0x6c - 800c74c: 2b00 cmp r3, #0 - 800c74e: d02e beq.n 800c7ae - struct tcp_seg *last_unsent; - for (last_unsent = pcb->unsent; last_unsent->next != NULL; - 800c750: 687b ldr r3, [r7, #4] - 800c752: 6edb ldr r3, [r3, #108] @ 0x6c - 800c754: 60fb str r3, [r7, #12] - 800c756: e002 b.n 800c75e - last_unsent = last_unsent->next); - 800c758: 68fb ldr r3, [r7, #12] - 800c75a: 681b ldr r3, [r3, #0] - 800c75c: 60fb str r3, [r7, #12] - for (last_unsent = pcb->unsent; last_unsent->next != NULL; - 800c75e: 68fb ldr r3, [r7, #12] - 800c760: 681b ldr r3, [r3, #0] - 800c762: 2b00 cmp r3, #0 - 800c764: d1f8 bne.n 800c758 - - if ((TCPH_FLAGS(last_unsent->tcphdr) & (TCP_SYN | TCP_FIN | TCP_RST)) == 0) { - 800c766: 68fb ldr r3, [r7, #12] - 800c768: 68db ldr r3, [r3, #12] - 800c76a: 899b ldrh r3, [r3, #12] - 800c76c: b29b uxth r3, r3 - 800c76e: 4618 mov r0, r3 - 800c770: f7fa f94a bl 8006a08 - 800c774: 4603 mov r3, r0 - 800c776: b2db uxtb r3, r3 - 800c778: f003 0307 and.w r3, r3, #7 - 800c77c: 2b00 cmp r3, #0 - 800c77e: d116 bne.n 800c7ae - /* no SYN/FIN/RST flag in the header, we can add the FIN flag */ - TCPH_SET_FLAG(last_unsent->tcphdr, TCP_FIN); - 800c780: 68fb ldr r3, [r7, #12] - 800c782: 68db ldr r3, [r3, #12] - 800c784: 899b ldrh r3, [r3, #12] - 800c786: b29c uxth r4, r3 - 800c788: 2001 movs r0, #1 - 800c78a: f7fa f93d bl 8006a08 - 800c78e: 4603 mov r3, r0 - 800c790: 461a mov r2, r3 - 800c792: 68fb ldr r3, [r7, #12] - 800c794: 68db ldr r3, [r3, #12] - 800c796: 4322 orrs r2, r4 - 800c798: b292 uxth r2, r2 - 800c79a: 819a strh r2, [r3, #12] - tcp_set_flags(pcb, TF_FIN); - 800c79c: 687b ldr r3, [r7, #4] - 800c79e: 8b5b ldrh r3, [r3, #26] - 800c7a0: f043 0320 orr.w r3, r3, #32 - 800c7a4: b29a uxth r2, r3 - 800c7a6: 687b ldr r3, [r7, #4] - 800c7a8: 835a strh r2, [r3, #26] - return ERR_OK; - 800c7aa: 2300 movs r3, #0 - 800c7ac: e004 b.n 800c7b8 - } - } - /* no data, no length, flags, copy=1, no optdata */ - return tcp_enqueue_flags(pcb, TCP_FIN); - 800c7ae: 2101 movs r1, #1 - 800c7b0: 6878 ldr r0, [r7, #4] - 800c7b2: f000 f80b bl 800c7cc - 800c7b6: 4603 mov r3, r0 -} - 800c7b8: 4618 mov r0, r3 - 800c7ba: 3714 adds r7, #20 - 800c7bc: 46bd mov sp, r7 - 800c7be: bd90 pop {r4, r7, pc} - 800c7c0: 08018dac .word 0x08018dac - 800c7c4: 080191b4 .word 0x080191b4 - 800c7c8: 08018e00 .word 0x08018e00 - -0800c7cc : - * @param pcb Protocol control block for the TCP connection. - * @param flags TCP header flags to set in the outgoing segment. - */ -err_t -tcp_enqueue_flags(struct tcp_pcb *pcb, u8_t flags) -{ - 800c7cc: b580 push {r7, lr} - 800c7ce: b08a sub sp, #40 @ 0x28 - 800c7d0: af02 add r7, sp, #8 - 800c7d2: 6078 str r0, [r7, #4] - 800c7d4: 460b mov r3, r1 - 800c7d6: 70fb strb r3, [r7, #3] - struct pbuf *p; - struct tcp_seg *seg; - u8_t optflags = 0; - 800c7d8: 2300 movs r3, #0 - 800c7da: 77fb strb r3, [r7, #31] - u8_t optlen = 0; - 800c7dc: 2300 movs r3, #0 - 800c7de: 75fb strb r3, [r7, #23] - - LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_enqueue_flags: queuelen: %"U16_F"\n", (u16_t)pcb->snd_queuelen)); - - LWIP_ASSERT("tcp_enqueue_flags: need either TCP_SYN or TCP_FIN in flags (programmer violates API)", - 800c7e0: 78fb ldrb r3, [r7, #3] - 800c7e2: f003 0303 and.w r3, r3, #3 - 800c7e6: 2b00 cmp r3, #0 - 800c7e8: d106 bne.n 800c7f8 - 800c7ea: 4b67 ldr r3, [pc, #412] @ (800c988 ) - 800c7ec: f240 4211 movw r2, #1041 @ 0x411 - 800c7f0: 4966 ldr r1, [pc, #408] @ (800c98c ) - 800c7f2: 4867 ldr r0, [pc, #412] @ (800c990 ) - 800c7f4: f006 fa40 bl 8012c78 - (flags & (TCP_SYN | TCP_FIN)) != 0); - LWIP_ASSERT("tcp_enqueue_flags: invalid pcb", pcb != NULL); - 800c7f8: 687b ldr r3, [r7, #4] - 800c7fa: 2b00 cmp r3, #0 - 800c7fc: d106 bne.n 800c80c - 800c7fe: 4b62 ldr r3, [pc, #392] @ (800c988 ) - 800c800: f240 4213 movw r2, #1043 @ 0x413 - 800c804: 4963 ldr r1, [pc, #396] @ (800c994 ) - 800c806: 4862 ldr r0, [pc, #392] @ (800c990 ) - 800c808: f006 fa36 bl 8012c78 - - /* No need to check pcb->snd_queuelen if only SYN or FIN are allowed! */ - - /* Get options for this segment. This is a special case since this is the - only place where a SYN can be sent. */ - if (flags & TCP_SYN) { - 800c80c: 78fb ldrb r3, [r7, #3] - 800c80e: f003 0302 and.w r3, r3, #2 - 800c812: 2b00 cmp r3, #0 - 800c814: d001 beq.n 800c81a - optflags = TF_SEG_OPTS_MSS; - 800c816: 2301 movs r3, #1 - 800c818: 77fb strb r3, [r7, #31] - /* Make sure the timestamp option is only included in data segments if we - agreed about it with the remote host (and in active open SYN segments). */ - optflags |= TF_SEG_OPTS_TS; - } -#endif /* LWIP_TCP_TIMESTAMPS */ - optlen = LWIP_TCP_OPT_LENGTH_SEGMENT(optflags, pcb); - 800c81a: 7ffb ldrb r3, [r7, #31] - 800c81c: 009b lsls r3, r3, #2 - 800c81e: b2db uxtb r3, r3 - 800c820: f003 0304 and.w r3, r3, #4 - 800c824: 75fb strb r3, [r7, #23] - - /* Allocate pbuf with room for TCP header + options */ - if ((p = pbuf_alloc(PBUF_TRANSPORT, optlen, PBUF_RAM)) == NULL) { - 800c826: 7dfb ldrb r3, [r7, #23] - 800c828: b29b uxth r3, r3 - 800c82a: f44f 7220 mov.w r2, #640 @ 0x280 - 800c82e: 4619 mov r1, r3 - 800c830: 2036 movs r0, #54 @ 0x36 - 800c832: f7fb f957 bl 8007ae4 - 800c836: 6138 str r0, [r7, #16] - 800c838: 693b ldr r3, [r7, #16] - 800c83a: 2b00 cmp r3, #0 - 800c83c: d109 bne.n 800c852 - tcp_set_flags(pcb, TF_NAGLEMEMERR); - 800c83e: 687b ldr r3, [r7, #4] - 800c840: 8b5b ldrh r3, [r3, #26] - 800c842: f043 0380 orr.w r3, r3, #128 @ 0x80 - 800c846: b29a uxth r2, r3 - 800c848: 687b ldr r3, [r7, #4] - 800c84a: 835a strh r2, [r3, #26] - TCP_STATS_INC(tcp.memerr); - return ERR_MEM; - 800c84c: f04f 33ff mov.w r3, #4294967295 - 800c850: e095 b.n 800c97e - } - LWIP_ASSERT("tcp_enqueue_flags: check that first pbuf can hold optlen", - 800c852: 693b ldr r3, [r7, #16] - 800c854: 895a ldrh r2, [r3, #10] - 800c856: 7dfb ldrb r3, [r7, #23] - 800c858: b29b uxth r3, r3 - 800c85a: 429a cmp r2, r3 - 800c85c: d206 bcs.n 800c86c - 800c85e: 4b4a ldr r3, [pc, #296] @ (800c988 ) - 800c860: f240 4239 movw r2, #1081 @ 0x439 - 800c864: 494c ldr r1, [pc, #304] @ (800c998 ) - 800c866: 484a ldr r0, [pc, #296] @ (800c990 ) - 800c868: f006 fa06 bl 8012c78 - (p->len >= optlen)); - - /* Allocate memory for tcp_seg, and fill in fields. */ - if ((seg = tcp_create_segment(pcb, p, flags, pcb->snd_lbb, optflags)) == NULL) { - 800c86c: 687b ldr r3, [r7, #4] - 800c86e: 6dd9 ldr r1, [r3, #92] @ 0x5c - 800c870: 78fa ldrb r2, [r7, #3] - 800c872: 7ffb ldrb r3, [r7, #31] - 800c874: 9300 str r3, [sp, #0] - 800c876: 460b mov r3, r1 - 800c878: 6939 ldr r1, [r7, #16] - 800c87a: 6878 ldr r0, [r7, #4] - 800c87c: f7ff fd72 bl 800c364 - 800c880: 60f8 str r0, [r7, #12] - 800c882: 68fb ldr r3, [r7, #12] - 800c884: 2b00 cmp r3, #0 - 800c886: d109 bne.n 800c89c - tcp_set_flags(pcb, TF_NAGLEMEMERR); - 800c888: 687b ldr r3, [r7, #4] - 800c88a: 8b5b ldrh r3, [r3, #26] - 800c88c: f043 0380 orr.w r3, r3, #128 @ 0x80 - 800c890: b29a uxth r2, r3 - 800c892: 687b ldr r3, [r7, #4] - 800c894: 835a strh r2, [r3, #26] - TCP_STATS_INC(tcp.memerr); - return ERR_MEM; - 800c896: f04f 33ff mov.w r3, #4294967295 - 800c89a: e070 b.n 800c97e - } - LWIP_ASSERT("seg->tcphdr not aligned", ((mem_ptr_t)seg->tcphdr % LWIP_MIN(MEM_ALIGNMENT, 4)) == 0); - 800c89c: 68fb ldr r3, [r7, #12] - 800c89e: 68db ldr r3, [r3, #12] - 800c8a0: f003 0303 and.w r3, r3, #3 - 800c8a4: 2b00 cmp r3, #0 - 800c8a6: d006 beq.n 800c8b6 - 800c8a8: 4b37 ldr r3, [pc, #220] @ (800c988 ) - 800c8aa: f240 4242 movw r2, #1090 @ 0x442 - 800c8ae: 493b ldr r1, [pc, #236] @ (800c99c ) - 800c8b0: 4837 ldr r0, [pc, #220] @ (800c990 ) - 800c8b2: f006 f9e1 bl 8012c78 - LWIP_ASSERT("tcp_enqueue_flags: invalid segment length", seg->len == 0); - 800c8b6: 68fb ldr r3, [r7, #12] - 800c8b8: 891b ldrh r3, [r3, #8] - 800c8ba: 2b00 cmp r3, #0 - 800c8bc: d006 beq.n 800c8cc - 800c8be: 4b32 ldr r3, [pc, #200] @ (800c988 ) - 800c8c0: f240 4243 movw r2, #1091 @ 0x443 - 800c8c4: 4936 ldr r1, [pc, #216] @ (800c9a0 ) - 800c8c6: 4832 ldr r0, [pc, #200] @ (800c990 ) - 800c8c8: f006 f9d6 bl 8012c78 - lwip_ntohl(seg->tcphdr->seqno), - lwip_ntohl(seg->tcphdr->seqno) + TCP_TCPLEN(seg), - (u16_t)flags)); - - /* Now append seg to pcb->unsent queue */ - if (pcb->unsent == NULL) { - 800c8cc: 687b ldr r3, [r7, #4] - 800c8ce: 6edb ldr r3, [r3, #108] @ 0x6c - 800c8d0: 2b00 cmp r3, #0 - 800c8d2: d103 bne.n 800c8dc - pcb->unsent = seg; - 800c8d4: 687b ldr r3, [r7, #4] - 800c8d6: 68fa ldr r2, [r7, #12] - 800c8d8: 66da str r2, [r3, #108] @ 0x6c - 800c8da: e00d b.n 800c8f8 - } else { - struct tcp_seg *useg; - for (useg = pcb->unsent; useg->next != NULL; useg = useg->next); - 800c8dc: 687b ldr r3, [r7, #4] - 800c8de: 6edb ldr r3, [r3, #108] @ 0x6c - 800c8e0: 61bb str r3, [r7, #24] - 800c8e2: e002 b.n 800c8ea - 800c8e4: 69bb ldr r3, [r7, #24] - 800c8e6: 681b ldr r3, [r3, #0] - 800c8e8: 61bb str r3, [r7, #24] - 800c8ea: 69bb ldr r3, [r7, #24] - 800c8ec: 681b ldr r3, [r3, #0] - 800c8ee: 2b00 cmp r3, #0 - 800c8f0: d1f8 bne.n 800c8e4 - useg->next = seg; - 800c8f2: 69bb ldr r3, [r7, #24] - 800c8f4: 68fa ldr r2, [r7, #12] - 800c8f6: 601a str r2, [r3, #0] - } -#if TCP_OVERSIZE - /* The new unsent tail has no space */ - pcb->unsent_oversize = 0; - 800c8f8: 687b ldr r3, [r7, #4] - 800c8fa: 2200 movs r2, #0 - 800c8fc: f8a3 2068 strh.w r2, [r3, #104] @ 0x68 -#endif /* TCP_OVERSIZE */ - - /* SYN and FIN bump the sequence number */ - if ((flags & TCP_SYN) || (flags & TCP_FIN)) { - 800c900: 78fb ldrb r3, [r7, #3] - 800c902: f003 0302 and.w r3, r3, #2 - 800c906: 2b00 cmp r3, #0 - 800c908: d104 bne.n 800c914 - 800c90a: 78fb ldrb r3, [r7, #3] - 800c90c: f003 0301 and.w r3, r3, #1 - 800c910: 2b00 cmp r3, #0 - 800c912: d004 beq.n 800c91e - pcb->snd_lbb++; - 800c914: 687b ldr r3, [r7, #4] - 800c916: 6ddb ldr r3, [r3, #92] @ 0x5c - 800c918: 1c5a adds r2, r3, #1 - 800c91a: 687b ldr r3, [r7, #4] - 800c91c: 65da str r2, [r3, #92] @ 0x5c - /* optlen does not influence snd_buf */ - } - if (flags & TCP_FIN) { - 800c91e: 78fb ldrb r3, [r7, #3] - 800c920: f003 0301 and.w r3, r3, #1 - 800c924: 2b00 cmp r3, #0 - 800c926: d006 beq.n 800c936 - tcp_set_flags(pcb, TF_FIN); - 800c928: 687b ldr r3, [r7, #4] - 800c92a: 8b5b ldrh r3, [r3, #26] - 800c92c: f043 0320 orr.w r3, r3, #32 - 800c930: b29a uxth r2, r3 - 800c932: 687b ldr r3, [r7, #4] - 800c934: 835a strh r2, [r3, #26] - } - - /* update number of segments on the queues */ - pcb->snd_queuelen += pbuf_clen(seg->p); - 800c936: 68fb ldr r3, [r7, #12] - 800c938: 685b ldr r3, [r3, #4] - 800c93a: 4618 mov r0, r3 - 800c93c: f7fb fc3c bl 80081b8 - 800c940: 4603 mov r3, r0 - 800c942: 461a mov r2, r3 - 800c944: 687b ldr r3, [r7, #4] - 800c946: f8b3 3066 ldrh.w r3, [r3, #102] @ 0x66 - 800c94a: 4413 add r3, r2 - 800c94c: b29a uxth r2, r3 - 800c94e: 687b ldr r3, [r7, #4] - 800c950: f8a3 2066 strh.w r2, [r3, #102] @ 0x66 - LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_enqueue_flags: %"S16_F" (after enqueued)\n", pcb->snd_queuelen)); - if (pcb->snd_queuelen != 0) { - 800c954: 687b ldr r3, [r7, #4] - 800c956: f8b3 3066 ldrh.w r3, [r3, #102] @ 0x66 - 800c95a: 2b00 cmp r3, #0 - 800c95c: d00e beq.n 800c97c - LWIP_ASSERT("tcp_enqueue_flags: invalid queue length", - 800c95e: 687b ldr r3, [r7, #4] - 800c960: 6f1b ldr r3, [r3, #112] @ 0x70 - 800c962: 2b00 cmp r3, #0 - 800c964: d10a bne.n 800c97c - 800c966: 687b ldr r3, [r7, #4] - 800c968: 6edb ldr r3, [r3, #108] @ 0x6c - 800c96a: 2b00 cmp r3, #0 - 800c96c: d106 bne.n 800c97c - 800c96e: 4b06 ldr r3, [pc, #24] @ (800c988 ) - 800c970: f240 4265 movw r2, #1125 @ 0x465 - 800c974: 490b ldr r1, [pc, #44] @ (800c9a4 ) - 800c976: 4806 ldr r0, [pc, #24] @ (800c990 ) - 800c978: f006 f97e bl 8012c78 - pcb->unacked != NULL || pcb->unsent != NULL); - } - - return ERR_OK; - 800c97c: 2300 movs r3, #0 -} - 800c97e: 4618 mov r0, r3 - 800c980: 3720 adds r7, #32 - 800c982: 46bd mov sp, r7 - 800c984: bd80 pop {r7, pc} - 800c986: bf00 nop - 800c988: 08018dac .word 0x08018dac - 800c98c: 080191d0 .word 0x080191d0 - 800c990: 08018e00 .word 0x08018e00 - 800c994: 08019228 .word 0x08019228 - 800c998: 08019248 .word 0x08019248 - 800c99c: 08019284 .word 0x08019284 - 800c9a0: 0801929c .word 0x0801929c - 800c9a4: 080192c8 .word 0x080192c8 - -0800c9a8 : - * @return ERR_OK if data has been sent or nothing to send - * another err_t on error - */ -err_t -tcp_output(struct tcp_pcb *pcb) -{ - 800c9a8: b5b0 push {r4, r5, r7, lr} - 800c9aa: b08a sub sp, #40 @ 0x28 - 800c9ac: af00 add r7, sp, #0 - 800c9ae: 6078 str r0, [r7, #4] - s16_t i = 0; -#endif /* TCP_CWND_DEBUG */ - - LWIP_ASSERT_CORE_LOCKED(); - - LWIP_ASSERT("tcp_output: invalid pcb", pcb != NULL); - 800c9b0: 687b ldr r3, [r7, #4] - 800c9b2: 2b00 cmp r3, #0 - 800c9b4: d106 bne.n 800c9c4 - 800c9b6: 4b8a ldr r3, [pc, #552] @ (800cbe0 ) - 800c9b8: f240 42e1 movw r2, #1249 @ 0x4e1 - 800c9bc: 4989 ldr r1, [pc, #548] @ (800cbe4 ) - 800c9be: 488a ldr r0, [pc, #552] @ (800cbe8 ) - 800c9c0: f006 f95a bl 8012c78 - /* pcb->state LISTEN not allowed here */ - LWIP_ASSERT("don't call tcp_output for listen-pcbs", - 800c9c4: 687b ldr r3, [r7, #4] - 800c9c6: 7d1b ldrb r3, [r3, #20] - 800c9c8: 2b01 cmp r3, #1 - 800c9ca: d106 bne.n 800c9da - 800c9cc: 4b84 ldr r3, [pc, #528] @ (800cbe0 ) - 800c9ce: f240 42e3 movw r2, #1251 @ 0x4e3 - 800c9d2: 4986 ldr r1, [pc, #536] @ (800cbec ) - 800c9d4: 4884 ldr r0, [pc, #528] @ (800cbe8 ) - 800c9d6: f006 f94f bl 8012c78 - - /* First, check if we are invoked by the TCP input processing - code. If so, we do not output anything. Instead, we rely on the - input processing code to call us when input processing is done - with. */ - if (tcp_input_pcb == pcb) { - 800c9da: 4b85 ldr r3, [pc, #532] @ (800cbf0 ) - 800c9dc: 681b ldr r3, [r3, #0] - 800c9de: 687a ldr r2, [r7, #4] - 800c9e0: 429a cmp r2, r3 - 800c9e2: d101 bne.n 800c9e8 - return ERR_OK; - 800c9e4: 2300 movs r3, #0 - 800c9e6: e1ce b.n 800cd86 - } - - wnd = LWIP_MIN(pcb->snd_wnd, pcb->cwnd); - 800c9e8: 687b ldr r3, [r7, #4] - 800c9ea: f8b3 2048 ldrh.w r2, [r3, #72] @ 0x48 - 800c9ee: 687b ldr r3, [r7, #4] - 800c9f0: f8b3 3060 ldrh.w r3, [r3, #96] @ 0x60 - 800c9f4: 4293 cmp r3, r2 - 800c9f6: bf28 it cs - 800c9f8: 4613 movcs r3, r2 - 800c9fa: b29b uxth r3, r3 - 800c9fc: 61bb str r3, [r7, #24] - - seg = pcb->unsent; - 800c9fe: 687b ldr r3, [r7, #4] - 800ca00: 6edb ldr r3, [r3, #108] @ 0x6c - 800ca02: 627b str r3, [r7, #36] @ 0x24 - - if (seg == NULL) { - 800ca04: 6a7b ldr r3, [r7, #36] @ 0x24 - 800ca06: 2b00 cmp r3, #0 - 800ca08: d10b bne.n 800ca22 - ", seg == NULL, ack %"U32_F"\n", - pcb->snd_wnd, pcb->cwnd, wnd, pcb->lastack)); - - /* If the TF_ACK_NOW flag is set and the ->unsent queue is empty, construct - * an empty ACK segment and send it. */ - if (pcb->flags & TF_ACK_NOW) { - 800ca0a: 687b ldr r3, [r7, #4] - 800ca0c: 8b5b ldrh r3, [r3, #26] - 800ca0e: f003 0302 and.w r3, r3, #2 - 800ca12: 2b00 cmp r3, #0 - 800ca14: f000 81aa beq.w 800cd6c - return tcp_send_empty_ack(pcb); - 800ca18: 6878 ldr r0, [r7, #4] - 800ca1a: f000 fdcb bl 800d5b4 - 800ca1e: 4603 mov r3, r0 - 800ca20: e1b1 b.n 800cd86 - pcb->snd_wnd, pcb->cwnd, wnd, - lwip_ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len, - lwip_ntohl(seg->tcphdr->seqno), pcb->lastack)); - } - - netif = tcp_route(pcb, &pcb->local_ip, &pcb->remote_ip); - 800ca22: 6879 ldr r1, [r7, #4] - 800ca24: 687b ldr r3, [r7, #4] - 800ca26: 3304 adds r3, #4 - 800ca28: 461a mov r2, r3 - 800ca2a: 6878 ldr r0, [r7, #4] - 800ca2c: f7ff fc7e bl 800c32c - 800ca30: 6178 str r0, [r7, #20] - if (netif == NULL) { - 800ca32: 697b ldr r3, [r7, #20] - 800ca34: 2b00 cmp r3, #0 - 800ca36: d102 bne.n 800ca3e - return ERR_RTE; - 800ca38: f06f 0303 mvn.w r3, #3 - 800ca3c: e1a3 b.n 800cd86 - } - - /* If we don't have a local IP address, we get one from netif */ - if (ip_addr_isany(&pcb->local_ip)) { - 800ca3e: 687b ldr r3, [r7, #4] - 800ca40: 2b00 cmp r3, #0 - 800ca42: d003 beq.n 800ca4c - 800ca44: 687b ldr r3, [r7, #4] - 800ca46: 681b ldr r3, [r3, #0] - 800ca48: 2b00 cmp r3, #0 - 800ca4a: d111 bne.n 800ca70 - const ip_addr_t *local_ip = ip_netif_get_local_ip(netif, &pcb->remote_ip); - 800ca4c: 697b ldr r3, [r7, #20] - 800ca4e: 2b00 cmp r3, #0 - 800ca50: d002 beq.n 800ca58 - 800ca52: 697b ldr r3, [r7, #20] - 800ca54: 3304 adds r3, #4 - 800ca56: e000 b.n 800ca5a - 800ca58: 2300 movs r3, #0 - 800ca5a: 613b str r3, [r7, #16] - if (local_ip == NULL) { - 800ca5c: 693b ldr r3, [r7, #16] - 800ca5e: 2b00 cmp r3, #0 - 800ca60: d102 bne.n 800ca68 - return ERR_RTE; - 800ca62: f06f 0303 mvn.w r3, #3 - 800ca66: e18e b.n 800cd86 - } - ip_addr_copy(pcb->local_ip, *local_ip); - 800ca68: 693b ldr r3, [r7, #16] - 800ca6a: 681a ldr r2, [r3, #0] - 800ca6c: 687b ldr r3, [r7, #4] - 800ca6e: 601a str r2, [r3, #0] - } - - /* Handle the current segment not fitting within the window */ - if (lwip_ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len > wnd) { - 800ca70: 6a7b ldr r3, [r7, #36] @ 0x24 - 800ca72: 68db ldr r3, [r3, #12] - 800ca74: 685b ldr r3, [r3, #4] - 800ca76: 4618 mov r0, r3 - 800ca78: f7f9 ffdb bl 8006a32 - 800ca7c: 4602 mov r2, r0 - 800ca7e: 687b ldr r3, [r7, #4] - 800ca80: 6c5b ldr r3, [r3, #68] @ 0x44 - 800ca82: 1ad3 subs r3, r2, r3 - 800ca84: 6a7a ldr r2, [r7, #36] @ 0x24 - 800ca86: 8912 ldrh r2, [r2, #8] - 800ca88: 4413 add r3, r2 - 800ca8a: 69ba ldr r2, [r7, #24] - 800ca8c: 429a cmp r2, r3 - 800ca8e: d227 bcs.n 800cae0 - * within the remaining (could be 0) send window and RTO timer is not running (we - * have no in-flight data). If window is still too small after persist timer fires, - * then we split the segment. We don't consider the congestion window since a cwnd - * smaller than 1 SMSS implies in-flight data - */ - if (wnd == pcb->snd_wnd && pcb->unacked == NULL && pcb->persist_backoff == 0) { - 800ca90: 687b ldr r3, [r7, #4] - 800ca92: f8b3 3060 ldrh.w r3, [r3, #96] @ 0x60 - 800ca96: 461a mov r2, r3 - 800ca98: 69bb ldr r3, [r7, #24] - 800ca9a: 4293 cmp r3, r2 - 800ca9c: d114 bne.n 800cac8 - 800ca9e: 687b ldr r3, [r7, #4] - 800caa0: 6f1b ldr r3, [r3, #112] @ 0x70 - 800caa2: 2b00 cmp r3, #0 - 800caa4: d110 bne.n 800cac8 - 800caa6: 687b ldr r3, [r7, #4] - 800caa8: f893 3099 ldrb.w r3, [r3, #153] @ 0x99 - 800caac: 2b00 cmp r3, #0 - 800caae: d10b bne.n 800cac8 - pcb->persist_cnt = 0; - 800cab0: 687b ldr r3, [r7, #4] - 800cab2: 2200 movs r2, #0 - 800cab4: f883 2098 strb.w r2, [r3, #152] @ 0x98 - pcb->persist_backoff = 1; - 800cab8: 687b ldr r3, [r7, #4] - 800caba: 2201 movs r2, #1 - 800cabc: f883 2099 strb.w r2, [r3, #153] @ 0x99 - pcb->persist_probe = 0; - 800cac0: 687b ldr r3, [r7, #4] - 800cac2: 2200 movs r2, #0 - 800cac4: f883 209a strb.w r2, [r3, #154] @ 0x9a - } - /* We need an ACK, but can't send data now, so send an empty ACK */ - if (pcb->flags & TF_ACK_NOW) { - 800cac8: 687b ldr r3, [r7, #4] - 800caca: 8b5b ldrh r3, [r3, #26] - 800cacc: f003 0302 and.w r3, r3, #2 - 800cad0: 2b00 cmp r3, #0 - 800cad2: f000 814d beq.w 800cd70 - return tcp_send_empty_ack(pcb); - 800cad6: 6878 ldr r0, [r7, #4] - 800cad8: f000 fd6c bl 800d5b4 - 800cadc: 4603 mov r3, r0 - 800cade: e152 b.n 800cd86 - } - goto output_done; - } - /* Stop persist timer, above conditions are not active */ - pcb->persist_backoff = 0; - 800cae0: 687b ldr r3, [r7, #4] - 800cae2: 2200 movs r2, #0 - 800cae4: f883 2099 strb.w r2, [r3, #153] @ 0x99 - - /* useg should point to last segment on unacked queue */ - useg = pcb->unacked; - 800cae8: 687b ldr r3, [r7, #4] - 800caea: 6f1b ldr r3, [r3, #112] @ 0x70 - 800caec: 623b str r3, [r7, #32] - if (useg != NULL) { - 800caee: 6a3b ldr r3, [r7, #32] - 800caf0: 2b00 cmp r3, #0 - 800caf2: f000 811c beq.w 800cd2e - for (; useg->next != NULL; useg = useg->next); - 800caf6: e002 b.n 800cafe - 800caf8: 6a3b ldr r3, [r7, #32] - 800cafa: 681b ldr r3, [r3, #0] - 800cafc: 623b str r3, [r7, #32] - 800cafe: 6a3b ldr r3, [r7, #32] - 800cb00: 681b ldr r3, [r3, #0] - 800cb02: 2b00 cmp r3, #0 - 800cb04: d1f8 bne.n 800caf8 - } - /* data available and window allows it to be sent? */ - while (seg != NULL && - 800cb06: e112 b.n 800cd2e - lwip_ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len <= wnd) { - LWIP_ASSERT("RST not expected here!", - 800cb08: 6a7b ldr r3, [r7, #36] @ 0x24 - 800cb0a: 68db ldr r3, [r3, #12] - 800cb0c: 899b ldrh r3, [r3, #12] - 800cb0e: b29b uxth r3, r3 - 800cb10: 4618 mov r0, r3 - 800cb12: f7f9 ff79 bl 8006a08 - 800cb16: 4603 mov r3, r0 - 800cb18: b2db uxtb r3, r3 - 800cb1a: f003 0304 and.w r3, r3, #4 - 800cb1e: 2b00 cmp r3, #0 - 800cb20: d006 beq.n 800cb30 - 800cb22: 4b2f ldr r3, [pc, #188] @ (800cbe0 ) - 800cb24: f240 5236 movw r2, #1334 @ 0x536 - 800cb28: 4932 ldr r1, [pc, #200] @ (800cbf4 ) - 800cb2a: 482f ldr r0, [pc, #188] @ (800cbe8 ) - 800cb2c: f006 f8a4 bl 8012c78 - * - if tcp_write had a memory error before (prevent delayed ACK timeout) or - * - if FIN was already enqueued for this PCB (SYN is always alone in a segment - - * either seg->next != NULL or pcb->unacked == NULL; - * RST is no sent using tcp_write/tcp_output. - */ - if ((tcp_do_output_nagle(pcb) == 0) && - 800cb30: 687b ldr r3, [r7, #4] - 800cb32: 6f1b ldr r3, [r3, #112] @ 0x70 - 800cb34: 2b00 cmp r3, #0 - 800cb36: d01f beq.n 800cb78 - 800cb38: 687b ldr r3, [r7, #4] - 800cb3a: 8b5b ldrh r3, [r3, #26] - 800cb3c: f003 0344 and.w r3, r3, #68 @ 0x44 - 800cb40: 2b00 cmp r3, #0 - 800cb42: d119 bne.n 800cb78 - 800cb44: 687b ldr r3, [r7, #4] - 800cb46: 6edb ldr r3, [r3, #108] @ 0x6c - 800cb48: 2b00 cmp r3, #0 - 800cb4a: d00b beq.n 800cb64 - 800cb4c: 687b ldr r3, [r7, #4] - 800cb4e: 6edb ldr r3, [r3, #108] @ 0x6c - 800cb50: 681b ldr r3, [r3, #0] - 800cb52: 2b00 cmp r3, #0 - 800cb54: d110 bne.n 800cb78 - 800cb56: 687b ldr r3, [r7, #4] - 800cb58: 6edb ldr r3, [r3, #108] @ 0x6c - 800cb5a: 891a ldrh r2, [r3, #8] - 800cb5c: 687b ldr r3, [r7, #4] - 800cb5e: 8e5b ldrh r3, [r3, #50] @ 0x32 - 800cb60: 429a cmp r2, r3 - 800cb62: d209 bcs.n 800cb78 - 800cb64: 687b ldr r3, [r7, #4] - 800cb66: f8b3 3064 ldrh.w r3, [r3, #100] @ 0x64 - 800cb6a: 2b00 cmp r3, #0 - 800cb6c: d004 beq.n 800cb78 - 800cb6e: 687b ldr r3, [r7, #4] - 800cb70: f8b3 3066 ldrh.w r3, [r3, #102] @ 0x66 - 800cb74: 2b08 cmp r3, #8 - 800cb76: d901 bls.n 800cb7c - 800cb78: 2301 movs r3, #1 - 800cb7a: e000 b.n 800cb7e - 800cb7c: 2300 movs r3, #0 - 800cb7e: 2b00 cmp r3, #0 - 800cb80: d106 bne.n 800cb90 - ((pcb->flags & (TF_NAGLEMEMERR | TF_FIN)) == 0)) { - 800cb82: 687b ldr r3, [r7, #4] - 800cb84: 8b5b ldrh r3, [r3, #26] - 800cb86: f003 03a0 and.w r3, r3, #160 @ 0xa0 - if ((tcp_do_output_nagle(pcb) == 0) && - 800cb8a: 2b00 cmp r3, #0 - 800cb8c: f000 80e4 beq.w 800cd58 - pcb->lastack, - lwip_ntohl(seg->tcphdr->seqno), pcb->lastack, i)); - ++i; -#endif /* TCP_CWND_DEBUG */ - - if (pcb->state != SYN_SENT) { - 800cb90: 687b ldr r3, [r7, #4] - 800cb92: 7d1b ldrb r3, [r3, #20] - 800cb94: 2b02 cmp r3, #2 - 800cb96: d00d beq.n 800cbb4 - TCPH_SET_FLAG(seg->tcphdr, TCP_ACK); - 800cb98: 6a7b ldr r3, [r7, #36] @ 0x24 - 800cb9a: 68db ldr r3, [r3, #12] - 800cb9c: 899b ldrh r3, [r3, #12] - 800cb9e: b29c uxth r4, r3 - 800cba0: 2010 movs r0, #16 - 800cba2: f7f9 ff31 bl 8006a08 - 800cba6: 4603 mov r3, r0 - 800cba8: 461a mov r2, r3 - 800cbaa: 6a7b ldr r3, [r7, #36] @ 0x24 - 800cbac: 68db ldr r3, [r3, #12] - 800cbae: 4322 orrs r2, r4 - 800cbb0: b292 uxth r2, r2 - 800cbb2: 819a strh r2, [r3, #12] - } - - err = tcp_output_segment(seg, pcb, netif); - 800cbb4: 697a ldr r2, [r7, #20] - 800cbb6: 6879 ldr r1, [r7, #4] - 800cbb8: 6a78 ldr r0, [r7, #36] @ 0x24 - 800cbba: f000 f909 bl 800cdd0 - 800cbbe: 4603 mov r3, r0 - 800cbc0: 73fb strb r3, [r7, #15] - if (err != ERR_OK) { - 800cbc2: f997 300f ldrsb.w r3, [r7, #15] - 800cbc6: 2b00 cmp r3, #0 - 800cbc8: d016 beq.n 800cbf8 - /* segment could not be sent, for whatever reason */ - tcp_set_flags(pcb, TF_NAGLEMEMERR); - 800cbca: 687b ldr r3, [r7, #4] - 800cbcc: 8b5b ldrh r3, [r3, #26] - 800cbce: f043 0380 orr.w r3, r3, #128 @ 0x80 - 800cbd2: b29a uxth r2, r3 - 800cbd4: 687b ldr r3, [r7, #4] - 800cbd6: 835a strh r2, [r3, #26] - return err; - 800cbd8: f997 300f ldrsb.w r3, [r7, #15] - 800cbdc: e0d3 b.n 800cd86 - 800cbde: bf00 nop - 800cbe0: 08018dac .word 0x08018dac - 800cbe4: 080192f0 .word 0x080192f0 - 800cbe8: 08018e00 .word 0x08018e00 - 800cbec: 08019308 .word 0x08019308 - 800cbf0: 20019138 .word 0x20019138 - 800cbf4: 08019330 .word 0x08019330 - } -#if TCP_OVERSIZE_DBGCHECK - seg->oversize_left = 0; -#endif /* TCP_OVERSIZE_DBGCHECK */ - pcb->unsent = seg->next; - 800cbf8: 6a7b ldr r3, [r7, #36] @ 0x24 - 800cbfa: 681a ldr r2, [r3, #0] - 800cbfc: 687b ldr r3, [r7, #4] - 800cbfe: 66da str r2, [r3, #108] @ 0x6c - if (pcb->state != SYN_SENT) { - 800cc00: 687b ldr r3, [r7, #4] - 800cc02: 7d1b ldrb r3, [r3, #20] - 800cc04: 2b02 cmp r3, #2 - 800cc06: d006 beq.n 800cc16 - tcp_clear_flags(pcb, TF_ACK_DELAY | TF_ACK_NOW); - 800cc08: 687b ldr r3, [r7, #4] - 800cc0a: 8b5b ldrh r3, [r3, #26] - 800cc0c: f023 0303 bic.w r3, r3, #3 - 800cc10: b29a uxth r2, r3 - 800cc12: 687b ldr r3, [r7, #4] - 800cc14: 835a strh r2, [r3, #26] - } - snd_nxt = lwip_ntohl(seg->tcphdr->seqno) + TCP_TCPLEN(seg); - 800cc16: 6a7b ldr r3, [r7, #36] @ 0x24 - 800cc18: 68db ldr r3, [r3, #12] - 800cc1a: 685b ldr r3, [r3, #4] - 800cc1c: 4618 mov r0, r3 - 800cc1e: f7f9 ff08 bl 8006a32 - 800cc22: 4604 mov r4, r0 - 800cc24: 6a7b ldr r3, [r7, #36] @ 0x24 - 800cc26: 891b ldrh r3, [r3, #8] - 800cc28: 461d mov r5, r3 - 800cc2a: 6a7b ldr r3, [r7, #36] @ 0x24 - 800cc2c: 68db ldr r3, [r3, #12] - 800cc2e: 899b ldrh r3, [r3, #12] - 800cc30: b29b uxth r3, r3 - 800cc32: 4618 mov r0, r3 - 800cc34: f7f9 fee8 bl 8006a08 - 800cc38: 4603 mov r3, r0 - 800cc3a: b2db uxtb r3, r3 - 800cc3c: f003 0303 and.w r3, r3, #3 - 800cc40: 2b00 cmp r3, #0 - 800cc42: d001 beq.n 800cc48 - 800cc44: 2301 movs r3, #1 - 800cc46: e000 b.n 800cc4a - 800cc48: 2300 movs r3, #0 - 800cc4a: 442b add r3, r5 - 800cc4c: 4423 add r3, r4 - 800cc4e: 60bb str r3, [r7, #8] - if (TCP_SEQ_LT(pcb->snd_nxt, snd_nxt)) { - 800cc50: 687b ldr r3, [r7, #4] - 800cc52: 6d1a ldr r2, [r3, #80] @ 0x50 - 800cc54: 68bb ldr r3, [r7, #8] - 800cc56: 1ad3 subs r3, r2, r3 - 800cc58: 2b00 cmp r3, #0 - 800cc5a: da02 bge.n 800cc62 - pcb->snd_nxt = snd_nxt; - 800cc5c: 687b ldr r3, [r7, #4] - 800cc5e: 68ba ldr r2, [r7, #8] - 800cc60: 651a str r2, [r3, #80] @ 0x50 - } - /* put segment on unacknowledged list if length > 0 */ - if (TCP_TCPLEN(seg) > 0) { - 800cc62: 6a7b ldr r3, [r7, #36] @ 0x24 - 800cc64: 891b ldrh r3, [r3, #8] - 800cc66: 461c mov r4, r3 - 800cc68: 6a7b ldr r3, [r7, #36] @ 0x24 - 800cc6a: 68db ldr r3, [r3, #12] - 800cc6c: 899b ldrh r3, [r3, #12] - 800cc6e: b29b uxth r3, r3 - 800cc70: 4618 mov r0, r3 - 800cc72: f7f9 fec9 bl 8006a08 - 800cc76: 4603 mov r3, r0 - 800cc78: b2db uxtb r3, r3 - 800cc7a: f003 0303 and.w r3, r3, #3 - 800cc7e: 2b00 cmp r3, #0 - 800cc80: d001 beq.n 800cc86 - 800cc82: 2301 movs r3, #1 - 800cc84: e000 b.n 800cc88 - 800cc86: 2300 movs r3, #0 - 800cc88: 4423 add r3, r4 - 800cc8a: 2b00 cmp r3, #0 - 800cc8c: d049 beq.n 800cd22 - seg->next = NULL; - 800cc8e: 6a7b ldr r3, [r7, #36] @ 0x24 - 800cc90: 2200 movs r2, #0 - 800cc92: 601a str r2, [r3, #0] - /* unacked list is empty? */ - if (pcb->unacked == NULL) { - 800cc94: 687b ldr r3, [r7, #4] - 800cc96: 6f1b ldr r3, [r3, #112] @ 0x70 - 800cc98: 2b00 cmp r3, #0 - 800cc9a: d105 bne.n 800cca8 - pcb->unacked = seg; - 800cc9c: 687b ldr r3, [r7, #4] - 800cc9e: 6a7a ldr r2, [r7, #36] @ 0x24 - 800cca0: 671a str r2, [r3, #112] @ 0x70 - useg = seg; - 800cca2: 6a7b ldr r3, [r7, #36] @ 0x24 - 800cca4: 623b str r3, [r7, #32] - 800cca6: e03f b.n 800cd28 - /* unacked list is not empty? */ - } else { - /* In the case of fast retransmit, the packet should not go to the tail - * of the unacked queue, but rather somewhere before it. We need to check for - * this case. -STJ Jul 27, 2004 */ - if (TCP_SEQ_LT(lwip_ntohl(seg->tcphdr->seqno), lwip_ntohl(useg->tcphdr->seqno))) { - 800cca8: 6a7b ldr r3, [r7, #36] @ 0x24 - 800ccaa: 68db ldr r3, [r3, #12] - 800ccac: 685b ldr r3, [r3, #4] - 800ccae: 4618 mov r0, r3 - 800ccb0: f7f9 febf bl 8006a32 - 800ccb4: 4604 mov r4, r0 - 800ccb6: 6a3b ldr r3, [r7, #32] - 800ccb8: 68db ldr r3, [r3, #12] - 800ccba: 685b ldr r3, [r3, #4] - 800ccbc: 4618 mov r0, r3 - 800ccbe: f7f9 feb8 bl 8006a32 - 800ccc2: 4603 mov r3, r0 - 800ccc4: 1ae3 subs r3, r4, r3 - 800ccc6: 2b00 cmp r3, #0 - 800ccc8: da24 bge.n 800cd14 - /* add segment to before tail of unacked list, keeping the list sorted */ - struct tcp_seg **cur_seg = &(pcb->unacked); - 800ccca: 687b ldr r3, [r7, #4] - 800cccc: 3370 adds r3, #112 @ 0x70 - 800ccce: 61fb str r3, [r7, #28] - while (*cur_seg && - 800ccd0: e002 b.n 800ccd8 - TCP_SEQ_LT(lwip_ntohl((*cur_seg)->tcphdr->seqno), lwip_ntohl(seg->tcphdr->seqno))) { - cur_seg = &((*cur_seg)->next ); - 800ccd2: 69fb ldr r3, [r7, #28] - 800ccd4: 681b ldr r3, [r3, #0] - 800ccd6: 61fb str r3, [r7, #28] - while (*cur_seg && - 800ccd8: 69fb ldr r3, [r7, #28] - 800ccda: 681b ldr r3, [r3, #0] - 800ccdc: 2b00 cmp r3, #0 - 800ccde: d011 beq.n 800cd04 - TCP_SEQ_LT(lwip_ntohl((*cur_seg)->tcphdr->seqno), lwip_ntohl(seg->tcphdr->seqno))) { - 800cce0: 69fb ldr r3, [r7, #28] - 800cce2: 681b ldr r3, [r3, #0] - 800cce4: 68db ldr r3, [r3, #12] - 800cce6: 685b ldr r3, [r3, #4] - 800cce8: 4618 mov r0, r3 - 800ccea: f7f9 fea2 bl 8006a32 - 800ccee: 4604 mov r4, r0 - 800ccf0: 6a7b ldr r3, [r7, #36] @ 0x24 - 800ccf2: 68db ldr r3, [r3, #12] - 800ccf4: 685b ldr r3, [r3, #4] - 800ccf6: 4618 mov r0, r3 - 800ccf8: f7f9 fe9b bl 8006a32 - 800ccfc: 4603 mov r3, r0 - 800ccfe: 1ae3 subs r3, r4, r3 - while (*cur_seg && - 800cd00: 2b00 cmp r3, #0 - 800cd02: dbe6 blt.n 800ccd2 - } - seg->next = (*cur_seg); - 800cd04: 69fb ldr r3, [r7, #28] - 800cd06: 681a ldr r2, [r3, #0] - 800cd08: 6a7b ldr r3, [r7, #36] @ 0x24 - 800cd0a: 601a str r2, [r3, #0] - (*cur_seg) = seg; - 800cd0c: 69fb ldr r3, [r7, #28] - 800cd0e: 6a7a ldr r2, [r7, #36] @ 0x24 - 800cd10: 601a str r2, [r3, #0] - 800cd12: e009 b.n 800cd28 - } else { - /* add segment to tail of unacked list */ - useg->next = seg; - 800cd14: 6a3b ldr r3, [r7, #32] - 800cd16: 6a7a ldr r2, [r7, #36] @ 0x24 - 800cd18: 601a str r2, [r3, #0] - useg = useg->next; - 800cd1a: 6a3b ldr r3, [r7, #32] - 800cd1c: 681b ldr r3, [r3, #0] - 800cd1e: 623b str r3, [r7, #32] - 800cd20: e002 b.n 800cd28 - } - } - /* do not queue empty segments on the unacked list */ - } else { - tcp_seg_free(seg); - 800cd22: 6a78 ldr r0, [r7, #36] @ 0x24 - 800cd24: f7fc fc45 bl 80095b2 - } - seg = pcb->unsent; - 800cd28: 687b ldr r3, [r7, #4] - 800cd2a: 6edb ldr r3, [r3, #108] @ 0x6c - 800cd2c: 627b str r3, [r7, #36] @ 0x24 - while (seg != NULL && - 800cd2e: 6a7b ldr r3, [r7, #36] @ 0x24 - 800cd30: 2b00 cmp r3, #0 - 800cd32: d012 beq.n 800cd5a - lwip_ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len <= wnd) { - 800cd34: 6a7b ldr r3, [r7, #36] @ 0x24 - 800cd36: 68db ldr r3, [r3, #12] - 800cd38: 685b ldr r3, [r3, #4] - 800cd3a: 4618 mov r0, r3 - 800cd3c: f7f9 fe79 bl 8006a32 - 800cd40: 4602 mov r2, r0 - 800cd42: 687b ldr r3, [r7, #4] - 800cd44: 6c5b ldr r3, [r3, #68] @ 0x44 - 800cd46: 1ad3 subs r3, r2, r3 - 800cd48: 6a7a ldr r2, [r7, #36] @ 0x24 - 800cd4a: 8912 ldrh r2, [r2, #8] - 800cd4c: 4413 add r3, r2 - while (seg != NULL && - 800cd4e: 69ba ldr r2, [r7, #24] - 800cd50: 429a cmp r2, r3 - 800cd52: f4bf aed9 bcs.w 800cb08 - 800cd56: e000 b.n 800cd5a - break; - 800cd58: bf00 nop - } -#if TCP_OVERSIZE - if (pcb->unsent == NULL) { - 800cd5a: 687b ldr r3, [r7, #4] - 800cd5c: 6edb ldr r3, [r3, #108] @ 0x6c - 800cd5e: 2b00 cmp r3, #0 - 800cd60: d108 bne.n 800cd74 - /* last unsent has been removed, reset unsent_oversize */ - pcb->unsent_oversize = 0; - 800cd62: 687b ldr r3, [r7, #4] - 800cd64: 2200 movs r2, #0 - 800cd66: f8a3 2068 strh.w r2, [r3, #104] @ 0x68 - 800cd6a: e004 b.n 800cd76 - goto output_done; - 800cd6c: bf00 nop - 800cd6e: e002 b.n 800cd76 - goto output_done; - 800cd70: bf00 nop - 800cd72: e000 b.n 800cd76 - } -#endif /* TCP_OVERSIZE */ - -output_done: - 800cd74: bf00 nop - tcp_clear_flags(pcb, TF_NAGLEMEMERR); - 800cd76: 687b ldr r3, [r7, #4] - 800cd78: 8b5b ldrh r3, [r3, #26] - 800cd7a: f023 0380 bic.w r3, r3, #128 @ 0x80 - 800cd7e: b29a uxth r2, r3 - 800cd80: 687b ldr r3, [r7, #4] - 800cd82: 835a strh r2, [r3, #26] - return ERR_OK; - 800cd84: 2300 movs r3, #0 -} - 800cd86: 4618 mov r0, r3 - 800cd88: 3728 adds r7, #40 @ 0x28 - 800cd8a: 46bd mov sp, r7 - 800cd8c: bdb0 pop {r4, r5, r7, pc} - 800cd8e: bf00 nop - -0800cd90 : - * @arg seg the tcp segment to check - * @return 1 if ref != 1, 0 if ref == 1 - */ -static int -tcp_output_segment_busy(const struct tcp_seg *seg) -{ - 800cd90: b580 push {r7, lr} - 800cd92: b082 sub sp, #8 - 800cd94: af00 add r7, sp, #0 - 800cd96: 6078 str r0, [r7, #4] - LWIP_ASSERT("tcp_output_segment_busy: invalid seg", seg != NULL); - 800cd98: 687b ldr r3, [r7, #4] - 800cd9a: 2b00 cmp r3, #0 - 800cd9c: d106 bne.n 800cdac - 800cd9e: 4b09 ldr r3, [pc, #36] @ (800cdc4 ) - 800cda0: f240 529a movw r2, #1434 @ 0x59a - 800cda4: 4908 ldr r1, [pc, #32] @ (800cdc8 ) - 800cda6: 4809 ldr r0, [pc, #36] @ (800cdcc ) - 800cda8: f005 ff66 bl 8012c78 - - /* We only need to check the first pbuf here: - If a pbuf is queued for transmission, a driver calls pbuf_ref(), - which only changes the ref count of the first pbuf */ - if (seg->p->ref != 1) { - 800cdac: 687b ldr r3, [r7, #4] - 800cdae: 685b ldr r3, [r3, #4] - 800cdb0: 7b9b ldrb r3, [r3, #14] - 800cdb2: 2b01 cmp r3, #1 - 800cdb4: d001 beq.n 800cdba - /* other reference found */ - return 1; - 800cdb6: 2301 movs r3, #1 - 800cdb8: e000 b.n 800cdbc - } - /* no other references found */ - return 0; - 800cdba: 2300 movs r3, #0 -} - 800cdbc: 4618 mov r0, r3 - 800cdbe: 3708 adds r7, #8 - 800cdc0: 46bd mov sp, r7 - 800cdc2: bd80 pop {r7, pc} - 800cdc4: 08018dac .word 0x08018dac - 800cdc8: 08019348 .word 0x08019348 - 800cdcc: 08018e00 .word 0x08018e00 - -0800cdd0 : - * @param pcb the tcp_pcb for the TCP connection used to send the segment - * @param netif the netif used to send the segment - */ -static err_t -tcp_output_segment(struct tcp_seg *seg, struct tcp_pcb *pcb, struct netif *netif) -{ - 800cdd0: b5b0 push {r4, r5, r7, lr} - 800cdd2: b08c sub sp, #48 @ 0x30 - 800cdd4: af04 add r7, sp, #16 - 800cdd6: 60f8 str r0, [r7, #12] - 800cdd8: 60b9 str r1, [r7, #8] - 800cdda: 607a str r2, [r7, #4] - u32_t *opts; -#if TCP_CHECKSUM_ON_COPY - int seg_chksum_was_swapped = 0; -#endif - - LWIP_ASSERT("tcp_output_segment: invalid seg", seg != NULL); - 800cddc: 68fb ldr r3, [r7, #12] - 800cdde: 2b00 cmp r3, #0 - 800cde0: d106 bne.n 800cdf0 - 800cde2: 4b64 ldr r3, [pc, #400] @ (800cf74 ) - 800cde4: f44f 62b7 mov.w r2, #1464 @ 0x5b8 - 800cde8: 4963 ldr r1, [pc, #396] @ (800cf78 ) - 800cdea: 4864 ldr r0, [pc, #400] @ (800cf7c ) - 800cdec: f005 ff44 bl 8012c78 - LWIP_ASSERT("tcp_output_segment: invalid pcb", pcb != NULL); - 800cdf0: 68bb ldr r3, [r7, #8] - 800cdf2: 2b00 cmp r3, #0 - 800cdf4: d106 bne.n 800ce04 - 800cdf6: 4b5f ldr r3, [pc, #380] @ (800cf74 ) - 800cdf8: f240 52b9 movw r2, #1465 @ 0x5b9 - 800cdfc: 4960 ldr r1, [pc, #384] @ (800cf80 ) - 800cdfe: 485f ldr r0, [pc, #380] @ (800cf7c ) - 800ce00: f005 ff3a bl 8012c78 - LWIP_ASSERT("tcp_output_segment: invalid netif", netif != NULL); - 800ce04: 687b ldr r3, [r7, #4] - 800ce06: 2b00 cmp r3, #0 - 800ce08: d106 bne.n 800ce18 - 800ce0a: 4b5a ldr r3, [pc, #360] @ (800cf74 ) - 800ce0c: f240 52ba movw r2, #1466 @ 0x5ba - 800ce10: 495c ldr r1, [pc, #368] @ (800cf84 ) - 800ce12: 485a ldr r0, [pc, #360] @ (800cf7c ) - 800ce14: f005 ff30 bl 8012c78 - - if (tcp_output_segment_busy(seg)) { - 800ce18: 68f8 ldr r0, [r7, #12] - 800ce1a: f7ff ffb9 bl 800cd90 - 800ce1e: 4603 mov r3, r0 - 800ce20: 2b00 cmp r3, #0 - 800ce22: d001 beq.n 800ce28 - /* This should not happen: rexmit functions should have checked this. - However, since this function modifies p->len, we must not continue in this case. */ - LWIP_DEBUGF(TCP_RTO_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("tcp_output_segment: segment busy\n")); - return ERR_OK; - 800ce24: 2300 movs r3, #0 - 800ce26: e0a1 b.n 800cf6c - } - - /* The TCP header has already been constructed, but the ackno and - wnd fields remain. */ - seg->tcphdr->ackno = lwip_htonl(pcb->rcv_nxt); - 800ce28: 68bb ldr r3, [r7, #8] - 800ce2a: 6a5a ldr r2, [r3, #36] @ 0x24 - 800ce2c: 68fb ldr r3, [r7, #12] - 800ce2e: 68dc ldr r4, [r3, #12] - 800ce30: 4610 mov r0, r2 - 800ce32: f7f9 fdfe bl 8006a32 - 800ce36: 4603 mov r3, r0 - 800ce38: 60a3 str r3, [r4, #8] - the window scale option) is never scaled. */ - seg->tcphdr->wnd = lwip_htons(TCPWND_MIN16(pcb->rcv_ann_wnd)); - } else -#endif /* LWIP_WND_SCALE */ - { - seg->tcphdr->wnd = lwip_htons(TCPWND_MIN16(RCV_WND_SCALE(pcb, pcb->rcv_ann_wnd))); - 800ce3a: 68bb ldr r3, [r7, #8] - 800ce3c: 8d5a ldrh r2, [r3, #42] @ 0x2a - 800ce3e: 68fb ldr r3, [r7, #12] - 800ce40: 68dc ldr r4, [r3, #12] - 800ce42: 4610 mov r0, r2 - 800ce44: f7f9 fde0 bl 8006a08 - 800ce48: 4603 mov r3, r0 - 800ce4a: 81e3 strh r3, [r4, #14] - } - - pcb->rcv_ann_right_edge = pcb->rcv_nxt + pcb->rcv_ann_wnd; - 800ce4c: 68bb ldr r3, [r7, #8] - 800ce4e: 6a5b ldr r3, [r3, #36] @ 0x24 - 800ce50: 68ba ldr r2, [r7, #8] - 800ce52: 8d52 ldrh r2, [r2, #42] @ 0x2a - 800ce54: 441a add r2, r3 - 800ce56: 68bb ldr r3, [r7, #8] - 800ce58: 62da str r2, [r3, #44] @ 0x2c - - /* Add any requested options. NB MSS option is only set on SYN - packets, so ignore it here */ - /* cast through void* to get rid of alignment warnings */ - opts = (u32_t *)(void *)(seg->tcphdr + 1); - 800ce5a: 68fb ldr r3, [r7, #12] - 800ce5c: 68db ldr r3, [r3, #12] - 800ce5e: 3314 adds r3, #20 - 800ce60: 61fb str r3, [r7, #28] - if (seg->flags & TF_SEG_OPTS_MSS) { - 800ce62: 68fb ldr r3, [r7, #12] - 800ce64: 7a9b ldrb r3, [r3, #10] - 800ce66: f003 0301 and.w r3, r3, #1 - 800ce6a: 2b00 cmp r3, #0 - 800ce6c: d015 beq.n 800ce9a - u16_t mss; -#if TCP_CALCULATE_EFF_SEND_MSS - mss = tcp_eff_send_mss_netif(TCP_MSS, netif, &pcb->remote_ip); - 800ce6e: 68bb ldr r3, [r7, #8] - 800ce70: 3304 adds r3, #4 - 800ce72: 461a mov r2, r3 - 800ce74: 6879 ldr r1, [r7, #4] - 800ce76: f44f 7006 mov.w r0, #536 @ 0x218 - 800ce7a: f7fc fe91 bl 8009ba0 - 800ce7e: 4603 mov r3, r0 - 800ce80: 837b strh r3, [r7, #26] -#else /* TCP_CALCULATE_EFF_SEND_MSS */ - mss = TCP_MSS; -#endif /* TCP_CALCULATE_EFF_SEND_MSS */ - *opts = TCP_BUILD_MSS_OPTION(mss); - 800ce82: 8b7b ldrh r3, [r7, #26] - 800ce84: f043 7301 orr.w r3, r3, #33816576 @ 0x2040000 - 800ce88: 4618 mov r0, r3 - 800ce8a: f7f9 fdd2 bl 8006a32 - 800ce8e: 4602 mov r2, r0 - 800ce90: 69fb ldr r3, [r7, #28] - 800ce92: 601a str r2, [r3, #0] - opts += 1; - 800ce94: 69fb ldr r3, [r7, #28] - 800ce96: 3304 adds r3, #4 - 800ce98: 61fb str r3, [r7, #28] - } -#endif - - /* Set retransmission timer running if it is not currently enabled - This must be set before checking the route. */ - if (pcb->rtime < 0) { - 800ce9a: 68bb ldr r3, [r7, #8] - 800ce9c: f9b3 3030 ldrsh.w r3, [r3, #48] @ 0x30 - 800cea0: 2b00 cmp r3, #0 - 800cea2: da02 bge.n 800ceaa - pcb->rtime = 0; - 800cea4: 68bb ldr r3, [r7, #8] - 800cea6: 2200 movs r2, #0 - 800cea8: 861a strh r2, [r3, #48] @ 0x30 - } - - if (pcb->rttest == 0) { - 800ceaa: 68bb ldr r3, [r7, #8] - 800ceac: 6b5b ldr r3, [r3, #52] @ 0x34 - 800ceae: 2b00 cmp r3, #0 - 800ceb0: d10c bne.n 800cecc - pcb->rttest = tcp_ticks; - 800ceb2: 4b35 ldr r3, [pc, #212] @ (800cf88 ) - 800ceb4: 681a ldr r2, [r3, #0] - 800ceb6: 68bb ldr r3, [r7, #8] - 800ceb8: 635a str r2, [r3, #52] @ 0x34 - pcb->rtseq = lwip_ntohl(seg->tcphdr->seqno); - 800ceba: 68fb ldr r3, [r7, #12] - 800cebc: 68db ldr r3, [r3, #12] - 800cebe: 685b ldr r3, [r3, #4] - 800cec0: 4618 mov r0, r3 - 800cec2: f7f9 fdb6 bl 8006a32 - 800cec6: 4602 mov r2, r0 - 800cec8: 68bb ldr r3, [r7, #8] - 800ceca: 639a str r2, [r3, #56] @ 0x38 - } - LWIP_DEBUGF(TCP_OUTPUT_DEBUG, ("tcp_output_segment: %"U32_F":%"U32_F"\n", - lwip_htonl(seg->tcphdr->seqno), lwip_htonl(seg->tcphdr->seqno) + - seg->len)); - - len = (u16_t)((u8_t *)seg->tcphdr - (u8_t *)seg->p->payload); - 800cecc: 68fb ldr r3, [r7, #12] - 800cece: 68da ldr r2, [r3, #12] - 800ced0: 68fb ldr r3, [r7, #12] - 800ced2: 685b ldr r3, [r3, #4] - 800ced4: 685b ldr r3, [r3, #4] - 800ced6: 1ad3 subs r3, r2, r3 - 800ced8: 833b strh r3, [r7, #24] - if (len == 0) { - /** Exclude retransmitted segments from this count. */ - MIB2_STATS_INC(mib2.tcpoutsegs); - } - - seg->p->len -= len; - 800ceda: 68fb ldr r3, [r7, #12] - 800cedc: 685b ldr r3, [r3, #4] - 800cede: 8959 ldrh r1, [r3, #10] - 800cee0: 68fb ldr r3, [r7, #12] - 800cee2: 685b ldr r3, [r3, #4] - 800cee4: 8b3a ldrh r2, [r7, #24] - 800cee6: 1a8a subs r2, r1, r2 - 800cee8: b292 uxth r2, r2 - 800ceea: 815a strh r2, [r3, #10] - seg->p->tot_len -= len; - 800ceec: 68fb ldr r3, [r7, #12] - 800ceee: 685b ldr r3, [r3, #4] - 800cef0: 8919 ldrh r1, [r3, #8] - 800cef2: 68fb ldr r3, [r7, #12] - 800cef4: 685b ldr r3, [r3, #4] - 800cef6: 8b3a ldrh r2, [r7, #24] - 800cef8: 1a8a subs r2, r1, r2 - 800cefa: b292 uxth r2, r2 - 800cefc: 811a strh r2, [r3, #8] - - seg->p->payload = seg->tcphdr; - 800cefe: 68fb ldr r3, [r7, #12] - 800cf00: 685b ldr r3, [r3, #4] - 800cf02: 68fa ldr r2, [r7, #12] - 800cf04: 68d2 ldr r2, [r2, #12] - 800cf06: 605a str r2, [r3, #4] - - seg->tcphdr->chksum = 0; - 800cf08: 68fb ldr r3, [r7, #12] - 800cf0a: 68db ldr r3, [r3, #12] - 800cf0c: 2200 movs r2, #0 - 800cf0e: 741a strb r2, [r3, #16] - 800cf10: 2200 movs r2, #0 - 800cf12: 745a strb r2, [r3, #17] - -#ifdef LWIP_HOOK_TCP_OUT_ADD_TCPOPTS - opts = LWIP_HOOK_TCP_OUT_ADD_TCPOPTS(seg->p, seg->tcphdr, pcb, opts); -#endif - LWIP_ASSERT("options not filled", (u8_t *)opts == ((u8_t *)(seg->tcphdr + 1)) + LWIP_TCP_OPT_LENGTH_SEGMENT(seg->flags, pcb)); - 800cf14: 68fb ldr r3, [r7, #12] - 800cf16: 68da ldr r2, [r3, #12] - 800cf18: 68fb ldr r3, [r7, #12] - 800cf1a: 7a9b ldrb r3, [r3, #10] - 800cf1c: f003 0301 and.w r3, r3, #1 - 800cf20: 2b00 cmp r3, #0 - 800cf22: d001 beq.n 800cf28 - 800cf24: 2318 movs r3, #24 - 800cf26: e000 b.n 800cf2a - 800cf28: 2314 movs r3, #20 - 800cf2a: 4413 add r3, r2 - 800cf2c: 69fa ldr r2, [r7, #28] - 800cf2e: 429a cmp r2, r3 - 800cf30: d006 beq.n 800cf40 - 800cf32: 4b10 ldr r3, [pc, #64] @ (800cf74 ) - 800cf34: f240 621c movw r2, #1564 @ 0x61c - 800cf38: 4914 ldr r1, [pc, #80] @ (800cf8c ) - 800cf3a: 4810 ldr r0, [pc, #64] @ (800cf7c ) - 800cf3c: f005 fe9c bl 8012c78 - } -#endif /* CHECKSUM_GEN_TCP */ - TCP_STATS_INC(tcp.xmit); - - NETIF_SET_HINTS(netif, &(pcb->netif_hints)); - err = ip_output_if(seg->p, &pcb->local_ip, &pcb->remote_ip, pcb->ttl, - 800cf40: 68fb ldr r3, [r7, #12] - 800cf42: 6858 ldr r0, [r3, #4] - 800cf44: 68b9 ldr r1, [r7, #8] - 800cf46: 68bb ldr r3, [r7, #8] - 800cf48: 1d1c adds r4, r3, #4 - 800cf4a: 68bb ldr r3, [r7, #8] - 800cf4c: 7add ldrb r5, [r3, #11] - 800cf4e: 68bb ldr r3, [r7, #8] - 800cf50: 7a9b ldrb r3, [r3, #10] - 800cf52: 687a ldr r2, [r7, #4] - 800cf54: 9202 str r2, [sp, #8] - 800cf56: 2206 movs r2, #6 - 800cf58: 9201 str r2, [sp, #4] - 800cf5a: 9300 str r3, [sp, #0] - 800cf5c: 462b mov r3, r5 - 800cf5e: 4622 mov r2, r4 - 800cf60: f004 fc40 bl 80117e4 - 800cf64: 4603 mov r3, r0 - 800cf66: 75fb strb r3, [r7, #23] - seg->chksum = SWAP_BYTES_IN_WORD(seg->chksum); - seg->chksum_swapped = 1; - } -#endif - - return err; - 800cf68: f997 3017 ldrsb.w r3, [r7, #23] -} - 800cf6c: 4618 mov r0, r3 - 800cf6e: 3720 adds r7, #32 - 800cf70: 46bd mov sp, r7 - 800cf72: bdb0 pop {r4, r5, r7, pc} - 800cf74: 08018dac .word 0x08018dac - 800cf78: 08019370 .word 0x08019370 - 800cf7c: 08018e00 .word 0x08018e00 - 800cf80: 08019390 .word 0x08019390 - 800cf84: 080193b0 .word 0x080193b0 - 800cf88: 200190ec .word 0x200190ec - 800cf8c: 080193d4 .word 0x080193d4 - -0800cf90 : - * - * @param pcb the tcp_pcb for which to re-enqueue all unacked segments - */ -err_t -tcp_rexmit_rto_prepare(struct tcp_pcb *pcb) -{ - 800cf90: b5b0 push {r4, r5, r7, lr} - 800cf92: b084 sub sp, #16 - 800cf94: af00 add r7, sp, #0 - 800cf96: 6078 str r0, [r7, #4] - struct tcp_seg *seg; - - LWIP_ASSERT("tcp_rexmit_rto_prepare: invalid pcb", pcb != NULL); - 800cf98: 687b ldr r3, [r7, #4] - 800cf9a: 2b00 cmp r3, #0 - 800cf9c: d106 bne.n 800cfac - 800cf9e: 4b31 ldr r3, [pc, #196] @ (800d064 ) - 800cfa0: f240 6263 movw r2, #1635 @ 0x663 - 800cfa4: 4930 ldr r1, [pc, #192] @ (800d068 ) - 800cfa6: 4831 ldr r0, [pc, #196] @ (800d06c ) - 800cfa8: f005 fe66 bl 8012c78 - - if (pcb->unacked == NULL) { - 800cfac: 687b ldr r3, [r7, #4] - 800cfae: 6f1b ldr r3, [r3, #112] @ 0x70 - 800cfb0: 2b00 cmp r3, #0 - 800cfb2: d102 bne.n 800cfba - return ERR_VAL; - 800cfb4: f06f 0305 mvn.w r3, #5 - 800cfb8: e050 b.n 800d05c - - /* Move all unacked segments to the head of the unsent queue. - However, give up if any of the unsent pbufs are still referenced by the - netif driver due to deferred transmission. No point loading the link further - if it is struggling to flush its buffered writes. */ - for (seg = pcb->unacked; seg->next != NULL; seg = seg->next) { - 800cfba: 687b ldr r3, [r7, #4] - 800cfbc: 6f1b ldr r3, [r3, #112] @ 0x70 - 800cfbe: 60fb str r3, [r7, #12] - 800cfc0: e00b b.n 800cfda - if (tcp_output_segment_busy(seg)) { - 800cfc2: 68f8 ldr r0, [r7, #12] - 800cfc4: f7ff fee4 bl 800cd90 - 800cfc8: 4603 mov r3, r0 - 800cfca: 2b00 cmp r3, #0 - 800cfcc: d002 beq.n 800cfd4 - LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_rexmit_rto: segment busy\n")); - return ERR_VAL; - 800cfce: f06f 0305 mvn.w r3, #5 - 800cfd2: e043 b.n 800d05c - for (seg = pcb->unacked; seg->next != NULL; seg = seg->next) { - 800cfd4: 68fb ldr r3, [r7, #12] - 800cfd6: 681b ldr r3, [r3, #0] - 800cfd8: 60fb str r3, [r7, #12] - 800cfda: 68fb ldr r3, [r7, #12] - 800cfdc: 681b ldr r3, [r3, #0] - 800cfde: 2b00 cmp r3, #0 - 800cfe0: d1ef bne.n 800cfc2 - } - } - if (tcp_output_segment_busy(seg)) { - 800cfe2: 68f8 ldr r0, [r7, #12] - 800cfe4: f7ff fed4 bl 800cd90 - 800cfe8: 4603 mov r3, r0 - 800cfea: 2b00 cmp r3, #0 - 800cfec: d002 beq.n 800cff4 - LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_rexmit_rto: segment busy\n")); - return ERR_VAL; - 800cfee: f06f 0305 mvn.w r3, #5 - 800cff2: e033 b.n 800d05c - } - /* concatenate unsent queue after unacked queue */ - seg->next = pcb->unsent; - 800cff4: 687b ldr r3, [r7, #4] - 800cff6: 6eda ldr r2, [r3, #108] @ 0x6c - 800cff8: 68fb ldr r3, [r7, #12] - 800cffa: 601a str r2, [r3, #0] - if (pcb->unsent == NULL) { - pcb->unsent_oversize = seg->oversize_left; - } -#endif /* TCP_OVERSIZE_DBGCHECK */ - /* unsent queue is the concatenated queue (of unacked, unsent) */ - pcb->unsent = pcb->unacked; - 800cffc: 687b ldr r3, [r7, #4] - 800cffe: 6f1a ldr r2, [r3, #112] @ 0x70 - 800d000: 687b ldr r3, [r7, #4] - 800d002: 66da str r2, [r3, #108] @ 0x6c - /* unacked queue is now empty */ - pcb->unacked = NULL; - 800d004: 687b ldr r3, [r7, #4] - 800d006: 2200 movs r2, #0 - 800d008: 671a str r2, [r3, #112] @ 0x70 - - /* Mark RTO in-progress */ - tcp_set_flags(pcb, TF_RTO); - 800d00a: 687b ldr r3, [r7, #4] - 800d00c: 8b5b ldrh r3, [r3, #26] - 800d00e: f443 6300 orr.w r3, r3, #2048 @ 0x800 - 800d012: b29a uxth r2, r3 - 800d014: 687b ldr r3, [r7, #4] - 800d016: 835a strh r2, [r3, #26] - /* Record the next byte following retransmit */ - pcb->rto_end = lwip_ntohl(seg->tcphdr->seqno) + TCP_TCPLEN(seg); - 800d018: 68fb ldr r3, [r7, #12] - 800d01a: 68db ldr r3, [r3, #12] - 800d01c: 685b ldr r3, [r3, #4] - 800d01e: 4618 mov r0, r3 - 800d020: f7f9 fd07 bl 8006a32 - 800d024: 4604 mov r4, r0 - 800d026: 68fb ldr r3, [r7, #12] - 800d028: 891b ldrh r3, [r3, #8] - 800d02a: 461d mov r5, r3 - 800d02c: 68fb ldr r3, [r7, #12] - 800d02e: 68db ldr r3, [r3, #12] - 800d030: 899b ldrh r3, [r3, #12] - 800d032: b29b uxth r3, r3 - 800d034: 4618 mov r0, r3 - 800d036: f7f9 fce7 bl 8006a08 - 800d03a: 4603 mov r3, r0 - 800d03c: b2db uxtb r3, r3 - 800d03e: f003 0303 and.w r3, r3, #3 - 800d042: 2b00 cmp r3, #0 - 800d044: d001 beq.n 800d04a - 800d046: 2301 movs r3, #1 - 800d048: e000 b.n 800d04c - 800d04a: 2300 movs r3, #0 - 800d04c: 442b add r3, r5 - 800d04e: 18e2 adds r2, r4, r3 - 800d050: 687b ldr r3, [r7, #4] - 800d052: 64da str r2, [r3, #76] @ 0x4c - /* Don't take any RTT measurements after retransmitting. */ - pcb->rttest = 0; - 800d054: 687b ldr r3, [r7, #4] - 800d056: 2200 movs r2, #0 - 800d058: 635a str r2, [r3, #52] @ 0x34 - - return ERR_OK; - 800d05a: 2300 movs r3, #0 -} - 800d05c: 4618 mov r0, r3 - 800d05e: 3710 adds r7, #16 - 800d060: 46bd mov sp, r7 - 800d062: bdb0 pop {r4, r5, r7, pc} - 800d064: 08018dac .word 0x08018dac - 800d068: 080193e8 .word 0x080193e8 - 800d06c: 08018e00 .word 0x08018e00 - -0800d070 : - * - * @param pcb the tcp_pcb for which to re-enqueue all unacked segments - */ -void -tcp_rexmit_rto_commit(struct tcp_pcb *pcb) -{ - 800d070: b580 push {r7, lr} - 800d072: b082 sub sp, #8 - 800d074: af00 add r7, sp, #0 - 800d076: 6078 str r0, [r7, #4] - LWIP_ASSERT("tcp_rexmit_rto_commit: invalid pcb", pcb != NULL); - 800d078: 687b ldr r3, [r7, #4] - 800d07a: 2b00 cmp r3, #0 - 800d07c: d106 bne.n 800d08c - 800d07e: 4b0d ldr r3, [pc, #52] @ (800d0b4 ) - 800d080: f44f 62d3 mov.w r2, #1688 @ 0x698 - 800d084: 490c ldr r1, [pc, #48] @ (800d0b8 ) - 800d086: 480d ldr r0, [pc, #52] @ (800d0bc ) - 800d088: f005 fdf6 bl 8012c78 - - /* increment number of retransmissions */ - if (pcb->nrtx < 0xFF) { - 800d08c: 687b ldr r3, [r7, #4] - 800d08e: f893 3042 ldrb.w r3, [r3, #66] @ 0x42 - 800d092: 2bff cmp r3, #255 @ 0xff - 800d094: d007 beq.n 800d0a6 - ++pcb->nrtx; - 800d096: 687b ldr r3, [r7, #4] - 800d098: f893 3042 ldrb.w r3, [r3, #66] @ 0x42 - 800d09c: 3301 adds r3, #1 - 800d09e: b2da uxtb r2, r3 - 800d0a0: 687b ldr r3, [r7, #4] - 800d0a2: f883 2042 strb.w r2, [r3, #66] @ 0x42 - } - /* Do the actual retransmission */ - tcp_output(pcb); - 800d0a6: 6878 ldr r0, [r7, #4] - 800d0a8: f7ff fc7e bl 800c9a8 -} - 800d0ac: bf00 nop - 800d0ae: 3708 adds r7, #8 - 800d0b0: 46bd mov sp, r7 - 800d0b2: bd80 pop {r7, pc} - 800d0b4: 08018dac .word 0x08018dac - 800d0b8: 0801940c .word 0x0801940c - 800d0bc: 08018e00 .word 0x08018e00 - -0800d0c0 : - * - * @param pcb the tcp_pcb for which to re-enqueue all unacked segments - */ -void -tcp_rexmit_rto(struct tcp_pcb *pcb) -{ - 800d0c0: b580 push {r7, lr} - 800d0c2: b082 sub sp, #8 - 800d0c4: af00 add r7, sp, #0 - 800d0c6: 6078 str r0, [r7, #4] - LWIP_ASSERT("tcp_rexmit_rto: invalid pcb", pcb != NULL); - 800d0c8: 687b ldr r3, [r7, #4] - 800d0ca: 2b00 cmp r3, #0 - 800d0cc: d106 bne.n 800d0dc - 800d0ce: 4b0a ldr r3, [pc, #40] @ (800d0f8 ) - 800d0d0: f240 62ad movw r2, #1709 @ 0x6ad - 800d0d4: 4909 ldr r1, [pc, #36] @ (800d0fc ) - 800d0d6: 480a ldr r0, [pc, #40] @ (800d100 ) - 800d0d8: f005 fdce bl 8012c78 - - if (tcp_rexmit_rto_prepare(pcb) == ERR_OK) { - 800d0dc: 6878 ldr r0, [r7, #4] - 800d0de: f7ff ff57 bl 800cf90 - 800d0e2: 4603 mov r3, r0 - 800d0e4: 2b00 cmp r3, #0 - 800d0e6: d102 bne.n 800d0ee - tcp_rexmit_rto_commit(pcb); - 800d0e8: 6878 ldr r0, [r7, #4] - 800d0ea: f7ff ffc1 bl 800d070 - } -} - 800d0ee: bf00 nop - 800d0f0: 3708 adds r7, #8 - 800d0f2: 46bd mov sp, r7 - 800d0f4: bd80 pop {r7, pc} - 800d0f6: bf00 nop - 800d0f8: 08018dac .word 0x08018dac - 800d0fc: 08019430 .word 0x08019430 - 800d100: 08018e00 .word 0x08018e00 - -0800d104 : - * - * @param pcb the tcp_pcb for which to retransmit the first unacked segment - */ -err_t -tcp_rexmit(struct tcp_pcb *pcb) -{ - 800d104: b590 push {r4, r7, lr} - 800d106: b085 sub sp, #20 - 800d108: af00 add r7, sp, #0 - 800d10a: 6078 str r0, [r7, #4] - struct tcp_seg *seg; - struct tcp_seg **cur_seg; - - LWIP_ASSERT("tcp_rexmit: invalid pcb", pcb != NULL); - 800d10c: 687b ldr r3, [r7, #4] - 800d10e: 2b00 cmp r3, #0 - 800d110: d106 bne.n 800d120 - 800d112: 4b2f ldr r3, [pc, #188] @ (800d1d0 ) - 800d114: f240 62c1 movw r2, #1729 @ 0x6c1 - 800d118: 492e ldr r1, [pc, #184] @ (800d1d4 ) - 800d11a: 482f ldr r0, [pc, #188] @ (800d1d8 ) - 800d11c: f005 fdac bl 8012c78 - - if (pcb->unacked == NULL) { - 800d120: 687b ldr r3, [r7, #4] - 800d122: 6f1b ldr r3, [r3, #112] @ 0x70 - 800d124: 2b00 cmp r3, #0 - 800d126: d102 bne.n 800d12e - return ERR_VAL; - 800d128: f06f 0305 mvn.w r3, #5 - 800d12c: e04c b.n 800d1c8 - } - - seg = pcb->unacked; - 800d12e: 687b ldr r3, [r7, #4] - 800d130: 6f1b ldr r3, [r3, #112] @ 0x70 - 800d132: 60bb str r3, [r7, #8] - - /* Give up if the segment is still referenced by the netif driver - due to deferred transmission. */ - if (tcp_output_segment_busy(seg)) { - 800d134: 68b8 ldr r0, [r7, #8] - 800d136: f7ff fe2b bl 800cd90 - 800d13a: 4603 mov r3, r0 - 800d13c: 2b00 cmp r3, #0 - 800d13e: d002 beq.n 800d146 - LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_rexmit busy\n")); - return ERR_VAL; - 800d140: f06f 0305 mvn.w r3, #5 - 800d144: e040 b.n 800d1c8 - } - - /* Move the first unacked segment to the unsent queue */ - /* Keep the unsent queue sorted. */ - pcb->unacked = seg->next; - 800d146: 68bb ldr r3, [r7, #8] - 800d148: 681a ldr r2, [r3, #0] - 800d14a: 687b ldr r3, [r7, #4] - 800d14c: 671a str r2, [r3, #112] @ 0x70 - - cur_seg = &(pcb->unsent); - 800d14e: 687b ldr r3, [r7, #4] - 800d150: 336c adds r3, #108 @ 0x6c - 800d152: 60fb str r3, [r7, #12] - while (*cur_seg && - 800d154: e002 b.n 800d15c - TCP_SEQ_LT(lwip_ntohl((*cur_seg)->tcphdr->seqno), lwip_ntohl(seg->tcphdr->seqno))) { - cur_seg = &((*cur_seg)->next ); - 800d156: 68fb ldr r3, [r7, #12] - 800d158: 681b ldr r3, [r3, #0] - 800d15a: 60fb str r3, [r7, #12] - while (*cur_seg && - 800d15c: 68fb ldr r3, [r7, #12] - 800d15e: 681b ldr r3, [r3, #0] - 800d160: 2b00 cmp r3, #0 - 800d162: d011 beq.n 800d188 - TCP_SEQ_LT(lwip_ntohl((*cur_seg)->tcphdr->seqno), lwip_ntohl(seg->tcphdr->seqno))) { - 800d164: 68fb ldr r3, [r7, #12] - 800d166: 681b ldr r3, [r3, #0] - 800d168: 68db ldr r3, [r3, #12] - 800d16a: 685b ldr r3, [r3, #4] - 800d16c: 4618 mov r0, r3 - 800d16e: f7f9 fc60 bl 8006a32 - 800d172: 4604 mov r4, r0 - 800d174: 68bb ldr r3, [r7, #8] - 800d176: 68db ldr r3, [r3, #12] - 800d178: 685b ldr r3, [r3, #4] - 800d17a: 4618 mov r0, r3 - 800d17c: f7f9 fc59 bl 8006a32 - 800d180: 4603 mov r3, r0 - 800d182: 1ae3 subs r3, r4, r3 - while (*cur_seg && - 800d184: 2b00 cmp r3, #0 - 800d186: dbe6 blt.n 800d156 - } - seg->next = *cur_seg; - 800d188: 68fb ldr r3, [r7, #12] - 800d18a: 681a ldr r2, [r3, #0] - 800d18c: 68bb ldr r3, [r7, #8] - 800d18e: 601a str r2, [r3, #0] - *cur_seg = seg; - 800d190: 68fb ldr r3, [r7, #12] - 800d192: 68ba ldr r2, [r7, #8] - 800d194: 601a str r2, [r3, #0] -#if TCP_OVERSIZE - if (seg->next == NULL) { - 800d196: 68bb ldr r3, [r7, #8] - 800d198: 681b ldr r3, [r3, #0] - 800d19a: 2b00 cmp r3, #0 - 800d19c: d103 bne.n 800d1a6 - /* the retransmitted segment is last in unsent, so reset unsent_oversize */ - pcb->unsent_oversize = 0; - 800d19e: 687b ldr r3, [r7, #4] - 800d1a0: 2200 movs r2, #0 - 800d1a2: f8a3 2068 strh.w r2, [r3, #104] @ 0x68 - } -#endif /* TCP_OVERSIZE */ - - if (pcb->nrtx < 0xFF) { - 800d1a6: 687b ldr r3, [r7, #4] - 800d1a8: f893 3042 ldrb.w r3, [r3, #66] @ 0x42 - 800d1ac: 2bff cmp r3, #255 @ 0xff - 800d1ae: d007 beq.n 800d1c0 - ++pcb->nrtx; - 800d1b0: 687b ldr r3, [r7, #4] - 800d1b2: f893 3042 ldrb.w r3, [r3, #66] @ 0x42 - 800d1b6: 3301 adds r3, #1 - 800d1b8: b2da uxtb r2, r3 - 800d1ba: 687b ldr r3, [r7, #4] - 800d1bc: f883 2042 strb.w r2, [r3, #66] @ 0x42 - } - - /* Don't take any rtt measurements after retransmitting. */ - pcb->rttest = 0; - 800d1c0: 687b ldr r3, [r7, #4] - 800d1c2: 2200 movs r2, #0 - 800d1c4: 635a str r2, [r3, #52] @ 0x34 - - /* Do the actual retransmission. */ - MIB2_STATS_INC(mib2.tcpretranssegs); - /* No need to call tcp_output: we are always called from tcp_input() - and thus tcp_output directly returns. */ - return ERR_OK; - 800d1c6: 2300 movs r3, #0 -} - 800d1c8: 4618 mov r0, r3 - 800d1ca: 3714 adds r7, #20 - 800d1cc: 46bd mov sp, r7 - 800d1ce: bd90 pop {r4, r7, pc} - 800d1d0: 08018dac .word 0x08018dac - 800d1d4: 0801944c .word 0x0801944c - 800d1d8: 08018e00 .word 0x08018e00 - -0800d1dc : - * - * @param pcb the tcp_pcb for which to retransmit the first unacked segment - */ -void -tcp_rexmit_fast(struct tcp_pcb *pcb) -{ - 800d1dc: b580 push {r7, lr} - 800d1de: b082 sub sp, #8 - 800d1e0: af00 add r7, sp, #0 - 800d1e2: 6078 str r0, [r7, #4] - LWIP_ASSERT("tcp_rexmit_fast: invalid pcb", pcb != NULL); - 800d1e4: 687b ldr r3, [r7, #4] - 800d1e6: 2b00 cmp r3, #0 - 800d1e8: d106 bne.n 800d1f8 - 800d1ea: 4b2a ldr r3, [pc, #168] @ (800d294 ) - 800d1ec: f240 62f9 movw r2, #1785 @ 0x6f9 - 800d1f0: 4929 ldr r1, [pc, #164] @ (800d298 ) - 800d1f2: 482a ldr r0, [pc, #168] @ (800d29c ) - 800d1f4: f005 fd40 bl 8012c78 - - if (pcb->unacked != NULL && !(pcb->flags & TF_INFR)) { - 800d1f8: 687b ldr r3, [r7, #4] - 800d1fa: 6f1b ldr r3, [r3, #112] @ 0x70 - 800d1fc: 2b00 cmp r3, #0 - 800d1fe: d044 beq.n 800d28a - 800d200: 687b ldr r3, [r7, #4] - 800d202: 8b5b ldrh r3, [r3, #26] - 800d204: f003 0304 and.w r3, r3, #4 - 800d208: 2b00 cmp r3, #0 - 800d20a: d13e bne.n 800d28a - LWIP_DEBUGF(TCP_FR_DEBUG, - ("tcp_receive: dupacks %"U16_F" (%"U32_F - "), fast retransmit %"U32_F"\n", - (u16_t)pcb->dupacks, pcb->lastack, - lwip_ntohl(pcb->unacked->tcphdr->seqno))); - if (tcp_rexmit(pcb) == ERR_OK) { - 800d20c: 6878 ldr r0, [r7, #4] - 800d20e: f7ff ff79 bl 800d104 - 800d212: 4603 mov r3, r0 - 800d214: 2b00 cmp r3, #0 - 800d216: d138 bne.n 800d28a - /* Set ssthresh to half of the minimum of the current - * cwnd and the advertised window */ - pcb->ssthresh = LWIP_MIN(pcb->cwnd, pcb->snd_wnd) / 2; - 800d218: 687b ldr r3, [r7, #4] - 800d21a: f8b3 2060 ldrh.w r2, [r3, #96] @ 0x60 - 800d21e: 687b ldr r3, [r7, #4] - 800d220: f8b3 3048 ldrh.w r3, [r3, #72] @ 0x48 - 800d224: 4293 cmp r3, r2 - 800d226: bf28 it cs - 800d228: 4613 movcs r3, r2 - 800d22a: b29b uxth r3, r3 - 800d22c: 0fda lsrs r2, r3, #31 - 800d22e: 4413 add r3, r2 - 800d230: 105b asrs r3, r3, #1 - 800d232: b29a uxth r2, r3 - 800d234: 687b ldr r3, [r7, #4] - 800d236: f8a3 204a strh.w r2, [r3, #74] @ 0x4a - - /* The minimum value for ssthresh should be 2 MSS */ - if (pcb->ssthresh < (2U * pcb->mss)) { - 800d23a: 687b ldr r3, [r7, #4] - 800d23c: f8b3 304a ldrh.w r3, [r3, #74] @ 0x4a - 800d240: 461a mov r2, r3 - 800d242: 687b ldr r3, [r7, #4] - 800d244: 8e5b ldrh r3, [r3, #50] @ 0x32 - 800d246: 005b lsls r3, r3, #1 - 800d248: 429a cmp r2, r3 - 800d24a: d206 bcs.n 800d25a - LWIP_DEBUGF(TCP_FR_DEBUG, - ("tcp_receive: The minimum value for ssthresh %"TCPWNDSIZE_F - " should be min 2 mss %"U16_F"...\n", - pcb->ssthresh, (u16_t)(2 * pcb->mss))); - pcb->ssthresh = 2 * pcb->mss; - 800d24c: 687b ldr r3, [r7, #4] - 800d24e: 8e5b ldrh r3, [r3, #50] @ 0x32 - 800d250: 005b lsls r3, r3, #1 - 800d252: b29a uxth r2, r3 - 800d254: 687b ldr r3, [r7, #4] - 800d256: f8a3 204a strh.w r2, [r3, #74] @ 0x4a - } - - pcb->cwnd = pcb->ssthresh + 3 * pcb->mss; - 800d25a: 687b ldr r3, [r7, #4] - 800d25c: f8b3 204a ldrh.w r2, [r3, #74] @ 0x4a - 800d260: 687b ldr r3, [r7, #4] - 800d262: 8e5b ldrh r3, [r3, #50] @ 0x32 - 800d264: 4619 mov r1, r3 - 800d266: 0049 lsls r1, r1, #1 - 800d268: 440b add r3, r1 - 800d26a: b29b uxth r3, r3 - 800d26c: 4413 add r3, r2 - 800d26e: b29a uxth r2, r3 - 800d270: 687b ldr r3, [r7, #4] - 800d272: f8a3 2048 strh.w r2, [r3, #72] @ 0x48 - tcp_set_flags(pcb, TF_INFR); - 800d276: 687b ldr r3, [r7, #4] - 800d278: 8b5b ldrh r3, [r3, #26] - 800d27a: f043 0304 orr.w r3, r3, #4 - 800d27e: b29a uxth r2, r3 - 800d280: 687b ldr r3, [r7, #4] - 800d282: 835a strh r2, [r3, #26] - - /* Reset the retransmission timer to prevent immediate rto retransmissions */ - pcb->rtime = 0; - 800d284: 687b ldr r3, [r7, #4] - 800d286: 2200 movs r2, #0 - 800d288: 861a strh r2, [r3, #48] @ 0x30 - } - } -} - 800d28a: bf00 nop - 800d28c: 3708 adds r7, #8 - 800d28e: 46bd mov sp, r7 - 800d290: bd80 pop {r7, pc} - 800d292: bf00 nop - 800d294: 08018dac .word 0x08018dac - 800d298: 08019464 .word 0x08019464 - 800d29c: 08018e00 .word 0x08018e00 - -0800d2a0 : - -static struct pbuf * -tcp_output_alloc_header_common(u32_t ackno, u16_t optlen, u16_t datalen, - u32_t seqno_be /* already in network byte order */, - u16_t src_port, u16_t dst_port, u8_t flags, u16_t wnd) -{ - 800d2a0: b580 push {r7, lr} - 800d2a2: b086 sub sp, #24 - 800d2a4: af00 add r7, sp, #0 - 800d2a6: 60f8 str r0, [r7, #12] - 800d2a8: 607b str r3, [r7, #4] - 800d2aa: 460b mov r3, r1 - 800d2ac: 817b strh r3, [r7, #10] - 800d2ae: 4613 mov r3, r2 - 800d2b0: 813b strh r3, [r7, #8] - struct tcp_hdr *tcphdr; - struct pbuf *p; - - p = pbuf_alloc(PBUF_IP, TCP_HLEN + optlen + datalen, PBUF_RAM); - 800d2b2: 897a ldrh r2, [r7, #10] - 800d2b4: 893b ldrh r3, [r7, #8] - 800d2b6: 4413 add r3, r2 - 800d2b8: b29b uxth r3, r3 - 800d2ba: 3314 adds r3, #20 - 800d2bc: b29b uxth r3, r3 - 800d2be: f44f 7220 mov.w r2, #640 @ 0x280 - 800d2c2: 4619 mov r1, r3 - 800d2c4: 2022 movs r0, #34 @ 0x22 - 800d2c6: f7fa fc0d bl 8007ae4 - 800d2ca: 6178 str r0, [r7, #20] - if (p != NULL) { - 800d2cc: 697b ldr r3, [r7, #20] - 800d2ce: 2b00 cmp r3, #0 - 800d2d0: d04d beq.n 800d36e - LWIP_ASSERT("check that first pbuf can hold struct tcp_hdr", - 800d2d2: 897b ldrh r3, [r7, #10] - 800d2d4: 3313 adds r3, #19 - 800d2d6: 697a ldr r2, [r7, #20] - 800d2d8: 8952 ldrh r2, [r2, #10] - 800d2da: 4293 cmp r3, r2 - 800d2dc: db06 blt.n 800d2ec - 800d2de: 4b26 ldr r3, [pc, #152] @ (800d378 ) - 800d2e0: f240 7223 movw r2, #1827 @ 0x723 - 800d2e4: 4925 ldr r1, [pc, #148] @ (800d37c ) - 800d2e6: 4826 ldr r0, [pc, #152] @ (800d380 ) - 800d2e8: f005 fcc6 bl 8012c78 - (p->len >= TCP_HLEN + optlen)); - tcphdr = (struct tcp_hdr *)p->payload; - 800d2ec: 697b ldr r3, [r7, #20] - 800d2ee: 685b ldr r3, [r3, #4] - 800d2f0: 613b str r3, [r7, #16] - tcphdr->src = lwip_htons(src_port); - 800d2f2: 8c3b ldrh r3, [r7, #32] - 800d2f4: 4618 mov r0, r3 - 800d2f6: f7f9 fb87 bl 8006a08 - 800d2fa: 4603 mov r3, r0 - 800d2fc: 461a mov r2, r3 - 800d2fe: 693b ldr r3, [r7, #16] - 800d300: 801a strh r2, [r3, #0] - tcphdr->dest = lwip_htons(dst_port); - 800d302: 8cbb ldrh r3, [r7, #36] @ 0x24 - 800d304: 4618 mov r0, r3 - 800d306: f7f9 fb7f bl 8006a08 - 800d30a: 4603 mov r3, r0 - 800d30c: 461a mov r2, r3 - 800d30e: 693b ldr r3, [r7, #16] - 800d310: 805a strh r2, [r3, #2] - tcphdr->seqno = seqno_be; - 800d312: 693b ldr r3, [r7, #16] - 800d314: 687a ldr r2, [r7, #4] - 800d316: 605a str r2, [r3, #4] - tcphdr->ackno = lwip_htonl(ackno); - 800d318: 68f8 ldr r0, [r7, #12] - 800d31a: f7f9 fb8a bl 8006a32 - 800d31e: 4602 mov r2, r0 - 800d320: 693b ldr r3, [r7, #16] - 800d322: 609a str r2, [r3, #8] - TCPH_HDRLEN_FLAGS_SET(tcphdr, (5 + optlen / 4), flags); - 800d324: 897b ldrh r3, [r7, #10] - 800d326: 089b lsrs r3, r3, #2 - 800d328: b29b uxth r3, r3 - 800d32a: 3305 adds r3, #5 - 800d32c: b29b uxth r3, r3 - 800d32e: 031b lsls r3, r3, #12 - 800d330: b29a uxth r2, r3 - 800d332: f897 3028 ldrb.w r3, [r7, #40] @ 0x28 - 800d336: b29b uxth r3, r3 - 800d338: 4313 orrs r3, r2 - 800d33a: b29b uxth r3, r3 - 800d33c: 4618 mov r0, r3 - 800d33e: f7f9 fb63 bl 8006a08 - 800d342: 4603 mov r3, r0 - 800d344: 461a mov r2, r3 - 800d346: 693b ldr r3, [r7, #16] - 800d348: 819a strh r2, [r3, #12] - tcphdr->wnd = lwip_htons(wnd); - 800d34a: 8dbb ldrh r3, [r7, #44] @ 0x2c - 800d34c: 4618 mov r0, r3 - 800d34e: f7f9 fb5b bl 8006a08 - 800d352: 4603 mov r3, r0 - 800d354: 461a mov r2, r3 - 800d356: 693b ldr r3, [r7, #16] - 800d358: 81da strh r2, [r3, #14] - tcphdr->chksum = 0; - 800d35a: 693b ldr r3, [r7, #16] - 800d35c: 2200 movs r2, #0 - 800d35e: 741a strb r2, [r3, #16] - 800d360: 2200 movs r2, #0 - 800d362: 745a strb r2, [r3, #17] - tcphdr->urgp = 0; - 800d364: 693b ldr r3, [r7, #16] - 800d366: 2200 movs r2, #0 - 800d368: 749a strb r2, [r3, #18] - 800d36a: 2200 movs r2, #0 - 800d36c: 74da strb r2, [r3, #19] - } - return p; - 800d36e: 697b ldr r3, [r7, #20] -} - 800d370: 4618 mov r0, r3 - 800d372: 3718 adds r7, #24 - 800d374: 46bd mov sp, r7 - 800d376: bd80 pop {r7, pc} - 800d378: 08018dac .word 0x08018dac - 800d37c: 08019484 .word 0x08019484 - 800d380: 08018e00 .word 0x08018e00 - -0800d384 : - * @return pbuf with p->payload being the tcp_hdr - */ -static struct pbuf * -tcp_output_alloc_header(struct tcp_pcb *pcb, u16_t optlen, u16_t datalen, - u32_t seqno_be /* already in network byte order */) -{ - 800d384: b5b0 push {r4, r5, r7, lr} - 800d386: b08a sub sp, #40 @ 0x28 - 800d388: af04 add r7, sp, #16 - 800d38a: 60f8 str r0, [r7, #12] - 800d38c: 607b str r3, [r7, #4] - 800d38e: 460b mov r3, r1 - 800d390: 817b strh r3, [r7, #10] - 800d392: 4613 mov r3, r2 - 800d394: 813b strh r3, [r7, #8] - struct pbuf *p; - - LWIP_ASSERT("tcp_output_alloc_header: invalid pcb", pcb != NULL); - 800d396: 68fb ldr r3, [r7, #12] - 800d398: 2b00 cmp r3, #0 - 800d39a: d106 bne.n 800d3aa - 800d39c: 4b15 ldr r3, [pc, #84] @ (800d3f4 ) - 800d39e: f240 7242 movw r2, #1858 @ 0x742 - 800d3a2: 4915 ldr r1, [pc, #84] @ (800d3f8 ) - 800d3a4: 4815 ldr r0, [pc, #84] @ (800d3fc ) - 800d3a6: f005 fc67 bl 8012c78 - - p = tcp_output_alloc_header_common(pcb->rcv_nxt, optlen, datalen, - 800d3aa: 68fb ldr r3, [r7, #12] - 800d3ac: 6a58 ldr r0, [r3, #36] @ 0x24 - 800d3ae: 68fb ldr r3, [r7, #12] - 800d3b0: 8adb ldrh r3, [r3, #22] - 800d3b2: 68fa ldr r2, [r7, #12] - 800d3b4: 8b12 ldrh r2, [r2, #24] - 800d3b6: 68f9 ldr r1, [r7, #12] - 800d3b8: 8d49 ldrh r1, [r1, #42] @ 0x2a - 800d3ba: 893d ldrh r5, [r7, #8] - 800d3bc: 897c ldrh r4, [r7, #10] - 800d3be: 9103 str r1, [sp, #12] - 800d3c0: 2110 movs r1, #16 - 800d3c2: 9102 str r1, [sp, #8] - 800d3c4: 9201 str r2, [sp, #4] - 800d3c6: 9300 str r3, [sp, #0] - 800d3c8: 687b ldr r3, [r7, #4] - 800d3ca: 462a mov r2, r5 - 800d3cc: 4621 mov r1, r4 - 800d3ce: f7ff ff67 bl 800d2a0 - 800d3d2: 6178 str r0, [r7, #20] - seqno_be, pcb->local_port, pcb->remote_port, TCP_ACK, - TCPWND_MIN16(RCV_WND_SCALE(pcb, pcb->rcv_ann_wnd))); - if (p != NULL) { - 800d3d4: 697b ldr r3, [r7, #20] - 800d3d6: 2b00 cmp r3, #0 - 800d3d8: d006 beq.n 800d3e8 - /* If we're sending a packet, update the announced right window edge */ - pcb->rcv_ann_right_edge = pcb->rcv_nxt + pcb->rcv_ann_wnd; - 800d3da: 68fb ldr r3, [r7, #12] - 800d3dc: 6a5b ldr r3, [r3, #36] @ 0x24 - 800d3de: 68fa ldr r2, [r7, #12] - 800d3e0: 8d52 ldrh r2, [r2, #42] @ 0x2a - 800d3e2: 441a add r2, r3 - 800d3e4: 68fb ldr r3, [r7, #12] - 800d3e6: 62da str r2, [r3, #44] @ 0x2c - } - return p; - 800d3e8: 697b ldr r3, [r7, #20] -} - 800d3ea: 4618 mov r0, r3 - 800d3ec: 3718 adds r7, #24 - 800d3ee: 46bd mov sp, r7 - 800d3f0: bdb0 pop {r4, r5, r7, pc} - 800d3f2: bf00 nop - 800d3f4: 08018dac .word 0x08018dac - 800d3f8: 080194b4 .word 0x080194b4 - 800d3fc: 08018e00 .word 0x08018e00 - -0800d400 : - -/* Fill in options for control segments */ -static void -tcp_output_fill_options(const struct tcp_pcb *pcb, struct pbuf *p, u8_t optflags, u8_t num_sacks) -{ - 800d400: b580 push {r7, lr} - 800d402: b088 sub sp, #32 - 800d404: af00 add r7, sp, #0 - 800d406: 60f8 str r0, [r7, #12] - 800d408: 60b9 str r1, [r7, #8] - 800d40a: 4611 mov r1, r2 - 800d40c: 461a mov r2, r3 - 800d40e: 460b mov r3, r1 - 800d410: 71fb strb r3, [r7, #7] - 800d412: 4613 mov r3, r2 - 800d414: 71bb strb r3, [r7, #6] - struct tcp_hdr *tcphdr; - u32_t *opts; - u16_t sacks_len = 0; - 800d416: 2300 movs r3, #0 - 800d418: 83fb strh r3, [r7, #30] - - LWIP_ASSERT("tcp_output_fill_options: invalid pbuf", p != NULL); - 800d41a: 68bb ldr r3, [r7, #8] - 800d41c: 2b00 cmp r3, #0 - 800d41e: d106 bne.n 800d42e - 800d420: 4b12 ldr r3, [pc, #72] @ (800d46c ) - 800d422: f240 7256 movw r2, #1878 @ 0x756 - 800d426: 4912 ldr r1, [pc, #72] @ (800d470 ) - 800d428: 4812 ldr r0, [pc, #72] @ (800d474 ) - 800d42a: f005 fc25 bl 8012c78 - - tcphdr = (struct tcp_hdr *)p->payload; - 800d42e: 68bb ldr r3, [r7, #8] - 800d430: 685b ldr r3, [r3, #4] - 800d432: 61bb str r3, [r7, #24] - opts = (u32_t *)(void *)(tcphdr + 1); - 800d434: 69bb ldr r3, [r7, #24] - 800d436: 3314 adds r3, #20 - 800d438: 617b str r3, [r7, #20] - opts = LWIP_HOOK_TCP_OUT_ADD_TCPOPTS(p, tcphdr, pcb, opts); -#endif - - LWIP_UNUSED_ARG(pcb); - LWIP_UNUSED_ARG(sacks_len); - LWIP_ASSERT("options not filled", (u8_t *)opts == ((u8_t *)(tcphdr + 1)) + sacks_len * 4 + LWIP_TCP_OPT_LENGTH_SEGMENT(optflags, pcb)); - 800d43a: 8bfb ldrh r3, [r7, #30] - 800d43c: 009b lsls r3, r3, #2 - 800d43e: 461a mov r2, r3 - 800d440: 79fb ldrb r3, [r7, #7] - 800d442: 009b lsls r3, r3, #2 - 800d444: f003 0304 and.w r3, r3, #4 - 800d448: 4413 add r3, r2 - 800d44a: 3314 adds r3, #20 - 800d44c: 69ba ldr r2, [r7, #24] - 800d44e: 4413 add r3, r2 - 800d450: 697a ldr r2, [r7, #20] - 800d452: 429a cmp r2, r3 - 800d454: d006 beq.n 800d464 - 800d456: 4b05 ldr r3, [pc, #20] @ (800d46c ) - 800d458: f240 7275 movw r2, #1909 @ 0x775 - 800d45c: 4906 ldr r1, [pc, #24] @ (800d478 ) - 800d45e: 4805 ldr r0, [pc, #20] @ (800d474 ) - 800d460: f005 fc0a bl 8012c78 - LWIP_UNUSED_ARG(optflags); /* for LWIP_NOASSERT */ - LWIP_UNUSED_ARG(opts); /* for LWIP_NOASSERT */ -} - 800d464: bf00 nop - 800d466: 3720 adds r7, #32 - 800d468: 46bd mov sp, r7 - 800d46a: bd80 pop {r7, pc} - 800d46c: 08018dac .word 0x08018dac - 800d470: 080194dc .word 0x080194dc - 800d474: 08018e00 .word 0x08018e00 - 800d478: 080193d4 .word 0x080193d4 - -0800d47c : - * header checksum and calling ip_output_if while handling netif hints and stats. - */ -static err_t -tcp_output_control_segment(const struct tcp_pcb *pcb, struct pbuf *p, - const ip_addr_t *src, const ip_addr_t *dst) -{ - 800d47c: b580 push {r7, lr} - 800d47e: b08a sub sp, #40 @ 0x28 - 800d480: af04 add r7, sp, #16 - 800d482: 60f8 str r0, [r7, #12] - 800d484: 60b9 str r1, [r7, #8] - 800d486: 607a str r2, [r7, #4] - 800d488: 603b str r3, [r7, #0] - err_t err; - struct netif *netif; - - LWIP_ASSERT("tcp_output_control_segment: invalid pbuf", p != NULL); - 800d48a: 68bb ldr r3, [r7, #8] - 800d48c: 2b00 cmp r3, #0 - 800d48e: d106 bne.n 800d49e - 800d490: 4b1c ldr r3, [pc, #112] @ (800d504 ) - 800d492: f240 7287 movw r2, #1927 @ 0x787 - 800d496: 491c ldr r1, [pc, #112] @ (800d508 ) - 800d498: 481c ldr r0, [pc, #112] @ (800d50c ) - 800d49a: f005 fbed bl 8012c78 - - netif = tcp_route(pcb, src, dst); - 800d49e: 683a ldr r2, [r7, #0] - 800d4a0: 6879 ldr r1, [r7, #4] - 800d4a2: 68f8 ldr r0, [r7, #12] - 800d4a4: f7fe ff42 bl 800c32c - 800d4a8: 6138 str r0, [r7, #16] - if (netif == NULL) { - 800d4aa: 693b ldr r3, [r7, #16] - 800d4ac: 2b00 cmp r3, #0 - 800d4ae: d102 bne.n 800d4b6 - err = ERR_RTE; - 800d4b0: 23fc movs r3, #252 @ 0xfc - 800d4b2: 75fb strb r3, [r7, #23] - 800d4b4: e01c b.n 800d4f0 - struct tcp_hdr *tcphdr = (struct tcp_hdr *)p->payload; - tcphdr->chksum = ip_chksum_pseudo(p, IP_PROTO_TCP, p->tot_len, - src, dst); - } -#endif - if (pcb != NULL) { - 800d4b6: 68fb ldr r3, [r7, #12] - 800d4b8: 2b00 cmp r3, #0 - 800d4ba: d006 beq.n 800d4ca - NETIF_SET_HINTS(netif, LWIP_CONST_CAST(struct netif_hint*, &(pcb->netif_hints))); - ttl = pcb->ttl; - 800d4bc: 68fb ldr r3, [r7, #12] - 800d4be: 7adb ldrb r3, [r3, #11] - 800d4c0: 75bb strb r3, [r7, #22] - tos = pcb->tos; - 800d4c2: 68fb ldr r3, [r7, #12] - 800d4c4: 7a9b ldrb r3, [r3, #10] - 800d4c6: 757b strb r3, [r7, #21] - 800d4c8: e003 b.n 800d4d2 - } else { - /* Send output with hardcoded TTL/HL since we have no access to the pcb */ - ttl = TCP_TTL; - 800d4ca: 23ff movs r3, #255 @ 0xff - 800d4cc: 75bb strb r3, [r7, #22] - tos = 0; - 800d4ce: 2300 movs r3, #0 - 800d4d0: 757b strb r3, [r7, #21] - } - TCP_STATS_INC(tcp.xmit); - err = ip_output_if(p, src, dst, ttl, tos, IP_PROTO_TCP, netif); - 800d4d2: 7dba ldrb r2, [r7, #22] - 800d4d4: 693b ldr r3, [r7, #16] - 800d4d6: 9302 str r3, [sp, #8] - 800d4d8: 2306 movs r3, #6 - 800d4da: 9301 str r3, [sp, #4] - 800d4dc: 7d7b ldrb r3, [r7, #21] - 800d4de: 9300 str r3, [sp, #0] - 800d4e0: 4613 mov r3, r2 - 800d4e2: 683a ldr r2, [r7, #0] - 800d4e4: 6879 ldr r1, [r7, #4] - 800d4e6: 68b8 ldr r0, [r7, #8] - 800d4e8: f004 f97c bl 80117e4 - 800d4ec: 4603 mov r3, r0 - 800d4ee: 75fb strb r3, [r7, #23] - NETIF_RESET_HINTS(netif); - } - pbuf_free(p); - 800d4f0: 68b8 ldr r0, [r7, #8] - 800d4f2: f7fa fdd9 bl 80080a8 - return err; - 800d4f6: f997 3017 ldrsb.w r3, [r7, #23] -} - 800d4fa: 4618 mov r0, r3 - 800d4fc: 3718 adds r7, #24 - 800d4fe: 46bd mov sp, r7 - 800d500: bd80 pop {r7, pc} - 800d502: bf00 nop - 800d504: 08018dac .word 0x08018dac - 800d508: 08019504 .word 0x08019504 - 800d50c: 08018e00 .word 0x08018e00 - -0800d510 : - */ -void -tcp_rst(const struct tcp_pcb *pcb, u32_t seqno, u32_t ackno, - const ip_addr_t *local_ip, const ip_addr_t *remote_ip, - u16_t local_port, u16_t remote_port) -{ - 800d510: b590 push {r4, r7, lr} - 800d512: b08b sub sp, #44 @ 0x2c - 800d514: af04 add r7, sp, #16 - 800d516: 60f8 str r0, [r7, #12] - 800d518: 60b9 str r1, [r7, #8] - 800d51a: 607a str r2, [r7, #4] - 800d51c: 603b str r3, [r7, #0] - struct pbuf *p; - u16_t wnd; - u8_t optlen; - - LWIP_ASSERT("tcp_rst: invalid local_ip", local_ip != NULL); - 800d51e: 683b ldr r3, [r7, #0] - 800d520: 2b00 cmp r3, #0 - 800d522: d106 bne.n 800d532 - 800d524: 4b1f ldr r3, [pc, #124] @ (800d5a4 ) - 800d526: f240 72c4 movw r2, #1988 @ 0x7c4 - 800d52a: 491f ldr r1, [pc, #124] @ (800d5a8 ) - 800d52c: 481f ldr r0, [pc, #124] @ (800d5ac ) - 800d52e: f005 fba3 bl 8012c78 - LWIP_ASSERT("tcp_rst: invalid remote_ip", remote_ip != NULL); - 800d532: 6abb ldr r3, [r7, #40] @ 0x28 - 800d534: 2b00 cmp r3, #0 - 800d536: d106 bne.n 800d546 - 800d538: 4b1a ldr r3, [pc, #104] @ (800d5a4 ) - 800d53a: f240 72c5 movw r2, #1989 @ 0x7c5 - 800d53e: 491c ldr r1, [pc, #112] @ (800d5b0 ) - 800d540: 481a ldr r0, [pc, #104] @ (800d5ac ) - 800d542: f005 fb99 bl 8012c78 - - optlen = LWIP_TCP_OPT_LENGTH_SEGMENT(0, pcb); - 800d546: 2300 movs r3, #0 - 800d548: 75fb strb r3, [r7, #23] - -#if LWIP_WND_SCALE - wnd = PP_HTONS(((TCP_WND >> TCP_RCV_SCALE) & 0xFFFF)); -#else - wnd = PP_HTONS(TCP_WND); - 800d54a: f246 0308 movw r3, #24584 @ 0x6008 - 800d54e: 82bb strh r3, [r7, #20] -#endif - - p = tcp_output_alloc_header_common(ackno, optlen, 0, lwip_htonl(seqno), local_port, - 800d550: 7dfb ldrb r3, [r7, #23] - 800d552: b29c uxth r4, r3 - 800d554: 68b8 ldr r0, [r7, #8] - 800d556: f7f9 fa6c bl 8006a32 - 800d55a: 4602 mov r2, r0 - 800d55c: 8abb ldrh r3, [r7, #20] - 800d55e: 9303 str r3, [sp, #12] - 800d560: 2314 movs r3, #20 - 800d562: 9302 str r3, [sp, #8] - 800d564: 8e3b ldrh r3, [r7, #48] @ 0x30 - 800d566: 9301 str r3, [sp, #4] - 800d568: 8dbb ldrh r3, [r7, #44] @ 0x2c - 800d56a: 9300 str r3, [sp, #0] - 800d56c: 4613 mov r3, r2 - 800d56e: 2200 movs r2, #0 - 800d570: 4621 mov r1, r4 - 800d572: 6878 ldr r0, [r7, #4] - 800d574: f7ff fe94 bl 800d2a0 - 800d578: 6138 str r0, [r7, #16] - remote_port, TCP_RST | TCP_ACK, wnd); - if (p == NULL) { - 800d57a: 693b ldr r3, [r7, #16] - 800d57c: 2b00 cmp r3, #0 - 800d57e: d00c beq.n 800d59a - LWIP_DEBUGF(TCP_DEBUG, ("tcp_rst: could not allocate memory for pbuf\n")); - return; - } - tcp_output_fill_options(pcb, p, 0, optlen); - 800d580: 7dfb ldrb r3, [r7, #23] - 800d582: 2200 movs r2, #0 - 800d584: 6939 ldr r1, [r7, #16] - 800d586: 68f8 ldr r0, [r7, #12] - 800d588: f7ff ff3a bl 800d400 - - MIB2_STATS_INC(mib2.tcpoutrsts); - - tcp_output_control_segment(pcb, p, local_ip, remote_ip); - 800d58c: 6abb ldr r3, [r7, #40] @ 0x28 - 800d58e: 683a ldr r2, [r7, #0] - 800d590: 6939 ldr r1, [r7, #16] - 800d592: 68f8 ldr r0, [r7, #12] - 800d594: f7ff ff72 bl 800d47c - 800d598: e000 b.n 800d59c - return; - 800d59a: bf00 nop - LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_rst: seqno %"U32_F" ackno %"U32_F".\n", seqno, ackno)); -} - 800d59c: 371c adds r7, #28 - 800d59e: 46bd mov sp, r7 - 800d5a0: bd90 pop {r4, r7, pc} - 800d5a2: bf00 nop - 800d5a4: 08018dac .word 0x08018dac - 800d5a8: 08019530 .word 0x08019530 - 800d5ac: 08018e00 .word 0x08018e00 - 800d5b0: 0801954c .word 0x0801954c - -0800d5b4 : - * - * @param pcb Protocol control block for the TCP connection to send the ACK - */ -err_t -tcp_send_empty_ack(struct tcp_pcb *pcb) -{ - 800d5b4: b590 push {r4, r7, lr} - 800d5b6: b087 sub sp, #28 - 800d5b8: af00 add r7, sp, #0 - 800d5ba: 6078 str r0, [r7, #4] - err_t err; - struct pbuf *p; - u8_t optlen, optflags = 0; - 800d5bc: 2300 movs r3, #0 - 800d5be: 75fb strb r3, [r7, #23] - u8_t num_sacks = 0; - 800d5c0: 2300 movs r3, #0 - 800d5c2: 75bb strb r3, [r7, #22] - - LWIP_ASSERT("tcp_send_empty_ack: invalid pcb", pcb != NULL); - 800d5c4: 687b ldr r3, [r7, #4] - 800d5c6: 2b00 cmp r3, #0 - 800d5c8: d106 bne.n 800d5d8 - 800d5ca: 4b28 ldr r3, [pc, #160] @ (800d66c ) - 800d5cc: f240 72ea movw r2, #2026 @ 0x7ea - 800d5d0: 4927 ldr r1, [pc, #156] @ (800d670 ) - 800d5d2: 4828 ldr r0, [pc, #160] @ (800d674 ) - 800d5d4: f005 fb50 bl 8012c78 -#if LWIP_TCP_TIMESTAMPS - if (pcb->flags & TF_TIMESTAMP) { - optflags = TF_SEG_OPTS_TS; - } -#endif - optlen = LWIP_TCP_OPT_LENGTH_SEGMENT(optflags, pcb); - 800d5d8: 7dfb ldrb r3, [r7, #23] - 800d5da: 009b lsls r3, r3, #2 - 800d5dc: b2db uxtb r3, r3 - 800d5de: f003 0304 and.w r3, r3, #4 - 800d5e2: 757b strb r3, [r7, #21] - if ((num_sacks = tcp_get_num_sacks(pcb, optlen)) > 0) { - optlen += 4 + num_sacks * 8; /* 4 bytes for header (including 2*NOP), plus 8B for each SACK */ - } -#endif - - p = tcp_output_alloc_header(pcb, optlen, 0, lwip_htonl(pcb->snd_nxt)); - 800d5e4: 7d7b ldrb r3, [r7, #21] - 800d5e6: b29c uxth r4, r3 - 800d5e8: 687b ldr r3, [r7, #4] - 800d5ea: 6d1b ldr r3, [r3, #80] @ 0x50 - 800d5ec: 4618 mov r0, r3 - 800d5ee: f7f9 fa20 bl 8006a32 - 800d5f2: 4603 mov r3, r0 - 800d5f4: 2200 movs r2, #0 - 800d5f6: 4621 mov r1, r4 - 800d5f8: 6878 ldr r0, [r7, #4] - 800d5fa: f7ff fec3 bl 800d384 - 800d5fe: 6138 str r0, [r7, #16] - if (p == NULL) { - 800d600: 693b ldr r3, [r7, #16] - 800d602: 2b00 cmp r3, #0 - 800d604: d109 bne.n 800d61a - /* let tcp_fasttmr retry sending this ACK */ - tcp_set_flags(pcb, TF_ACK_DELAY | TF_ACK_NOW); - 800d606: 687b ldr r3, [r7, #4] - 800d608: 8b5b ldrh r3, [r3, #26] - 800d60a: f043 0303 orr.w r3, r3, #3 - 800d60e: b29a uxth r2, r3 - 800d610: 687b ldr r3, [r7, #4] - 800d612: 835a strh r2, [r3, #26] - LWIP_DEBUGF(TCP_OUTPUT_DEBUG, ("tcp_output: (ACK) could not allocate pbuf\n")); - return ERR_BUF; - 800d614: f06f 0301 mvn.w r3, #1 - 800d618: e023 b.n 800d662 - } - tcp_output_fill_options(pcb, p, optflags, num_sacks); - 800d61a: 7dbb ldrb r3, [r7, #22] - 800d61c: 7dfa ldrb r2, [r7, #23] - 800d61e: 6939 ldr r1, [r7, #16] - 800d620: 6878 ldr r0, [r7, #4] - 800d622: f7ff feed bl 800d400 - pcb->ts_lastacksent = pcb->rcv_nxt; -#endif - - LWIP_DEBUGF(TCP_OUTPUT_DEBUG, - ("tcp_output: sending ACK for %"U32_F"\n", pcb->rcv_nxt)); - err = tcp_output_control_segment(pcb, p, &pcb->local_ip, &pcb->remote_ip); - 800d626: 687a ldr r2, [r7, #4] - 800d628: 687b ldr r3, [r7, #4] - 800d62a: 3304 adds r3, #4 - 800d62c: 6939 ldr r1, [r7, #16] - 800d62e: 6878 ldr r0, [r7, #4] - 800d630: f7ff ff24 bl 800d47c - 800d634: 4603 mov r3, r0 - 800d636: 73fb strb r3, [r7, #15] - if (err != ERR_OK) { - 800d638: f997 300f ldrsb.w r3, [r7, #15] - 800d63c: 2b00 cmp r3, #0 - 800d63e: d007 beq.n 800d650 - /* let tcp_fasttmr retry sending this ACK */ - tcp_set_flags(pcb, TF_ACK_DELAY | TF_ACK_NOW); - 800d640: 687b ldr r3, [r7, #4] - 800d642: 8b5b ldrh r3, [r3, #26] - 800d644: f043 0303 orr.w r3, r3, #3 - 800d648: b29a uxth r2, r3 - 800d64a: 687b ldr r3, [r7, #4] - 800d64c: 835a strh r2, [r3, #26] - 800d64e: e006 b.n 800d65e - } else { - /* remove ACK flags from the PCB, as we sent an empty ACK now */ - tcp_clear_flags(pcb, TF_ACK_DELAY | TF_ACK_NOW); - 800d650: 687b ldr r3, [r7, #4] - 800d652: 8b5b ldrh r3, [r3, #26] - 800d654: f023 0303 bic.w r3, r3, #3 - 800d658: b29a uxth r2, r3 - 800d65a: 687b ldr r3, [r7, #4] - 800d65c: 835a strh r2, [r3, #26] - } - - return err; - 800d65e: f997 300f ldrsb.w r3, [r7, #15] -} - 800d662: 4618 mov r0, r3 - 800d664: 371c adds r7, #28 - 800d666: 46bd mov sp, r7 - 800d668: bd90 pop {r4, r7, pc} - 800d66a: bf00 nop - 800d66c: 08018dac .word 0x08018dac - 800d670: 08019568 .word 0x08019568 - 800d674: 08018e00 .word 0x08018e00 - -0800d678 : - * - * @param pcb the tcp_pcb for which to send a keepalive packet - */ -err_t -tcp_keepalive(struct tcp_pcb *pcb) -{ - 800d678: b590 push {r4, r7, lr} - 800d67a: b087 sub sp, #28 - 800d67c: af00 add r7, sp, #0 - 800d67e: 6078 str r0, [r7, #4] - err_t err; - struct pbuf *p; - u8_t optlen = LWIP_TCP_OPT_LENGTH_SEGMENT(0, pcb); - 800d680: 2300 movs r3, #0 - 800d682: 75fb strb r3, [r7, #23] - - LWIP_ASSERT("tcp_keepalive: invalid pcb", pcb != NULL); - 800d684: 687b ldr r3, [r7, #4] - 800d686: 2b00 cmp r3, #0 - 800d688: d106 bne.n 800d698 - 800d68a: 4b18 ldr r3, [pc, #96] @ (800d6ec ) - 800d68c: f640 0224 movw r2, #2084 @ 0x824 - 800d690: 4917 ldr r1, [pc, #92] @ (800d6f0 ) - 800d692: 4818 ldr r0, [pc, #96] @ (800d6f4 ) - 800d694: f005 faf0 bl 8012c78 - LWIP_DEBUGF(TCP_DEBUG, ("\n")); - - LWIP_DEBUGF(TCP_DEBUG, ("tcp_keepalive: tcp_ticks %"U32_F" pcb->tmr %"U32_F" pcb->keep_cnt_sent %"U16_F"\n", - tcp_ticks, pcb->tmr, (u16_t)pcb->keep_cnt_sent)); - - p = tcp_output_alloc_header(pcb, optlen, 0, lwip_htonl(pcb->snd_nxt - 1)); - 800d698: 7dfb ldrb r3, [r7, #23] - 800d69a: b29c uxth r4, r3 - 800d69c: 687b ldr r3, [r7, #4] - 800d69e: 6d1b ldr r3, [r3, #80] @ 0x50 - 800d6a0: 3b01 subs r3, #1 - 800d6a2: 4618 mov r0, r3 - 800d6a4: f7f9 f9c5 bl 8006a32 - 800d6a8: 4603 mov r3, r0 - 800d6aa: 2200 movs r2, #0 - 800d6ac: 4621 mov r1, r4 - 800d6ae: 6878 ldr r0, [r7, #4] - 800d6b0: f7ff fe68 bl 800d384 - 800d6b4: 6138 str r0, [r7, #16] - if (p == NULL) { - 800d6b6: 693b ldr r3, [r7, #16] - 800d6b8: 2b00 cmp r3, #0 - 800d6ba: d102 bne.n 800d6c2 - LWIP_DEBUGF(TCP_DEBUG, - ("tcp_keepalive: could not allocate memory for pbuf\n")); - return ERR_MEM; - 800d6bc: f04f 33ff mov.w r3, #4294967295 - 800d6c0: e010 b.n 800d6e4 - } - tcp_output_fill_options(pcb, p, 0, optlen); - 800d6c2: 7dfb ldrb r3, [r7, #23] - 800d6c4: 2200 movs r2, #0 - 800d6c6: 6939 ldr r1, [r7, #16] - 800d6c8: 6878 ldr r0, [r7, #4] - 800d6ca: f7ff fe99 bl 800d400 - err = tcp_output_control_segment(pcb, p, &pcb->local_ip, &pcb->remote_ip); - 800d6ce: 687a ldr r2, [r7, #4] - 800d6d0: 687b ldr r3, [r7, #4] - 800d6d2: 3304 adds r3, #4 - 800d6d4: 6939 ldr r1, [r7, #16] - 800d6d6: 6878 ldr r0, [r7, #4] - 800d6d8: f7ff fed0 bl 800d47c - 800d6dc: 4603 mov r3, r0 - 800d6de: 73fb strb r3, [r7, #15] - - LWIP_DEBUGF(TCP_DEBUG, ("tcp_keepalive: seqno %"U32_F" ackno %"U32_F" err %d.\n", - pcb->snd_nxt - 1, pcb->rcv_nxt, (int)err)); - return err; - 800d6e0: f997 300f ldrsb.w r3, [r7, #15] -} - 800d6e4: 4618 mov r0, r3 - 800d6e6: 371c adds r7, #28 - 800d6e8: 46bd mov sp, r7 - 800d6ea: bd90 pop {r4, r7, pc} - 800d6ec: 08018dac .word 0x08018dac - 800d6f0: 08019588 .word 0x08019588 - 800d6f4: 08018e00 .word 0x08018e00 - -0800d6f8 : - * - * @param pcb the tcp_pcb for which to send a zero-window probe packet - */ -err_t -tcp_zero_window_probe(struct tcp_pcb *pcb) -{ - 800d6f8: b590 push {r4, r7, lr} - 800d6fa: b08b sub sp, #44 @ 0x2c - 800d6fc: af00 add r7, sp, #0 - 800d6fe: 6078 str r0, [r7, #4] - struct tcp_hdr *tcphdr; - struct tcp_seg *seg; - u16_t len; - u8_t is_fin; - u32_t snd_nxt; - u8_t optlen = LWIP_TCP_OPT_LENGTH_SEGMENT(0, pcb); - 800d700: 2300 movs r3, #0 - 800d702: f887 3027 strb.w r3, [r7, #39] @ 0x27 - - LWIP_ASSERT("tcp_zero_window_probe: invalid pcb", pcb != NULL); - 800d706: 687b ldr r3, [r7, #4] - 800d708: 2b00 cmp r3, #0 - 800d70a: d106 bne.n 800d71a - 800d70c: 4b4c ldr r3, [pc, #304] @ (800d840 ) - 800d70e: f640 024f movw r2, #2127 @ 0x84f - 800d712: 494c ldr r1, [pc, #304] @ (800d844 ) - 800d714: 484c ldr r0, [pc, #304] @ (800d848 ) - 800d716: f005 faaf bl 8012c78 - ("tcp_zero_window_probe: tcp_ticks %"U32_F - " pcb->tmr %"U32_F" pcb->keep_cnt_sent %"U16_F"\n", - tcp_ticks, pcb->tmr, (u16_t)pcb->keep_cnt_sent)); - - /* Only consider unsent, persist timer should be off when there is data in-flight */ - seg = pcb->unsent; - 800d71a: 687b ldr r3, [r7, #4] - 800d71c: 6edb ldr r3, [r3, #108] @ 0x6c - 800d71e: 623b str r3, [r7, #32] - if (seg == NULL) { - 800d720: 6a3b ldr r3, [r7, #32] - 800d722: 2b00 cmp r3, #0 - 800d724: d101 bne.n 800d72a - /* Not expected, persist timer should be off when the send buffer is empty */ - return ERR_OK; - 800d726: 2300 movs r3, #0 - 800d728: e086 b.n 800d838 - - /* increment probe count. NOTE: we record probe even if it fails - to actually transmit due to an error. This ensures memory exhaustion/ - routing problem doesn't leave a zero-window pcb as an indefinite zombie. - RTO mechanism has similar behavior, see pcb->nrtx */ - if (pcb->persist_probe < 0xFF) { - 800d72a: 687b ldr r3, [r7, #4] - 800d72c: f893 309a ldrb.w r3, [r3, #154] @ 0x9a - 800d730: 2bff cmp r3, #255 @ 0xff - 800d732: d007 beq.n 800d744 - ++pcb->persist_probe; - 800d734: 687b ldr r3, [r7, #4] - 800d736: f893 309a ldrb.w r3, [r3, #154] @ 0x9a - 800d73a: 3301 adds r3, #1 - 800d73c: b2da uxtb r2, r3 - 800d73e: 687b ldr r3, [r7, #4] - 800d740: f883 209a strb.w r2, [r3, #154] @ 0x9a - } - - is_fin = ((TCPH_FLAGS(seg->tcphdr) & TCP_FIN) != 0) && (seg->len == 0); - 800d744: 6a3b ldr r3, [r7, #32] - 800d746: 68db ldr r3, [r3, #12] - 800d748: 899b ldrh r3, [r3, #12] - 800d74a: b29b uxth r3, r3 - 800d74c: 4618 mov r0, r3 - 800d74e: f7f9 f95b bl 8006a08 - 800d752: 4603 mov r3, r0 - 800d754: b2db uxtb r3, r3 - 800d756: f003 0301 and.w r3, r3, #1 - 800d75a: 2b00 cmp r3, #0 - 800d75c: d005 beq.n 800d76a - 800d75e: 6a3b ldr r3, [r7, #32] - 800d760: 891b ldrh r3, [r3, #8] - 800d762: 2b00 cmp r3, #0 - 800d764: d101 bne.n 800d76a - 800d766: 2301 movs r3, #1 - 800d768: e000 b.n 800d76c - 800d76a: 2300 movs r3, #0 - 800d76c: 77fb strb r3, [r7, #31] - /* we want to send one seqno: either FIN or data (no options) */ - len = is_fin ? 0 : 1; - 800d76e: 7ffb ldrb r3, [r7, #31] - 800d770: 2b00 cmp r3, #0 - 800d772: bf0c ite eq - 800d774: 2301 moveq r3, #1 - 800d776: 2300 movne r3, #0 - 800d778: b2db uxtb r3, r3 - 800d77a: 83bb strh r3, [r7, #28] - - p = tcp_output_alloc_header(pcb, optlen, len, seg->tcphdr->seqno); - 800d77c: f897 3027 ldrb.w r3, [r7, #39] @ 0x27 - 800d780: b299 uxth r1, r3 - 800d782: 6a3b ldr r3, [r7, #32] - 800d784: 68db ldr r3, [r3, #12] - 800d786: 685b ldr r3, [r3, #4] - 800d788: 8bba ldrh r2, [r7, #28] - 800d78a: 6878 ldr r0, [r7, #4] - 800d78c: f7ff fdfa bl 800d384 - 800d790: 61b8 str r0, [r7, #24] - if (p == NULL) { - 800d792: 69bb ldr r3, [r7, #24] - 800d794: 2b00 cmp r3, #0 - 800d796: d102 bne.n 800d79e - LWIP_DEBUGF(TCP_DEBUG, ("tcp_zero_window_probe: no memory for pbuf\n")); - return ERR_MEM; - 800d798: f04f 33ff mov.w r3, #4294967295 - 800d79c: e04c b.n 800d838 - } - tcphdr = (struct tcp_hdr *)p->payload; - 800d79e: 69bb ldr r3, [r7, #24] - 800d7a0: 685b ldr r3, [r3, #4] - 800d7a2: 617b str r3, [r7, #20] - - if (is_fin) { - 800d7a4: 7ffb ldrb r3, [r7, #31] - 800d7a6: 2b00 cmp r3, #0 - 800d7a8: d011 beq.n 800d7ce - /* FIN segment, no data */ - TCPH_FLAGS_SET(tcphdr, TCP_ACK | TCP_FIN); - 800d7aa: 697b ldr r3, [r7, #20] - 800d7ac: 899b ldrh r3, [r3, #12] - 800d7ae: b29b uxth r3, r3 - 800d7b0: b21b sxth r3, r3 - 800d7b2: f423 537c bic.w r3, r3, #16128 @ 0x3f00 - 800d7b6: b21c sxth r4, r3 - 800d7b8: 2011 movs r0, #17 - 800d7ba: f7f9 f925 bl 8006a08 - 800d7be: 4603 mov r3, r0 - 800d7c0: b21b sxth r3, r3 - 800d7c2: 4323 orrs r3, r4 - 800d7c4: b21b sxth r3, r3 - 800d7c6: b29a uxth r2, r3 - 800d7c8: 697b ldr r3, [r7, #20] - 800d7ca: 819a strh r2, [r3, #12] - 800d7cc: e010 b.n 800d7f0 - } else { - /* Data segment, copy in one byte from the head of the unacked queue */ - char *d = ((char *)p->payload + TCP_HLEN); - 800d7ce: 69bb ldr r3, [r7, #24] - 800d7d0: 685b ldr r3, [r3, #4] - 800d7d2: 3314 adds r3, #20 - 800d7d4: 613b str r3, [r7, #16] - /* Depending on whether the segment has already been sent (unacked) or not - (unsent), seg->p->payload points to the IP header or TCP header. - Ensure we copy the first TCP data byte: */ - pbuf_copy_partial(seg->p, d, 1, seg->p->tot_len - seg->len); - 800d7d6: 6a3b ldr r3, [r7, #32] - 800d7d8: 6858 ldr r0, [r3, #4] - 800d7da: 6a3b ldr r3, [r7, #32] - 800d7dc: 685b ldr r3, [r3, #4] - 800d7de: 891a ldrh r2, [r3, #8] - 800d7e0: 6a3b ldr r3, [r7, #32] - 800d7e2: 891b ldrh r3, [r3, #8] - 800d7e4: 1ad3 subs r3, r2, r3 - 800d7e6: b29b uxth r3, r3 - 800d7e8: 2201 movs r2, #1 - 800d7ea: 6939 ldr r1, [r7, #16] - 800d7ec: f7fa fe56 bl 800849c - } - - /* The byte may be acknowledged without the window being opened. */ - snd_nxt = lwip_ntohl(seg->tcphdr->seqno) + 1; - 800d7f0: 6a3b ldr r3, [r7, #32] - 800d7f2: 68db ldr r3, [r3, #12] - 800d7f4: 685b ldr r3, [r3, #4] - 800d7f6: 4618 mov r0, r3 - 800d7f8: f7f9 f91b bl 8006a32 - 800d7fc: 4603 mov r3, r0 - 800d7fe: 3301 adds r3, #1 - 800d800: 60fb str r3, [r7, #12] - if (TCP_SEQ_LT(pcb->snd_nxt, snd_nxt)) { - 800d802: 687b ldr r3, [r7, #4] - 800d804: 6d1a ldr r2, [r3, #80] @ 0x50 - 800d806: 68fb ldr r3, [r7, #12] - 800d808: 1ad3 subs r3, r2, r3 - 800d80a: 2b00 cmp r3, #0 - 800d80c: da02 bge.n 800d814 - pcb->snd_nxt = snd_nxt; - 800d80e: 687b ldr r3, [r7, #4] - 800d810: 68fa ldr r2, [r7, #12] - 800d812: 651a str r2, [r3, #80] @ 0x50 - } - tcp_output_fill_options(pcb, p, 0, optlen); - 800d814: f897 3027 ldrb.w r3, [r7, #39] @ 0x27 - 800d818: 2200 movs r2, #0 - 800d81a: 69b9 ldr r1, [r7, #24] - 800d81c: 6878 ldr r0, [r7, #4] - 800d81e: f7ff fdef bl 800d400 - - err = tcp_output_control_segment(pcb, p, &pcb->local_ip, &pcb->remote_ip); - 800d822: 687a ldr r2, [r7, #4] - 800d824: 687b ldr r3, [r7, #4] - 800d826: 3304 adds r3, #4 - 800d828: 69b9 ldr r1, [r7, #24] - 800d82a: 6878 ldr r0, [r7, #4] - 800d82c: f7ff fe26 bl 800d47c - 800d830: 4603 mov r3, r0 - 800d832: 72fb strb r3, [r7, #11] - - LWIP_DEBUGF(TCP_DEBUG, ("tcp_zero_window_probe: seqno %"U32_F - " ackno %"U32_F" err %d.\n", - pcb->snd_nxt - 1, pcb->rcv_nxt, (int)err)); - return err; - 800d834: f997 300b ldrsb.w r3, [r7, #11] -} - 800d838: 4618 mov r0, r3 - 800d83a: 372c adds r7, #44 @ 0x2c - 800d83c: 46bd mov sp, r7 - 800d83e: bd90 pop {r4, r7, pc} - 800d840: 08018dac .word 0x08018dac - 800d844: 080195a4 .word 0x080195a4 - 800d848: 08018e00 .word 0x08018e00 - -0800d84c : - * - * @param arg unused argument - */ -static void -tcpip_tcp_timer(void *arg) -{ - 800d84c: b580 push {r7, lr} - 800d84e: b082 sub sp, #8 - 800d850: af00 add r7, sp, #0 - 800d852: 6078 str r0, [r7, #4] - LWIP_UNUSED_ARG(arg); - - /* call TCP timer handler */ - tcp_tmr(); - 800d854: f7fa ff10 bl 8008678 - /* timer still needed? */ - if (tcp_active_pcbs || tcp_tw_pcbs) { - 800d858: 4b0a ldr r3, [pc, #40] @ (800d884 ) - 800d85a: 681b ldr r3, [r3, #0] - 800d85c: 2b00 cmp r3, #0 - 800d85e: d103 bne.n 800d868 - 800d860: 4b09 ldr r3, [pc, #36] @ (800d888 ) - 800d862: 681b ldr r3, [r3, #0] - 800d864: 2b00 cmp r3, #0 - 800d866: d005 beq.n 800d874 - /* restart timer */ - sys_timeout(TCP_TMR_INTERVAL, tcpip_tcp_timer, NULL); - 800d868: 2200 movs r2, #0 - 800d86a: 4908 ldr r1, [pc, #32] @ (800d88c ) - 800d86c: 20fa movs r0, #250 @ 0xfa - 800d86e: f000 f8f3 bl 800da58 - 800d872: e003 b.n 800d87c - } else { - /* disable timer */ - tcpip_tcp_timer_active = 0; - 800d874: 4b06 ldr r3, [pc, #24] @ (800d890 ) - 800d876: 2200 movs r2, #0 - 800d878: 601a str r2, [r3, #0] - } -} - 800d87a: bf00 nop - 800d87c: bf00 nop - 800d87e: 3708 adds r7, #8 - 800d880: 46bd mov sp, r7 - 800d882: bd80 pop {r7, pc} - 800d884: 200190f8 .word 0x200190f8 - 800d888: 200190fc .word 0x200190fc - 800d88c: 0800d84d .word 0x0800d84d - 800d890: 20019144 .word 0x20019144 - -0800d894 : - * the reason is to have the TCP timer only running when - * there are active (or time-wait) PCBs. - */ -void -tcp_timer_needed(void) -{ - 800d894: b580 push {r7, lr} - 800d896: af00 add r7, sp, #0 - LWIP_ASSERT_CORE_LOCKED(); - - /* timer is off but needed again? */ - if (!tcpip_tcp_timer_active && (tcp_active_pcbs || tcp_tw_pcbs)) { - 800d898: 4b0a ldr r3, [pc, #40] @ (800d8c4 ) - 800d89a: 681b ldr r3, [r3, #0] - 800d89c: 2b00 cmp r3, #0 - 800d89e: d10f bne.n 800d8c0 - 800d8a0: 4b09 ldr r3, [pc, #36] @ (800d8c8 ) - 800d8a2: 681b ldr r3, [r3, #0] - 800d8a4: 2b00 cmp r3, #0 - 800d8a6: d103 bne.n 800d8b0 - 800d8a8: 4b08 ldr r3, [pc, #32] @ (800d8cc ) - 800d8aa: 681b ldr r3, [r3, #0] - 800d8ac: 2b00 cmp r3, #0 - 800d8ae: d007 beq.n 800d8c0 - /* enable and start timer */ - tcpip_tcp_timer_active = 1; - 800d8b0: 4b04 ldr r3, [pc, #16] @ (800d8c4 ) - 800d8b2: 2201 movs r2, #1 - 800d8b4: 601a str r2, [r3, #0] - sys_timeout(TCP_TMR_INTERVAL, tcpip_tcp_timer, NULL); - 800d8b6: 2200 movs r2, #0 - 800d8b8: 4905 ldr r1, [pc, #20] @ (800d8d0 ) - 800d8ba: 20fa movs r0, #250 @ 0xfa - 800d8bc: f000 f8cc bl 800da58 - } -} - 800d8c0: bf00 nop - 800d8c2: bd80 pop {r7, pc} - 800d8c4: 20019144 .word 0x20019144 - 800d8c8: 200190f8 .word 0x200190f8 - 800d8cc: 200190fc .word 0x200190fc - 800d8d0: 0800d84d .word 0x0800d84d - -0800d8d4 : -#if LWIP_DEBUG_TIMERNAMES -sys_timeout_abs(u32_t abs_time, sys_timeout_handler handler, void *arg, const char *handler_name) -#else /* LWIP_DEBUG_TIMERNAMES */ -sys_timeout_abs(u32_t abs_time, sys_timeout_handler handler, void *arg) -#endif -{ - 800d8d4: b580 push {r7, lr} - 800d8d6: b086 sub sp, #24 - 800d8d8: af00 add r7, sp, #0 - 800d8da: 60f8 str r0, [r7, #12] - 800d8dc: 60b9 str r1, [r7, #8] - 800d8de: 607a str r2, [r7, #4] - struct sys_timeo *timeout, *t; - - timeout = (struct sys_timeo *)memp_malloc(MEMP_SYS_TIMEOUT); - 800d8e0: 2006 movs r0, #6 - 800d8e2: f7f9 fcf1 bl 80072c8 - 800d8e6: 6138 str r0, [r7, #16] - if (timeout == NULL) { - 800d8e8: 693b ldr r3, [r7, #16] - 800d8ea: 2b00 cmp r3, #0 - 800d8ec: d109 bne.n 800d902 - LWIP_ASSERT("sys_timeout: timeout != NULL, pool MEMP_SYS_TIMEOUT is empty", timeout != NULL); - 800d8ee: 693b ldr r3, [r7, #16] - 800d8f0: 2b00 cmp r3, #0 - 800d8f2: d151 bne.n 800d998 - 800d8f4: 4b2a ldr r3, [pc, #168] @ (800d9a0 ) - 800d8f6: 22be movs r2, #190 @ 0xbe - 800d8f8: 492a ldr r1, [pc, #168] @ (800d9a4 ) - 800d8fa: 482b ldr r0, [pc, #172] @ (800d9a8 ) - 800d8fc: f005 f9bc bl 8012c78 - return; - 800d900: e04a b.n 800d998 - } - - timeout->next = NULL; - 800d902: 693b ldr r3, [r7, #16] - 800d904: 2200 movs r2, #0 - 800d906: 601a str r2, [r3, #0] - timeout->h = handler; - 800d908: 693b ldr r3, [r7, #16] - 800d90a: 68ba ldr r2, [r7, #8] - 800d90c: 609a str r2, [r3, #8] - timeout->arg = arg; - 800d90e: 693b ldr r3, [r7, #16] - 800d910: 687a ldr r2, [r7, #4] - 800d912: 60da str r2, [r3, #12] - timeout->time = abs_time; - 800d914: 693b ldr r3, [r7, #16] - 800d916: 68fa ldr r2, [r7, #12] - 800d918: 605a str r2, [r3, #4] - timeout->handler_name = handler_name; - LWIP_DEBUGF(TIMERS_DEBUG, ("sys_timeout: %p abs_time=%"U32_F" handler=%s arg=%p\n", - (void *)timeout, abs_time, handler_name, (void *)arg)); -#endif /* LWIP_DEBUG_TIMERNAMES */ - - if (next_timeout == NULL) { - 800d91a: 4b24 ldr r3, [pc, #144] @ (800d9ac ) - 800d91c: 681b ldr r3, [r3, #0] - 800d91e: 2b00 cmp r3, #0 - 800d920: d103 bne.n 800d92a - next_timeout = timeout; - 800d922: 4a22 ldr r2, [pc, #136] @ (800d9ac ) - 800d924: 693b ldr r3, [r7, #16] - 800d926: 6013 str r3, [r2, #0] - return; - 800d928: e037 b.n 800d99a - } - if (TIME_LESS_THAN(timeout->time, next_timeout->time)) { - 800d92a: 693b ldr r3, [r7, #16] - 800d92c: 685a ldr r2, [r3, #4] - 800d92e: 4b1f ldr r3, [pc, #124] @ (800d9ac ) - 800d930: 681b ldr r3, [r3, #0] - 800d932: 685b ldr r3, [r3, #4] - 800d934: 1ad3 subs r3, r2, r3 - 800d936: 0fdb lsrs r3, r3, #31 - 800d938: f003 0301 and.w r3, r3, #1 - 800d93c: b2db uxtb r3, r3 - 800d93e: 2b00 cmp r3, #0 - 800d940: d007 beq.n 800d952 - timeout->next = next_timeout; - 800d942: 4b1a ldr r3, [pc, #104] @ (800d9ac ) - 800d944: 681a ldr r2, [r3, #0] - 800d946: 693b ldr r3, [r7, #16] - 800d948: 601a str r2, [r3, #0] - next_timeout = timeout; - 800d94a: 4a18 ldr r2, [pc, #96] @ (800d9ac ) - 800d94c: 693b ldr r3, [r7, #16] - 800d94e: 6013 str r3, [r2, #0] - 800d950: e023 b.n 800d99a - } else { - for (t = next_timeout; t != NULL; t = t->next) { - 800d952: 4b16 ldr r3, [pc, #88] @ (800d9ac ) - 800d954: 681b ldr r3, [r3, #0] - 800d956: 617b str r3, [r7, #20] - 800d958: e01a b.n 800d990 - if ((t->next == NULL) || TIME_LESS_THAN(timeout->time, t->next->time)) { - 800d95a: 697b ldr r3, [r7, #20] - 800d95c: 681b ldr r3, [r3, #0] - 800d95e: 2b00 cmp r3, #0 - 800d960: d00b beq.n 800d97a - 800d962: 693b ldr r3, [r7, #16] - 800d964: 685a ldr r2, [r3, #4] - 800d966: 697b ldr r3, [r7, #20] - 800d968: 681b ldr r3, [r3, #0] - 800d96a: 685b ldr r3, [r3, #4] - 800d96c: 1ad3 subs r3, r2, r3 - 800d96e: 0fdb lsrs r3, r3, #31 - 800d970: f003 0301 and.w r3, r3, #1 - 800d974: b2db uxtb r3, r3 - 800d976: 2b00 cmp r3, #0 - 800d978: d007 beq.n 800d98a - timeout->next = t->next; - 800d97a: 697b ldr r3, [r7, #20] - 800d97c: 681a ldr r2, [r3, #0] - 800d97e: 693b ldr r3, [r7, #16] - 800d980: 601a str r2, [r3, #0] - t->next = timeout; - 800d982: 697b ldr r3, [r7, #20] - 800d984: 693a ldr r2, [r7, #16] - 800d986: 601a str r2, [r3, #0] - break; - 800d988: e007 b.n 800d99a - for (t = next_timeout; t != NULL; t = t->next) { - 800d98a: 697b ldr r3, [r7, #20] - 800d98c: 681b ldr r3, [r3, #0] - 800d98e: 617b str r3, [r7, #20] - 800d990: 697b ldr r3, [r7, #20] - 800d992: 2b00 cmp r3, #0 - 800d994: d1e1 bne.n 800d95a - 800d996: e000 b.n 800d99a - return; - 800d998: bf00 nop - } - } - } -} - 800d99a: 3718 adds r7, #24 - 800d99c: 46bd mov sp, r7 - 800d99e: bd80 pop {r7, pc} - 800d9a0: 080195c8 .word 0x080195c8 - 800d9a4: 080195fc .word 0x080195fc - 800d9a8: 0801963c .word 0x0801963c - 800d9ac: 2001913c .word 0x2001913c - -0800d9b0 : -#if !LWIP_TESTMODE -static -#endif -void -lwip_cyclic_timer(void *arg) -{ - 800d9b0: b580 push {r7, lr} - 800d9b2: b086 sub sp, #24 - 800d9b4: af00 add r7, sp, #0 - 800d9b6: 6078 str r0, [r7, #4] - u32_t now; - u32_t next_timeout_time; - const struct lwip_cyclic_timer *cyclic = (const struct lwip_cyclic_timer *)arg; - 800d9b8: 687b ldr r3, [r7, #4] - 800d9ba: 617b str r3, [r7, #20] - -#if LWIP_DEBUG_TIMERNAMES - LWIP_DEBUGF(TIMERS_DEBUG, ("tcpip: %s()\n", cyclic->handler_name)); -#endif - cyclic->handler(); - 800d9bc: 697b ldr r3, [r7, #20] - 800d9be: 685b ldr r3, [r3, #4] - 800d9c0: 4798 blx r3 - - now = sys_now(); - 800d9c2: f7f8 fe09 bl 80065d8 - 800d9c6: 6138 str r0, [r7, #16] - next_timeout_time = (u32_t)(current_timeout_due_time + cyclic->interval_ms); /* overflow handled by TIME_LESS_THAN macro */ - 800d9c8: 697b ldr r3, [r7, #20] - 800d9ca: 681a ldr r2, [r3, #0] - 800d9cc: 4b0f ldr r3, [pc, #60] @ (800da0c ) - 800d9ce: 681b ldr r3, [r3, #0] - 800d9d0: 4413 add r3, r2 - 800d9d2: 60fb str r3, [r7, #12] - if (TIME_LESS_THAN(next_timeout_time, now)) { - 800d9d4: 68fa ldr r2, [r7, #12] - 800d9d6: 693b ldr r3, [r7, #16] - 800d9d8: 1ad3 subs r3, r2, r3 - 800d9da: 0fdb lsrs r3, r3, #31 - 800d9dc: f003 0301 and.w r3, r3, #1 - 800d9e0: b2db uxtb r3, r3 - 800d9e2: 2b00 cmp r3, #0 - 800d9e4: d009 beq.n 800d9fa - /* timer would immediately expire again -> "overload" -> restart without any correction */ -#if LWIP_DEBUG_TIMERNAMES - sys_timeout_abs((u32_t)(now + cyclic->interval_ms), lwip_cyclic_timer, arg, cyclic->handler_name); -#else - sys_timeout_abs((u32_t)(now + cyclic->interval_ms), lwip_cyclic_timer, arg); - 800d9e6: 697b ldr r3, [r7, #20] - 800d9e8: 681a ldr r2, [r3, #0] - 800d9ea: 693b ldr r3, [r7, #16] - 800d9ec: 4413 add r3, r2 - 800d9ee: 687a ldr r2, [r7, #4] - 800d9f0: 4907 ldr r1, [pc, #28] @ (800da10 ) - 800d9f2: 4618 mov r0, r3 - 800d9f4: f7ff ff6e bl 800d8d4 - sys_timeout_abs(next_timeout_time, lwip_cyclic_timer, arg, cyclic->handler_name); -#else - sys_timeout_abs(next_timeout_time, lwip_cyclic_timer, arg); -#endif - } -} - 800d9f8: e004 b.n 800da04 - sys_timeout_abs(next_timeout_time, lwip_cyclic_timer, arg); - 800d9fa: 687a ldr r2, [r7, #4] - 800d9fc: 4904 ldr r1, [pc, #16] @ (800da10 ) - 800d9fe: 68f8 ldr r0, [r7, #12] - 800da00: f7ff ff68 bl 800d8d4 -} - 800da04: bf00 nop - 800da06: 3718 adds r7, #24 - 800da08: 46bd mov sp, r7 - 800da0a: bd80 pop {r7, pc} - 800da0c: 20019140 .word 0x20019140 - 800da10: 0800d9b1 .word 0x0800d9b1 - -0800da14 : - -/** Initialize this module */ -void sys_timeouts_init(void) -{ - 800da14: b580 push {r7, lr} - 800da16: b082 sub sp, #8 - 800da18: af00 add r7, sp, #0 - size_t i; - /* tcp_tmr() at index 0 is started on demand */ - for (i = (LWIP_TCP ? 1 : 0); i < LWIP_ARRAYSIZE(lwip_cyclic_timers); i++) { - 800da1a: 2301 movs r3, #1 - 800da1c: 607b str r3, [r7, #4] - 800da1e: e00e b.n 800da3e - /* we have to cast via size_t to get rid of const warning - (this is OK as cyclic_timer() casts back to const* */ - sys_timeout(lwip_cyclic_timers[i].interval_ms, lwip_cyclic_timer, LWIP_CONST_CAST(void *, &lwip_cyclic_timers[i])); - 800da20: 4a0b ldr r2, [pc, #44] @ (800da50 ) - 800da22: 687b ldr r3, [r7, #4] - 800da24: f852 0033 ldr.w r0, [r2, r3, lsl #3] - 800da28: 687b ldr r3, [r7, #4] - 800da2a: 00db lsls r3, r3, #3 - 800da2c: 4a08 ldr r2, [pc, #32] @ (800da50 ) - 800da2e: 4413 add r3, r2 - 800da30: 461a mov r2, r3 - 800da32: 4908 ldr r1, [pc, #32] @ (800da54 ) - 800da34: f000 f810 bl 800da58 - for (i = (LWIP_TCP ? 1 : 0); i < LWIP_ARRAYSIZE(lwip_cyclic_timers); i++) { - 800da38: 687b ldr r3, [r7, #4] - 800da3a: 3301 adds r3, #1 - 800da3c: 607b str r3, [r7, #4] - 800da3e: 687b ldr r3, [r7, #4] - 800da40: 2b04 cmp r3, #4 - 800da42: d9ed bls.n 800da20 - } -} - 800da44: bf00 nop - 800da46: bf00 nop - 800da48: 3708 adds r7, #8 - 800da4a: 46bd mov sp, r7 - 800da4c: bd80 pop {r7, pc} - 800da4e: bf00 nop - 800da50: 0801a5bc .word 0x0801a5bc - 800da54: 0800d9b1 .word 0x0800d9b1 - -0800da58 : -sys_timeout_debug(u32_t msecs, sys_timeout_handler handler, void *arg, const char *handler_name) -#else /* LWIP_DEBUG_TIMERNAMES */ -void -sys_timeout(u32_t msecs, sys_timeout_handler handler, void *arg) -#endif /* LWIP_DEBUG_TIMERNAMES */ -{ - 800da58: b580 push {r7, lr} - 800da5a: b086 sub sp, #24 - 800da5c: af00 add r7, sp, #0 - 800da5e: 60f8 str r0, [r7, #12] - 800da60: 60b9 str r1, [r7, #8] - 800da62: 607a str r2, [r7, #4] - u32_t next_timeout_time; - - LWIP_ASSERT_CORE_LOCKED(); - - LWIP_ASSERT("Timeout time too long, max is LWIP_UINT32_MAX/4 msecs", msecs <= (LWIP_UINT32_MAX / 4)); - 800da64: 68fb ldr r3, [r7, #12] - 800da66: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 800da6a: d306 bcc.n 800da7a - 800da6c: 4b0a ldr r3, [pc, #40] @ (800da98 ) - 800da6e: f240 1229 movw r2, #297 @ 0x129 - 800da72: 490a ldr r1, [pc, #40] @ (800da9c ) - 800da74: 480a ldr r0, [pc, #40] @ (800daa0 ) - 800da76: f005 f8ff bl 8012c78 - - next_timeout_time = (u32_t)(sys_now() + msecs); /* overflow handled by TIME_LESS_THAN macro */ - 800da7a: f7f8 fdad bl 80065d8 - 800da7e: 4602 mov r2, r0 - 800da80: 68fb ldr r3, [r7, #12] - 800da82: 4413 add r3, r2 - 800da84: 617b str r3, [r7, #20] - -#if LWIP_DEBUG_TIMERNAMES - sys_timeout_abs(next_timeout_time, handler, arg, handler_name); -#else - sys_timeout_abs(next_timeout_time, handler, arg); - 800da86: 687a ldr r2, [r7, #4] - 800da88: 68b9 ldr r1, [r7, #8] - 800da8a: 6978 ldr r0, [r7, #20] - 800da8c: f7ff ff22 bl 800d8d4 -#endif -} - 800da90: bf00 nop - 800da92: 3718 adds r7, #24 - 800da94: 46bd mov sp, r7 - 800da96: bd80 pop {r7, pc} - 800da98: 080195c8 .word 0x080195c8 - 800da9c: 08019664 .word 0x08019664 - 800daa0: 0801963c .word 0x0801963c - -0800daa4 : - * - * Must be called periodically from your main loop. - */ -void -sys_check_timeouts(void) -{ - 800daa4: b580 push {r7, lr} - 800daa6: b084 sub sp, #16 - 800daa8: af00 add r7, sp, #0 - u32_t now; - - LWIP_ASSERT_CORE_LOCKED(); - - /* Process only timers expired at the start of the function. */ - now = sys_now(); - 800daaa: f7f8 fd95 bl 80065d8 - 800daae: 60f8 str r0, [r7, #12] - do { - struct sys_timeo *tmptimeout; - sys_timeout_handler handler; - void *arg; - - PBUF_CHECK_FREE_OOSEQ(); - 800dab0: 4b1a ldr r3, [pc, #104] @ (800db1c ) - 800dab2: 781b ldrb r3, [r3, #0] - 800dab4: b2db uxtb r3, r3 - 800dab6: 2b00 cmp r3, #0 - 800dab8: d001 beq.n 800dabe - 800daba: f7f9 ffbd bl 8007a38 - - tmptimeout = next_timeout; - 800dabe: 4b18 ldr r3, [pc, #96] @ (800db20 ) - 800dac0: 681b ldr r3, [r3, #0] - 800dac2: 60bb str r3, [r7, #8] - if (tmptimeout == NULL) { - 800dac4: 68bb ldr r3, [r7, #8] - 800dac6: 2b00 cmp r3, #0 - 800dac8: d022 beq.n 800db10 - return; - } - - if (TIME_LESS_THAN(now, tmptimeout->time)) { - 800daca: 68bb ldr r3, [r7, #8] - 800dacc: 685b ldr r3, [r3, #4] - 800dace: 68fa ldr r2, [r7, #12] - 800dad0: 1ad3 subs r3, r2, r3 - 800dad2: 0fdb lsrs r3, r3, #31 - 800dad4: f003 0301 and.w r3, r3, #1 - 800dad8: b2db uxtb r3, r3 - 800dada: 2b00 cmp r3, #0 - 800dadc: d11a bne.n 800db14 - return; - } - - /* Timeout has expired */ - next_timeout = tmptimeout->next; - 800dade: 68bb ldr r3, [r7, #8] - 800dae0: 681b ldr r3, [r3, #0] - 800dae2: 4a0f ldr r2, [pc, #60] @ (800db20 ) - 800dae4: 6013 str r3, [r2, #0] - handler = tmptimeout->h; - 800dae6: 68bb ldr r3, [r7, #8] - 800dae8: 689b ldr r3, [r3, #8] - 800daea: 607b str r3, [r7, #4] - arg = tmptimeout->arg; - 800daec: 68bb ldr r3, [r7, #8] - 800daee: 68db ldr r3, [r3, #12] - 800daf0: 603b str r3, [r7, #0] - current_timeout_due_time = tmptimeout->time; - 800daf2: 68bb ldr r3, [r7, #8] - 800daf4: 685b ldr r3, [r3, #4] - 800daf6: 4a0b ldr r2, [pc, #44] @ (800db24 ) - 800daf8: 6013 str r3, [r2, #0] - if (handler != NULL) { - LWIP_DEBUGF(TIMERS_DEBUG, ("sct calling h=%s t=%"U32_F" arg=%p\n", - tmptimeout->handler_name, sys_now() - tmptimeout->time, arg)); - } -#endif /* LWIP_DEBUG_TIMERNAMES */ - memp_free(MEMP_SYS_TIMEOUT, tmptimeout); - 800dafa: 68b9 ldr r1, [r7, #8] - 800dafc: 2006 movs r0, #6 - 800dafe: f7f9 fc53 bl 80073a8 - if (handler != NULL) { - 800db02: 687b ldr r3, [r7, #4] - 800db04: 2b00 cmp r3, #0 - 800db06: d0d3 beq.n 800dab0 - handler(arg); - 800db08: 687b ldr r3, [r7, #4] - 800db0a: 6838 ldr r0, [r7, #0] - 800db0c: 4798 blx r3 - do { - 800db0e: e7cf b.n 800dab0 - return; - 800db10: bf00 nop - 800db12: e000 b.n 800db16 - return; - 800db14: bf00 nop - } - LWIP_TCPIP_THREAD_ALIVE(); - - /* Repeat until all expired timers have been called */ - } while (1); -} - 800db16: 3710 adds r7, #16 - 800db18: 46bd mov sp, r7 - 800db1a: bd80 pop {r7, pc} - 800db1c: 200190e9 .word 0x200190e9 - 800db20: 2001913c .word 0x2001913c - 800db24: 20019140 .word 0x20019140 - -0800db28 : -/** - * Initialize this module. - */ -void -udp_init(void) -{ - 800db28: b580 push {r7, lr} - 800db2a: af00 add r7, sp, #0 -#ifdef LWIP_RAND - udp_port = UDP_ENSURE_LOCAL_PORT_RANGE(LWIP_RAND()); - 800db2c: f004 ffc6 bl 8012abc - 800db30: 4603 mov r3, r0 - 800db32: b29b uxth r3, r3 - 800db34: f3c3 030d ubfx r3, r3, #0, #14 - 800db38: b29b uxth r3, r3 - 800db3a: f5a3 4380 sub.w r3, r3, #16384 @ 0x4000 - 800db3e: b29a uxth r2, r3 - 800db40: 4b01 ldr r3, [pc, #4] @ (800db48 ) - 800db42: 801a strh r2, [r3, #0] -#endif /* LWIP_RAND */ -} - 800db44: bf00 nop - 800db46: bd80 pop {r7, pc} - 800db48: 20000028 .word 0x20000028 - -0800db4c : - * - * @return a new (free) local UDP port number - */ -static u16_t -udp_new_port(void) -{ - 800db4c: b480 push {r7} - 800db4e: b083 sub sp, #12 - 800db50: af00 add r7, sp, #0 - u16_t n = 0; - 800db52: 2300 movs r3, #0 - 800db54: 80fb strh r3, [r7, #6] - struct udp_pcb *pcb; - -again: - if (udp_port++ == UDP_LOCAL_PORT_RANGE_END) { - 800db56: 4b17 ldr r3, [pc, #92] @ (800dbb4 ) - 800db58: 881b ldrh r3, [r3, #0] - 800db5a: 1c5a adds r2, r3, #1 - 800db5c: b291 uxth r1, r2 - 800db5e: 4a15 ldr r2, [pc, #84] @ (800dbb4 ) - 800db60: 8011 strh r1, [r2, #0] - 800db62: f64f 72ff movw r2, #65535 @ 0xffff - 800db66: 4293 cmp r3, r2 - 800db68: d103 bne.n 800db72 - udp_port = UDP_LOCAL_PORT_RANGE_START; - 800db6a: 4b12 ldr r3, [pc, #72] @ (800dbb4 ) - 800db6c: f44f 4240 mov.w r2, #49152 @ 0xc000 - 800db70: 801a strh r2, [r3, #0] - } - /* Check all PCBs. */ - for (pcb = udp_pcbs; pcb != NULL; pcb = pcb->next) { - 800db72: 4b11 ldr r3, [pc, #68] @ (800dbb8 ) - 800db74: 681b ldr r3, [r3, #0] - 800db76: 603b str r3, [r7, #0] - 800db78: e011 b.n 800db9e - if (pcb->local_port == udp_port) { - 800db7a: 683b ldr r3, [r7, #0] - 800db7c: 8a5a ldrh r2, [r3, #18] - 800db7e: 4b0d ldr r3, [pc, #52] @ (800dbb4 ) - 800db80: 881b ldrh r3, [r3, #0] - 800db82: 429a cmp r2, r3 - 800db84: d108 bne.n 800db98 - if (++n > (UDP_LOCAL_PORT_RANGE_END - UDP_LOCAL_PORT_RANGE_START)) { - 800db86: 88fb ldrh r3, [r7, #6] - 800db88: 3301 adds r3, #1 - 800db8a: 80fb strh r3, [r7, #6] - 800db8c: 88fb ldrh r3, [r7, #6] - 800db8e: f5b3 4f80 cmp.w r3, #16384 @ 0x4000 - 800db92: d3e0 bcc.n 800db56 - return 0; - 800db94: 2300 movs r3, #0 - 800db96: e007 b.n 800dba8 - for (pcb = udp_pcbs; pcb != NULL; pcb = pcb->next) { - 800db98: 683b ldr r3, [r7, #0] - 800db9a: 68db ldr r3, [r3, #12] - 800db9c: 603b str r3, [r7, #0] - 800db9e: 683b ldr r3, [r7, #0] - 800dba0: 2b00 cmp r3, #0 - 800dba2: d1ea bne.n 800db7a - } - goto again; - } - } - return udp_port; - 800dba4: 4b03 ldr r3, [pc, #12] @ (800dbb4 ) - 800dba6: 881b ldrh r3, [r3, #0] -} - 800dba8: 4618 mov r0, r3 - 800dbaa: 370c adds r7, #12 - 800dbac: 46bd mov sp, r7 - 800dbae: f85d 7b04 ldr.w r7, [sp], #4 - 800dbb2: 4770 bx lr - 800dbb4: 20000028 .word 0x20000028 - 800dbb8: 20019148 .word 0x20019148 - -0800dbbc : - * @param broadcast 1 if his is an IPv4 broadcast (global or subnet-only), 0 otherwise (only used for IPv4) - * @return 1 on match, 0 otherwise - */ -static u8_t -udp_input_local_match(struct udp_pcb *pcb, struct netif *inp, u8_t broadcast) -{ - 800dbbc: b580 push {r7, lr} - 800dbbe: b084 sub sp, #16 - 800dbc0: af00 add r7, sp, #0 - 800dbc2: 60f8 str r0, [r7, #12] - 800dbc4: 60b9 str r1, [r7, #8] - 800dbc6: 4613 mov r3, r2 - 800dbc8: 71fb strb r3, [r7, #7] - LWIP_UNUSED_ARG(inp); /* in IPv6 only case */ - LWIP_UNUSED_ARG(broadcast); /* in IPv6 only case */ - - LWIP_ASSERT("udp_input_local_match: invalid pcb", pcb != NULL); - 800dbca: 68fb ldr r3, [r7, #12] - 800dbcc: 2b00 cmp r3, #0 - 800dbce: d105 bne.n 800dbdc - 800dbd0: 4b27 ldr r3, [pc, #156] @ (800dc70 ) - 800dbd2: 2287 movs r2, #135 @ 0x87 - 800dbd4: 4927 ldr r1, [pc, #156] @ (800dc74 ) - 800dbd6: 4828 ldr r0, [pc, #160] @ (800dc78 ) - 800dbd8: f005 f84e bl 8012c78 - LWIP_ASSERT("udp_input_local_match: invalid netif", inp != NULL); - 800dbdc: 68bb ldr r3, [r7, #8] - 800dbde: 2b00 cmp r3, #0 - 800dbe0: d105 bne.n 800dbee - 800dbe2: 4b23 ldr r3, [pc, #140] @ (800dc70 ) - 800dbe4: 2288 movs r2, #136 @ 0x88 - 800dbe6: 4925 ldr r1, [pc, #148] @ (800dc7c ) - 800dbe8: 4823 ldr r0, [pc, #140] @ (800dc78 ) - 800dbea: f005 f845 bl 8012c78 - - /* check if PCB is bound to specific netif */ - if ((pcb->netif_idx != NETIF_NO_INDEX) && - 800dbee: 68fb ldr r3, [r7, #12] - 800dbf0: 7a1b ldrb r3, [r3, #8] - 800dbf2: 2b00 cmp r3, #0 - 800dbf4: d00b beq.n 800dc0e - (pcb->netif_idx != netif_get_index(ip_data.current_input_netif))) { - 800dbf6: 68fb ldr r3, [r7, #12] - 800dbf8: 7a1a ldrb r2, [r3, #8] - 800dbfa: 4b21 ldr r3, [pc, #132] @ (800dc80 ) - 800dbfc: 685b ldr r3, [r3, #4] - 800dbfe: f893 3034 ldrb.w r3, [r3, #52] @ 0x34 - 800dc02: 3301 adds r3, #1 - 800dc04: b2db uxtb r3, r3 - if ((pcb->netif_idx != NETIF_NO_INDEX) && - 800dc06: 429a cmp r2, r3 - 800dc08: d001 beq.n 800dc0e - return 0; - 800dc0a: 2300 movs r3, #0 - 800dc0c: e02b b.n 800dc66 - /* Only need to check PCB if incoming IP version matches PCB IP version */ - if (IP_ADDR_PCB_VERSION_MATCH_EXACT(pcb, ip_current_dest_addr())) { -#if LWIP_IPV4 - /* Special case: IPv4 broadcast: all or broadcasts in my subnet - * Note: broadcast variable can only be 1 if it is an IPv4 broadcast */ - if (broadcast != 0) { - 800dc0e: 79fb ldrb r3, [r7, #7] - 800dc10: 2b00 cmp r3, #0 - 800dc12: d018 beq.n 800dc46 -#if IP_SOF_BROADCAST_RECV - if (ip_get_option(pcb, SOF_BROADCAST)) -#endif /* IP_SOF_BROADCAST_RECV */ - { - if (ip4_addr_isany(ip_2_ip4(&pcb->local_ip)) || - 800dc14: 68fb ldr r3, [r7, #12] - 800dc16: 2b00 cmp r3, #0 - 800dc18: d013 beq.n 800dc42 - 800dc1a: 68fb ldr r3, [r7, #12] - 800dc1c: 681b ldr r3, [r3, #0] - 800dc1e: 2b00 cmp r3, #0 - 800dc20: d00f beq.n 800dc42 - ((ip4_current_dest_addr()->addr == IPADDR_BROADCAST)) || - 800dc22: 4b17 ldr r3, [pc, #92] @ (800dc80 ) - 800dc24: 695b ldr r3, [r3, #20] - if (ip4_addr_isany(ip_2_ip4(&pcb->local_ip)) || - 800dc26: f1b3 3fff cmp.w r3, #4294967295 - 800dc2a: d00a beq.n 800dc42 - ip4_addr_netcmp(ip_2_ip4(&pcb->local_ip), ip4_current_dest_addr(), netif_ip4_netmask(inp))) { - 800dc2c: 68fb ldr r3, [r7, #12] - 800dc2e: 681a ldr r2, [r3, #0] - 800dc30: 4b13 ldr r3, [pc, #76] @ (800dc80 ) - 800dc32: 695b ldr r3, [r3, #20] - 800dc34: 405a eors r2, r3 - 800dc36: 68bb ldr r3, [r7, #8] - 800dc38: 3308 adds r3, #8 - 800dc3a: 681b ldr r3, [r3, #0] - 800dc3c: 4013 ands r3, r2 - ((ip4_current_dest_addr()->addr == IPADDR_BROADCAST)) || - 800dc3e: 2b00 cmp r3, #0 - 800dc40: d110 bne.n 800dc64 - return 1; - 800dc42: 2301 movs r3, #1 - 800dc44: e00f b.n 800dc66 - } - } - } else -#endif /* LWIP_IPV4 */ - /* Handle IPv4 and IPv6: all or exact match */ - if (ip_addr_isany(&pcb->local_ip) || ip_addr_cmp(&pcb->local_ip, ip_current_dest_addr())) { - 800dc46: 68fb ldr r3, [r7, #12] - 800dc48: 2b00 cmp r3, #0 - 800dc4a: d009 beq.n 800dc60 - 800dc4c: 68fb ldr r3, [r7, #12] - 800dc4e: 681b ldr r3, [r3, #0] - 800dc50: 2b00 cmp r3, #0 - 800dc52: d005 beq.n 800dc60 - 800dc54: 68fb ldr r3, [r7, #12] - 800dc56: 681a ldr r2, [r3, #0] - 800dc58: 4b09 ldr r3, [pc, #36] @ (800dc80 ) - 800dc5a: 695b ldr r3, [r3, #20] - 800dc5c: 429a cmp r2, r3 - 800dc5e: d101 bne.n 800dc64 - return 1; - 800dc60: 2301 movs r3, #1 - 800dc62: e000 b.n 800dc66 - } - } - - return 0; - 800dc64: 2300 movs r3, #0 -} - 800dc66: 4618 mov r0, r3 - 800dc68: 3710 adds r7, #16 - 800dc6a: 46bd mov sp, r7 - 800dc6c: bd80 pop {r7, pc} - 800dc6e: bf00 nop - 800dc70: 080196b0 .word 0x080196b0 - 800dc74: 080196e0 .word 0x080196e0 - 800dc78: 08019704 .word 0x08019704 - 800dc7c: 0801972c .word 0x0801972c - 800dc80: 20006194 .word 0x20006194 - -0800dc84 : - * @param inp network interface on which the datagram was received. - * - */ -void -udp_input(struct pbuf *p, struct netif *inp) -{ - 800dc84: b590 push {r4, r7, lr} - 800dc86: b08d sub sp, #52 @ 0x34 - 800dc88: af02 add r7, sp, #8 - 800dc8a: 6078 str r0, [r7, #4] - 800dc8c: 6039 str r1, [r7, #0] - struct udp_hdr *udphdr; - struct udp_pcb *pcb, *prev; - struct udp_pcb *uncon_pcb; - u16_t src, dest; - u8_t broadcast; - u8_t for_us = 0; - 800dc8e: 2300 movs r3, #0 - 800dc90: 76fb strb r3, [r7, #27] - - LWIP_UNUSED_ARG(inp); - - LWIP_ASSERT_CORE_LOCKED(); - - LWIP_ASSERT("udp_input: invalid pbuf", p != NULL); - 800dc92: 687b ldr r3, [r7, #4] - 800dc94: 2b00 cmp r3, #0 - 800dc96: d105 bne.n 800dca4 - 800dc98: 4b7c ldr r3, [pc, #496] @ (800de8c ) - 800dc9a: 22cf movs r2, #207 @ 0xcf - 800dc9c: 497c ldr r1, [pc, #496] @ (800de90 ) - 800dc9e: 487d ldr r0, [pc, #500] @ (800de94 ) - 800dca0: f004 ffea bl 8012c78 - LWIP_ASSERT("udp_input: invalid netif", inp != NULL); - 800dca4: 683b ldr r3, [r7, #0] - 800dca6: 2b00 cmp r3, #0 - 800dca8: d105 bne.n 800dcb6 - 800dcaa: 4b78 ldr r3, [pc, #480] @ (800de8c ) - 800dcac: 22d0 movs r2, #208 @ 0xd0 - 800dcae: 497a ldr r1, [pc, #488] @ (800de98 ) - 800dcb0: 4878 ldr r0, [pc, #480] @ (800de94 ) - 800dcb2: f004 ffe1 bl 8012c78 - PERF_START; - - UDP_STATS_INC(udp.recv); - - /* Check minimum length (UDP header) */ - if (p->len < UDP_HLEN) { - 800dcb6: 687b ldr r3, [r7, #4] - 800dcb8: 895b ldrh r3, [r3, #10] - 800dcba: 2b07 cmp r3, #7 - 800dcbc: d803 bhi.n 800dcc6 - LWIP_DEBUGF(UDP_DEBUG, - ("udp_input: short UDP datagram (%"U16_F" bytes) discarded\n", p->tot_len)); - UDP_STATS_INC(udp.lenerr); - UDP_STATS_INC(udp.drop); - MIB2_STATS_INC(mib2.udpinerrors); - pbuf_free(p); - 800dcbe: 6878 ldr r0, [r7, #4] - 800dcc0: f7fa f9f2 bl 80080a8 - goto end; - 800dcc4: e0de b.n 800de84 - } - - udphdr = (struct udp_hdr *)p->payload; - 800dcc6: 687b ldr r3, [r7, #4] - 800dcc8: 685b ldr r3, [r3, #4] - 800dcca: 617b str r3, [r7, #20] - - /* is broadcast packet ? */ - broadcast = ip_addr_isbroadcast(ip_current_dest_addr(), ip_current_netif()); - 800dccc: 4b73 ldr r3, [pc, #460] @ (800de9c ) - 800dcce: 695b ldr r3, [r3, #20] - 800dcd0: 4a72 ldr r2, [pc, #456] @ (800de9c ) - 800dcd2: 6812 ldr r2, [r2, #0] - 800dcd4: 4611 mov r1, r2 - 800dcd6: 4618 mov r0, r3 - 800dcd8: f003 fe5c bl 8011994 - 800dcdc: 4603 mov r3, r0 - 800dcde: 74fb strb r3, [r7, #19] - - LWIP_DEBUGF(UDP_DEBUG, ("udp_input: received datagram of length %"U16_F"\n", p->tot_len)); - - /* convert src and dest ports to host byte order */ - src = lwip_ntohs(udphdr->src); - 800dce0: 697b ldr r3, [r7, #20] - 800dce2: 881b ldrh r3, [r3, #0] - 800dce4: b29b uxth r3, r3 - 800dce6: 4618 mov r0, r3 - 800dce8: f7f8 fe8e bl 8006a08 - 800dcec: 4603 mov r3, r0 - 800dcee: 823b strh r3, [r7, #16] - dest = lwip_ntohs(udphdr->dest); - 800dcf0: 697b ldr r3, [r7, #20] - 800dcf2: 885b ldrh r3, [r3, #2] - 800dcf4: b29b uxth r3, r3 - 800dcf6: 4618 mov r0, r3 - 800dcf8: f7f8 fe86 bl 8006a08 - 800dcfc: 4603 mov r3, r0 - 800dcfe: 81fb strh r3, [r7, #14] - ip_addr_debug_print_val(UDP_DEBUG, *ip_current_dest_addr()); - LWIP_DEBUGF(UDP_DEBUG, (", %"U16_F") <-- (", lwip_ntohs(udphdr->dest))); - ip_addr_debug_print_val(UDP_DEBUG, *ip_current_src_addr()); - LWIP_DEBUGF(UDP_DEBUG, (", %"U16_F")\n", lwip_ntohs(udphdr->src))); - - pcb = NULL; - 800dd00: 2300 movs r3, #0 - 800dd02: 627b str r3, [r7, #36] @ 0x24 - prev = NULL; - 800dd04: 2300 movs r3, #0 - 800dd06: 623b str r3, [r7, #32] - uncon_pcb = NULL; - 800dd08: 2300 movs r3, #0 - 800dd0a: 61fb str r3, [r7, #28] - /* Iterate through the UDP pcb list for a matching pcb. - * 'Perfect match' pcbs (connected to the remote port & ip address) are - * preferred. If no perfect match is found, the first unconnected pcb that - * matches the local port and ip address gets the datagram. */ - for (pcb = udp_pcbs; pcb != NULL; pcb = pcb->next) { - 800dd0c: 4b64 ldr r3, [pc, #400] @ (800dea0 ) - 800dd0e: 681b ldr r3, [r3, #0] - 800dd10: 627b str r3, [r7, #36] @ 0x24 - 800dd12: e054 b.n 800ddbe - LWIP_DEBUGF(UDP_DEBUG, (", %"U16_F") <-- (", pcb->local_port)); - ip_addr_debug_print_val(UDP_DEBUG, pcb->remote_ip); - LWIP_DEBUGF(UDP_DEBUG, (", %"U16_F")\n", pcb->remote_port)); - - /* compare PCB local addr+port to UDP destination addr+port */ - if ((pcb->local_port == dest) && - 800dd14: 6a7b ldr r3, [r7, #36] @ 0x24 - 800dd16: 8a5b ldrh r3, [r3, #18] - 800dd18: 89fa ldrh r2, [r7, #14] - 800dd1a: 429a cmp r2, r3 - 800dd1c: d14a bne.n 800ddb4 - (udp_input_local_match(pcb, inp, broadcast) != 0)) { - 800dd1e: 7cfb ldrb r3, [r7, #19] - 800dd20: 461a mov r2, r3 - 800dd22: 6839 ldr r1, [r7, #0] - 800dd24: 6a78 ldr r0, [r7, #36] @ 0x24 - 800dd26: f7ff ff49 bl 800dbbc - 800dd2a: 4603 mov r3, r0 - if ((pcb->local_port == dest) && - 800dd2c: 2b00 cmp r3, #0 - 800dd2e: d041 beq.n 800ddb4 - if ((pcb->flags & UDP_FLAGS_CONNECTED) == 0) { - 800dd30: 6a7b ldr r3, [r7, #36] @ 0x24 - 800dd32: 7c1b ldrb r3, [r3, #16] - 800dd34: f003 0304 and.w r3, r3, #4 - 800dd38: 2b00 cmp r3, #0 - 800dd3a: d11d bne.n 800dd78 - if (uncon_pcb == NULL) { - 800dd3c: 69fb ldr r3, [r7, #28] - 800dd3e: 2b00 cmp r3, #0 - 800dd40: d102 bne.n 800dd48 - /* the first unconnected matching PCB */ - uncon_pcb = pcb; - 800dd42: 6a7b ldr r3, [r7, #36] @ 0x24 - 800dd44: 61fb str r3, [r7, #28] - 800dd46: e017 b.n 800dd78 -#if LWIP_IPV4 - } else if (broadcast && ip4_current_dest_addr()->addr == IPADDR_BROADCAST) { - 800dd48: 7cfb ldrb r3, [r7, #19] - 800dd4a: 2b00 cmp r3, #0 - 800dd4c: d014 beq.n 800dd78 - 800dd4e: 4b53 ldr r3, [pc, #332] @ (800de9c ) - 800dd50: 695b ldr r3, [r3, #20] - 800dd52: f1b3 3fff cmp.w r3, #4294967295 - 800dd56: d10f bne.n 800dd78 - /* global broadcast address (only valid for IPv4; match was checked before) */ - if (!IP_IS_V4_VAL(uncon_pcb->local_ip) || !ip4_addr_cmp(ip_2_ip4(&uncon_pcb->local_ip), netif_ip4_addr(inp))) { - 800dd58: 69fb ldr r3, [r7, #28] - 800dd5a: 681a ldr r2, [r3, #0] - 800dd5c: 683b ldr r3, [r7, #0] - 800dd5e: 3304 adds r3, #4 - 800dd60: 681b ldr r3, [r3, #0] - 800dd62: 429a cmp r2, r3 - 800dd64: d008 beq.n 800dd78 - /* uncon_pcb does not match the input netif, check this pcb */ - if (IP_IS_V4_VAL(pcb->local_ip) && ip4_addr_cmp(ip_2_ip4(&pcb->local_ip), netif_ip4_addr(inp))) { - 800dd66: 6a7b ldr r3, [r7, #36] @ 0x24 - 800dd68: 681a ldr r2, [r3, #0] - 800dd6a: 683b ldr r3, [r7, #0] - 800dd6c: 3304 adds r3, #4 - 800dd6e: 681b ldr r3, [r3, #0] - 800dd70: 429a cmp r2, r3 - 800dd72: d101 bne.n 800dd78 - /* better match */ - uncon_pcb = pcb; - 800dd74: 6a7b ldr r3, [r7, #36] @ 0x24 - 800dd76: 61fb str r3, [r7, #28] - } -#endif /* SO_REUSE */ - } - - /* compare PCB remote addr+port to UDP source addr+port */ - if ((pcb->remote_port == src) && - 800dd78: 6a7b ldr r3, [r7, #36] @ 0x24 - 800dd7a: 8a9b ldrh r3, [r3, #20] - 800dd7c: 8a3a ldrh r2, [r7, #16] - 800dd7e: 429a cmp r2, r3 - 800dd80: d118 bne.n 800ddb4 - (ip_addr_isany_val(pcb->remote_ip) || - 800dd82: 6a7b ldr r3, [r7, #36] @ 0x24 - 800dd84: 685b ldr r3, [r3, #4] - if ((pcb->remote_port == src) && - 800dd86: 2b00 cmp r3, #0 - 800dd88: d005 beq.n 800dd96 - ip_addr_cmp(&pcb->remote_ip, ip_current_src_addr()))) { - 800dd8a: 6a7b ldr r3, [r7, #36] @ 0x24 - 800dd8c: 685a ldr r2, [r3, #4] - 800dd8e: 4b43 ldr r3, [pc, #268] @ (800de9c ) - 800dd90: 691b ldr r3, [r3, #16] - (ip_addr_isany_val(pcb->remote_ip) || - 800dd92: 429a cmp r2, r3 - 800dd94: d10e bne.n 800ddb4 - /* the first fully matching PCB */ - if (prev != NULL) { - 800dd96: 6a3b ldr r3, [r7, #32] - 800dd98: 2b00 cmp r3, #0 - 800dd9a: d014 beq.n 800ddc6 - /* move the pcb to the front of udp_pcbs so that is - found faster next time */ - prev->next = pcb->next; - 800dd9c: 6a7b ldr r3, [r7, #36] @ 0x24 - 800dd9e: 68da ldr r2, [r3, #12] - 800dda0: 6a3b ldr r3, [r7, #32] - 800dda2: 60da str r2, [r3, #12] - pcb->next = udp_pcbs; - 800dda4: 4b3e ldr r3, [pc, #248] @ (800dea0 ) - 800dda6: 681a ldr r2, [r3, #0] - 800dda8: 6a7b ldr r3, [r7, #36] @ 0x24 - 800ddaa: 60da str r2, [r3, #12] - udp_pcbs = pcb; - 800ddac: 4a3c ldr r2, [pc, #240] @ (800dea0 ) - 800ddae: 6a7b ldr r3, [r7, #36] @ 0x24 - 800ddb0: 6013 str r3, [r2, #0] - } else { - UDP_STATS_INC(udp.cachehit); - } - break; - 800ddb2: e008 b.n 800ddc6 - } - } - - prev = pcb; - 800ddb4: 6a7b ldr r3, [r7, #36] @ 0x24 - 800ddb6: 623b str r3, [r7, #32] - for (pcb = udp_pcbs; pcb != NULL; pcb = pcb->next) { - 800ddb8: 6a7b ldr r3, [r7, #36] @ 0x24 - 800ddba: 68db ldr r3, [r3, #12] - 800ddbc: 627b str r3, [r7, #36] @ 0x24 - 800ddbe: 6a7b ldr r3, [r7, #36] @ 0x24 - 800ddc0: 2b00 cmp r3, #0 - 800ddc2: d1a7 bne.n 800dd14 - 800ddc4: e000 b.n 800ddc8 - break; - 800ddc6: bf00 nop - } - /* no fully matching pcb found? then look for an unconnected pcb */ - if (pcb == NULL) { - 800ddc8: 6a7b ldr r3, [r7, #36] @ 0x24 - 800ddca: 2b00 cmp r3, #0 - 800ddcc: d101 bne.n 800ddd2 - pcb = uncon_pcb; - 800ddce: 69fb ldr r3, [r7, #28] - 800ddd0: 627b str r3, [r7, #36] @ 0x24 - } - - /* Check checksum if this is a match or if it was directed at us. */ - if (pcb != NULL) { - 800ddd2: 6a7b ldr r3, [r7, #36] @ 0x24 - 800ddd4: 2b00 cmp r3, #0 - 800ddd6: d002 beq.n 800ddde - for_us = 1; - 800ddd8: 2301 movs r3, #1 - 800ddda: 76fb strb r3, [r7, #27] - 800dddc: e00a b.n 800ddf4 - for_us = netif_get_ip6_addr_match(inp, ip6_current_dest_addr()) >= 0; - } -#endif /* LWIP_IPV6 */ -#if LWIP_IPV4 - if (!ip_current_is_v6()) { - for_us = ip4_addr_cmp(netif_ip4_addr(inp), ip4_current_dest_addr()); - 800ddde: 683b ldr r3, [r7, #0] - 800dde0: 3304 adds r3, #4 - 800dde2: 681a ldr r2, [r3, #0] - 800dde4: 4b2d ldr r3, [pc, #180] @ (800de9c ) - 800dde6: 695b ldr r3, [r3, #20] - 800dde8: 429a cmp r2, r3 - 800ddea: bf0c ite eq - 800ddec: 2301 moveq r3, #1 - 800ddee: 2300 movne r3, #0 - 800ddf0: b2db uxtb r3, r3 - 800ddf2: 76fb strb r3, [r7, #27] - } -#endif /* LWIP_IPV4 */ - } - - if (for_us) { - 800ddf4: 7efb ldrb r3, [r7, #27] - 800ddf6: 2b00 cmp r3, #0 - 800ddf8: d041 beq.n 800de7e - } - } - } - } -#endif /* CHECKSUM_CHECK_UDP */ - if (pbuf_remove_header(p, UDP_HLEN)) { - 800ddfa: 2108 movs r1, #8 - 800ddfc: 6878 ldr r0, [r7, #4] - 800ddfe: f7fa f8cd bl 8007f9c - 800de02: 4603 mov r3, r0 - 800de04: 2b00 cmp r3, #0 - 800de06: d00a beq.n 800de1e - /* Can we cope with this failing? Just assert for now */ - LWIP_ASSERT("pbuf_remove_header failed\n", 0); - 800de08: 4b20 ldr r3, [pc, #128] @ (800de8c ) - 800de0a: f44f 72b8 mov.w r2, #368 @ 0x170 - 800de0e: 4925 ldr r1, [pc, #148] @ (800dea4 ) - 800de10: 4820 ldr r0, [pc, #128] @ (800de94 ) - 800de12: f004 ff31 bl 8012c78 - UDP_STATS_INC(udp.drop); - MIB2_STATS_INC(mib2.udpinerrors); - pbuf_free(p); - 800de16: 6878 ldr r0, [r7, #4] - 800de18: f7fa f946 bl 80080a8 - goto end; - 800de1c: e032 b.n 800de84 - } - - if (pcb != NULL) { - 800de1e: 6a7b ldr r3, [r7, #36] @ 0x24 - 800de20: 2b00 cmp r3, #0 - 800de22: d012 beq.n 800de4a - } - } - } -#endif /* SO_REUSE && SO_REUSE_RXTOALL */ - /* callback */ - if (pcb->recv != NULL) { - 800de24: 6a7b ldr r3, [r7, #36] @ 0x24 - 800de26: 699b ldr r3, [r3, #24] - 800de28: 2b00 cmp r3, #0 - 800de2a: d00a beq.n 800de42 - /* now the recv function is responsible for freeing p */ - pcb->recv(pcb->recv_arg, pcb, p, ip_current_src_addr(), src); - 800de2c: 6a7b ldr r3, [r7, #36] @ 0x24 - 800de2e: 699c ldr r4, [r3, #24] - 800de30: 6a7b ldr r3, [r7, #36] @ 0x24 - 800de32: 69d8 ldr r0, [r3, #28] - 800de34: 8a3b ldrh r3, [r7, #16] - 800de36: 9300 str r3, [sp, #0] - 800de38: 4b1b ldr r3, [pc, #108] @ (800dea8 ) - 800de3a: 687a ldr r2, [r7, #4] - 800de3c: 6a79 ldr r1, [r7, #36] @ 0x24 - 800de3e: 47a0 blx r4 - } else { - pbuf_free(p); - } -end: - PERF_STOP("udp_input"); - return; - 800de40: e021 b.n 800de86 - pbuf_free(p); - 800de42: 6878 ldr r0, [r7, #4] - 800de44: f7fa f930 bl 80080a8 - goto end; - 800de48: e01c b.n 800de84 - if (!broadcast && !ip_addr_ismulticast(ip_current_dest_addr())) { - 800de4a: 7cfb ldrb r3, [r7, #19] - 800de4c: 2b00 cmp r3, #0 - 800de4e: d112 bne.n 800de76 - 800de50: 4b12 ldr r3, [pc, #72] @ (800de9c ) - 800de52: 695b ldr r3, [r3, #20] - 800de54: f003 03f0 and.w r3, r3, #240 @ 0xf0 - 800de58: 2be0 cmp r3, #224 @ 0xe0 - 800de5a: d00c beq.n 800de76 - pbuf_header_force(p, (s16_t)(ip_current_header_tot_len() + UDP_HLEN)); - 800de5c: 4b0f ldr r3, [pc, #60] @ (800de9c ) - 800de5e: 899b ldrh r3, [r3, #12] - 800de60: 3308 adds r3, #8 - 800de62: b29b uxth r3, r3 - 800de64: b21b sxth r3, r3 - 800de66: 4619 mov r1, r3 - 800de68: 6878 ldr r0, [r7, #4] - 800de6a: f7fa f90a bl 8008082 - icmp_port_unreach(ip_current_is_v6(), p); - 800de6e: 2103 movs r1, #3 - 800de70: 6878 ldr r0, [r7, #4] - 800de72: f003 fa51 bl 8011318 - pbuf_free(p); - 800de76: 6878 ldr r0, [r7, #4] - 800de78: f7fa f916 bl 80080a8 - return; - 800de7c: e003 b.n 800de86 - pbuf_free(p); - 800de7e: 6878 ldr r0, [r7, #4] - 800de80: f7fa f912 bl 80080a8 - return; - 800de84: bf00 nop - UDP_STATS_INC(udp.drop); - MIB2_STATS_INC(mib2.udpinerrors); - pbuf_free(p); - PERF_STOP("udp_input"); -#endif /* CHECKSUM_CHECK_UDP */ -} - 800de86: 372c adds r7, #44 @ 0x2c - 800de88: 46bd mov sp, r7 - 800de8a: bd90 pop {r4, r7, pc} - 800de8c: 080196b0 .word 0x080196b0 - 800de90: 08019754 .word 0x08019754 - 800de94: 08019704 .word 0x08019704 - 800de98: 0801976c .word 0x0801976c - 800de9c: 20006194 .word 0x20006194 - 800dea0: 20019148 .word 0x20019148 - 800dea4: 08019788 .word 0x08019788 - 800dea8: 200061a4 .word 0x200061a4 - -0800deac : - * @see udp_disconnect() udp_send() - */ -err_t -udp_sendto(struct udp_pcb *pcb, struct pbuf *p, - const ip_addr_t *dst_ip, u16_t dst_port) -{ - 800deac: b580 push {r7, lr} - 800deae: b088 sub sp, #32 - 800deb0: af02 add r7, sp, #8 - 800deb2: 60f8 str r0, [r7, #12] - 800deb4: 60b9 str r1, [r7, #8] - 800deb6: 607a str r2, [r7, #4] - 800deb8: 807b strh r3, [r7, #2] - u16_t dst_port, u8_t have_chksum, u16_t chksum) -{ -#endif /* LWIP_CHECKSUM_ON_COPY && CHECKSUM_GEN_UDP */ - struct netif *netif; - - LWIP_ERROR("udp_sendto: invalid pcb", pcb != NULL, return ERR_ARG); - 800deba: 68fb ldr r3, [r7, #12] - 800debc: 2b00 cmp r3, #0 - 800debe: d109 bne.n 800ded4 - 800dec0: 4b23 ldr r3, [pc, #140] @ (800df50 ) - 800dec2: f44f 7206 mov.w r2, #536 @ 0x218 - 800dec6: 4923 ldr r1, [pc, #140] @ (800df54 ) - 800dec8: 4823 ldr r0, [pc, #140] @ (800df58 ) - 800deca: f004 fed5 bl 8012c78 - 800dece: f06f 030f mvn.w r3, #15 - 800ded2: e038 b.n 800df46 - LWIP_ERROR("udp_sendto: invalid pbuf", p != NULL, return ERR_ARG); - 800ded4: 68bb ldr r3, [r7, #8] - 800ded6: 2b00 cmp r3, #0 - 800ded8: d109 bne.n 800deee - 800deda: 4b1d ldr r3, [pc, #116] @ (800df50 ) - 800dedc: f240 2219 movw r2, #537 @ 0x219 - 800dee0: 491e ldr r1, [pc, #120] @ (800df5c ) - 800dee2: 481d ldr r0, [pc, #116] @ (800df58 ) - 800dee4: f004 fec8 bl 8012c78 - 800dee8: f06f 030f mvn.w r3, #15 - 800deec: e02b b.n 800df46 - LWIP_ERROR("udp_sendto: invalid dst_ip", dst_ip != NULL, return ERR_ARG); - 800deee: 687b ldr r3, [r7, #4] - 800def0: 2b00 cmp r3, #0 - 800def2: d109 bne.n 800df08 - 800def4: 4b16 ldr r3, [pc, #88] @ (800df50 ) - 800def6: f240 221a movw r2, #538 @ 0x21a - 800defa: 4919 ldr r1, [pc, #100] @ (800df60 ) - 800defc: 4816 ldr r0, [pc, #88] @ (800df58 ) - 800defe: f004 febb bl 8012c78 - 800df02: f06f 030f mvn.w r3, #15 - 800df06: e01e b.n 800df46 - return ERR_VAL; - } - - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, ("udp_send\n")); - - if (pcb->netif_idx != NETIF_NO_INDEX) { - 800df08: 68fb ldr r3, [r7, #12] - 800df0a: 7a1b ldrb r3, [r3, #8] - 800df0c: 2b00 cmp r3, #0 - 800df0e: d006 beq.n 800df1e - netif = netif_get_by_index(pcb->netif_idx); - 800df10: 68fb ldr r3, [r7, #12] - 800df12: 7a1b ldrb r3, [r3, #8] - 800df14: 4618 mov r0, r3 - 800df16: f7f9 fd69 bl 80079ec - 800df1a: 6178 str r0, [r7, #20] - 800df1c: e003 b.n 800df26 - - if (netif == NULL) -#endif /* LWIP_MULTICAST_TX_OPTIONS */ - { - /* find the outgoing network interface for this packet */ - netif = ip_route(&pcb->local_ip, dst_ip); - 800df1e: 6878 ldr r0, [r7, #4] - 800df20: f003 fa84 bl 801142c - 800df24: 6178 str r0, [r7, #20] - } - } - - /* no outgoing network interface could be found? */ - if (netif == NULL) { - 800df26: 697b ldr r3, [r7, #20] - 800df28: 2b00 cmp r3, #0 - 800df2a: d102 bne.n 800df32 - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("udp_send: No route to ")); - ip_addr_debug_print(UDP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, dst_ip); - LWIP_DEBUGF(UDP_DEBUG, ("\n")); - UDP_STATS_INC(udp.rterr); - return ERR_RTE; - 800df2c: f06f 0303 mvn.w r3, #3 - 800df30: e009 b.n 800df46 - } -#if LWIP_CHECKSUM_ON_COPY && CHECKSUM_GEN_UDP - return udp_sendto_if_chksum(pcb, p, dst_ip, dst_port, netif, have_chksum, chksum); -#else /* LWIP_CHECKSUM_ON_COPY && CHECKSUM_GEN_UDP */ - return udp_sendto_if(pcb, p, dst_ip, dst_port, netif); - 800df32: 887a ldrh r2, [r7, #2] - 800df34: 697b ldr r3, [r7, #20] - 800df36: 9300 str r3, [sp, #0] - 800df38: 4613 mov r3, r2 - 800df3a: 687a ldr r2, [r7, #4] - 800df3c: 68b9 ldr r1, [r7, #8] - 800df3e: 68f8 ldr r0, [r7, #12] - 800df40: f000 f810 bl 800df64 - 800df44: 4603 mov r3, r0 -#endif /* LWIP_CHECKSUM_ON_COPY && CHECKSUM_GEN_UDP */ -} - 800df46: 4618 mov r0, r3 - 800df48: 3718 adds r7, #24 - 800df4a: 46bd mov sp, r7 - 800df4c: bd80 pop {r7, pc} - 800df4e: bf00 nop - 800df50: 080196b0 .word 0x080196b0 - 800df54: 080197d4 .word 0x080197d4 - 800df58: 08019704 .word 0x08019704 - 800df5c: 080197ec .word 0x080197ec - 800df60: 08019808 .word 0x08019808 - -0800df64 : - * @see udp_disconnect() udp_send() - */ -err_t -udp_sendto_if(struct udp_pcb *pcb, struct pbuf *p, - const ip_addr_t *dst_ip, u16_t dst_port, struct netif *netif) -{ - 800df64: b580 push {r7, lr} - 800df66: b088 sub sp, #32 - 800df68: af02 add r7, sp, #8 - 800df6a: 60f8 str r0, [r7, #12] - 800df6c: 60b9 str r1, [r7, #8] - 800df6e: 607a str r2, [r7, #4] - 800df70: 807b strh r3, [r7, #2] - u16_t chksum) -{ -#endif /* LWIP_CHECKSUM_ON_COPY && CHECKSUM_GEN_UDP */ - const ip_addr_t *src_ip; - - LWIP_ERROR("udp_sendto_if: invalid pcb", pcb != NULL, return ERR_ARG); - 800df72: 68fb ldr r3, [r7, #12] - 800df74: 2b00 cmp r3, #0 - 800df76: d109 bne.n 800df8c - 800df78: 4b2e ldr r3, [pc, #184] @ (800e034 ) - 800df7a: f44f 7220 mov.w r2, #640 @ 0x280 - 800df7e: 492e ldr r1, [pc, #184] @ (800e038 ) - 800df80: 482e ldr r0, [pc, #184] @ (800e03c ) - 800df82: f004 fe79 bl 8012c78 - 800df86: f06f 030f mvn.w r3, #15 - 800df8a: e04f b.n 800e02c - LWIP_ERROR("udp_sendto_if: invalid pbuf", p != NULL, return ERR_ARG); - 800df8c: 68bb ldr r3, [r7, #8] - 800df8e: 2b00 cmp r3, #0 - 800df90: d109 bne.n 800dfa6 - 800df92: 4b28 ldr r3, [pc, #160] @ (800e034 ) - 800df94: f240 2281 movw r2, #641 @ 0x281 - 800df98: 4929 ldr r1, [pc, #164] @ (800e040 ) - 800df9a: 4828 ldr r0, [pc, #160] @ (800e03c ) - 800df9c: f004 fe6c bl 8012c78 - 800dfa0: f06f 030f mvn.w r3, #15 - 800dfa4: e042 b.n 800e02c - LWIP_ERROR("udp_sendto_if: invalid dst_ip", dst_ip != NULL, return ERR_ARG); - 800dfa6: 687b ldr r3, [r7, #4] - 800dfa8: 2b00 cmp r3, #0 - 800dfaa: d109 bne.n 800dfc0 - 800dfac: 4b21 ldr r3, [pc, #132] @ (800e034 ) - 800dfae: f240 2282 movw r2, #642 @ 0x282 - 800dfb2: 4924 ldr r1, [pc, #144] @ (800e044 ) - 800dfb4: 4821 ldr r0, [pc, #132] @ (800e03c ) - 800dfb6: f004 fe5f bl 8012c78 - 800dfba: f06f 030f mvn.w r3, #15 - 800dfbe: e035 b.n 800e02c - LWIP_ERROR("udp_sendto_if: invalid netif", netif != NULL, return ERR_ARG); - 800dfc0: 6a3b ldr r3, [r7, #32] - 800dfc2: 2b00 cmp r3, #0 - 800dfc4: d109 bne.n 800dfda - 800dfc6: 4b1b ldr r3, [pc, #108] @ (800e034 ) - 800dfc8: f240 2283 movw r2, #643 @ 0x283 - 800dfcc: 491e ldr r1, [pc, #120] @ (800e048 ) - 800dfce: 481b ldr r0, [pc, #108] @ (800e03c ) - 800dfd0: f004 fe52 bl 8012c78 - 800dfd4: f06f 030f mvn.w r3, #15 - 800dfd8: e028 b.n 800e02c -#endif /* LWIP_IPV6 */ -#if LWIP_IPV4 && LWIP_IPV6 - else -#endif /* LWIP_IPV4 && LWIP_IPV6 */ -#if LWIP_IPV4 - if (ip4_addr_isany(ip_2_ip4(&pcb->local_ip)) || - 800dfda: 68fb ldr r3, [r7, #12] - 800dfdc: 2b00 cmp r3, #0 - 800dfde: d009 beq.n 800dff4 - 800dfe0: 68fb ldr r3, [r7, #12] - 800dfe2: 681b ldr r3, [r3, #0] - 800dfe4: 2b00 cmp r3, #0 - 800dfe6: d005 beq.n 800dff4 - ip4_addr_ismulticast(ip_2_ip4(&pcb->local_ip))) { - 800dfe8: 68fb ldr r3, [r7, #12] - 800dfea: 681b ldr r3, [r3, #0] - 800dfec: f003 03f0 and.w r3, r3, #240 @ 0xf0 - if (ip4_addr_isany(ip_2_ip4(&pcb->local_ip)) || - 800dff0: 2be0 cmp r3, #224 @ 0xe0 - 800dff2: d103 bne.n 800dffc - /* if the local_ip is any or multicast - * use the outgoing network interface IP address as source address */ - src_ip = netif_ip_addr4(netif); - 800dff4: 6a3b ldr r3, [r7, #32] - 800dff6: 3304 adds r3, #4 - 800dff8: 617b str r3, [r7, #20] - 800dffa: e00b b.n 800e014 - } else { - /* check if UDP PCB local IP address is correct - * this could be an old address if netif->ip_addr has changed */ - if (!ip4_addr_cmp(ip_2_ip4(&(pcb->local_ip)), netif_ip4_addr(netif))) { - 800dffc: 68fb ldr r3, [r7, #12] - 800dffe: 681a ldr r2, [r3, #0] - 800e000: 6a3b ldr r3, [r7, #32] - 800e002: 3304 adds r3, #4 - 800e004: 681b ldr r3, [r3, #0] - 800e006: 429a cmp r2, r3 - 800e008: d002 beq.n 800e010 - /* local_ip doesn't match, drop the packet */ - return ERR_RTE; - 800e00a: f06f 0303 mvn.w r3, #3 - 800e00e: e00d b.n 800e02c - } - /* use UDP PCB local IP address as source address */ - src_ip = &pcb->local_ip; - 800e010: 68fb ldr r3, [r7, #12] - 800e012: 617b str r3, [r7, #20] - } -#endif /* LWIP_IPV4 */ -#if LWIP_CHECKSUM_ON_COPY && CHECKSUM_GEN_UDP - return udp_sendto_if_src_chksum(pcb, p, dst_ip, dst_port, netif, have_chksum, chksum, src_ip); -#else /* LWIP_CHECKSUM_ON_COPY && CHECKSUM_GEN_UDP */ - return udp_sendto_if_src(pcb, p, dst_ip, dst_port, netif, src_ip); - 800e014: 887a ldrh r2, [r7, #2] - 800e016: 697b ldr r3, [r7, #20] - 800e018: 9301 str r3, [sp, #4] - 800e01a: 6a3b ldr r3, [r7, #32] - 800e01c: 9300 str r3, [sp, #0] - 800e01e: 4613 mov r3, r2 - 800e020: 687a ldr r2, [r7, #4] - 800e022: 68b9 ldr r1, [r7, #8] - 800e024: 68f8 ldr r0, [r7, #12] - 800e026: f000 f811 bl 800e04c - 800e02a: 4603 mov r3, r0 -#endif /* LWIP_CHECKSUM_ON_COPY && CHECKSUM_GEN_UDP */ -} - 800e02c: 4618 mov r0, r3 - 800e02e: 3718 adds r7, #24 - 800e030: 46bd mov sp, r7 - 800e032: bd80 pop {r7, pc} - 800e034: 080196b0 .word 0x080196b0 - 800e038: 08019824 .word 0x08019824 - 800e03c: 08019704 .word 0x08019704 - 800e040: 08019840 .word 0x08019840 - 800e044: 0801985c .word 0x0801985c - 800e048: 0801987c .word 0x0801987c - -0800e04c : -/** @ingroup udp_raw - * Same as @ref udp_sendto_if, but with source address */ -err_t -udp_sendto_if_src(struct udp_pcb *pcb, struct pbuf *p, - const ip_addr_t *dst_ip, u16_t dst_port, struct netif *netif, const ip_addr_t *src_ip) -{ - 800e04c: b580 push {r7, lr} - 800e04e: b08c sub sp, #48 @ 0x30 - 800e050: af04 add r7, sp, #16 - 800e052: 60f8 str r0, [r7, #12] - 800e054: 60b9 str r1, [r7, #8] - 800e056: 607a str r2, [r7, #4] - 800e058: 807b strh r3, [r7, #2] - u8_t ip_proto; - u8_t ttl; - - LWIP_ASSERT_CORE_LOCKED(); - - LWIP_ERROR("udp_sendto_if_src: invalid pcb", pcb != NULL, return ERR_ARG); - 800e05a: 68fb ldr r3, [r7, #12] - 800e05c: 2b00 cmp r3, #0 - 800e05e: d109 bne.n 800e074 - 800e060: 4b65 ldr r3, [pc, #404] @ (800e1f8 ) - 800e062: f240 22d1 movw r2, #721 @ 0x2d1 - 800e066: 4965 ldr r1, [pc, #404] @ (800e1fc ) - 800e068: 4865 ldr r0, [pc, #404] @ (800e200 ) - 800e06a: f004 fe05 bl 8012c78 - 800e06e: f06f 030f mvn.w r3, #15 - 800e072: e0bc b.n 800e1ee - LWIP_ERROR("udp_sendto_if_src: invalid pbuf", p != NULL, return ERR_ARG); - 800e074: 68bb ldr r3, [r7, #8] - 800e076: 2b00 cmp r3, #0 - 800e078: d109 bne.n 800e08e - 800e07a: 4b5f ldr r3, [pc, #380] @ (800e1f8 ) - 800e07c: f240 22d2 movw r2, #722 @ 0x2d2 - 800e080: 4960 ldr r1, [pc, #384] @ (800e204 ) - 800e082: 485f ldr r0, [pc, #380] @ (800e200 ) - 800e084: f004 fdf8 bl 8012c78 - 800e088: f06f 030f mvn.w r3, #15 - 800e08c: e0af b.n 800e1ee - LWIP_ERROR("udp_sendto_if_src: invalid dst_ip", dst_ip != NULL, return ERR_ARG); - 800e08e: 687b ldr r3, [r7, #4] - 800e090: 2b00 cmp r3, #0 - 800e092: d109 bne.n 800e0a8 - 800e094: 4b58 ldr r3, [pc, #352] @ (800e1f8 ) - 800e096: f240 22d3 movw r2, #723 @ 0x2d3 - 800e09a: 495b ldr r1, [pc, #364] @ (800e208 ) - 800e09c: 4858 ldr r0, [pc, #352] @ (800e200 ) - 800e09e: f004 fdeb bl 8012c78 - 800e0a2: f06f 030f mvn.w r3, #15 - 800e0a6: e0a2 b.n 800e1ee - LWIP_ERROR("udp_sendto_if_src: invalid src_ip", src_ip != NULL, return ERR_ARG); - 800e0a8: 6afb ldr r3, [r7, #44] @ 0x2c - 800e0aa: 2b00 cmp r3, #0 - 800e0ac: d109 bne.n 800e0c2 - 800e0ae: 4b52 ldr r3, [pc, #328] @ (800e1f8 ) - 800e0b0: f44f 7235 mov.w r2, #724 @ 0x2d4 - 800e0b4: 4955 ldr r1, [pc, #340] @ (800e20c ) - 800e0b6: 4852 ldr r0, [pc, #328] @ (800e200 ) - 800e0b8: f004 fdde bl 8012c78 - 800e0bc: f06f 030f mvn.w r3, #15 - 800e0c0: e095 b.n 800e1ee - LWIP_ERROR("udp_sendto_if_src: invalid netif", netif != NULL, return ERR_ARG); - 800e0c2: 6abb ldr r3, [r7, #40] @ 0x28 - 800e0c4: 2b00 cmp r3, #0 - 800e0c6: d109 bne.n 800e0dc - 800e0c8: 4b4b ldr r3, [pc, #300] @ (800e1f8 ) - 800e0ca: f240 22d5 movw r2, #725 @ 0x2d5 - 800e0ce: 4950 ldr r1, [pc, #320] @ (800e210 ) - 800e0d0: 484b ldr r0, [pc, #300] @ (800e200 ) - 800e0d2: f004 fdd1 bl 8012c78 - 800e0d6: f06f 030f mvn.w r3, #15 - 800e0da: e088 b.n 800e1ee - return ERR_VAL; - } -#endif /* LWIP_IPV4 && IP_SOF_BROADCAST */ - - /* if the PCB is not yet bound to a port, bind it here */ - if (pcb->local_port == 0) { - 800e0dc: 68fb ldr r3, [r7, #12] - 800e0de: 8a5b ldrh r3, [r3, #18] - 800e0e0: 2b00 cmp r3, #0 - 800e0e2: d10f bne.n 800e104 - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, ("udp_send: not yet bound to a port, binding now\n")); - err = udp_bind(pcb, &pcb->local_ip, pcb->local_port); - 800e0e4: 68f9 ldr r1, [r7, #12] - 800e0e6: 68fb ldr r3, [r7, #12] - 800e0e8: 8a5b ldrh r3, [r3, #18] - 800e0ea: 461a mov r2, r3 - 800e0ec: 68f8 ldr r0, [r7, #12] - 800e0ee: f000 f893 bl 800e218 - 800e0f2: 4603 mov r3, r0 - 800e0f4: 76fb strb r3, [r7, #27] - if (err != ERR_OK) { - 800e0f6: f997 301b ldrsb.w r3, [r7, #27] - 800e0fa: 2b00 cmp r3, #0 - 800e0fc: d002 beq.n 800e104 - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("udp_send: forced port bind failed\n")); - return err; - 800e0fe: f997 301b ldrsb.w r3, [r7, #27] - 800e102: e074 b.n 800e1ee - } - } - - /* packet too large to add a UDP header without causing an overflow? */ - if ((u16_t)(p->tot_len + UDP_HLEN) < p->tot_len) { - 800e104: 68bb ldr r3, [r7, #8] - 800e106: 891b ldrh r3, [r3, #8] - 800e108: f64f 72f7 movw r2, #65527 @ 0xfff7 - 800e10c: 4293 cmp r3, r2 - 800e10e: d902 bls.n 800e116 - return ERR_MEM; - 800e110: f04f 33ff mov.w r3, #4294967295 - 800e114: e06b b.n 800e1ee - } - /* not enough space to add an UDP header to first pbuf in given p chain? */ - if (pbuf_add_header(p, UDP_HLEN)) { - 800e116: 2108 movs r1, #8 - 800e118: 68b8 ldr r0, [r7, #8] - 800e11a: f7f9 ff2f bl 8007f7c - 800e11e: 4603 mov r3, r0 - 800e120: 2b00 cmp r3, #0 - 800e122: d015 beq.n 800e150 - /* allocate header in a separate new pbuf */ - q = pbuf_alloc(PBUF_IP, UDP_HLEN, PBUF_RAM); - 800e124: f44f 7220 mov.w r2, #640 @ 0x280 - 800e128: 2108 movs r1, #8 - 800e12a: 2022 movs r0, #34 @ 0x22 - 800e12c: f7f9 fcda bl 8007ae4 - 800e130: 61f8 str r0, [r7, #28] - /* new header pbuf could not be allocated? */ - if (q == NULL) { - 800e132: 69fb ldr r3, [r7, #28] - 800e134: 2b00 cmp r3, #0 - 800e136: d102 bne.n 800e13e - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("udp_send: could not allocate header\n")); - return ERR_MEM; - 800e138: f04f 33ff mov.w r3, #4294967295 - 800e13c: e057 b.n 800e1ee - } - if (p->tot_len != 0) { - 800e13e: 68bb ldr r3, [r7, #8] - 800e140: 891b ldrh r3, [r3, #8] - 800e142: 2b00 cmp r3, #0 - 800e144: d006 beq.n 800e154 - /* chain header q in front of given pbuf p (only if p contains data) */ - pbuf_chain(q, p); - 800e146: 68b9 ldr r1, [r7, #8] - 800e148: 69f8 ldr r0, [r7, #28] - 800e14a: f7fa f8c5 bl 80082d8 - 800e14e: e001 b.n 800e154 - LWIP_DEBUGF(UDP_DEBUG, - ("udp_send: added header pbuf %p before given pbuf %p\n", (void *)q, (void *)p)); - } else { - /* adding space for header within p succeeded */ - /* first pbuf q equals given pbuf */ - q = p; - 800e150: 68bb ldr r3, [r7, #8] - 800e152: 61fb str r3, [r7, #28] - LWIP_DEBUGF(UDP_DEBUG, ("udp_send: added header in given pbuf %p\n", (void *)p)); - } - LWIP_ASSERT("check that first pbuf can hold struct udp_hdr", - 800e154: 69fb ldr r3, [r7, #28] - 800e156: 895b ldrh r3, [r3, #10] - 800e158: 2b07 cmp r3, #7 - 800e15a: d806 bhi.n 800e16a - 800e15c: 4b26 ldr r3, [pc, #152] @ (800e1f8 ) - 800e15e: f240 320d movw r2, #781 @ 0x30d - 800e162: 492c ldr r1, [pc, #176] @ (800e214 ) - 800e164: 4826 ldr r0, [pc, #152] @ (800e200 ) - 800e166: f004 fd87 bl 8012c78 - (q->len >= sizeof(struct udp_hdr))); - /* q now represents the packet to be sent */ - udphdr = (struct udp_hdr *)q->payload; - 800e16a: 69fb ldr r3, [r7, #28] - 800e16c: 685b ldr r3, [r3, #4] - 800e16e: 617b str r3, [r7, #20] - udphdr->src = lwip_htons(pcb->local_port); - 800e170: 68fb ldr r3, [r7, #12] - 800e172: 8a5b ldrh r3, [r3, #18] - 800e174: 4618 mov r0, r3 - 800e176: f7f8 fc47 bl 8006a08 - 800e17a: 4603 mov r3, r0 - 800e17c: 461a mov r2, r3 - 800e17e: 697b ldr r3, [r7, #20] - 800e180: 801a strh r2, [r3, #0] - udphdr->dest = lwip_htons(dst_port); - 800e182: 887b ldrh r3, [r7, #2] - 800e184: 4618 mov r0, r3 - 800e186: f7f8 fc3f bl 8006a08 - 800e18a: 4603 mov r3, r0 - 800e18c: 461a mov r2, r3 - 800e18e: 697b ldr r3, [r7, #20] - 800e190: 805a strh r2, [r3, #2] - /* in UDP, 0 checksum means 'no checksum' */ - udphdr->chksum = 0x0000; - 800e192: 697b ldr r3, [r7, #20] - 800e194: 2200 movs r2, #0 - 800e196: 719a strb r2, [r3, #6] - 800e198: 2200 movs r2, #0 - 800e19a: 71da strb r2, [r3, #7] - ip_proto = IP_PROTO_UDPLITE; - } else -#endif /* LWIP_UDPLITE */ - { /* UDP */ - LWIP_DEBUGF(UDP_DEBUG, ("udp_send: UDP packet length %"U16_F"\n", q->tot_len)); - udphdr->len = lwip_htons(q->tot_len); - 800e19c: 69fb ldr r3, [r7, #28] - 800e19e: 891b ldrh r3, [r3, #8] - 800e1a0: 4618 mov r0, r3 - 800e1a2: f7f8 fc31 bl 8006a08 - 800e1a6: 4603 mov r3, r0 - 800e1a8: 461a mov r2, r3 - 800e1aa: 697b ldr r3, [r7, #20] - 800e1ac: 809a strh r2, [r3, #4] - } - udphdr->chksum = udpchksum; - } - } -#endif /* CHECKSUM_GEN_UDP */ - ip_proto = IP_PROTO_UDP; - 800e1ae: 2311 movs r3, #17 - 800e1b0: 74fb strb r3, [r7, #19] - - /* Determine TTL to use */ -#if LWIP_MULTICAST_TX_OPTIONS - ttl = (ip_addr_ismulticast(dst_ip) ? udp_get_multicast_ttl(pcb) : pcb->ttl); -#else /* LWIP_MULTICAST_TX_OPTIONS */ - ttl = pcb->ttl; - 800e1b2: 68fb ldr r3, [r7, #12] - 800e1b4: 7adb ldrb r3, [r3, #11] - 800e1b6: 74bb strb r3, [r7, #18] - - LWIP_DEBUGF(UDP_DEBUG, ("udp_send: UDP checksum 0x%04"X16_F"\n", udphdr->chksum)); - LWIP_DEBUGF(UDP_DEBUG, ("udp_send: ip_output_if (,,,,0x%02"X16_F",)\n", (u16_t)ip_proto)); - /* output to IP */ - NETIF_SET_HINTS(netif, &(pcb->netif_hints)); - err = ip_output_if_src(q, src_ip, dst_ip, ttl, pcb->tos, ip_proto, netif); - 800e1b8: 68fb ldr r3, [r7, #12] - 800e1ba: 7a9b ldrb r3, [r3, #10] - 800e1bc: 7cb9 ldrb r1, [r7, #18] - 800e1be: 6aba ldr r2, [r7, #40] @ 0x28 - 800e1c0: 9202 str r2, [sp, #8] - 800e1c2: 7cfa ldrb r2, [r7, #19] - 800e1c4: 9201 str r2, [sp, #4] - 800e1c6: 9300 str r3, [sp, #0] - 800e1c8: 460b mov r3, r1 - 800e1ca: 687a ldr r2, [r7, #4] - 800e1cc: 6af9 ldr r1, [r7, #44] @ 0x2c - 800e1ce: 69f8 ldr r0, [r7, #28] - 800e1d0: f003 fb32 bl 8011838 - 800e1d4: 4603 mov r3, r0 - 800e1d6: 76fb strb r3, [r7, #27] - - /* @todo: must this be increased even if error occurred? */ - MIB2_STATS_INC(mib2.udpoutdatagrams); - - /* did we chain a separate header pbuf earlier? */ - if (q != p) { - 800e1d8: 69fa ldr r2, [r7, #28] - 800e1da: 68bb ldr r3, [r7, #8] - 800e1dc: 429a cmp r2, r3 - 800e1de: d004 beq.n 800e1ea - /* free the header pbuf */ - pbuf_free(q); - 800e1e0: 69f8 ldr r0, [r7, #28] - 800e1e2: f7f9 ff61 bl 80080a8 - q = NULL; - 800e1e6: 2300 movs r3, #0 - 800e1e8: 61fb str r3, [r7, #28] - /* p is still referenced by the caller, and will live on */ - } - - UDP_STATS_INC(udp.xmit); - return err; - 800e1ea: f997 301b ldrsb.w r3, [r7, #27] -} - 800e1ee: 4618 mov r0, r3 - 800e1f0: 3720 adds r7, #32 - 800e1f2: 46bd mov sp, r7 - 800e1f4: bd80 pop {r7, pc} - 800e1f6: bf00 nop - 800e1f8: 080196b0 .word 0x080196b0 - 800e1fc: 0801989c .word 0x0801989c - 800e200: 08019704 .word 0x08019704 - 800e204: 080198bc .word 0x080198bc - 800e208: 080198dc .word 0x080198dc - 800e20c: 08019900 .word 0x08019900 - 800e210: 08019924 .word 0x08019924 - 800e214: 08019948 .word 0x08019948 - -0800e218 : - * - * @see udp_disconnect() - */ -err_t -udp_bind(struct udp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port) -{ - 800e218: b580 push {r7, lr} - 800e21a: b086 sub sp, #24 - 800e21c: af00 add r7, sp, #0 - 800e21e: 60f8 str r0, [r7, #12] - 800e220: 60b9 str r1, [r7, #8] - 800e222: 4613 mov r3, r2 - 800e224: 80fb strh r3, [r7, #6] - - LWIP_ASSERT_CORE_LOCKED(); - -#if LWIP_IPV4 - /* Don't propagate NULL pointer (IPv4 ANY) to subsequent functions */ - if (ipaddr == NULL) { - 800e226: 68bb ldr r3, [r7, #8] - 800e228: 2b00 cmp r3, #0 - 800e22a: d101 bne.n 800e230 - ipaddr = IP4_ADDR_ANY; - 800e22c: 4b39 ldr r3, [pc, #228] @ (800e314 ) - 800e22e: 60bb str r3, [r7, #8] - } -#else /* LWIP_IPV4 */ - LWIP_ERROR("udp_bind: invalid ipaddr", ipaddr != NULL, return ERR_ARG); -#endif /* LWIP_IPV4 */ - - LWIP_ERROR("udp_bind: invalid pcb", pcb != NULL, return ERR_ARG); - 800e230: 68fb ldr r3, [r7, #12] - 800e232: 2b00 cmp r3, #0 - 800e234: d109 bne.n 800e24a - 800e236: 4b38 ldr r3, [pc, #224] @ (800e318 ) - 800e238: f240 32b7 movw r2, #951 @ 0x3b7 - 800e23c: 4937 ldr r1, [pc, #220] @ (800e31c ) - 800e23e: 4838 ldr r0, [pc, #224] @ (800e320 ) - 800e240: f004 fd1a bl 8012c78 - 800e244: f06f 030f mvn.w r3, #15 - 800e248: e060 b.n 800e30c - - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, ("udp_bind(ipaddr = ")); - ip_addr_debug_print(UDP_DEBUG | LWIP_DBG_TRACE, ipaddr); - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, (", port = %"U16_F")\n", port)); - - rebind = 0; - 800e24a: 2300 movs r3, #0 - 800e24c: 74fb strb r3, [r7, #19] - /* Check for double bind and rebind of the same pcb */ - for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) { - 800e24e: 4b35 ldr r3, [pc, #212] @ (800e324 ) - 800e250: 681b ldr r3, [r3, #0] - 800e252: 617b str r3, [r7, #20] - 800e254: e009 b.n 800e26a - /* is this UDP PCB already on active list? */ - if (pcb == ipcb) { - 800e256: 68fa ldr r2, [r7, #12] - 800e258: 697b ldr r3, [r7, #20] - 800e25a: 429a cmp r2, r3 - 800e25c: d102 bne.n 800e264 - rebind = 1; - 800e25e: 2301 movs r3, #1 - 800e260: 74fb strb r3, [r7, #19] - break; - 800e262: e005 b.n 800e270 - for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) { - 800e264: 697b ldr r3, [r7, #20] - 800e266: 68db ldr r3, [r3, #12] - 800e268: 617b str r3, [r7, #20] - 800e26a: 697b ldr r3, [r7, #20] - 800e26c: 2b00 cmp r3, #0 - 800e26e: d1f2 bne.n 800e256 - ipaddr = &zoned_ipaddr; - } -#endif /* LWIP_IPV6 && LWIP_IPV6_SCOPES */ - - /* no port specified? */ - if (port == 0) { - 800e270: 88fb ldrh r3, [r7, #6] - 800e272: 2b00 cmp r3, #0 - 800e274: d109 bne.n 800e28a - port = udp_new_port(); - 800e276: f7ff fc69 bl 800db4c - 800e27a: 4603 mov r3, r0 - 800e27c: 80fb strh r3, [r7, #6] - if (port == 0) { - 800e27e: 88fb ldrh r3, [r7, #6] - 800e280: 2b00 cmp r3, #0 - 800e282: d12c bne.n 800e2de - /* no more ports available in local range */ - LWIP_DEBUGF(UDP_DEBUG, ("udp_bind: out of free UDP ports\n")); - return ERR_USE; - 800e284: f06f 0307 mvn.w r3, #7 - 800e288: e040 b.n 800e30c - } - } else { - for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) { - 800e28a: 4b26 ldr r3, [pc, #152] @ (800e324 ) - 800e28c: 681b ldr r3, [r3, #0] - 800e28e: 617b str r3, [r7, #20] - 800e290: e022 b.n 800e2d8 - if (pcb != ipcb) { - 800e292: 68fa ldr r2, [r7, #12] - 800e294: 697b ldr r3, [r7, #20] - 800e296: 429a cmp r2, r3 - 800e298: d01b beq.n 800e2d2 - if (!ip_get_option(pcb, SOF_REUSEADDR) || - !ip_get_option(ipcb, SOF_REUSEADDR)) -#endif /* SO_REUSE */ - { - /* port matches that of PCB in list and REUSEADDR not set -> reject */ - if ((ipcb->local_port == port) && - 800e29a: 697b ldr r3, [r7, #20] - 800e29c: 8a5b ldrh r3, [r3, #18] - 800e29e: 88fa ldrh r2, [r7, #6] - 800e2a0: 429a cmp r2, r3 - 800e2a2: d116 bne.n 800e2d2 - /* IP address matches or any IP used? */ - (ip_addr_cmp(&ipcb->local_ip, ipaddr) || ip_addr_isany(ipaddr) || - 800e2a4: 697b ldr r3, [r7, #20] - 800e2a6: 681a ldr r2, [r3, #0] - 800e2a8: 68bb ldr r3, [r7, #8] - 800e2aa: 681b ldr r3, [r3, #0] - if ((ipcb->local_port == port) && - 800e2ac: 429a cmp r2, r3 - 800e2ae: d00d beq.n 800e2cc - (ip_addr_cmp(&ipcb->local_ip, ipaddr) || ip_addr_isany(ipaddr) || - 800e2b0: 68bb ldr r3, [r7, #8] - 800e2b2: 2b00 cmp r3, #0 - 800e2b4: d00a beq.n 800e2cc - 800e2b6: 68bb ldr r3, [r7, #8] - 800e2b8: 681b ldr r3, [r3, #0] - 800e2ba: 2b00 cmp r3, #0 - 800e2bc: d006 beq.n 800e2cc - ip_addr_isany(&ipcb->local_ip))) { - 800e2be: 697b ldr r3, [r7, #20] - (ip_addr_cmp(&ipcb->local_ip, ipaddr) || ip_addr_isany(ipaddr) || - 800e2c0: 2b00 cmp r3, #0 - 800e2c2: d003 beq.n 800e2cc - ip_addr_isany(&ipcb->local_ip))) { - 800e2c4: 697b ldr r3, [r7, #20] - 800e2c6: 681b ldr r3, [r3, #0] - 800e2c8: 2b00 cmp r3, #0 - 800e2ca: d102 bne.n 800e2d2 - /* other PCB already binds to this local IP and port */ - LWIP_DEBUGF(UDP_DEBUG, - ("udp_bind: local port %"U16_F" already bound by another pcb\n", port)); - return ERR_USE; - 800e2cc: f06f 0307 mvn.w r3, #7 - 800e2d0: e01c b.n 800e30c - for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) { - 800e2d2: 697b ldr r3, [r7, #20] - 800e2d4: 68db ldr r3, [r3, #12] - 800e2d6: 617b str r3, [r7, #20] - 800e2d8: 697b ldr r3, [r7, #20] - 800e2da: 2b00 cmp r3, #0 - 800e2dc: d1d9 bne.n 800e292 - } - } - } - } - - ip_addr_set_ipaddr(&pcb->local_ip, ipaddr); - 800e2de: 68bb ldr r3, [r7, #8] - 800e2e0: 2b00 cmp r3, #0 - 800e2e2: d002 beq.n 800e2ea - 800e2e4: 68bb ldr r3, [r7, #8] - 800e2e6: 681b ldr r3, [r3, #0] - 800e2e8: e000 b.n 800e2ec - 800e2ea: 2300 movs r3, #0 - 800e2ec: 68fa ldr r2, [r7, #12] - 800e2ee: 6013 str r3, [r2, #0] - - pcb->local_port = port; - 800e2f0: 68fb ldr r3, [r7, #12] - 800e2f2: 88fa ldrh r2, [r7, #6] - 800e2f4: 825a strh r2, [r3, #18] - mib2_udp_bind(pcb); - /* pcb not active yet? */ - if (rebind == 0) { - 800e2f6: 7cfb ldrb r3, [r7, #19] - 800e2f8: 2b00 cmp r3, #0 - 800e2fa: d106 bne.n 800e30a - /* place the PCB on the active list if not already there */ - pcb->next = udp_pcbs; - 800e2fc: 4b09 ldr r3, [pc, #36] @ (800e324 ) - 800e2fe: 681a ldr r2, [r3, #0] - 800e300: 68fb ldr r3, [r7, #12] - 800e302: 60da str r2, [r3, #12] - udp_pcbs = pcb; - 800e304: 4a07 ldr r2, [pc, #28] @ (800e324 ) - 800e306: 68fb ldr r3, [r7, #12] - 800e308: 6013 str r3, [r2, #0] - } - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("udp_bind: bound to ")); - ip_addr_debug_print_val(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, pcb->local_ip); - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, (", port %"U16_F")\n", pcb->local_port)); - return ERR_OK; - 800e30a: 2300 movs r3, #0 -} - 800e30c: 4618 mov r0, r3 - 800e30e: 3718 adds r7, #24 - 800e310: 46bd mov sp, r7 - 800e312: bd80 pop {r7, pc} - 800e314: 0801a5e4 .word 0x0801a5e4 - 800e318: 080196b0 .word 0x080196b0 - 800e31c: 08019978 .word 0x08019978 - 800e320: 08019704 .word 0x08019704 - 800e324: 20019148 .word 0x20019148 - -0800e328 : - * - * @see udp_disconnect() - */ -err_t -udp_connect(struct udp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port) -{ - 800e328: b580 push {r7, lr} - 800e32a: b086 sub sp, #24 - 800e32c: af00 add r7, sp, #0 - 800e32e: 60f8 str r0, [r7, #12] - 800e330: 60b9 str r1, [r7, #8] - 800e332: 4613 mov r3, r2 - 800e334: 80fb strh r3, [r7, #6] - struct udp_pcb *ipcb; - - LWIP_ASSERT_CORE_LOCKED(); - - LWIP_ERROR("udp_connect: invalid pcb", pcb != NULL, return ERR_ARG); - 800e336: 68fb ldr r3, [r7, #12] - 800e338: 2b00 cmp r3, #0 - 800e33a: d109 bne.n 800e350 - 800e33c: 4b2c ldr r3, [pc, #176] @ (800e3f0 ) - 800e33e: f240 4235 movw r2, #1077 @ 0x435 - 800e342: 492c ldr r1, [pc, #176] @ (800e3f4 ) - 800e344: 482c ldr r0, [pc, #176] @ (800e3f8 ) - 800e346: f004 fc97 bl 8012c78 - 800e34a: f06f 030f mvn.w r3, #15 - 800e34e: e04b b.n 800e3e8 - LWIP_ERROR("udp_connect: invalid ipaddr", ipaddr != NULL, return ERR_ARG); - 800e350: 68bb ldr r3, [r7, #8] - 800e352: 2b00 cmp r3, #0 - 800e354: d109 bne.n 800e36a - 800e356: 4b26 ldr r3, [pc, #152] @ (800e3f0 ) - 800e358: f240 4236 movw r2, #1078 @ 0x436 - 800e35c: 4927 ldr r1, [pc, #156] @ (800e3fc ) - 800e35e: 4826 ldr r0, [pc, #152] @ (800e3f8 ) - 800e360: f004 fc8a bl 8012c78 - 800e364: f06f 030f mvn.w r3, #15 - 800e368: e03e b.n 800e3e8 - - if (pcb->local_port == 0) { - 800e36a: 68fb ldr r3, [r7, #12] - 800e36c: 8a5b ldrh r3, [r3, #18] - 800e36e: 2b00 cmp r3, #0 - 800e370: d10f bne.n 800e392 - err_t err = udp_bind(pcb, &pcb->local_ip, pcb->local_port); - 800e372: 68f9 ldr r1, [r7, #12] - 800e374: 68fb ldr r3, [r7, #12] - 800e376: 8a5b ldrh r3, [r3, #18] - 800e378: 461a mov r2, r3 - 800e37a: 68f8 ldr r0, [r7, #12] - 800e37c: f7ff ff4c bl 800e218 - 800e380: 4603 mov r3, r0 - 800e382: 74fb strb r3, [r7, #19] - if (err != ERR_OK) { - 800e384: f997 3013 ldrsb.w r3, [r7, #19] - 800e388: 2b00 cmp r3, #0 - 800e38a: d002 beq.n 800e392 - return err; - 800e38c: f997 3013 ldrsb.w r3, [r7, #19] - 800e390: e02a b.n 800e3e8 - } - } - - ip_addr_set_ipaddr(&pcb->remote_ip, ipaddr); - 800e392: 68bb ldr r3, [r7, #8] - 800e394: 2b00 cmp r3, #0 - 800e396: d002 beq.n 800e39e - 800e398: 68bb ldr r3, [r7, #8] - 800e39a: 681b ldr r3, [r3, #0] - 800e39c: e000 b.n 800e3a0 - 800e39e: 2300 movs r3, #0 - 800e3a0: 68fa ldr r2, [r7, #12] - 800e3a2: 6053 str r3, [r2, #4] - ip6_addr_lacks_zone(ip_2_ip6(&pcb->remote_ip), IP6_UNKNOWN)) { - ip6_addr_select_zone(ip_2_ip6(&pcb->remote_ip), ip_2_ip6(&pcb->local_ip)); - } -#endif /* LWIP_IPV6 && LWIP_IPV6_SCOPES */ - - pcb->remote_port = port; - 800e3a4: 68fb ldr r3, [r7, #12] - 800e3a6: 88fa ldrh r2, [r7, #6] - 800e3a8: 829a strh r2, [r3, #20] - pcb->flags |= UDP_FLAGS_CONNECTED; - 800e3aa: 68fb ldr r3, [r7, #12] - 800e3ac: 7c1b ldrb r3, [r3, #16] - 800e3ae: f043 0304 orr.w r3, r3, #4 - 800e3b2: b2da uxtb r2, r3 - 800e3b4: 68fb ldr r3, [r7, #12] - 800e3b6: 741a strb r2, [r3, #16] - ip_addr_debug_print_val(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, - pcb->remote_ip); - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, (", port %"U16_F")\n", pcb->remote_port)); - - /* Insert UDP PCB into the list of active UDP PCBs. */ - for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) { - 800e3b8: 4b11 ldr r3, [pc, #68] @ (800e400 ) - 800e3ba: 681b ldr r3, [r3, #0] - 800e3bc: 617b str r3, [r7, #20] - 800e3be: e008 b.n 800e3d2 - if (pcb == ipcb) { - 800e3c0: 68fa ldr r2, [r7, #12] - 800e3c2: 697b ldr r3, [r7, #20] - 800e3c4: 429a cmp r2, r3 - 800e3c6: d101 bne.n 800e3cc - /* already on the list, just return */ - return ERR_OK; - 800e3c8: 2300 movs r3, #0 - 800e3ca: e00d b.n 800e3e8 - for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) { - 800e3cc: 697b ldr r3, [r7, #20] - 800e3ce: 68db ldr r3, [r3, #12] - 800e3d0: 617b str r3, [r7, #20] - 800e3d2: 697b ldr r3, [r7, #20] - 800e3d4: 2b00 cmp r3, #0 - 800e3d6: d1f3 bne.n 800e3c0 - } - } - /* PCB not yet on the list, add PCB now */ - pcb->next = udp_pcbs; - 800e3d8: 4b09 ldr r3, [pc, #36] @ (800e400 ) - 800e3da: 681a ldr r2, [r3, #0] - 800e3dc: 68fb ldr r3, [r7, #12] - 800e3de: 60da str r2, [r3, #12] - udp_pcbs = pcb; - 800e3e0: 4a07 ldr r2, [pc, #28] @ (800e400 ) - 800e3e2: 68fb ldr r3, [r7, #12] - 800e3e4: 6013 str r3, [r2, #0] - return ERR_OK; - 800e3e6: 2300 movs r3, #0 -} - 800e3e8: 4618 mov r0, r3 - 800e3ea: 3718 adds r7, #24 - 800e3ec: 46bd mov sp, r7 - 800e3ee: bd80 pop {r7, pc} - 800e3f0: 080196b0 .word 0x080196b0 - 800e3f4: 08019990 .word 0x08019990 - 800e3f8: 08019704 .word 0x08019704 - 800e3fc: 080199ac .word 0x080199ac - 800e400: 20019148 .word 0x20019148 - -0800e404 : - * @param recv function pointer of the callback function - * @param recv_arg additional argument to pass to the callback function - */ -void -udp_recv(struct udp_pcb *pcb, udp_recv_fn recv, void *recv_arg) -{ - 800e404: b580 push {r7, lr} - 800e406: b084 sub sp, #16 - 800e408: af00 add r7, sp, #0 - 800e40a: 60f8 str r0, [r7, #12] - 800e40c: 60b9 str r1, [r7, #8] - 800e40e: 607a str r2, [r7, #4] - LWIP_ASSERT_CORE_LOCKED(); - - LWIP_ERROR("udp_recv: invalid pcb", pcb != NULL, return); - 800e410: 68fb ldr r3, [r7, #12] - 800e412: 2b00 cmp r3, #0 - 800e414: d107 bne.n 800e426 - 800e416: 4b08 ldr r3, [pc, #32] @ (800e438 ) - 800e418: f240 428a movw r2, #1162 @ 0x48a - 800e41c: 4907 ldr r1, [pc, #28] @ (800e43c ) - 800e41e: 4808 ldr r0, [pc, #32] @ (800e440 ) - 800e420: f004 fc2a bl 8012c78 - 800e424: e005 b.n 800e432 - - /* remember recv() callback and user data */ - pcb->recv = recv; - 800e426: 68fb ldr r3, [r7, #12] - 800e428: 68ba ldr r2, [r7, #8] - 800e42a: 619a str r2, [r3, #24] - pcb->recv_arg = recv_arg; - 800e42c: 68fb ldr r3, [r7, #12] - 800e42e: 687a ldr r2, [r7, #4] - 800e430: 61da str r2, [r3, #28] -} - 800e432: 3710 adds r7, #16 - 800e434: 46bd mov sp, r7 - 800e436: bd80 pop {r7, pc} - 800e438: 080196b0 .word 0x080196b0 - 800e43c: 080199e4 .word 0x080199e4 - 800e440: 08019704 .word 0x08019704 - -0800e444 : - * - * @see udp_new() - */ -void -udp_remove(struct udp_pcb *pcb) -{ - 800e444: b580 push {r7, lr} - 800e446: b084 sub sp, #16 - 800e448: af00 add r7, sp, #0 - 800e44a: 6078 str r0, [r7, #4] - struct udp_pcb *pcb2; - - LWIP_ASSERT_CORE_LOCKED(); - - LWIP_ERROR("udp_remove: invalid pcb", pcb != NULL, return); - 800e44c: 687b ldr r3, [r7, #4] - 800e44e: 2b00 cmp r3, #0 - 800e450: d107 bne.n 800e462 - 800e452: 4b19 ldr r3, [pc, #100] @ (800e4b8 ) - 800e454: f240 42a1 movw r2, #1185 @ 0x4a1 - 800e458: 4918 ldr r1, [pc, #96] @ (800e4bc ) - 800e45a: 4819 ldr r0, [pc, #100] @ (800e4c0 ) - 800e45c: f004 fc0c bl 8012c78 - 800e460: e026 b.n 800e4b0 - - mib2_udp_unbind(pcb); - /* pcb to be removed is first in list? */ - if (udp_pcbs == pcb) { - 800e462: 4b18 ldr r3, [pc, #96] @ (800e4c4 ) - 800e464: 681b ldr r3, [r3, #0] - 800e466: 687a ldr r2, [r7, #4] - 800e468: 429a cmp r2, r3 - 800e46a: d105 bne.n 800e478 - /* make list start at 2nd pcb */ - udp_pcbs = udp_pcbs->next; - 800e46c: 4b15 ldr r3, [pc, #84] @ (800e4c4 ) - 800e46e: 681b ldr r3, [r3, #0] - 800e470: 68db ldr r3, [r3, #12] - 800e472: 4a14 ldr r2, [pc, #80] @ (800e4c4 ) - 800e474: 6013 str r3, [r2, #0] - 800e476: e017 b.n 800e4a8 - /* pcb not 1st in list */ - } else { - for (pcb2 = udp_pcbs; pcb2 != NULL; pcb2 = pcb2->next) { - 800e478: 4b12 ldr r3, [pc, #72] @ (800e4c4 ) - 800e47a: 681b ldr r3, [r3, #0] - 800e47c: 60fb str r3, [r7, #12] - 800e47e: e010 b.n 800e4a2 - /* find pcb in udp_pcbs list */ - if (pcb2->next != NULL && pcb2->next == pcb) { - 800e480: 68fb ldr r3, [r7, #12] - 800e482: 68db ldr r3, [r3, #12] - 800e484: 2b00 cmp r3, #0 - 800e486: d009 beq.n 800e49c - 800e488: 68fb ldr r3, [r7, #12] - 800e48a: 68db ldr r3, [r3, #12] - 800e48c: 687a ldr r2, [r7, #4] - 800e48e: 429a cmp r2, r3 - 800e490: d104 bne.n 800e49c - /* remove pcb from list */ - pcb2->next = pcb->next; - 800e492: 687b ldr r3, [r7, #4] - 800e494: 68da ldr r2, [r3, #12] - 800e496: 68fb ldr r3, [r7, #12] - 800e498: 60da str r2, [r3, #12] - break; - 800e49a: e005 b.n 800e4a8 - for (pcb2 = udp_pcbs; pcb2 != NULL; pcb2 = pcb2->next) { - 800e49c: 68fb ldr r3, [r7, #12] - 800e49e: 68db ldr r3, [r3, #12] - 800e4a0: 60fb str r3, [r7, #12] - 800e4a2: 68fb ldr r3, [r7, #12] - 800e4a4: 2b00 cmp r3, #0 - 800e4a6: d1eb bne.n 800e480 - } - } - } - memp_free(MEMP_UDP_PCB, pcb); - 800e4a8: 6879 ldr r1, [r7, #4] - 800e4aa: 2000 movs r0, #0 - 800e4ac: f7f8 ff7c bl 80073a8 -} - 800e4b0: 3710 adds r7, #16 - 800e4b2: 46bd mov sp, r7 - 800e4b4: bd80 pop {r7, pc} - 800e4b6: bf00 nop - 800e4b8: 080196b0 .word 0x080196b0 - 800e4bc: 080199fc .word 0x080199fc - 800e4c0: 08019704 .word 0x08019704 - 800e4c4: 20019148 .word 0x20019148 - -0800e4c8 : - * - * @see udp_remove() - */ -struct udp_pcb * -udp_new(void) -{ - 800e4c8: b580 push {r7, lr} - 800e4ca: b082 sub sp, #8 - 800e4cc: af00 add r7, sp, #0 - struct udp_pcb *pcb; - - LWIP_ASSERT_CORE_LOCKED(); - - pcb = (struct udp_pcb *)memp_malloc(MEMP_UDP_PCB); - 800e4ce: 2000 movs r0, #0 - 800e4d0: f7f8 fefa bl 80072c8 - 800e4d4: 6078 str r0, [r7, #4] - /* could allocate UDP PCB? */ - if (pcb != NULL) { - 800e4d6: 687b ldr r3, [r7, #4] - 800e4d8: 2b00 cmp r3, #0 - 800e4da: d007 beq.n 800e4ec - /* UDP Lite: by initializing to all zeroes, chksum_len is set to 0 - * which means checksum is generated over the whole datagram per default - * (recommended as default by RFC 3828). */ - /* initialize PCB to all zeroes */ - memset(pcb, 0, sizeof(struct udp_pcb)); - 800e4dc: 2220 movs r2, #32 - 800e4de: 2100 movs r1, #0 - 800e4e0: 6878 ldr r0, [r7, #4] - 800e4e2: f004 fc48 bl 8012d76 - pcb->ttl = UDP_TTL; - 800e4e6: 687b ldr r3, [r7, #4] - 800e4e8: 22ff movs r2, #255 @ 0xff - 800e4ea: 72da strb r2, [r3, #11] -#if LWIP_MULTICAST_TX_OPTIONS - udp_set_multicast_ttl(pcb, UDP_TTL); -#endif /* LWIP_MULTICAST_TX_OPTIONS */ - } - return pcb; - 800e4ec: 687b ldr r3, [r7, #4] -} - 800e4ee: 4618 mov r0, r3 - 800e4f0: 3708 adds r7, #8 - 800e4f2: 46bd mov sp, r7 - 800e4f4: bd80 pop {r7, pc} - ... - -0800e4f8 : - * - * @param old_addr IP address of the netif before change - * @param new_addr IP address of the netif after change - */ -void udp_netif_ip_addr_changed(const ip_addr_t *old_addr, const ip_addr_t *new_addr) -{ - 800e4f8: b480 push {r7} - 800e4fa: b085 sub sp, #20 - 800e4fc: af00 add r7, sp, #0 - 800e4fe: 6078 str r0, [r7, #4] - 800e500: 6039 str r1, [r7, #0] - struct udp_pcb *upcb; - - if (!ip_addr_isany(old_addr) && !ip_addr_isany(new_addr)) { - 800e502: 687b ldr r3, [r7, #4] - 800e504: 2b00 cmp r3, #0 - 800e506: d01e beq.n 800e546 - 800e508: 687b ldr r3, [r7, #4] - 800e50a: 681b ldr r3, [r3, #0] - 800e50c: 2b00 cmp r3, #0 - 800e50e: d01a beq.n 800e546 - 800e510: 683b ldr r3, [r7, #0] - 800e512: 2b00 cmp r3, #0 - 800e514: d017 beq.n 800e546 - 800e516: 683b ldr r3, [r7, #0] - 800e518: 681b ldr r3, [r3, #0] - 800e51a: 2b00 cmp r3, #0 - 800e51c: d013 beq.n 800e546 - for (upcb = udp_pcbs; upcb != NULL; upcb = upcb->next) { - 800e51e: 4b0d ldr r3, [pc, #52] @ (800e554 ) - 800e520: 681b ldr r3, [r3, #0] - 800e522: 60fb str r3, [r7, #12] - 800e524: e00c b.n 800e540 - /* PCB bound to current local interface address? */ - if (ip_addr_cmp(&upcb->local_ip, old_addr)) { - 800e526: 68fb ldr r3, [r7, #12] - 800e528: 681a ldr r2, [r3, #0] - 800e52a: 687b ldr r3, [r7, #4] - 800e52c: 681b ldr r3, [r3, #0] - 800e52e: 429a cmp r2, r3 - 800e530: d103 bne.n 800e53a - /* The PCB is bound to the old ipaddr and - * is set to bound to the new one instead */ - ip_addr_copy(upcb->local_ip, *new_addr); - 800e532: 683b ldr r3, [r7, #0] - 800e534: 681a ldr r2, [r3, #0] - 800e536: 68fb ldr r3, [r7, #12] - 800e538: 601a str r2, [r3, #0] - for (upcb = udp_pcbs; upcb != NULL; upcb = upcb->next) { - 800e53a: 68fb ldr r3, [r7, #12] - 800e53c: 68db ldr r3, [r3, #12] - 800e53e: 60fb str r3, [r7, #12] - 800e540: 68fb ldr r3, [r7, #12] - 800e542: 2b00 cmp r3, #0 - 800e544: d1ef bne.n 800e526 - } - } - } -} - 800e546: bf00 nop - 800e548: 3714 adds r7, #20 - 800e54a: 46bd mov sp, r7 - 800e54c: f85d 7b04 ldr.w r7, [sp], #4 - 800e550: 4770 bx lr - 800e552: bf00 nop - 800e554: 20019148 .word 0x20019148 - -0800e558 : -static void dhcp_option_trailer(u16_t options_out_len, u8_t *options, struct pbuf *p_out); - -/** Ensure DHCP PCB is allocated and bound */ -static err_t -dhcp_inc_pcb_refcount(void) -{ - 800e558: b580 push {r7, lr} - 800e55a: af00 add r7, sp, #0 - if (dhcp_pcb_refcount == 0) { - 800e55c: 4b20 ldr r3, [pc, #128] @ (800e5e0 ) - 800e55e: 781b ldrb r3, [r3, #0] - 800e560: 2b00 cmp r3, #0 - 800e562: d133 bne.n 800e5cc - LWIP_ASSERT("dhcp_inc_pcb_refcount(): memory leak", dhcp_pcb == NULL); - 800e564: 4b1f ldr r3, [pc, #124] @ (800e5e4 ) - 800e566: 681b ldr r3, [r3, #0] - 800e568: 2b00 cmp r3, #0 - 800e56a: d005 beq.n 800e578 - 800e56c: 4b1e ldr r3, [pc, #120] @ (800e5e8 ) - 800e56e: 22e5 movs r2, #229 @ 0xe5 - 800e570: 491e ldr r1, [pc, #120] @ (800e5ec ) - 800e572: 481f ldr r0, [pc, #124] @ (800e5f0 ) - 800e574: f004 fb80 bl 8012c78 - - /* allocate UDP PCB */ - dhcp_pcb = udp_new(); - 800e578: f7ff ffa6 bl 800e4c8 - 800e57c: 4603 mov r3, r0 - 800e57e: 4a19 ldr r2, [pc, #100] @ (800e5e4 ) - 800e580: 6013 str r3, [r2, #0] - - if (dhcp_pcb == NULL) { - 800e582: 4b18 ldr r3, [pc, #96] @ (800e5e4 ) - 800e584: 681b ldr r3, [r3, #0] - 800e586: 2b00 cmp r3, #0 - 800e588: d102 bne.n 800e590 - return ERR_MEM; - 800e58a: f04f 33ff mov.w r3, #4294967295 - 800e58e: e024 b.n 800e5da - } - - ip_set_option(dhcp_pcb, SOF_BROADCAST); - 800e590: 4b14 ldr r3, [pc, #80] @ (800e5e4 ) - 800e592: 681b ldr r3, [r3, #0] - 800e594: 7a5a ldrb r2, [r3, #9] - 800e596: 4b13 ldr r3, [pc, #76] @ (800e5e4 ) - 800e598: 681b ldr r3, [r3, #0] - 800e59a: f042 0220 orr.w r2, r2, #32 - 800e59e: b2d2 uxtb r2, r2 - 800e5a0: 725a strb r2, [r3, #9] - - /* set up local and remote port for the pcb -> listen on all interfaces on all src/dest IPs */ - udp_bind(dhcp_pcb, IP4_ADDR_ANY, LWIP_IANA_PORT_DHCP_CLIENT); - 800e5a2: 4b10 ldr r3, [pc, #64] @ (800e5e4 ) - 800e5a4: 681b ldr r3, [r3, #0] - 800e5a6: 2244 movs r2, #68 @ 0x44 - 800e5a8: 4912 ldr r1, [pc, #72] @ (800e5f4 ) - 800e5aa: 4618 mov r0, r3 - 800e5ac: f7ff fe34 bl 800e218 - udp_connect(dhcp_pcb, IP4_ADDR_ANY, LWIP_IANA_PORT_DHCP_SERVER); - 800e5b0: 4b0c ldr r3, [pc, #48] @ (800e5e4 ) - 800e5b2: 681b ldr r3, [r3, #0] - 800e5b4: 2243 movs r2, #67 @ 0x43 - 800e5b6: 490f ldr r1, [pc, #60] @ (800e5f4 ) - 800e5b8: 4618 mov r0, r3 - 800e5ba: f7ff feb5 bl 800e328 - udp_recv(dhcp_pcb, dhcp_recv, NULL); - 800e5be: 4b09 ldr r3, [pc, #36] @ (800e5e4 ) - 800e5c0: 681b ldr r3, [r3, #0] - 800e5c2: 2200 movs r2, #0 - 800e5c4: 490c ldr r1, [pc, #48] @ (800e5f8 ) - 800e5c6: 4618 mov r0, r3 - 800e5c8: f7ff ff1c bl 800e404 - } - - dhcp_pcb_refcount++; - 800e5cc: 4b04 ldr r3, [pc, #16] @ (800e5e0 ) - 800e5ce: 781b ldrb r3, [r3, #0] - 800e5d0: 3301 adds r3, #1 - 800e5d2: b2da uxtb r2, r3 - 800e5d4: 4b02 ldr r3, [pc, #8] @ (800e5e0 ) - 800e5d6: 701a strb r2, [r3, #0] - - return ERR_OK; - 800e5d8: 2300 movs r3, #0 -} - 800e5da: 4618 mov r0, r3 - 800e5dc: bd80 pop {r7, pc} - 800e5de: bf00 nop - 800e5e0: 20019178 .word 0x20019178 - 800e5e4: 20019174 .word 0x20019174 - 800e5e8: 08019a14 .word 0x08019a14 - 800e5ec: 08019a4c .word 0x08019a4c - 800e5f0: 08019a74 .word 0x08019a74 - 800e5f4: 0801a5e4 .word 0x0801a5e4 - 800e5f8: 0800fe81 .word 0x0800fe81 - -0800e5fc : - -/** Free DHCP PCB if the last netif stops using it */ -static void -dhcp_dec_pcb_refcount(void) -{ - 800e5fc: b580 push {r7, lr} - 800e5fe: af00 add r7, sp, #0 - LWIP_ASSERT("dhcp_pcb_refcount(): refcount error", (dhcp_pcb_refcount > 0)); - 800e600: 4b0e ldr r3, [pc, #56] @ (800e63c ) - 800e602: 781b ldrb r3, [r3, #0] - 800e604: 2b00 cmp r3, #0 - 800e606: d105 bne.n 800e614 - 800e608: 4b0d ldr r3, [pc, #52] @ (800e640 ) - 800e60a: 22ff movs r2, #255 @ 0xff - 800e60c: 490d ldr r1, [pc, #52] @ (800e644 ) - 800e60e: 480e ldr r0, [pc, #56] @ (800e648 ) - 800e610: f004 fb32 bl 8012c78 - dhcp_pcb_refcount--; - 800e614: 4b09 ldr r3, [pc, #36] @ (800e63c ) - 800e616: 781b ldrb r3, [r3, #0] - 800e618: 3b01 subs r3, #1 - 800e61a: b2da uxtb r2, r3 - 800e61c: 4b07 ldr r3, [pc, #28] @ (800e63c ) - 800e61e: 701a strb r2, [r3, #0] - - if (dhcp_pcb_refcount == 0) { - 800e620: 4b06 ldr r3, [pc, #24] @ (800e63c ) - 800e622: 781b ldrb r3, [r3, #0] - 800e624: 2b00 cmp r3, #0 - 800e626: d107 bne.n 800e638 - udp_remove(dhcp_pcb); - 800e628: 4b08 ldr r3, [pc, #32] @ (800e64c ) - 800e62a: 681b ldr r3, [r3, #0] - 800e62c: 4618 mov r0, r3 - 800e62e: f7ff ff09 bl 800e444 - dhcp_pcb = NULL; - 800e632: 4b06 ldr r3, [pc, #24] @ (800e64c ) - 800e634: 2200 movs r2, #0 - 800e636: 601a str r2, [r3, #0] - } -} - 800e638: bf00 nop - 800e63a: bd80 pop {r7, pc} - 800e63c: 20019178 .word 0x20019178 - 800e640: 08019a14 .word 0x08019a14 - 800e644: 08019a9c .word 0x08019a9c - 800e648: 08019a74 .word 0x08019a74 - 800e64c: 20019174 .word 0x20019174 - -0800e650 : - * - * @param netif the netif under DHCP control - */ -static void -dhcp_handle_nak(struct netif *netif) -{ - 800e650: b580 push {r7, lr} - 800e652: b084 sub sp, #16 - 800e654: af00 add r7, sp, #0 - 800e656: 6078 str r0, [r7, #4] - struct dhcp *dhcp = netif_dhcp_data(netif); - 800e658: 687b ldr r3, [r7, #4] - 800e65a: 6a5b ldr r3, [r3, #36] @ 0x24 - 800e65c: 60fb str r3, [r7, #12] - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_handle_nak(netif=%p) %c%c%"U16_F"\n", - (void *)netif, netif->name[0], netif->name[1], (u16_t)netif->num)); - /* Change to a defined state - set this before assigning the address - to ensure the callback can use dhcp_supplied_address() */ - dhcp_set_state(dhcp, DHCP_STATE_BACKING_OFF); - 800e65e: 210c movs r1, #12 - 800e660: 68f8 ldr r0, [r7, #12] - 800e662: f001 f84f bl 800f704 - /* remove IP address from interface (must no longer be used, as per RFC2131) */ - netif_set_addr(netif, IP4_ADDR_ANY4, IP4_ADDR_ANY4, IP4_ADDR_ANY4); - 800e666: 4b06 ldr r3, [pc, #24] @ (800e680 ) - 800e668: 4a05 ldr r2, [pc, #20] @ (800e680 ) - 800e66a: 4905 ldr r1, [pc, #20] @ (800e680 ) - 800e66c: 6878 ldr r0, [r7, #4] - 800e66e: f7f9 f83d bl 80076ec - /* We can immediately restart discovery */ - dhcp_discover(netif); - 800e672: 6878 ldr r0, [r7, #4] - 800e674: f000 fc48 bl 800ef08 -} - 800e678: bf00 nop - 800e67a: 3710 adds r7, #16 - 800e67c: 46bd mov sp, r7 - 800e67e: bd80 pop {r7, pc} - 800e680: 0801a5e4 .word 0x0801a5e4 - -0800e684 : - * - * @param netif the netif under DHCP control - */ -static void -dhcp_check(struct netif *netif) -{ - 800e684: b580 push {r7, lr} - 800e686: b084 sub sp, #16 - 800e688: af00 add r7, sp, #0 - 800e68a: 6078 str r0, [r7, #4] - struct dhcp *dhcp = netif_dhcp_data(netif); - 800e68c: 687b ldr r3, [r7, #4] - 800e68e: 6a5b ldr r3, [r3, #36] @ 0x24 - 800e690: 60fb str r3, [r7, #12] - err_t result; - u16_t msecs; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_check(netif=%p) %c%c\n", (void *)netif, (s16_t)netif->name[0], - (s16_t)netif->name[1])); - dhcp_set_state(dhcp, DHCP_STATE_CHECKING); - 800e692: 2108 movs r1, #8 - 800e694: 68f8 ldr r0, [r7, #12] - 800e696: f001 f835 bl 800f704 - /* create an ARP query for the offered IP address, expecting that no host - responds, as the IP address should not be in use. */ - result = etharp_query(netif, &dhcp->offered_ip_addr, NULL); - 800e69a: 68fb ldr r3, [r7, #12] - 800e69c: 331c adds r3, #28 - 800e69e: 2200 movs r2, #0 - 800e6a0: 4619 mov r1, r3 - 800e6a2: 6878 ldr r0, [r7, #4] - 800e6a4: f002 fb36 bl 8010d14 - 800e6a8: 4603 mov r3, r0 - 800e6aa: 72fb strb r3, [r7, #11] - if (result != ERR_OK) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("dhcp_check: could not perform ARP query\n")); - } - if (dhcp->tries < 255) { - 800e6ac: 68fb ldr r3, [r7, #12] - 800e6ae: 799b ldrb r3, [r3, #6] - 800e6b0: 2bff cmp r3, #255 @ 0xff - 800e6b2: d005 beq.n 800e6c0 - dhcp->tries++; - 800e6b4: 68fb ldr r3, [r7, #12] - 800e6b6: 799b ldrb r3, [r3, #6] - 800e6b8: 3301 adds r3, #1 - 800e6ba: b2da uxtb r2, r3 - 800e6bc: 68fb ldr r3, [r7, #12] - 800e6be: 719a strb r2, [r3, #6] - } - msecs = 500; - 800e6c0: f44f 73fa mov.w r3, #500 @ 0x1f4 - 800e6c4: 813b strh r3, [r7, #8] - dhcp->request_timeout = (u16_t)((msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS); - 800e6c6: 893b ldrh r3, [r7, #8] - 800e6c8: f203 13f3 addw r3, r3, #499 @ 0x1f3 - 800e6cc: 4a06 ldr r2, [pc, #24] @ (800e6e8 ) - 800e6ce: fb82 1203 smull r1, r2, r2, r3 - 800e6d2: 1152 asrs r2, r2, #5 - 800e6d4: 17db asrs r3, r3, #31 - 800e6d6: 1ad3 subs r3, r2, r3 - 800e6d8: b29a uxth r2, r3 - 800e6da: 68fb ldr r3, [r7, #12] - 800e6dc: 811a strh r2, [r3, #8] - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_check(): set request timeout %"U16_F" msecs\n", msecs)); -} - 800e6de: bf00 nop - 800e6e0: 3710 adds r7, #16 - 800e6e2: 46bd mov sp, r7 - 800e6e4: bd80 pop {r7, pc} - 800e6e6: bf00 nop - 800e6e8: 10624dd3 .word 0x10624dd3 - -0800e6ec : - * - * @param netif the netif under DHCP control - */ -static void -dhcp_handle_offer(struct netif *netif, struct dhcp_msg *msg_in) -{ - 800e6ec: b580 push {r7, lr} - 800e6ee: b084 sub sp, #16 - 800e6f0: af00 add r7, sp, #0 - 800e6f2: 6078 str r0, [r7, #4] - 800e6f4: 6039 str r1, [r7, #0] - struct dhcp *dhcp = netif_dhcp_data(netif); - 800e6f6: 687b ldr r3, [r7, #4] - 800e6f8: 6a5b ldr r3, [r3, #36] @ 0x24 - 800e6fa: 60fb str r3, [r7, #12] - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_handle_offer(netif=%p) %c%c%"U16_F"\n", - (void *)netif, netif->name[0], netif->name[1], (u16_t)netif->num)); - /* obtain the server address */ - if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_SERVER_ID)) { - 800e6fc: 4b0c ldr r3, [pc, #48] @ (800e730 ) - 800e6fe: 789b ldrb r3, [r3, #2] - 800e700: 2b00 cmp r3, #0 - 800e702: d011 beq.n 800e728 - dhcp->request_timeout = 0; /* stop timer */ - 800e704: 68fb ldr r3, [r7, #12] - 800e706: 2200 movs r2, #0 - 800e708: 811a strh r2, [r3, #8] - - ip_addr_set_ip4_u32(&dhcp->server_ip_addr, lwip_htonl(dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_SERVER_ID))); - 800e70a: 4b0a ldr r3, [pc, #40] @ (800e734 ) - 800e70c: 689b ldr r3, [r3, #8] - 800e70e: 4618 mov r0, r3 - 800e710: f7f8 f98f bl 8006a32 - 800e714: 4602 mov r2, r0 - 800e716: 68fb ldr r3, [r7, #12] - 800e718: 619a str r2, [r3, #24] - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_handle_offer(): server 0x%08"X32_F"\n", - ip4_addr_get_u32(ip_2_ip4(&dhcp->server_ip_addr)))); - /* remember offered address */ - ip4_addr_copy(dhcp->offered_ip_addr, msg_in->yiaddr); - 800e71a: 683b ldr r3, [r7, #0] - 800e71c: 691a ldr r2, [r3, #16] - 800e71e: 68fb ldr r3, [r7, #12] - 800e720: 61da str r2, [r3, #28] - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_handle_offer(): offer for 0x%08"X32_F"\n", - ip4_addr_get_u32(&dhcp->offered_ip_addr))); - - dhcp_select(netif); - 800e722: 6878 ldr r0, [r7, #4] - 800e724: f000 f808 bl 800e738 - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, - ("dhcp_handle_offer(netif=%p) did not get server ID!\n", (void *)netif)); - } -} - 800e728: bf00 nop - 800e72a: 3710 adds r7, #16 - 800e72c: 46bd mov sp, r7 - 800e72e: bd80 pop {r7, pc} - 800e730: 2001916c .word 0x2001916c - 800e734: 2001914c .word 0x2001914c - -0800e738 : - * @param netif the netif under DHCP control - * @return lwIP specific error (see error.h) - */ -static err_t -dhcp_select(struct netif *netif) -{ - 800e738: b5b0 push {r4, r5, r7, lr} - 800e73a: b08a sub sp, #40 @ 0x28 - 800e73c: af02 add r7, sp, #8 - 800e73e: 6078 str r0, [r7, #4] - u16_t msecs; - u8_t i; - struct pbuf *p_out; - u16_t options_out_len; - - LWIP_ERROR("dhcp_select: netif != NULL", (netif != NULL), return ERR_ARG;); - 800e740: 687b ldr r3, [r7, #4] - 800e742: 2b00 cmp r3, #0 - 800e744: d109 bne.n 800e75a - 800e746: 4b71 ldr r3, [pc, #452] @ (800e90c ) - 800e748: f240 1277 movw r2, #375 @ 0x177 - 800e74c: 4970 ldr r1, [pc, #448] @ (800e910 ) - 800e74e: 4871 ldr r0, [pc, #452] @ (800e914 ) - 800e750: f004 fa92 bl 8012c78 - 800e754: f06f 030f mvn.w r3, #15 - 800e758: e0d3 b.n 800e902 - dhcp = netif_dhcp_data(netif); - 800e75a: 687b ldr r3, [r7, #4] - 800e75c: 6a5b ldr r3, [r3, #36] @ 0x24 - 800e75e: 61bb str r3, [r7, #24] - LWIP_ERROR("dhcp_select: dhcp != NULL", (dhcp != NULL), return ERR_VAL;); - 800e760: 69bb ldr r3, [r7, #24] - 800e762: 2b00 cmp r3, #0 - 800e764: d109 bne.n 800e77a - 800e766: 4b69 ldr r3, [pc, #420] @ (800e90c ) - 800e768: f240 1279 movw r2, #377 @ 0x179 - 800e76c: 496a ldr r1, [pc, #424] @ (800e918 ) - 800e76e: 4869 ldr r0, [pc, #420] @ (800e914 ) - 800e770: f004 fa82 bl 8012c78 - 800e774: f06f 0305 mvn.w r3, #5 - 800e778: e0c3 b.n 800e902 - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_select(netif=%p) %c%c%"U16_F"\n", (void *)netif, netif->name[0], netif->name[1], (u16_t)netif->num)); - dhcp_set_state(dhcp, DHCP_STATE_REQUESTING); - 800e77a: 2101 movs r1, #1 - 800e77c: 69b8 ldr r0, [r7, #24] - 800e77e: f000 ffc1 bl 800f704 - - /* create and initialize the DHCP message header */ - p_out = dhcp_create_msg(netif, dhcp, DHCP_REQUEST, &options_out_len); - 800e782: f107 030c add.w r3, r7, #12 - 800e786: 2203 movs r2, #3 - 800e788: 69b9 ldr r1, [r7, #24] - 800e78a: 6878 ldr r0, [r7, #4] - 800e78c: f001 fc46 bl 801001c - 800e790: 6178 str r0, [r7, #20] - if (p_out != NULL) { - 800e792: 697b ldr r3, [r7, #20] - 800e794: 2b00 cmp r3, #0 - 800e796: f000 8085 beq.w 800e8a4 - struct dhcp_msg *msg_out = (struct dhcp_msg *)p_out->payload; - 800e79a: 697b ldr r3, [r7, #20] - 800e79c: 685b ldr r3, [r3, #4] - 800e79e: 613b str r3, [r7, #16] - options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN); - 800e7a0: 89b8 ldrh r0, [r7, #12] - 800e7a2: 693b ldr r3, [r7, #16] - 800e7a4: f103 01f0 add.w r1, r3, #240 @ 0xf0 - 800e7a8: 2302 movs r3, #2 - 800e7aa: 2239 movs r2, #57 @ 0x39 - 800e7ac: f000 ffc4 bl 800f738 - 800e7b0: 4603 mov r3, r0 - 800e7b2: 81bb strh r3, [r7, #12] - options_out_len = dhcp_option_short(options_out_len, msg_out->options, DHCP_MAX_MSG_LEN(netif)); - 800e7b4: 89b8 ldrh r0, [r7, #12] - 800e7b6: 693b ldr r3, [r7, #16] - 800e7b8: f103 01f0 add.w r1, r3, #240 @ 0xf0 - 800e7bc: 687b ldr r3, [r7, #4] - 800e7be: 8d1b ldrh r3, [r3, #40] @ 0x28 - 800e7c0: 461a mov r2, r3 - 800e7c2: f001 f813 bl 800f7ec - 800e7c6: 4603 mov r3, r0 - 800e7c8: 81bb strh r3, [r7, #12] - - /* MUST request the offered IP address */ - options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_REQUESTED_IP, 4); - 800e7ca: 89b8 ldrh r0, [r7, #12] - 800e7cc: 693b ldr r3, [r7, #16] - 800e7ce: f103 01f0 add.w r1, r3, #240 @ 0xf0 - 800e7d2: 2304 movs r3, #4 - 800e7d4: 2232 movs r2, #50 @ 0x32 - 800e7d6: f000 ffaf bl 800f738 - 800e7da: 4603 mov r3, r0 - 800e7dc: 81bb strh r3, [r7, #12] - options_out_len = dhcp_option_long(options_out_len, msg_out->options, lwip_ntohl(ip4_addr_get_u32(&dhcp->offered_ip_addr))); - 800e7de: 89bc ldrh r4, [r7, #12] - 800e7e0: 693b ldr r3, [r7, #16] - 800e7e2: f103 05f0 add.w r5, r3, #240 @ 0xf0 - 800e7e6: 69bb ldr r3, [r7, #24] - 800e7e8: 69db ldr r3, [r3, #28] - 800e7ea: 4618 mov r0, r3 - 800e7ec: f7f8 f921 bl 8006a32 - 800e7f0: 4603 mov r3, r0 - 800e7f2: 461a mov r2, r3 - 800e7f4: 4629 mov r1, r5 - 800e7f6: 4620 mov r0, r4 - 800e7f8: f001 f82a bl 800f850 - 800e7fc: 4603 mov r3, r0 - 800e7fe: 81bb strh r3, [r7, #12] - - options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_SERVER_ID, 4); - 800e800: 89b8 ldrh r0, [r7, #12] - 800e802: 693b ldr r3, [r7, #16] - 800e804: f103 01f0 add.w r1, r3, #240 @ 0xf0 - 800e808: 2304 movs r3, #4 - 800e80a: 2236 movs r2, #54 @ 0x36 - 800e80c: f000 ff94 bl 800f738 - 800e810: 4603 mov r3, r0 - 800e812: 81bb strh r3, [r7, #12] - options_out_len = dhcp_option_long(options_out_len, msg_out->options, lwip_ntohl(ip4_addr_get_u32(ip_2_ip4(&dhcp->server_ip_addr)))); - 800e814: 89bc ldrh r4, [r7, #12] - 800e816: 693b ldr r3, [r7, #16] - 800e818: f103 05f0 add.w r5, r3, #240 @ 0xf0 - 800e81c: 69bb ldr r3, [r7, #24] - 800e81e: 699b ldr r3, [r3, #24] - 800e820: 4618 mov r0, r3 - 800e822: f7f8 f906 bl 8006a32 - 800e826: 4603 mov r3, r0 - 800e828: 461a mov r2, r3 - 800e82a: 4629 mov r1, r5 - 800e82c: 4620 mov r0, r4 - 800e82e: f001 f80f bl 800f850 - 800e832: 4603 mov r3, r0 - 800e834: 81bb strh r3, [r7, #12] - - options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_PARAMETER_REQUEST_LIST, LWIP_ARRAYSIZE(dhcp_discover_request_options)); - 800e836: 89b8 ldrh r0, [r7, #12] - 800e838: 693b ldr r3, [r7, #16] - 800e83a: f103 01f0 add.w r1, r3, #240 @ 0xf0 - 800e83e: 2303 movs r3, #3 - 800e840: 2237 movs r2, #55 @ 0x37 - 800e842: f000 ff79 bl 800f738 - 800e846: 4603 mov r3, r0 - 800e848: 81bb strh r3, [r7, #12] - for (i = 0; i < LWIP_ARRAYSIZE(dhcp_discover_request_options); i++) { - 800e84a: 2300 movs r3, #0 - 800e84c: 77bb strb r3, [r7, #30] - 800e84e: e00e b.n 800e86e - options_out_len = dhcp_option_byte(options_out_len, msg_out->options, dhcp_discover_request_options[i]); - 800e850: 89b8 ldrh r0, [r7, #12] - 800e852: 693b ldr r3, [r7, #16] - 800e854: f103 01f0 add.w r1, r3, #240 @ 0xf0 - 800e858: 7fbb ldrb r3, [r7, #30] - 800e85a: 4a30 ldr r2, [pc, #192] @ (800e91c ) - 800e85c: 5cd3 ldrb r3, [r2, r3] - 800e85e: 461a mov r2, r3 - 800e860: f000 ff9e bl 800f7a0 - 800e864: 4603 mov r3, r0 - 800e866: 81bb strh r3, [r7, #12] - for (i = 0; i < LWIP_ARRAYSIZE(dhcp_discover_request_options); i++) { - 800e868: 7fbb ldrb r3, [r7, #30] - 800e86a: 3301 adds r3, #1 - 800e86c: 77bb strb r3, [r7, #30] - 800e86e: 7fbb ldrb r3, [r7, #30] - 800e870: 2b02 cmp r3, #2 - 800e872: d9ed bls.n 800e850 -#if LWIP_NETIF_HOSTNAME - options_out_len = dhcp_option_hostname(options_out_len, msg_out->options, netif); -#endif /* LWIP_NETIF_HOSTNAME */ - - LWIP_HOOK_DHCP_APPEND_OPTIONS(netif, dhcp, DHCP_STATE_REQUESTING, msg_out, DHCP_REQUEST, &options_out_len); - dhcp_option_trailer(options_out_len, msg_out->options, p_out); - 800e874: 89b8 ldrh r0, [r7, #12] - 800e876: 693b ldr r3, [r7, #16] - 800e878: 33f0 adds r3, #240 @ 0xf0 - 800e87a: 697a ldr r2, [r7, #20] - 800e87c: 4619 mov r1, r3 - 800e87e: f001 fca3 bl 80101c8 - - /* send broadcast to any DHCP server */ - result = udp_sendto_if_src(dhcp_pcb, p_out, IP_ADDR_BROADCAST, LWIP_IANA_PORT_DHCP_SERVER, netif, IP4_ADDR_ANY); - 800e882: 4b27 ldr r3, [pc, #156] @ (800e920 ) - 800e884: 6818 ldr r0, [r3, #0] - 800e886: 4b27 ldr r3, [pc, #156] @ (800e924 ) - 800e888: 9301 str r3, [sp, #4] - 800e88a: 687b ldr r3, [r7, #4] - 800e88c: 9300 str r3, [sp, #0] - 800e88e: 2343 movs r3, #67 @ 0x43 - 800e890: 4a25 ldr r2, [pc, #148] @ (800e928 ) - 800e892: 6979 ldr r1, [r7, #20] - 800e894: f7ff fbda bl 800e04c - 800e898: 4603 mov r3, r0 - 800e89a: 77fb strb r3, [r7, #31] - pbuf_free(p_out); - 800e89c: 6978 ldr r0, [r7, #20] - 800e89e: f7f9 fc03 bl 80080a8 - 800e8a2: e001 b.n 800e8a8 - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_select: REQUESTING\n")); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("dhcp_select: could not allocate DHCP request\n")); - result = ERR_MEM; - 800e8a4: 23ff movs r3, #255 @ 0xff - 800e8a6: 77fb strb r3, [r7, #31] - } - if (dhcp->tries < 255) { - 800e8a8: 69bb ldr r3, [r7, #24] - 800e8aa: 799b ldrb r3, [r3, #6] - 800e8ac: 2bff cmp r3, #255 @ 0xff - 800e8ae: d005 beq.n 800e8bc - dhcp->tries++; - 800e8b0: 69bb ldr r3, [r7, #24] - 800e8b2: 799b ldrb r3, [r3, #6] - 800e8b4: 3301 adds r3, #1 - 800e8b6: b2da uxtb r2, r3 - 800e8b8: 69bb ldr r3, [r7, #24] - 800e8ba: 719a strb r2, [r3, #6] - } - msecs = (u16_t)((dhcp->tries < 6 ? 1 << dhcp->tries : 60) * 1000); - 800e8bc: 69bb ldr r3, [r7, #24] - 800e8be: 799b ldrb r3, [r3, #6] - 800e8c0: 2b05 cmp r3, #5 - 800e8c2: d80d bhi.n 800e8e0 - 800e8c4: 69bb ldr r3, [r7, #24] - 800e8c6: 799b ldrb r3, [r3, #6] - 800e8c8: 461a mov r2, r3 - 800e8ca: 2301 movs r3, #1 - 800e8cc: 4093 lsls r3, r2 - 800e8ce: b29b uxth r3, r3 - 800e8d0: 461a mov r2, r3 - 800e8d2: 0152 lsls r2, r2, #5 - 800e8d4: 1ad2 subs r2, r2, r3 - 800e8d6: 0092 lsls r2, r2, #2 - 800e8d8: 4413 add r3, r2 - 800e8da: 00db lsls r3, r3, #3 - 800e8dc: b29b uxth r3, r3 - 800e8de: e001 b.n 800e8e4 - 800e8e0: f64e 2360 movw r3, #60000 @ 0xea60 - 800e8e4: 81fb strh r3, [r7, #14] - dhcp->request_timeout = (u16_t)((msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS); - 800e8e6: 89fb ldrh r3, [r7, #14] - 800e8e8: f203 13f3 addw r3, r3, #499 @ 0x1f3 - 800e8ec: 4a0f ldr r2, [pc, #60] @ (800e92c ) - 800e8ee: fb82 1203 smull r1, r2, r2, r3 - 800e8f2: 1152 asrs r2, r2, #5 - 800e8f4: 17db asrs r3, r3, #31 - 800e8f6: 1ad3 subs r3, r2, r3 - 800e8f8: b29a uxth r2, r3 - 800e8fa: 69bb ldr r3, [r7, #24] - 800e8fc: 811a strh r2, [r3, #8] - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_select(): set request timeout %"U16_F" msecs\n", msecs)); - return result; - 800e8fe: f997 301f ldrsb.w r3, [r7, #31] -} - 800e902: 4618 mov r0, r3 - 800e904: 3720 adds r7, #32 - 800e906: 46bd mov sp, r7 - 800e908: bdb0 pop {r4, r5, r7, pc} - 800e90a: bf00 nop - 800e90c: 08019a14 .word 0x08019a14 - 800e910: 08019ac0 .word 0x08019ac0 - 800e914: 08019a74 .word 0x08019a74 - 800e918: 08019adc .word 0x08019adc - 800e91c: 2000002c .word 0x2000002c - 800e920: 20019174 .word 0x20019174 - 800e924: 0801a5e4 .word 0x0801a5e4 - 800e928: 0801a5e8 .word 0x0801a5e8 - 800e92c: 10624dd3 .word 0x10624dd3 - -0800e930 : - * The DHCP timer that checks for lease renewal/rebind timeouts. - * Must be called once a minute (see @ref DHCP_COARSE_TIMER_SECS). - */ -void -dhcp_coarse_tmr(void) -{ - 800e930: b580 push {r7, lr} - 800e932: b082 sub sp, #8 - 800e934: af00 add r7, sp, #0 - struct netif *netif; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_coarse_tmr()\n")); - /* iterate through all network interfaces */ - NETIF_FOREACH(netif) { - 800e936: 4b27 ldr r3, [pc, #156] @ (800e9d4 ) - 800e938: 681b ldr r3, [r3, #0] - 800e93a: 607b str r3, [r7, #4] - 800e93c: e042 b.n 800e9c4 - /* only act on DHCP configured interfaces */ - struct dhcp *dhcp = netif_dhcp_data(netif); - 800e93e: 687b ldr r3, [r7, #4] - 800e940: 6a5b ldr r3, [r3, #36] @ 0x24 - 800e942: 603b str r3, [r7, #0] - if ((dhcp != NULL) && (dhcp->state != DHCP_STATE_OFF)) { - 800e944: 683b ldr r3, [r7, #0] - 800e946: 2b00 cmp r3, #0 - 800e948: d039 beq.n 800e9be - 800e94a: 683b ldr r3, [r7, #0] - 800e94c: 795b ldrb r3, [r3, #5] - 800e94e: 2b00 cmp r3, #0 - 800e950: d035 beq.n 800e9be - /* compare lease time to expire timeout */ - if (dhcp->t0_timeout && (++dhcp->lease_used == dhcp->t0_timeout)) { - 800e952: 683b ldr r3, [r7, #0] - 800e954: 8a9b ldrh r3, [r3, #20] - 800e956: 2b00 cmp r3, #0 - 800e958: d012 beq.n 800e980 - 800e95a: 683b ldr r3, [r7, #0] - 800e95c: 8a5b ldrh r3, [r3, #18] - 800e95e: 3301 adds r3, #1 - 800e960: b29a uxth r2, r3 - 800e962: 683b ldr r3, [r7, #0] - 800e964: 825a strh r2, [r3, #18] - 800e966: 683b ldr r3, [r7, #0] - 800e968: 8a5a ldrh r2, [r3, #18] - 800e96a: 683b ldr r3, [r7, #0] - 800e96c: 8a9b ldrh r3, [r3, #20] - 800e96e: 429a cmp r2, r3 - 800e970: d106 bne.n 800e980 - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_coarse_tmr(): t0 timeout\n")); - /* this clients' lease time has expired */ - dhcp_release_and_stop(netif); - 800e972: 6878 ldr r0, [r7, #4] - 800e974: f000 fe2c bl 800f5d0 - dhcp_start(netif); - 800e978: 6878 ldr r0, [r7, #4] - 800e97a: f000 f969 bl 800ec50 - 800e97e: e01e b.n 800e9be - /* timer is active (non zero), and triggers (zeroes) now? */ - } else if (dhcp->t2_rebind_time && (dhcp->t2_rebind_time-- == 1)) { - 800e980: 683b ldr r3, [r7, #0] - 800e982: 8a1b ldrh r3, [r3, #16] - 800e984: 2b00 cmp r3, #0 - 800e986: d00b beq.n 800e9a0 - 800e988: 683b ldr r3, [r7, #0] - 800e98a: 8a1b ldrh r3, [r3, #16] - 800e98c: 1e5a subs r2, r3, #1 - 800e98e: b291 uxth r1, r2 - 800e990: 683a ldr r2, [r7, #0] - 800e992: 8211 strh r1, [r2, #16] - 800e994: 2b01 cmp r3, #1 - 800e996: d103 bne.n 800e9a0 - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_coarse_tmr(): t2 timeout\n")); - /* this clients' rebind timeout triggered */ - dhcp_t2_timeout(netif); - 800e998: 6878 ldr r0, [r7, #4] - 800e99a: f000 f8c6 bl 800eb2a - 800e99e: e00e b.n 800e9be - /* timer is active (non zero), and triggers (zeroes) now */ - } else if (dhcp->t1_renew_time && (dhcp->t1_renew_time-- == 1)) { - 800e9a0: 683b ldr r3, [r7, #0] - 800e9a2: 89db ldrh r3, [r3, #14] - 800e9a4: 2b00 cmp r3, #0 - 800e9a6: d00a beq.n 800e9be - 800e9a8: 683b ldr r3, [r7, #0] - 800e9aa: 89db ldrh r3, [r3, #14] - 800e9ac: 1e5a subs r2, r3, #1 - 800e9ae: b291 uxth r1, r2 - 800e9b0: 683a ldr r2, [r7, #0] - 800e9b2: 81d1 strh r1, [r2, #14] - 800e9b4: 2b01 cmp r3, #1 - 800e9b6: d102 bne.n 800e9be - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_coarse_tmr(): t1 timeout\n")); - /* this clients' renewal timeout triggered */ - dhcp_t1_timeout(netif); - 800e9b8: 6878 ldr r0, [r7, #4] - 800e9ba: f000 f888 bl 800eace - NETIF_FOREACH(netif) { - 800e9be: 687b ldr r3, [r7, #4] - 800e9c0: 681b ldr r3, [r3, #0] - 800e9c2: 607b str r3, [r7, #4] - 800e9c4: 687b ldr r3, [r7, #4] - 800e9c6: 2b00 cmp r3, #0 - 800e9c8: d1b9 bne.n 800e93e - } - } - } -} - 800e9ca: bf00 nop - 800e9cc: bf00 nop - 800e9ce: 3708 adds r7, #8 - 800e9d0: 46bd mov sp, r7 - 800e9d2: bd80 pop {r7, pc} - 800e9d4: 200190e0 .word 0x200190e0 - -0800e9d8 : - * A DHCP server is expected to respond within a short period of time. - * This timer checks whether an outstanding DHCP request is timed out. - */ -void -dhcp_fine_tmr(void) -{ - 800e9d8: b580 push {r7, lr} - 800e9da: b082 sub sp, #8 - 800e9dc: af00 add r7, sp, #0 - struct netif *netif; - /* loop through netif's */ - NETIF_FOREACH(netif) { - 800e9de: 4b16 ldr r3, [pc, #88] @ (800ea38 ) - 800e9e0: 681b ldr r3, [r3, #0] - 800e9e2: 607b str r3, [r7, #4] - 800e9e4: e020 b.n 800ea28 - struct dhcp *dhcp = netif_dhcp_data(netif); - 800e9e6: 687b ldr r3, [r7, #4] - 800e9e8: 6a5b ldr r3, [r3, #36] @ 0x24 - 800e9ea: 603b str r3, [r7, #0] - /* only act on DHCP configured interfaces */ - if (dhcp != NULL) { - 800e9ec: 683b ldr r3, [r7, #0] - 800e9ee: 2b00 cmp r3, #0 - 800e9f0: d017 beq.n 800ea22 - /* timer is active (non zero), and is about to trigger now */ - if (dhcp->request_timeout > 1) { - 800e9f2: 683b ldr r3, [r7, #0] - 800e9f4: 891b ldrh r3, [r3, #8] - 800e9f6: 2b01 cmp r3, #1 - 800e9f8: d906 bls.n 800ea08 - dhcp->request_timeout--; - 800e9fa: 683b ldr r3, [r7, #0] - 800e9fc: 891b ldrh r3, [r3, #8] - 800e9fe: 3b01 subs r3, #1 - 800ea00: b29a uxth r2, r3 - 800ea02: 683b ldr r3, [r7, #0] - 800ea04: 811a strh r2, [r3, #8] - 800ea06: e00c b.n 800ea22 - } else if (dhcp->request_timeout == 1) { - 800ea08: 683b ldr r3, [r7, #0] - 800ea0a: 891b ldrh r3, [r3, #8] - 800ea0c: 2b01 cmp r3, #1 - 800ea0e: d108 bne.n 800ea22 - dhcp->request_timeout--; - 800ea10: 683b ldr r3, [r7, #0] - 800ea12: 891b ldrh r3, [r3, #8] - 800ea14: 3b01 subs r3, #1 - 800ea16: b29a uxth r2, r3 - 800ea18: 683b ldr r3, [r7, #0] - 800ea1a: 811a strh r2, [r3, #8] - /* { dhcp->request_timeout == 0 } */ - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_fine_tmr(): request timeout\n")); - /* this client's request timeout triggered */ - dhcp_timeout(netif); - 800ea1c: 6878 ldr r0, [r7, #4] - 800ea1e: f000 f80d bl 800ea3c - NETIF_FOREACH(netif) { - 800ea22: 687b ldr r3, [r7, #4] - 800ea24: 681b ldr r3, [r3, #0] - 800ea26: 607b str r3, [r7, #4] - 800ea28: 687b ldr r3, [r7, #4] - 800ea2a: 2b00 cmp r3, #0 - 800ea2c: d1db bne.n 800e9e6 - } - } - } -} - 800ea2e: bf00 nop - 800ea30: bf00 nop - 800ea32: 3708 adds r7, #8 - 800ea34: 46bd mov sp, r7 - 800ea36: bd80 pop {r7, pc} - 800ea38: 200190e0 .word 0x200190e0 - -0800ea3c : - * - * @param netif the netif under DHCP control - */ -static void -dhcp_timeout(struct netif *netif) -{ - 800ea3c: b580 push {r7, lr} - 800ea3e: b084 sub sp, #16 - 800ea40: af00 add r7, sp, #0 - 800ea42: 6078 str r0, [r7, #4] - struct dhcp *dhcp = netif_dhcp_data(netif); - 800ea44: 687b ldr r3, [r7, #4] - 800ea46: 6a5b ldr r3, [r3, #36] @ 0x24 - 800ea48: 60fb str r3, [r7, #12] - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_timeout()\n")); - /* back-off period has passed, or server selection timed out */ - if ((dhcp->state == DHCP_STATE_BACKING_OFF) || (dhcp->state == DHCP_STATE_SELECTING)) { - 800ea4a: 68fb ldr r3, [r7, #12] - 800ea4c: 795b ldrb r3, [r3, #5] - 800ea4e: 2b0c cmp r3, #12 - 800ea50: d003 beq.n 800ea5a - 800ea52: 68fb ldr r3, [r7, #12] - 800ea54: 795b ldrb r3, [r3, #5] - 800ea56: 2b06 cmp r3, #6 - 800ea58: d103 bne.n 800ea62 - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_timeout(): restarting discovery\n")); - dhcp_discover(netif); - 800ea5a: 6878 ldr r0, [r7, #4] - 800ea5c: f000 fa54 bl 800ef08 - dhcp_reboot(netif); - } else { - dhcp_discover(netif); - } - } -} - 800ea60: e031 b.n 800eac6 - } else if (dhcp->state == DHCP_STATE_REQUESTING) { - 800ea62: 68fb ldr r3, [r7, #12] - 800ea64: 795b ldrb r3, [r3, #5] - 800ea66: 2b01 cmp r3, #1 - 800ea68: d10e bne.n 800ea88 - if (dhcp->tries <= 5) { - 800ea6a: 68fb ldr r3, [r7, #12] - 800ea6c: 799b ldrb r3, [r3, #6] - 800ea6e: 2b05 cmp r3, #5 - 800ea70: d803 bhi.n 800ea7a - dhcp_select(netif); - 800ea72: 6878 ldr r0, [r7, #4] - 800ea74: f7ff fe60 bl 800e738 -} - 800ea78: e025 b.n 800eac6 - dhcp_release_and_stop(netif); - 800ea7a: 6878 ldr r0, [r7, #4] - 800ea7c: f000 fda8 bl 800f5d0 - dhcp_start(netif); - 800ea80: 6878 ldr r0, [r7, #4] - 800ea82: f000 f8e5 bl 800ec50 -} - 800ea86: e01e b.n 800eac6 - } else if (dhcp->state == DHCP_STATE_CHECKING) { - 800ea88: 68fb ldr r3, [r7, #12] - 800ea8a: 795b ldrb r3, [r3, #5] - 800ea8c: 2b08 cmp r3, #8 - 800ea8e: d10b bne.n 800eaa8 - if (dhcp->tries <= 1) { - 800ea90: 68fb ldr r3, [r7, #12] - 800ea92: 799b ldrb r3, [r3, #6] - 800ea94: 2b01 cmp r3, #1 - 800ea96: d803 bhi.n 800eaa0 - dhcp_check(netif); - 800ea98: 6878 ldr r0, [r7, #4] - 800ea9a: f7ff fdf3 bl 800e684 -} - 800ea9e: e012 b.n 800eac6 - dhcp_bind(netif); - 800eaa0: 6878 ldr r0, [r7, #4] - 800eaa2: f000 fad3 bl 800f04c -} - 800eaa6: e00e b.n 800eac6 - } else if (dhcp->state == DHCP_STATE_REBOOTING) { - 800eaa8: 68fb ldr r3, [r7, #12] - 800eaaa: 795b ldrb r3, [r3, #5] - 800eaac: 2b03 cmp r3, #3 - 800eaae: d10a bne.n 800eac6 - if (dhcp->tries < REBOOT_TRIES) { - 800eab0: 68fb ldr r3, [r7, #12] - 800eab2: 799b ldrb r3, [r3, #6] - 800eab4: 2b01 cmp r3, #1 - 800eab6: d803 bhi.n 800eac0 - dhcp_reboot(netif); - 800eab8: 6878 ldr r0, [r7, #4] - 800eaba: f000 fcd5 bl 800f468 -} - 800eabe: e002 b.n 800eac6 - dhcp_discover(netif); - 800eac0: 6878 ldr r0, [r7, #4] - 800eac2: f000 fa21 bl 800ef08 -} - 800eac6: bf00 nop - 800eac8: 3710 adds r7, #16 - 800eaca: 46bd mov sp, r7 - 800eacc: bd80 pop {r7, pc} - -0800eace : - * - * @param netif the netif under DHCP control - */ -static void -dhcp_t1_timeout(struct netif *netif) -{ - 800eace: b580 push {r7, lr} - 800ead0: b084 sub sp, #16 - 800ead2: af00 add r7, sp, #0 - 800ead4: 6078 str r0, [r7, #4] - struct dhcp *dhcp = netif_dhcp_data(netif); - 800ead6: 687b ldr r3, [r7, #4] - 800ead8: 6a5b ldr r3, [r3, #36] @ 0x24 - 800eada: 60fb str r3, [r7, #12] - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_t1_timeout()\n")); - if ((dhcp->state == DHCP_STATE_REQUESTING) || (dhcp->state == DHCP_STATE_BOUND) || - 800eadc: 68fb ldr r3, [r7, #12] - 800eade: 795b ldrb r3, [r3, #5] - 800eae0: 2b01 cmp r3, #1 - 800eae2: d007 beq.n 800eaf4 - 800eae4: 68fb ldr r3, [r7, #12] - 800eae6: 795b ldrb r3, [r3, #5] - 800eae8: 2b0a cmp r3, #10 - 800eaea: d003 beq.n 800eaf4 - (dhcp->state == DHCP_STATE_RENEWING)) { - 800eaec: 68fb ldr r3, [r7, #12] - 800eaee: 795b ldrb r3, [r3, #5] - if ((dhcp->state == DHCP_STATE_REQUESTING) || (dhcp->state == DHCP_STATE_BOUND) || - 800eaf0: 2b05 cmp r3, #5 - 800eaf2: d116 bne.n 800eb22 - * eventually time-out if renew tries fail. */ - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, - ("dhcp_t1_timeout(): must renew\n")); - /* This slightly different to RFC2131: DHCPREQUEST will be sent from state - DHCP_STATE_RENEWING, not DHCP_STATE_BOUND */ - dhcp_renew(netif); - 800eaf4: 6878 ldr r0, [r7, #4] - 800eaf6: f000 fb83 bl 800f200 - /* Calculate next timeout */ - if (((dhcp->t2_timeout - dhcp->lease_used) / 2) >= ((60 + DHCP_COARSE_TIMER_SECS / 2) / DHCP_COARSE_TIMER_SECS)) { - 800eafa: 68fb ldr r3, [r7, #12] - 800eafc: 899b ldrh r3, [r3, #12] - 800eafe: 461a mov r2, r3 - 800eb00: 68fb ldr r3, [r7, #12] - 800eb02: 8a5b ldrh r3, [r3, #18] - 800eb04: 1ad3 subs r3, r2, r3 - 800eb06: 2b01 cmp r3, #1 - 800eb08: dd0b ble.n 800eb22 - dhcp->t1_renew_time = (u16_t)((dhcp->t2_timeout - dhcp->lease_used) / 2); - 800eb0a: 68fb ldr r3, [r7, #12] - 800eb0c: 899b ldrh r3, [r3, #12] - 800eb0e: 461a mov r2, r3 - 800eb10: 68fb ldr r3, [r7, #12] - 800eb12: 8a5b ldrh r3, [r3, #18] - 800eb14: 1ad3 subs r3, r2, r3 - 800eb16: 0fda lsrs r2, r3, #31 - 800eb18: 4413 add r3, r2 - 800eb1a: 105b asrs r3, r3, #1 - 800eb1c: b29a uxth r2, r3 - 800eb1e: 68fb ldr r3, [r7, #12] - 800eb20: 81da strh r2, [r3, #14] - } - } -} - 800eb22: bf00 nop - 800eb24: 3710 adds r7, #16 - 800eb26: 46bd mov sp, r7 - 800eb28: bd80 pop {r7, pc} - -0800eb2a : - * - * @param netif the netif under DHCP control - */ -static void -dhcp_t2_timeout(struct netif *netif) -{ - 800eb2a: b580 push {r7, lr} - 800eb2c: b084 sub sp, #16 - 800eb2e: af00 add r7, sp, #0 - 800eb30: 6078 str r0, [r7, #4] - struct dhcp *dhcp = netif_dhcp_data(netif); - 800eb32: 687b ldr r3, [r7, #4] - 800eb34: 6a5b ldr r3, [r3, #36] @ 0x24 - 800eb36: 60fb str r3, [r7, #12] - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_t2_timeout()\n")); - if ((dhcp->state == DHCP_STATE_REQUESTING) || (dhcp->state == DHCP_STATE_BOUND) || - 800eb38: 68fb ldr r3, [r7, #12] - 800eb3a: 795b ldrb r3, [r3, #5] - 800eb3c: 2b01 cmp r3, #1 - 800eb3e: d00b beq.n 800eb58 - 800eb40: 68fb ldr r3, [r7, #12] - 800eb42: 795b ldrb r3, [r3, #5] - 800eb44: 2b0a cmp r3, #10 - 800eb46: d007 beq.n 800eb58 - (dhcp->state == DHCP_STATE_RENEWING) || (dhcp->state == DHCP_STATE_REBINDING)) { - 800eb48: 68fb ldr r3, [r7, #12] - 800eb4a: 795b ldrb r3, [r3, #5] - if ((dhcp->state == DHCP_STATE_REQUESTING) || (dhcp->state == DHCP_STATE_BOUND) || - 800eb4c: 2b05 cmp r3, #5 - 800eb4e: d003 beq.n 800eb58 - (dhcp->state == DHCP_STATE_RENEWING) || (dhcp->state == DHCP_STATE_REBINDING)) { - 800eb50: 68fb ldr r3, [r7, #12] - 800eb52: 795b ldrb r3, [r3, #5] - 800eb54: 2b04 cmp r3, #4 - 800eb56: d116 bne.n 800eb86 - /* just retry to rebind */ - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, - ("dhcp_t2_timeout(): must rebind\n")); - /* This slightly different to RFC2131: DHCPREQUEST will be sent from state - DHCP_STATE_REBINDING, not DHCP_STATE_BOUND */ - dhcp_rebind(netif); - 800eb58: 6878 ldr r0, [r7, #4] - 800eb5a: f000 fbeb bl 800f334 - /* Calculate next timeout */ - if (((dhcp->t0_timeout - dhcp->lease_used) / 2) >= ((60 + DHCP_COARSE_TIMER_SECS / 2) / DHCP_COARSE_TIMER_SECS)) { - 800eb5e: 68fb ldr r3, [r7, #12] - 800eb60: 8a9b ldrh r3, [r3, #20] - 800eb62: 461a mov r2, r3 - 800eb64: 68fb ldr r3, [r7, #12] - 800eb66: 8a5b ldrh r3, [r3, #18] - 800eb68: 1ad3 subs r3, r2, r3 - 800eb6a: 2b01 cmp r3, #1 - 800eb6c: dd0b ble.n 800eb86 - dhcp->t2_rebind_time = (u16_t)((dhcp->t0_timeout - dhcp->lease_used) / 2); - 800eb6e: 68fb ldr r3, [r7, #12] - 800eb70: 8a9b ldrh r3, [r3, #20] - 800eb72: 461a mov r2, r3 - 800eb74: 68fb ldr r3, [r7, #12] - 800eb76: 8a5b ldrh r3, [r3, #18] - 800eb78: 1ad3 subs r3, r2, r3 - 800eb7a: 0fda lsrs r2, r3, #31 - 800eb7c: 4413 add r3, r2 - 800eb7e: 105b asrs r3, r3, #1 - 800eb80: b29a uxth r2, r3 - 800eb82: 68fb ldr r3, [r7, #12] - 800eb84: 821a strh r2, [r3, #16] - } - } -} - 800eb86: bf00 nop - 800eb88: 3710 adds r7, #16 - 800eb8a: 46bd mov sp, r7 - 800eb8c: bd80 pop {r7, pc} - ... - -0800eb90 : - * - * @param netif the netif under DHCP control - */ -static void -dhcp_handle_ack(struct netif *netif, struct dhcp_msg *msg_in) -{ - 800eb90: b580 push {r7, lr} - 800eb92: b084 sub sp, #16 - 800eb94: af00 add r7, sp, #0 - 800eb96: 6078 str r0, [r7, #4] - 800eb98: 6039 str r1, [r7, #0] - struct dhcp *dhcp = netif_dhcp_data(netif); - 800eb9a: 687b ldr r3, [r7, #4] - 800eb9c: 6a5b ldr r3, [r3, #36] @ 0x24 - 800eb9e: 60fb str r3, [r7, #12] -#if LWIP_DHCP_GET_NTP_SRV - ip4_addr_t ntp_server_addrs[LWIP_DHCP_MAX_NTP_SERVERS]; -#endif - - /* clear options we might not get from the ACK */ - ip4_addr_set_zero(&dhcp->offered_sn_mask); - 800eba0: 68fb ldr r3, [r7, #12] - 800eba2: 2200 movs r2, #0 - 800eba4: 621a str r2, [r3, #32] - ip4_addr_set_zero(&dhcp->offered_gw_addr); - 800eba6: 68fb ldr r3, [r7, #12] - 800eba8: 2200 movs r2, #0 - 800ebaa: 625a str r2, [r3, #36] @ 0x24 -#if LWIP_DHCP_BOOTP_FILE - ip4_addr_set_zero(&dhcp->offered_si_addr); -#endif /* LWIP_DHCP_BOOTP_FILE */ - - /* lease time given? */ - if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_LEASE_TIME)) { - 800ebac: 4b26 ldr r3, [pc, #152] @ (800ec48 ) - 800ebae: 78db ldrb r3, [r3, #3] - 800ebb0: 2b00 cmp r3, #0 - 800ebb2: d003 beq.n 800ebbc - /* remember offered lease time */ - dhcp->offered_t0_lease = dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_LEASE_TIME); - 800ebb4: 4b25 ldr r3, [pc, #148] @ (800ec4c ) - 800ebb6: 68da ldr r2, [r3, #12] - 800ebb8: 68fb ldr r3, [r7, #12] - 800ebba: 629a str r2, [r3, #40] @ 0x28 - } - /* renewal period given? */ - if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_T1)) { - 800ebbc: 4b22 ldr r3, [pc, #136] @ (800ec48 ) - 800ebbe: 791b ldrb r3, [r3, #4] - 800ebc0: 2b00 cmp r3, #0 - 800ebc2: d004 beq.n 800ebce - /* remember given renewal period */ - dhcp->offered_t1_renew = dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_T1); - 800ebc4: 4b21 ldr r3, [pc, #132] @ (800ec4c ) - 800ebc6: 691a ldr r2, [r3, #16] - 800ebc8: 68fb ldr r3, [r7, #12] - 800ebca: 62da str r2, [r3, #44] @ 0x2c - 800ebcc: e004 b.n 800ebd8 - } else { - /* calculate safe periods for renewal */ - dhcp->offered_t1_renew = dhcp->offered_t0_lease / 2; - 800ebce: 68fb ldr r3, [r7, #12] - 800ebd0: 6a9b ldr r3, [r3, #40] @ 0x28 - 800ebd2: 085a lsrs r2, r3, #1 - 800ebd4: 68fb ldr r3, [r7, #12] - 800ebd6: 62da str r2, [r3, #44] @ 0x2c - } - - /* renewal period given? */ - if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_T2)) { - 800ebd8: 4b1b ldr r3, [pc, #108] @ (800ec48 ) - 800ebda: 795b ldrb r3, [r3, #5] - 800ebdc: 2b00 cmp r3, #0 - 800ebde: d004 beq.n 800ebea - /* remember given rebind period */ - dhcp->offered_t2_rebind = dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_T2); - 800ebe0: 4b1a ldr r3, [pc, #104] @ (800ec4c ) - 800ebe2: 695a ldr r2, [r3, #20] - 800ebe4: 68fb ldr r3, [r7, #12] - 800ebe6: 631a str r2, [r3, #48] @ 0x30 - 800ebe8: e007 b.n 800ebfa - } else { - /* calculate safe periods for rebinding (offered_t0_lease * 0.875 -> 87.5%)*/ - dhcp->offered_t2_rebind = (dhcp->offered_t0_lease * 7U) / 8U; - 800ebea: 68fb ldr r3, [r7, #12] - 800ebec: 6a9a ldr r2, [r3, #40] @ 0x28 - 800ebee: 4613 mov r3, r2 - 800ebf0: 00db lsls r3, r3, #3 - 800ebf2: 1a9b subs r3, r3, r2 - 800ebf4: 08da lsrs r2, r3, #3 - 800ebf6: 68fb ldr r3, [r7, #12] - 800ebf8: 631a str r2, [r3, #48] @ 0x30 - } - - /* (y)our internet address */ - ip4_addr_copy(dhcp->offered_ip_addr, msg_in->yiaddr); - 800ebfa: 683b ldr r3, [r7, #0] - 800ebfc: 691a ldr r2, [r3, #16] - 800ebfe: 68fb ldr r3, [r7, #12] - 800ec00: 61da str r2, [r3, #28] - boot file name copied in dhcp_parse_reply if not overloaded */ - ip4_addr_copy(dhcp->offered_si_addr, msg_in->siaddr); -#endif /* LWIP_DHCP_BOOTP_FILE */ - - /* subnet mask given? */ - if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_SUBNET_MASK)) { - 800ec02: 4b11 ldr r3, [pc, #68] @ (800ec48 ) - 800ec04: 799b ldrb r3, [r3, #6] - 800ec06: 2b00 cmp r3, #0 - 800ec08: d00b beq.n 800ec22 - /* remember given subnet mask */ - ip4_addr_set_u32(&dhcp->offered_sn_mask, lwip_htonl(dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_SUBNET_MASK))); - 800ec0a: 4b10 ldr r3, [pc, #64] @ (800ec4c ) - 800ec0c: 699b ldr r3, [r3, #24] - 800ec0e: 4618 mov r0, r3 - 800ec10: f7f7 ff0f bl 8006a32 - 800ec14: 4602 mov r2, r0 - 800ec16: 68fb ldr r3, [r7, #12] - 800ec18: 621a str r2, [r3, #32] - dhcp->subnet_mask_given = 1; - 800ec1a: 68fb ldr r3, [r7, #12] - 800ec1c: 2201 movs r2, #1 - 800ec1e: 71da strb r2, [r3, #7] - 800ec20: e002 b.n 800ec28 - } else { - dhcp->subnet_mask_given = 0; - 800ec22: 68fb ldr r3, [r7, #12] - 800ec24: 2200 movs r2, #0 - 800ec26: 71da strb r2, [r3, #7] - } - - /* gateway router */ - if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_ROUTER)) { - 800ec28: 4b07 ldr r3, [pc, #28] @ (800ec48 ) - 800ec2a: 79db ldrb r3, [r3, #7] - 800ec2c: 2b00 cmp r3, #0 - 800ec2e: d007 beq.n 800ec40 - ip4_addr_set_u32(&dhcp->offered_gw_addr, lwip_htonl(dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_ROUTER))); - 800ec30: 4b06 ldr r3, [pc, #24] @ (800ec4c ) - 800ec32: 69db ldr r3, [r3, #28] - 800ec34: 4618 mov r0, r3 - 800ec36: f7f7 fefc bl 8006a32 - 800ec3a: 4602 mov r2, r0 - 800ec3c: 68fb ldr r3, [r7, #12] - 800ec3e: 625a str r2, [r3, #36] @ 0x24 - ip_addr_t dns_addr; - ip_addr_set_ip4_u32_val(dns_addr, lwip_htonl(dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_DNS_SERVER + n))); - dns_setserver(n, &dns_addr); - } -#endif /* LWIP_DHCP_PROVIDE_DNS_SERVERS */ -} - 800ec40: bf00 nop - 800ec42: 3710 adds r7, #16 - 800ec44: 46bd mov sp, r7 - 800ec46: bd80 pop {r7, pc} - 800ec48: 2001916c .word 0x2001916c - 800ec4c: 2001914c .word 0x2001914c - -0800ec50 : - * - ERR_OK - No error - * - ERR_MEM - Out of memory - */ -err_t -dhcp_start(struct netif *netif) -{ - 800ec50: b580 push {r7, lr} - 800ec52: b084 sub sp, #16 - 800ec54: af00 add r7, sp, #0 - 800ec56: 6078 str r0, [r7, #4] - struct dhcp *dhcp; - err_t result; - - LWIP_ASSERT_CORE_LOCKED(); - LWIP_ERROR("netif != NULL", (netif != NULL), return ERR_ARG;); - 800ec58: 687b ldr r3, [r7, #4] - 800ec5a: 2b00 cmp r3, #0 - 800ec5c: d109 bne.n 800ec72 - 800ec5e: 4b37 ldr r3, [pc, #220] @ (800ed3c ) - 800ec60: f240 22e7 movw r2, #743 @ 0x2e7 - 800ec64: 4936 ldr r1, [pc, #216] @ (800ed40 ) - 800ec66: 4837 ldr r0, [pc, #220] @ (800ed44 ) - 800ec68: f004 f806 bl 8012c78 - 800ec6c: f06f 030f mvn.w r3, #15 - 800ec70: e060 b.n 800ed34 - LWIP_ERROR("netif is not up, old style port?", netif_is_up(netif), return ERR_ARG;); - 800ec72: 687b ldr r3, [r7, #4] - 800ec74: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 - 800ec78: f003 0301 and.w r3, r3, #1 - 800ec7c: 2b00 cmp r3, #0 - 800ec7e: d109 bne.n 800ec94 - 800ec80: 4b2e ldr r3, [pc, #184] @ (800ed3c ) - 800ec82: f44f 723a mov.w r2, #744 @ 0x2e8 - 800ec86: 4930 ldr r1, [pc, #192] @ (800ed48 ) - 800ec88: 482e ldr r0, [pc, #184] @ (800ed44 ) - 800ec8a: f003 fff5 bl 8012c78 - 800ec8e: f06f 030f mvn.w r3, #15 - 800ec92: e04f b.n 800ed34 - dhcp = netif_dhcp_data(netif); - 800ec94: 687b ldr r3, [r7, #4] - 800ec96: 6a5b ldr r3, [r3, #36] @ 0x24 - 800ec98: 60fb str r3, [r7, #12] - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_start(netif=%p) %c%c%"U16_F"\n", (void *)netif, netif->name[0], netif->name[1], (u16_t)netif->num)); - - /* check MTU of the netif */ - if (netif->mtu < DHCP_MAX_MSG_LEN_MIN_REQUIRED) { - 800ec9a: 687b ldr r3, [r7, #4] - 800ec9c: 8d1b ldrh r3, [r3, #40] @ 0x28 - 800ec9e: f5b3 7f10 cmp.w r3, #576 @ 0x240 - 800eca2: d202 bcs.n 800ecaa - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): Cannot use this netif with DHCP: MTU is too small\n")); - return ERR_MEM; - 800eca4: f04f 33ff mov.w r3, #4294967295 - 800eca8: e044 b.n 800ed34 - } - - /* no DHCP client attached yet? */ - if (dhcp == NULL) { - 800ecaa: 68fb ldr r3, [r7, #12] - 800ecac: 2b00 cmp r3, #0 - 800ecae: d10d bne.n 800eccc - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): mallocing new DHCP client\n")); - dhcp = (struct dhcp *)mem_malloc(sizeof(struct dhcp)); - 800ecb0: 2034 movs r0, #52 @ 0x34 - 800ecb2: f7f8 f983 bl 8006fbc - 800ecb6: 60f8 str r0, [r7, #12] - if (dhcp == NULL) { - 800ecb8: 68fb ldr r3, [r7, #12] - 800ecba: 2b00 cmp r3, #0 - 800ecbc: d102 bne.n 800ecc4 - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): could not allocate dhcp\n")); - return ERR_MEM; - 800ecbe: f04f 33ff mov.w r3, #4294967295 - 800ecc2: e037 b.n 800ed34 - } - - /* store this dhcp client in the netif */ - netif_set_client_data(netif, LWIP_NETIF_CLIENT_DATA_INDEX_DHCP, dhcp); - 800ecc4: 687b ldr r3, [r7, #4] - 800ecc6: 68fa ldr r2, [r7, #12] - 800ecc8: 625a str r2, [r3, #36] @ 0x24 - 800ecca: e005 b.n 800ecd8 - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): allocated dhcp")); - /* already has DHCP client attached */ - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_start(): restarting DHCP configuration\n")); - - if (dhcp->pcb_allocated != 0) { - 800eccc: 68fb ldr r3, [r7, #12] - 800ecce: 791b ldrb r3, [r3, #4] - 800ecd0: 2b00 cmp r3, #0 - 800ecd2: d001 beq.n 800ecd8 - dhcp_dec_pcb_refcount(); /* free DHCP PCB if not needed any more */ - 800ecd4: f7ff fc92 bl 800e5fc - } - /* dhcp is cleared below, no need to reset flag*/ - } - - /* clear data structure */ - memset(dhcp, 0, sizeof(struct dhcp)); - 800ecd8: 2234 movs r2, #52 @ 0x34 - 800ecda: 2100 movs r1, #0 - 800ecdc: 68f8 ldr r0, [r7, #12] - 800ecde: f004 f84a bl 8012d76 - /* dhcp_set_state(&dhcp, DHCP_STATE_OFF); */ - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): starting DHCP configuration\n")); - - if (dhcp_inc_pcb_refcount() != ERR_OK) { /* ensure DHCP PCB is allocated */ - 800ece2: f7ff fc39 bl 800e558 - 800ece6: 4603 mov r3, r0 - 800ece8: 2b00 cmp r3, #0 - 800ecea: d002 beq.n 800ecf2 - return ERR_MEM; - 800ecec: f04f 33ff mov.w r3, #4294967295 - 800ecf0: e020 b.n 800ed34 - } - dhcp->pcb_allocated = 1; - 800ecf2: 68fb ldr r3, [r7, #12] - 800ecf4: 2201 movs r2, #1 - 800ecf6: 711a strb r2, [r3, #4] - - if (!netif_is_link_up(netif)) { - 800ecf8: 687b ldr r3, [r7, #4] - 800ecfa: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 - 800ecfe: f003 0304 and.w r3, r3, #4 - 800ed02: 2b00 cmp r3, #0 - 800ed04: d105 bne.n 800ed12 - /* set state INIT and wait for dhcp_network_changed() to call dhcp_discover() */ - dhcp_set_state(dhcp, DHCP_STATE_INIT); - 800ed06: 2102 movs r1, #2 - 800ed08: 68f8 ldr r0, [r7, #12] - 800ed0a: f000 fcfb bl 800f704 - return ERR_OK; - 800ed0e: 2300 movs r3, #0 - 800ed10: e010 b.n 800ed34 - } - - /* (re)start the DHCP negotiation */ - result = dhcp_discover(netif); - 800ed12: 6878 ldr r0, [r7, #4] - 800ed14: f000 f8f8 bl 800ef08 - 800ed18: 4603 mov r3, r0 - 800ed1a: 72fb strb r3, [r7, #11] - if (result != ERR_OK) { - 800ed1c: f997 300b ldrsb.w r3, [r7, #11] - 800ed20: 2b00 cmp r3, #0 - 800ed22: d005 beq.n 800ed30 - /* free resources allocated above */ - dhcp_release_and_stop(netif); - 800ed24: 6878 ldr r0, [r7, #4] - 800ed26: f000 fc53 bl 800f5d0 - return ERR_MEM; - 800ed2a: f04f 33ff mov.w r3, #4294967295 - 800ed2e: e001 b.n 800ed34 - } - return result; - 800ed30: f997 300b ldrsb.w r3, [r7, #11] -} - 800ed34: 4618 mov r0, r3 - 800ed36: 3710 adds r7, #16 - 800ed38: 46bd mov sp, r7 - 800ed3a: bd80 pop {r7, pc} - 800ed3c: 08019a14 .word 0x08019a14 - 800ed40: 08019af8 .word 0x08019af8 - 800ed44: 08019a74 .word 0x08019a74 - 800ed48: 08019b3c .word 0x08019b3c - -0800ed4c : - * This enters the REBOOTING state to verify that the currently bound - * address is still valid. - */ -void -dhcp_network_changed(struct netif *netif) -{ - 800ed4c: b580 push {r7, lr} - 800ed4e: b084 sub sp, #16 - 800ed50: af00 add r7, sp, #0 - 800ed52: 6078 str r0, [r7, #4] - struct dhcp *dhcp = netif_dhcp_data(netif); - 800ed54: 687b ldr r3, [r7, #4] - 800ed56: 6a5b ldr r3, [r3, #36] @ 0x24 - 800ed58: 60fb str r3, [r7, #12] - - if (!dhcp) { - 800ed5a: 68fb ldr r3, [r7, #12] - 800ed5c: 2b00 cmp r3, #0 - 800ed5e: d025 beq.n 800edac - return; - } - switch (dhcp->state) { - 800ed60: 68fb ldr r3, [r7, #12] - 800ed62: 795b ldrb r3, [r3, #5] - 800ed64: 2b0a cmp r3, #10 - 800ed66: d008 beq.n 800ed7a - 800ed68: 2b0a cmp r3, #10 - 800ed6a: dc0d bgt.n 800ed88 - 800ed6c: 2b00 cmp r3, #0 - 800ed6e: d01f beq.n 800edb0 - 800ed70: 2b00 cmp r3, #0 - 800ed72: db09 blt.n 800ed88 - 800ed74: 3b03 subs r3, #3 - 800ed76: 2b02 cmp r3, #2 - 800ed78: d806 bhi.n 800ed88 - case DHCP_STATE_REBINDING: - case DHCP_STATE_RENEWING: - case DHCP_STATE_BOUND: - case DHCP_STATE_REBOOTING: - dhcp->tries = 0; - 800ed7a: 68fb ldr r3, [r7, #12] - 800ed7c: 2200 movs r2, #0 - 800ed7e: 719a strb r2, [r3, #6] - dhcp_reboot(netif); - 800ed80: 6878 ldr r0, [r7, #4] - 800ed82: f000 fb71 bl 800f468 - break; - 800ed86: e014 b.n 800edb2 - case DHCP_STATE_OFF: - /* stay off */ - break; - default: - LWIP_ASSERT("invalid dhcp->state", dhcp->state <= DHCP_STATE_BACKING_OFF); - 800ed88: 68fb ldr r3, [r7, #12] - 800ed8a: 795b ldrb r3, [r3, #5] - 800ed8c: 2b0c cmp r3, #12 - 800ed8e: d906 bls.n 800ed9e - 800ed90: 4b09 ldr r3, [pc, #36] @ (800edb8 ) - 800ed92: f240 326d movw r2, #877 @ 0x36d - 800ed96: 4909 ldr r1, [pc, #36] @ (800edbc ) - 800ed98: 4809 ldr r0, [pc, #36] @ (800edc0 ) - 800ed9a: f003 ff6d bl 8012c78 - autoip_stop(netif); - dhcp->autoip_coop_state = DHCP_AUTOIP_COOP_STATE_OFF; - } -#endif /* LWIP_DHCP_AUTOIP_COOP */ - /* ensure we start with short timeouts, even if already discovering */ - dhcp->tries = 0; - 800ed9e: 68fb ldr r3, [r7, #12] - 800eda0: 2200 movs r2, #0 - 800eda2: 719a strb r2, [r3, #6] - dhcp_discover(netif); - 800eda4: 6878 ldr r0, [r7, #4] - 800eda6: f000 f8af bl 800ef08 - break; - 800edaa: e002 b.n 800edb2 - return; - 800edac: bf00 nop - 800edae: e000 b.n 800edb2 - break; - 800edb0: bf00 nop - } -} - 800edb2: 3710 adds r7, #16 - 800edb4: 46bd mov sp, r7 - 800edb6: bd80 pop {r7, pc} - 800edb8: 08019a14 .word 0x08019a14 - 800edbc: 08019b60 .word 0x08019b60 - 800edc0: 08019a74 .word 0x08019a74 - -0800edc4 : - * @param netif the network interface on which the reply was received - * @param addr The IP address we received a reply from - */ -void -dhcp_arp_reply(struct netif *netif, const ip4_addr_t *addr) -{ - 800edc4: b580 push {r7, lr} - 800edc6: b084 sub sp, #16 - 800edc8: af00 add r7, sp, #0 - 800edca: 6078 str r0, [r7, #4] - 800edcc: 6039 str r1, [r7, #0] - struct dhcp *dhcp; - - LWIP_ERROR("netif != NULL", (netif != NULL), return;); - 800edce: 687b ldr r3, [r7, #4] - 800edd0: 2b00 cmp r3, #0 - 800edd2: d107 bne.n 800ede4 - 800edd4: 4b0e ldr r3, [pc, #56] @ (800ee10 ) - 800edd6: f240 328b movw r2, #907 @ 0x38b - 800edda: 490e ldr r1, [pc, #56] @ (800ee14 ) - 800eddc: 480e ldr r0, [pc, #56] @ (800ee18 ) - 800edde: f003 ff4b bl 8012c78 - 800ede2: e012 b.n 800ee0a - dhcp = netif_dhcp_data(netif); - 800ede4: 687b ldr r3, [r7, #4] - 800ede6: 6a5b ldr r3, [r3, #36] @ 0x24 - 800ede8: 60fb str r3, [r7, #12] - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_arp_reply()\n")); - /* is a DHCP client doing an ARP check? */ - if ((dhcp != NULL) && (dhcp->state == DHCP_STATE_CHECKING)) { - 800edea: 68fb ldr r3, [r7, #12] - 800edec: 2b00 cmp r3, #0 - 800edee: d00c beq.n 800ee0a - 800edf0: 68fb ldr r3, [r7, #12] - 800edf2: 795b ldrb r3, [r3, #5] - 800edf4: 2b08 cmp r3, #8 - 800edf6: d108 bne.n 800ee0a - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_arp_reply(): CHECKING, arp reply for 0x%08"X32_F"\n", - ip4_addr_get_u32(addr))); - /* did a host respond with the address we - were offered by the DHCP server? */ - if (ip4_addr_cmp(addr, &dhcp->offered_ip_addr)) { - 800edf8: 683b ldr r3, [r7, #0] - 800edfa: 681a ldr r2, [r3, #0] - 800edfc: 68fb ldr r3, [r7, #12] - 800edfe: 69db ldr r3, [r3, #28] - 800ee00: 429a cmp r2, r3 - 800ee02: d102 bne.n 800ee0a - /* we will not accept the offered address */ - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE | LWIP_DBG_LEVEL_WARNING, - ("dhcp_arp_reply(): arp reply matched with offered address, declining\n")); - dhcp_decline(netif); - 800ee04: 6878 ldr r0, [r7, #4] - 800ee06: f000 f809 bl 800ee1c - } - } -} - 800ee0a: 3710 adds r7, #16 - 800ee0c: 46bd mov sp, r7 - 800ee0e: bd80 pop {r7, pc} - 800ee10: 08019a14 .word 0x08019a14 - 800ee14: 08019af8 .word 0x08019af8 - 800ee18: 08019a74 .word 0x08019a74 - -0800ee1c : - * - * @param netif the netif under DHCP control - */ -static err_t -dhcp_decline(struct netif *netif) -{ - 800ee1c: b5b0 push {r4, r5, r7, lr} - 800ee1e: b08a sub sp, #40 @ 0x28 - 800ee20: af02 add r7, sp, #8 - 800ee22: 6078 str r0, [r7, #4] - struct dhcp *dhcp = netif_dhcp_data(netif); - 800ee24: 687b ldr r3, [r7, #4] - 800ee26: 6a5b ldr r3, [r3, #36] @ 0x24 - 800ee28: 61bb str r3, [r7, #24] - u16_t msecs; - struct pbuf *p_out; - u16_t options_out_len; - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_decline()\n")); - dhcp_set_state(dhcp, DHCP_STATE_BACKING_OFF); - 800ee2a: 210c movs r1, #12 - 800ee2c: 69b8 ldr r0, [r7, #24] - 800ee2e: f000 fc69 bl 800f704 - /* create and initialize the DHCP message header */ - p_out = dhcp_create_msg(netif, dhcp, DHCP_DECLINE, &options_out_len); - 800ee32: f107 030c add.w r3, r7, #12 - 800ee36: 2204 movs r2, #4 - 800ee38: 69b9 ldr r1, [r7, #24] - 800ee3a: 6878 ldr r0, [r7, #4] - 800ee3c: f001 f8ee bl 801001c - 800ee40: 6178 str r0, [r7, #20] - if (p_out != NULL) { - 800ee42: 697b ldr r3, [r7, #20] - 800ee44: 2b00 cmp r3, #0 - 800ee46: d035 beq.n 800eeb4 - struct dhcp_msg *msg_out = (struct dhcp_msg *)p_out->payload; - 800ee48: 697b ldr r3, [r7, #20] - 800ee4a: 685b ldr r3, [r3, #4] - 800ee4c: 613b str r3, [r7, #16] - options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_REQUESTED_IP, 4); - 800ee4e: 89b8 ldrh r0, [r7, #12] - 800ee50: 693b ldr r3, [r7, #16] - 800ee52: f103 01f0 add.w r1, r3, #240 @ 0xf0 - 800ee56: 2304 movs r3, #4 - 800ee58: 2232 movs r2, #50 @ 0x32 - 800ee5a: f000 fc6d bl 800f738 - 800ee5e: 4603 mov r3, r0 - 800ee60: 81bb strh r3, [r7, #12] - options_out_len = dhcp_option_long(options_out_len, msg_out->options, lwip_ntohl(ip4_addr_get_u32(&dhcp->offered_ip_addr))); - 800ee62: 89bc ldrh r4, [r7, #12] - 800ee64: 693b ldr r3, [r7, #16] - 800ee66: f103 05f0 add.w r5, r3, #240 @ 0xf0 - 800ee6a: 69bb ldr r3, [r7, #24] - 800ee6c: 69db ldr r3, [r3, #28] - 800ee6e: 4618 mov r0, r3 - 800ee70: f7f7 fddf bl 8006a32 - 800ee74: 4603 mov r3, r0 - 800ee76: 461a mov r2, r3 - 800ee78: 4629 mov r1, r5 - 800ee7a: 4620 mov r0, r4 - 800ee7c: f000 fce8 bl 800f850 - 800ee80: 4603 mov r3, r0 - 800ee82: 81bb strh r3, [r7, #12] - - LWIP_HOOK_DHCP_APPEND_OPTIONS(netif, dhcp, DHCP_STATE_BACKING_OFF, msg_out, DHCP_DECLINE, &options_out_len); - dhcp_option_trailer(options_out_len, msg_out->options, p_out); - 800ee84: 89b8 ldrh r0, [r7, #12] - 800ee86: 693b ldr r3, [r7, #16] - 800ee88: 33f0 adds r3, #240 @ 0xf0 - 800ee8a: 697a ldr r2, [r7, #20] - 800ee8c: 4619 mov r1, r3 - 800ee8e: f001 f99b bl 80101c8 - - /* per section 4.4.4, broadcast DECLINE messages */ - result = udp_sendto_if_src(dhcp_pcb, p_out, IP_ADDR_BROADCAST, LWIP_IANA_PORT_DHCP_SERVER, netif, IP4_ADDR_ANY); - 800ee92: 4b19 ldr r3, [pc, #100] @ (800eef8 ) - 800ee94: 6818 ldr r0, [r3, #0] - 800ee96: 4b19 ldr r3, [pc, #100] @ (800eefc ) - 800ee98: 9301 str r3, [sp, #4] - 800ee9a: 687b ldr r3, [r7, #4] - 800ee9c: 9300 str r3, [sp, #0] - 800ee9e: 2343 movs r3, #67 @ 0x43 - 800eea0: 4a17 ldr r2, [pc, #92] @ (800ef00 ) - 800eea2: 6979 ldr r1, [r7, #20] - 800eea4: f7ff f8d2 bl 800e04c - 800eea8: 4603 mov r3, r0 - 800eeaa: 77fb strb r3, [r7, #31] - pbuf_free(p_out); - 800eeac: 6978 ldr r0, [r7, #20] - 800eeae: f7f9 f8fb bl 80080a8 - 800eeb2: e001 b.n 800eeb8 - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_decline: BACKING OFF\n")); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, - ("dhcp_decline: could not allocate DHCP request\n")); - result = ERR_MEM; - 800eeb4: 23ff movs r3, #255 @ 0xff - 800eeb6: 77fb strb r3, [r7, #31] - } - if (dhcp->tries < 255) { - 800eeb8: 69bb ldr r3, [r7, #24] - 800eeba: 799b ldrb r3, [r3, #6] - 800eebc: 2bff cmp r3, #255 @ 0xff - 800eebe: d005 beq.n 800eecc - dhcp->tries++; - 800eec0: 69bb ldr r3, [r7, #24] - 800eec2: 799b ldrb r3, [r3, #6] - 800eec4: 3301 adds r3, #1 - 800eec6: b2da uxtb r2, r3 - 800eec8: 69bb ldr r3, [r7, #24] - 800eeca: 719a strb r2, [r3, #6] - } - msecs = 10 * 1000; - 800eecc: f242 7310 movw r3, #10000 @ 0x2710 - 800eed0: 81fb strh r3, [r7, #14] - dhcp->request_timeout = (u16_t)((msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS); - 800eed2: 89fb ldrh r3, [r7, #14] - 800eed4: f203 13f3 addw r3, r3, #499 @ 0x1f3 - 800eed8: 4a0a ldr r2, [pc, #40] @ (800ef04 ) - 800eeda: fb82 1203 smull r1, r2, r2, r3 - 800eede: 1152 asrs r2, r2, #5 - 800eee0: 17db asrs r3, r3, #31 - 800eee2: 1ad3 subs r3, r2, r3 - 800eee4: b29a uxth r2, r3 - 800eee6: 69bb ldr r3, [r7, #24] - 800eee8: 811a strh r2, [r3, #8] - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_decline(): set request timeout %"U16_F" msecs\n", msecs)); - return result; - 800eeea: f997 301f ldrsb.w r3, [r7, #31] -} - 800eeee: 4618 mov r0, r3 - 800eef0: 3720 adds r7, #32 - 800eef2: 46bd mov sp, r7 - 800eef4: bdb0 pop {r4, r5, r7, pc} - 800eef6: bf00 nop - 800eef8: 20019174 .word 0x20019174 - 800eefc: 0801a5e4 .word 0x0801a5e4 - 800ef00: 0801a5e8 .word 0x0801a5e8 - 800ef04: 10624dd3 .word 0x10624dd3 - -0800ef08 : - * - * @param netif the netif under DHCP control - */ -static err_t -dhcp_discover(struct netif *netif) -{ - 800ef08: b580 push {r7, lr} - 800ef0a: b08a sub sp, #40 @ 0x28 - 800ef0c: af02 add r7, sp, #8 - 800ef0e: 6078 str r0, [r7, #4] - struct dhcp *dhcp = netif_dhcp_data(netif); - 800ef10: 687b ldr r3, [r7, #4] - 800ef12: 6a5b ldr r3, [r3, #36] @ 0x24 - 800ef14: 61bb str r3, [r7, #24] - err_t result = ERR_OK; - 800ef16: 2300 movs r3, #0 - 800ef18: 75fb strb r3, [r7, #23] - struct pbuf *p_out; - u16_t options_out_len; - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_discover()\n")); - - ip4_addr_set_any(&dhcp->offered_ip_addr); - 800ef1a: 69bb ldr r3, [r7, #24] - 800ef1c: 2200 movs r2, #0 - 800ef1e: 61da str r2, [r3, #28] - dhcp_set_state(dhcp, DHCP_STATE_SELECTING); - 800ef20: 2106 movs r1, #6 - 800ef22: 69b8 ldr r0, [r7, #24] - 800ef24: f000 fbee bl 800f704 - /* create and initialize the DHCP message header */ - p_out = dhcp_create_msg(netif, dhcp, DHCP_DISCOVER, &options_out_len); - 800ef28: f107 0308 add.w r3, r7, #8 - 800ef2c: 2201 movs r2, #1 - 800ef2e: 69b9 ldr r1, [r7, #24] - 800ef30: 6878 ldr r0, [r7, #4] - 800ef32: f001 f873 bl 801001c - 800ef36: 6138 str r0, [r7, #16] - if (p_out != NULL) { - 800ef38: 693b ldr r3, [r7, #16] - 800ef3a: 2b00 cmp r3, #0 - 800ef3c: d04b beq.n 800efd6 - struct dhcp_msg *msg_out = (struct dhcp_msg *)p_out->payload; - 800ef3e: 693b ldr r3, [r7, #16] - 800ef40: 685b ldr r3, [r3, #4] - 800ef42: 60fb str r3, [r7, #12] - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_discover: making request\n")); - - options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN); - 800ef44: 8938 ldrh r0, [r7, #8] - 800ef46: 68fb ldr r3, [r7, #12] - 800ef48: f103 01f0 add.w r1, r3, #240 @ 0xf0 - 800ef4c: 2302 movs r3, #2 - 800ef4e: 2239 movs r2, #57 @ 0x39 - 800ef50: f000 fbf2 bl 800f738 - 800ef54: 4603 mov r3, r0 - 800ef56: 813b strh r3, [r7, #8] - options_out_len = dhcp_option_short(options_out_len, msg_out->options, DHCP_MAX_MSG_LEN(netif)); - 800ef58: 8938 ldrh r0, [r7, #8] - 800ef5a: 68fb ldr r3, [r7, #12] - 800ef5c: f103 01f0 add.w r1, r3, #240 @ 0xf0 - 800ef60: 687b ldr r3, [r7, #4] - 800ef62: 8d1b ldrh r3, [r3, #40] @ 0x28 - 800ef64: 461a mov r2, r3 - 800ef66: f000 fc41 bl 800f7ec - 800ef6a: 4603 mov r3, r0 - 800ef6c: 813b strh r3, [r7, #8] - - options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_PARAMETER_REQUEST_LIST, LWIP_ARRAYSIZE(dhcp_discover_request_options)); - 800ef6e: 8938 ldrh r0, [r7, #8] - 800ef70: 68fb ldr r3, [r7, #12] - 800ef72: f103 01f0 add.w r1, r3, #240 @ 0xf0 - 800ef76: 2303 movs r3, #3 - 800ef78: 2237 movs r2, #55 @ 0x37 - 800ef7a: f000 fbdd bl 800f738 - 800ef7e: 4603 mov r3, r0 - 800ef80: 813b strh r3, [r7, #8] - for (i = 0; i < LWIP_ARRAYSIZE(dhcp_discover_request_options); i++) { - 800ef82: 2300 movs r3, #0 - 800ef84: 77fb strb r3, [r7, #31] - 800ef86: e00e b.n 800efa6 - options_out_len = dhcp_option_byte(options_out_len, msg_out->options, dhcp_discover_request_options[i]); - 800ef88: 8938 ldrh r0, [r7, #8] - 800ef8a: 68fb ldr r3, [r7, #12] - 800ef8c: f103 01f0 add.w r1, r3, #240 @ 0xf0 - 800ef90: 7ffb ldrb r3, [r7, #31] - 800ef92: 4a29 ldr r2, [pc, #164] @ (800f038 ) - 800ef94: 5cd3 ldrb r3, [r2, r3] - 800ef96: 461a mov r2, r3 - 800ef98: f000 fc02 bl 800f7a0 - 800ef9c: 4603 mov r3, r0 - 800ef9e: 813b strh r3, [r7, #8] - for (i = 0; i < LWIP_ARRAYSIZE(dhcp_discover_request_options); i++) { - 800efa0: 7ffb ldrb r3, [r7, #31] - 800efa2: 3301 adds r3, #1 - 800efa4: 77fb strb r3, [r7, #31] - 800efa6: 7ffb ldrb r3, [r7, #31] - 800efa8: 2b02 cmp r3, #2 - 800efaa: d9ed bls.n 800ef88 - } - LWIP_HOOK_DHCP_APPEND_OPTIONS(netif, dhcp, DHCP_STATE_SELECTING, msg_out, DHCP_DISCOVER, &options_out_len); - dhcp_option_trailer(options_out_len, msg_out->options, p_out); - 800efac: 8938 ldrh r0, [r7, #8] - 800efae: 68fb ldr r3, [r7, #12] - 800efb0: 33f0 adds r3, #240 @ 0xf0 - 800efb2: 693a ldr r2, [r7, #16] - 800efb4: 4619 mov r1, r3 - 800efb6: f001 f907 bl 80101c8 - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_discover: sendto(DISCOVER, IP_ADDR_BROADCAST, LWIP_IANA_PORT_DHCP_SERVER)\n")); - udp_sendto_if_src(dhcp_pcb, p_out, IP_ADDR_BROADCAST, LWIP_IANA_PORT_DHCP_SERVER, netif, IP4_ADDR_ANY); - 800efba: 4b20 ldr r3, [pc, #128] @ (800f03c ) - 800efbc: 6818 ldr r0, [r3, #0] - 800efbe: 4b20 ldr r3, [pc, #128] @ (800f040 ) - 800efc0: 9301 str r3, [sp, #4] - 800efc2: 687b ldr r3, [r7, #4] - 800efc4: 9300 str r3, [sp, #0] - 800efc6: 2343 movs r3, #67 @ 0x43 - 800efc8: 4a1e ldr r2, [pc, #120] @ (800f044 ) - 800efca: 6939 ldr r1, [r7, #16] - 800efcc: f7ff f83e bl 800e04c - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_discover: deleting()ing\n")); - pbuf_free(p_out); - 800efd0: 6938 ldr r0, [r7, #16] - 800efd2: f7f9 f869 bl 80080a8 - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_discover: SELECTING\n")); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_discover: could not allocate DHCP request\n")); - } - if (dhcp->tries < 255) { - 800efd6: 69bb ldr r3, [r7, #24] - 800efd8: 799b ldrb r3, [r3, #6] - 800efda: 2bff cmp r3, #255 @ 0xff - 800efdc: d005 beq.n 800efea - dhcp->tries++; - 800efde: 69bb ldr r3, [r7, #24] - 800efe0: 799b ldrb r3, [r3, #6] - 800efe2: 3301 adds r3, #1 - 800efe4: b2da uxtb r2, r3 - 800efe6: 69bb ldr r3, [r7, #24] - 800efe8: 719a strb r2, [r3, #6] - if (dhcp->tries >= LWIP_DHCP_AUTOIP_COOP_TRIES && dhcp->autoip_coop_state == DHCP_AUTOIP_COOP_STATE_OFF) { - dhcp->autoip_coop_state = DHCP_AUTOIP_COOP_STATE_ON; - autoip_start(netif); - } -#endif /* LWIP_DHCP_AUTOIP_COOP */ - msecs = (u16_t)((dhcp->tries < 6 ? 1 << dhcp->tries : 60) * 1000); - 800efea: 69bb ldr r3, [r7, #24] - 800efec: 799b ldrb r3, [r3, #6] - 800efee: 2b05 cmp r3, #5 - 800eff0: d80d bhi.n 800f00e - 800eff2: 69bb ldr r3, [r7, #24] - 800eff4: 799b ldrb r3, [r3, #6] - 800eff6: 461a mov r2, r3 - 800eff8: 2301 movs r3, #1 - 800effa: 4093 lsls r3, r2 - 800effc: b29b uxth r3, r3 - 800effe: 461a mov r2, r3 - 800f000: 0152 lsls r2, r2, #5 - 800f002: 1ad2 subs r2, r2, r3 - 800f004: 0092 lsls r2, r2, #2 - 800f006: 4413 add r3, r2 - 800f008: 00db lsls r3, r3, #3 - 800f00a: b29b uxth r3, r3 - 800f00c: e001 b.n 800f012 - 800f00e: f64e 2360 movw r3, #60000 @ 0xea60 - 800f012: 817b strh r3, [r7, #10] - dhcp->request_timeout = (u16_t)((msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS); - 800f014: 897b ldrh r3, [r7, #10] - 800f016: f203 13f3 addw r3, r3, #499 @ 0x1f3 - 800f01a: 4a0b ldr r2, [pc, #44] @ (800f048 ) - 800f01c: fb82 1203 smull r1, r2, r2, r3 - 800f020: 1152 asrs r2, r2, #5 - 800f022: 17db asrs r3, r3, #31 - 800f024: 1ad3 subs r3, r2, r3 - 800f026: b29a uxth r2, r3 - 800f028: 69bb ldr r3, [r7, #24] - 800f02a: 811a strh r2, [r3, #8] - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_discover(): set request timeout %"U16_F" msecs\n", msecs)); - return result; - 800f02c: f997 3017 ldrsb.w r3, [r7, #23] -} - 800f030: 4618 mov r0, r3 - 800f032: 3720 adds r7, #32 - 800f034: 46bd mov sp, r7 - 800f036: bd80 pop {r7, pc} - 800f038: 2000002c .word 0x2000002c - 800f03c: 20019174 .word 0x20019174 - 800f040: 0801a5e4 .word 0x0801a5e4 - 800f044: 0801a5e8 .word 0x0801a5e8 - 800f048: 10624dd3 .word 0x10624dd3 - -0800f04c : - * - * @param netif network interface to bind to the offered address - */ -static void -dhcp_bind(struct netif *netif) -{ - 800f04c: b580 push {r7, lr} - 800f04e: b088 sub sp, #32 - 800f050: af00 add r7, sp, #0 - 800f052: 6078 str r0, [r7, #4] - u32_t timeout; - struct dhcp *dhcp; - ip4_addr_t sn_mask, gw_addr; - LWIP_ERROR("dhcp_bind: netif != NULL", (netif != NULL), return;); - 800f054: 687b ldr r3, [r7, #4] - 800f056: 2b00 cmp r3, #0 - 800f058: d107 bne.n 800f06a - 800f05a: 4b64 ldr r3, [pc, #400] @ (800f1ec ) - 800f05c: f240 4215 movw r2, #1045 @ 0x415 - 800f060: 4963 ldr r1, [pc, #396] @ (800f1f0 ) - 800f062: 4864 ldr r0, [pc, #400] @ (800f1f4 ) - 800f064: f003 fe08 bl 8012c78 - 800f068: e0bc b.n 800f1e4 - dhcp = netif_dhcp_data(netif); - 800f06a: 687b ldr r3, [r7, #4] - 800f06c: 6a5b ldr r3, [r3, #36] @ 0x24 - 800f06e: 61bb str r3, [r7, #24] - LWIP_ERROR("dhcp_bind: dhcp != NULL", (dhcp != NULL), return;); - 800f070: 69bb ldr r3, [r7, #24] - 800f072: 2b00 cmp r3, #0 - 800f074: d107 bne.n 800f086 - 800f076: 4b5d ldr r3, [pc, #372] @ (800f1ec ) - 800f078: f240 4217 movw r2, #1047 @ 0x417 - 800f07c: 495e ldr r1, [pc, #376] @ (800f1f8 ) - 800f07e: 485d ldr r0, [pc, #372] @ (800f1f4 ) - 800f080: f003 fdfa bl 8012c78 - 800f084: e0ae b.n 800f1e4 - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_bind(netif=%p) %c%c%"U16_F"\n", (void *)netif, netif->name[0], netif->name[1], (u16_t)netif->num)); - - /* reset time used of lease */ - dhcp->lease_used = 0; - 800f086: 69bb ldr r3, [r7, #24] - 800f088: 2200 movs r2, #0 - 800f08a: 825a strh r2, [r3, #18] - - if (dhcp->offered_t0_lease != 0xffffffffUL) { - 800f08c: 69bb ldr r3, [r7, #24] - 800f08e: 6a9b ldr r3, [r3, #40] @ 0x28 - 800f090: f1b3 3fff cmp.w r3, #4294967295 - 800f094: d019 beq.n 800f0ca - /* set renewal period timer */ - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_bind(): t0 renewal timer %"U32_F" secs\n", dhcp->offered_t0_lease)); - timeout = (dhcp->offered_t0_lease + DHCP_COARSE_TIMER_SECS / 2) / DHCP_COARSE_TIMER_SECS; - 800f096: 69bb ldr r3, [r7, #24] - 800f098: 6a9b ldr r3, [r3, #40] @ 0x28 - 800f09a: 331e adds r3, #30 - 800f09c: 4a57 ldr r2, [pc, #348] @ (800f1fc ) - 800f09e: fba2 2303 umull r2, r3, r2, r3 - 800f0a2: 095b lsrs r3, r3, #5 - 800f0a4: 61fb str r3, [r7, #28] - if (timeout > 0xffff) { - 800f0a6: 69fb ldr r3, [r7, #28] - 800f0a8: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 800f0ac: d302 bcc.n 800f0b4 - timeout = 0xffff; - 800f0ae: f64f 73ff movw r3, #65535 @ 0xffff - 800f0b2: 61fb str r3, [r7, #28] - } - dhcp->t0_timeout = (u16_t)timeout; - 800f0b4: 69fb ldr r3, [r7, #28] - 800f0b6: b29a uxth r2, r3 - 800f0b8: 69bb ldr r3, [r7, #24] - 800f0ba: 829a strh r2, [r3, #20] - if (dhcp->t0_timeout == 0) { - 800f0bc: 69bb ldr r3, [r7, #24] - 800f0be: 8a9b ldrh r3, [r3, #20] - 800f0c0: 2b00 cmp r3, #0 - 800f0c2: d102 bne.n 800f0ca - dhcp->t0_timeout = 1; - 800f0c4: 69bb ldr r3, [r7, #24] - 800f0c6: 2201 movs r2, #1 - 800f0c8: 829a strh r2, [r3, #20] - } - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_bind(): set request timeout %"U32_F" msecs\n", dhcp->offered_t0_lease * 1000)); - } - - /* temporary DHCP lease? */ - if (dhcp->offered_t1_renew != 0xffffffffUL) { - 800f0ca: 69bb ldr r3, [r7, #24] - 800f0cc: 6adb ldr r3, [r3, #44] @ 0x2c - 800f0ce: f1b3 3fff cmp.w r3, #4294967295 - 800f0d2: d01d beq.n 800f110 - /* set renewal period timer */ - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_bind(): t1 renewal timer %"U32_F" secs\n", dhcp->offered_t1_renew)); - timeout = (dhcp->offered_t1_renew + DHCP_COARSE_TIMER_SECS / 2) / DHCP_COARSE_TIMER_SECS; - 800f0d4: 69bb ldr r3, [r7, #24] - 800f0d6: 6adb ldr r3, [r3, #44] @ 0x2c - 800f0d8: 331e adds r3, #30 - 800f0da: 4a48 ldr r2, [pc, #288] @ (800f1fc ) - 800f0dc: fba2 2303 umull r2, r3, r2, r3 - 800f0e0: 095b lsrs r3, r3, #5 - 800f0e2: 61fb str r3, [r7, #28] - if (timeout > 0xffff) { - 800f0e4: 69fb ldr r3, [r7, #28] - 800f0e6: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 800f0ea: d302 bcc.n 800f0f2 - timeout = 0xffff; - 800f0ec: f64f 73ff movw r3, #65535 @ 0xffff - 800f0f0: 61fb str r3, [r7, #28] - } - dhcp->t1_timeout = (u16_t)timeout; - 800f0f2: 69fb ldr r3, [r7, #28] - 800f0f4: b29a uxth r2, r3 - 800f0f6: 69bb ldr r3, [r7, #24] - 800f0f8: 815a strh r2, [r3, #10] - if (dhcp->t1_timeout == 0) { - 800f0fa: 69bb ldr r3, [r7, #24] - 800f0fc: 895b ldrh r3, [r3, #10] - 800f0fe: 2b00 cmp r3, #0 - 800f100: d102 bne.n 800f108 - dhcp->t1_timeout = 1; - 800f102: 69bb ldr r3, [r7, #24] - 800f104: 2201 movs r2, #1 - 800f106: 815a strh r2, [r3, #10] - } - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_bind(): set request timeout %"U32_F" msecs\n", dhcp->offered_t1_renew * 1000)); - dhcp->t1_renew_time = dhcp->t1_timeout; - 800f108: 69bb ldr r3, [r7, #24] - 800f10a: 895a ldrh r2, [r3, #10] - 800f10c: 69bb ldr r3, [r7, #24] - 800f10e: 81da strh r2, [r3, #14] - } - /* set renewal period timer */ - if (dhcp->offered_t2_rebind != 0xffffffffUL) { - 800f110: 69bb ldr r3, [r7, #24] - 800f112: 6b1b ldr r3, [r3, #48] @ 0x30 - 800f114: f1b3 3fff cmp.w r3, #4294967295 - 800f118: d01d beq.n 800f156 - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_bind(): t2 rebind timer %"U32_F" secs\n", dhcp->offered_t2_rebind)); - timeout = (dhcp->offered_t2_rebind + DHCP_COARSE_TIMER_SECS / 2) / DHCP_COARSE_TIMER_SECS; - 800f11a: 69bb ldr r3, [r7, #24] - 800f11c: 6b1b ldr r3, [r3, #48] @ 0x30 - 800f11e: 331e adds r3, #30 - 800f120: 4a36 ldr r2, [pc, #216] @ (800f1fc ) - 800f122: fba2 2303 umull r2, r3, r2, r3 - 800f126: 095b lsrs r3, r3, #5 - 800f128: 61fb str r3, [r7, #28] - if (timeout > 0xffff) { - 800f12a: 69fb ldr r3, [r7, #28] - 800f12c: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 800f130: d302 bcc.n 800f138 - timeout = 0xffff; - 800f132: f64f 73ff movw r3, #65535 @ 0xffff - 800f136: 61fb str r3, [r7, #28] - } - dhcp->t2_timeout = (u16_t)timeout; - 800f138: 69fb ldr r3, [r7, #28] - 800f13a: b29a uxth r2, r3 - 800f13c: 69bb ldr r3, [r7, #24] - 800f13e: 819a strh r2, [r3, #12] - if (dhcp->t2_timeout == 0) { - 800f140: 69bb ldr r3, [r7, #24] - 800f142: 899b ldrh r3, [r3, #12] - 800f144: 2b00 cmp r3, #0 - 800f146: d102 bne.n 800f14e - dhcp->t2_timeout = 1; - 800f148: 69bb ldr r3, [r7, #24] - 800f14a: 2201 movs r2, #1 - 800f14c: 819a strh r2, [r3, #12] - } - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_bind(): set request timeout %"U32_F" msecs\n", dhcp->offered_t2_rebind * 1000)); - dhcp->t2_rebind_time = dhcp->t2_timeout; - 800f14e: 69bb ldr r3, [r7, #24] - 800f150: 899a ldrh r2, [r3, #12] - 800f152: 69bb ldr r3, [r7, #24] - 800f154: 821a strh r2, [r3, #16] - } - - /* If we have sub 1 minute lease, t2 and t1 will kick in at the same time. */ - if ((dhcp->t1_timeout >= dhcp->t2_timeout) && (dhcp->t2_timeout > 0)) { - 800f156: 69bb ldr r3, [r7, #24] - 800f158: 895a ldrh r2, [r3, #10] - 800f15a: 69bb ldr r3, [r7, #24] - 800f15c: 899b ldrh r3, [r3, #12] - 800f15e: 429a cmp r2, r3 - 800f160: d306 bcc.n 800f170 - 800f162: 69bb ldr r3, [r7, #24] - 800f164: 899b ldrh r3, [r3, #12] - 800f166: 2b00 cmp r3, #0 - 800f168: d002 beq.n 800f170 - dhcp->t1_timeout = 0; - 800f16a: 69bb ldr r3, [r7, #24] - 800f16c: 2200 movs r2, #0 - 800f16e: 815a strh r2, [r3, #10] - } - - if (dhcp->subnet_mask_given) { - 800f170: 69bb ldr r3, [r7, #24] - 800f172: 79db ldrb r3, [r3, #7] - 800f174: 2b00 cmp r3, #0 - 800f176: d003 beq.n 800f180 - /* copy offered network mask */ - ip4_addr_copy(sn_mask, dhcp->offered_sn_mask); - 800f178: 69bb ldr r3, [r7, #24] - 800f17a: 6a1b ldr r3, [r3, #32] - 800f17c: 613b str r3, [r7, #16] - 800f17e: e014 b.n 800f1aa - } else { - /* subnet mask not given, choose a safe subnet mask given the network class */ - u8_t first_octet = ip4_addr1(&dhcp->offered_ip_addr); - 800f180: 69bb ldr r3, [r7, #24] - 800f182: 331c adds r3, #28 - 800f184: 781b ldrb r3, [r3, #0] - 800f186: 75fb strb r3, [r7, #23] - if (first_octet <= 127) { - 800f188: f997 3017 ldrsb.w r3, [r7, #23] - 800f18c: 2b00 cmp r3, #0 - 800f18e: db02 blt.n 800f196 - ip4_addr_set_u32(&sn_mask, PP_HTONL(0xff000000UL)); - 800f190: 23ff movs r3, #255 @ 0xff - 800f192: 613b str r3, [r7, #16] - 800f194: e009 b.n 800f1aa - } else if (first_octet >= 192) { - 800f196: 7dfb ldrb r3, [r7, #23] - 800f198: 2bbf cmp r3, #191 @ 0xbf - 800f19a: d903 bls.n 800f1a4 - ip4_addr_set_u32(&sn_mask, PP_HTONL(0xffffff00UL)); - 800f19c: f06f 437f mvn.w r3, #4278190080 @ 0xff000000 - 800f1a0: 613b str r3, [r7, #16] - 800f1a2: e002 b.n 800f1aa - } else { - ip4_addr_set_u32(&sn_mask, PP_HTONL(0xffff0000UL)); - 800f1a4: f64f 73ff movw r3, #65535 @ 0xffff - 800f1a8: 613b str r3, [r7, #16] - } - } - - ip4_addr_copy(gw_addr, dhcp->offered_gw_addr); - 800f1aa: 69bb ldr r3, [r7, #24] - 800f1ac: 6a5b ldr r3, [r3, #36] @ 0x24 - 800f1ae: 60fb str r3, [r7, #12] - /* gateway address not given? */ - if (ip4_addr_isany_val(gw_addr)) { - 800f1b0: 68fb ldr r3, [r7, #12] - 800f1b2: 2b00 cmp r3, #0 - 800f1b4: d108 bne.n 800f1c8 - /* copy network address */ - ip4_addr_get_network(&gw_addr, &dhcp->offered_ip_addr, &sn_mask); - 800f1b6: 69bb ldr r3, [r7, #24] - 800f1b8: 69da ldr r2, [r3, #28] - 800f1ba: 693b ldr r3, [r7, #16] - 800f1bc: 4013 ands r3, r2 - 800f1be: 60fb str r3, [r7, #12] - /* use first host address on network as gateway */ - ip4_addr_set_u32(&gw_addr, ip4_addr_get_u32(&gw_addr) | PP_HTONL(0x00000001UL)); - 800f1c0: 68fb ldr r3, [r7, #12] - 800f1c2: f043 7380 orr.w r3, r3, #16777216 @ 0x1000000 - 800f1c6: 60fb str r3, [r7, #12] - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_bind(): IP: 0x%08"X32_F" SN: 0x%08"X32_F" GW: 0x%08"X32_F"\n", - ip4_addr_get_u32(&dhcp->offered_ip_addr), ip4_addr_get_u32(&sn_mask), ip4_addr_get_u32(&gw_addr))); - /* netif is now bound to DHCP leased address - set this before assigning the address - to ensure the callback can use dhcp_supplied_address() */ - dhcp_set_state(dhcp, DHCP_STATE_BOUND); - 800f1c8: 210a movs r1, #10 - 800f1ca: 69b8 ldr r0, [r7, #24] - 800f1cc: f000 fa9a bl 800f704 - - netif_set_addr(netif, &dhcp->offered_ip_addr, &sn_mask, &gw_addr); - 800f1d0: 69bb ldr r3, [r7, #24] - 800f1d2: f103 011c add.w r1, r3, #28 - 800f1d6: f107 030c add.w r3, r7, #12 - 800f1da: f107 0210 add.w r2, r7, #16 - 800f1de: 6878 ldr r0, [r7, #4] - 800f1e0: f7f8 fa84 bl 80076ec - /* interface is used by routing now that an address is set */ -} - 800f1e4: 3720 adds r7, #32 - 800f1e6: 46bd mov sp, r7 - 800f1e8: bd80 pop {r7, pc} - 800f1ea: bf00 nop - 800f1ec: 08019a14 .word 0x08019a14 - 800f1f0: 08019b74 .word 0x08019b74 - 800f1f4: 08019a74 .word 0x08019a74 - 800f1f8: 08019b90 .word 0x08019b90 - 800f1fc: 88888889 .word 0x88888889 - -0800f200 : - * - * @param netif network interface which must renew its lease - */ -err_t -dhcp_renew(struct netif *netif) -{ - 800f200: b580 push {r7, lr} - 800f202: b08a sub sp, #40 @ 0x28 - 800f204: af02 add r7, sp, #8 - 800f206: 6078 str r0, [r7, #4] - struct dhcp *dhcp = netif_dhcp_data(netif); - 800f208: 687b ldr r3, [r7, #4] - 800f20a: 6a5b ldr r3, [r3, #36] @ 0x24 - 800f20c: 61bb str r3, [r7, #24] - struct pbuf *p_out; - u16_t options_out_len; - - LWIP_ASSERT_CORE_LOCKED(); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_renew()\n")); - dhcp_set_state(dhcp, DHCP_STATE_RENEWING); - 800f20e: 2105 movs r1, #5 - 800f210: 69b8 ldr r0, [r7, #24] - 800f212: f000 fa77 bl 800f704 - - /* create and initialize the DHCP message header */ - p_out = dhcp_create_msg(netif, dhcp, DHCP_REQUEST, &options_out_len); - 800f216: f107 030c add.w r3, r7, #12 - 800f21a: 2203 movs r2, #3 - 800f21c: 69b9 ldr r1, [r7, #24] - 800f21e: 6878 ldr r0, [r7, #4] - 800f220: f000 fefc bl 801001c - 800f224: 6178 str r0, [r7, #20] - if (p_out != NULL) { - 800f226: 697b ldr r3, [r7, #20] - 800f228: 2b00 cmp r3, #0 - 800f22a: d04e beq.n 800f2ca - struct dhcp_msg *msg_out = (struct dhcp_msg *)p_out->payload; - 800f22c: 697b ldr r3, [r7, #20] - 800f22e: 685b ldr r3, [r3, #4] - 800f230: 613b str r3, [r7, #16] - options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN); - 800f232: 89b8 ldrh r0, [r7, #12] - 800f234: 693b ldr r3, [r7, #16] - 800f236: f103 01f0 add.w r1, r3, #240 @ 0xf0 - 800f23a: 2302 movs r3, #2 - 800f23c: 2239 movs r2, #57 @ 0x39 - 800f23e: f000 fa7b bl 800f738 - 800f242: 4603 mov r3, r0 - 800f244: 81bb strh r3, [r7, #12] - options_out_len = dhcp_option_short(options_out_len, msg_out->options, DHCP_MAX_MSG_LEN(netif)); - 800f246: 89b8 ldrh r0, [r7, #12] - 800f248: 693b ldr r3, [r7, #16] - 800f24a: f103 01f0 add.w r1, r3, #240 @ 0xf0 - 800f24e: 687b ldr r3, [r7, #4] - 800f250: 8d1b ldrh r3, [r3, #40] @ 0x28 - 800f252: 461a mov r2, r3 - 800f254: f000 faca bl 800f7ec - 800f258: 4603 mov r3, r0 - 800f25a: 81bb strh r3, [r7, #12] - - options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_PARAMETER_REQUEST_LIST, LWIP_ARRAYSIZE(dhcp_discover_request_options)); - 800f25c: 89b8 ldrh r0, [r7, #12] - 800f25e: 693b ldr r3, [r7, #16] - 800f260: f103 01f0 add.w r1, r3, #240 @ 0xf0 - 800f264: 2303 movs r3, #3 - 800f266: 2237 movs r2, #55 @ 0x37 - 800f268: f000 fa66 bl 800f738 - 800f26c: 4603 mov r3, r0 - 800f26e: 81bb strh r3, [r7, #12] - for (i = 0; i < LWIP_ARRAYSIZE(dhcp_discover_request_options); i++) { - 800f270: 2300 movs r3, #0 - 800f272: 77bb strb r3, [r7, #30] - 800f274: e00e b.n 800f294 - options_out_len = dhcp_option_byte(options_out_len, msg_out->options, dhcp_discover_request_options[i]); - 800f276: 89b8 ldrh r0, [r7, #12] - 800f278: 693b ldr r3, [r7, #16] - 800f27a: f103 01f0 add.w r1, r3, #240 @ 0xf0 - 800f27e: 7fbb ldrb r3, [r7, #30] - 800f280: 4a29 ldr r2, [pc, #164] @ (800f328 ) - 800f282: 5cd3 ldrb r3, [r2, r3] - 800f284: 461a mov r2, r3 - 800f286: f000 fa8b bl 800f7a0 - 800f28a: 4603 mov r3, r0 - 800f28c: 81bb strh r3, [r7, #12] - for (i = 0; i < LWIP_ARRAYSIZE(dhcp_discover_request_options); i++) { - 800f28e: 7fbb ldrb r3, [r7, #30] - 800f290: 3301 adds r3, #1 - 800f292: 77bb strb r3, [r7, #30] - 800f294: 7fbb ldrb r3, [r7, #30] - 800f296: 2b02 cmp r3, #2 - 800f298: d9ed bls.n 800f276 -#if LWIP_NETIF_HOSTNAME - options_out_len = dhcp_option_hostname(options_out_len, msg_out->options, netif); -#endif /* LWIP_NETIF_HOSTNAME */ - - LWIP_HOOK_DHCP_APPEND_OPTIONS(netif, dhcp, DHCP_STATE_RENEWING, msg_out, DHCP_REQUEST, &options_out_len); - dhcp_option_trailer(options_out_len, msg_out->options, p_out); - 800f29a: 89b8 ldrh r0, [r7, #12] - 800f29c: 693b ldr r3, [r7, #16] - 800f29e: 33f0 adds r3, #240 @ 0xf0 - 800f2a0: 697a ldr r2, [r7, #20] - 800f2a2: 4619 mov r1, r3 - 800f2a4: f000 ff90 bl 80101c8 - - result = udp_sendto_if(dhcp_pcb, p_out, &dhcp->server_ip_addr, LWIP_IANA_PORT_DHCP_SERVER, netif); - 800f2a8: 4b20 ldr r3, [pc, #128] @ (800f32c ) - 800f2aa: 6818 ldr r0, [r3, #0] - 800f2ac: 69bb ldr r3, [r7, #24] - 800f2ae: f103 0218 add.w r2, r3, #24 - 800f2b2: 687b ldr r3, [r7, #4] - 800f2b4: 9300 str r3, [sp, #0] - 800f2b6: 2343 movs r3, #67 @ 0x43 - 800f2b8: 6979 ldr r1, [r7, #20] - 800f2ba: f7fe fe53 bl 800df64 - 800f2be: 4603 mov r3, r0 - 800f2c0: 77fb strb r3, [r7, #31] - pbuf_free(p_out); - 800f2c2: 6978 ldr r0, [r7, #20] - 800f2c4: f7f8 fef0 bl 80080a8 - 800f2c8: e001 b.n 800f2ce - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_renew: RENEWING\n")); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_renew: could not allocate DHCP request\n")); - result = ERR_MEM; - 800f2ca: 23ff movs r3, #255 @ 0xff - 800f2cc: 77fb strb r3, [r7, #31] - } - if (dhcp->tries < 255) { - 800f2ce: 69bb ldr r3, [r7, #24] - 800f2d0: 799b ldrb r3, [r3, #6] - 800f2d2: 2bff cmp r3, #255 @ 0xff - 800f2d4: d005 beq.n 800f2e2 - dhcp->tries++; - 800f2d6: 69bb ldr r3, [r7, #24] - 800f2d8: 799b ldrb r3, [r3, #6] - 800f2da: 3301 adds r3, #1 - 800f2dc: b2da uxtb r2, r3 - 800f2de: 69bb ldr r3, [r7, #24] - 800f2e0: 719a strb r2, [r3, #6] - } - /* back-off on retries, but to a maximum of 20 seconds */ - msecs = (u16_t)(dhcp->tries < 10 ? dhcp->tries * 2000 : 20 * 1000); - 800f2e2: 69bb ldr r3, [r7, #24] - 800f2e4: 799b ldrb r3, [r3, #6] - 800f2e6: 2b09 cmp r3, #9 - 800f2e8: d809 bhi.n 800f2fe - 800f2ea: 69bb ldr r3, [r7, #24] - 800f2ec: 799b ldrb r3, [r3, #6] - 800f2ee: 461a mov r2, r3 - 800f2f0: 0152 lsls r2, r2, #5 - 800f2f2: 1ad2 subs r2, r2, r3 - 800f2f4: 0092 lsls r2, r2, #2 - 800f2f6: 4413 add r3, r2 - 800f2f8: 011b lsls r3, r3, #4 - 800f2fa: b29b uxth r3, r3 - 800f2fc: e001 b.n 800f302 - 800f2fe: f644 6320 movw r3, #20000 @ 0x4e20 - 800f302: 81fb strh r3, [r7, #14] - dhcp->request_timeout = (u16_t)((msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS); - 800f304: 89fb ldrh r3, [r7, #14] - 800f306: f203 13f3 addw r3, r3, #499 @ 0x1f3 - 800f30a: 4a09 ldr r2, [pc, #36] @ (800f330 ) - 800f30c: fb82 1203 smull r1, r2, r2, r3 - 800f310: 1152 asrs r2, r2, #5 - 800f312: 17db asrs r3, r3, #31 - 800f314: 1ad3 subs r3, r2, r3 - 800f316: b29a uxth r2, r3 - 800f318: 69bb ldr r3, [r7, #24] - 800f31a: 811a strh r2, [r3, #8] - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_renew(): set request timeout %"U16_F" msecs\n", msecs)); - return result; - 800f31c: f997 301f ldrsb.w r3, [r7, #31] -} - 800f320: 4618 mov r0, r3 - 800f322: 3720 adds r7, #32 - 800f324: 46bd mov sp, r7 - 800f326: bd80 pop {r7, pc} - 800f328: 2000002c .word 0x2000002c - 800f32c: 20019174 .word 0x20019174 - 800f330: 10624dd3 .word 0x10624dd3 - -0800f334 : - * - * @param netif network interface which must rebind with a DHCP server - */ -static err_t -dhcp_rebind(struct netif *netif) -{ - 800f334: b580 push {r7, lr} - 800f336: b08a sub sp, #40 @ 0x28 - 800f338: af02 add r7, sp, #8 - 800f33a: 6078 str r0, [r7, #4] - struct dhcp *dhcp = netif_dhcp_data(netif); - 800f33c: 687b ldr r3, [r7, #4] - 800f33e: 6a5b ldr r3, [r3, #36] @ 0x24 - 800f340: 61bb str r3, [r7, #24] - u8_t i; - struct pbuf *p_out; - u16_t options_out_len; - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_rebind()\n")); - dhcp_set_state(dhcp, DHCP_STATE_REBINDING); - 800f342: 2104 movs r1, #4 - 800f344: 69b8 ldr r0, [r7, #24] - 800f346: f000 f9dd bl 800f704 - - /* create and initialize the DHCP message header */ - p_out = dhcp_create_msg(netif, dhcp, DHCP_REQUEST, &options_out_len); - 800f34a: f107 030c add.w r3, r7, #12 - 800f34e: 2203 movs r2, #3 - 800f350: 69b9 ldr r1, [r7, #24] - 800f352: 6878 ldr r0, [r7, #4] - 800f354: f000 fe62 bl 801001c - 800f358: 6178 str r0, [r7, #20] - if (p_out != NULL) { - 800f35a: 697b ldr r3, [r7, #20] - 800f35c: 2b00 cmp r3, #0 - 800f35e: d04c beq.n 800f3fa - struct dhcp_msg *msg_out = (struct dhcp_msg *)p_out->payload; - 800f360: 697b ldr r3, [r7, #20] - 800f362: 685b ldr r3, [r3, #4] - 800f364: 613b str r3, [r7, #16] - options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN); - 800f366: 89b8 ldrh r0, [r7, #12] - 800f368: 693b ldr r3, [r7, #16] - 800f36a: f103 01f0 add.w r1, r3, #240 @ 0xf0 - 800f36e: 2302 movs r3, #2 - 800f370: 2239 movs r2, #57 @ 0x39 - 800f372: f000 f9e1 bl 800f738 - 800f376: 4603 mov r3, r0 - 800f378: 81bb strh r3, [r7, #12] - options_out_len = dhcp_option_short(options_out_len, msg_out->options, DHCP_MAX_MSG_LEN(netif)); - 800f37a: 89b8 ldrh r0, [r7, #12] - 800f37c: 693b ldr r3, [r7, #16] - 800f37e: f103 01f0 add.w r1, r3, #240 @ 0xf0 - 800f382: 687b ldr r3, [r7, #4] - 800f384: 8d1b ldrh r3, [r3, #40] @ 0x28 - 800f386: 461a mov r2, r3 - 800f388: f000 fa30 bl 800f7ec - 800f38c: 4603 mov r3, r0 - 800f38e: 81bb strh r3, [r7, #12] - - options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_PARAMETER_REQUEST_LIST, LWIP_ARRAYSIZE(dhcp_discover_request_options)); - 800f390: 89b8 ldrh r0, [r7, #12] - 800f392: 693b ldr r3, [r7, #16] - 800f394: f103 01f0 add.w r1, r3, #240 @ 0xf0 - 800f398: 2303 movs r3, #3 - 800f39a: 2237 movs r2, #55 @ 0x37 - 800f39c: f000 f9cc bl 800f738 - 800f3a0: 4603 mov r3, r0 - 800f3a2: 81bb strh r3, [r7, #12] - for (i = 0; i < LWIP_ARRAYSIZE(dhcp_discover_request_options); i++) { - 800f3a4: 2300 movs r3, #0 - 800f3a6: 77bb strb r3, [r7, #30] - 800f3a8: e00e b.n 800f3c8 - options_out_len = dhcp_option_byte(options_out_len, msg_out->options, dhcp_discover_request_options[i]); - 800f3aa: 89b8 ldrh r0, [r7, #12] - 800f3ac: 693b ldr r3, [r7, #16] - 800f3ae: f103 01f0 add.w r1, r3, #240 @ 0xf0 - 800f3b2: 7fbb ldrb r3, [r7, #30] - 800f3b4: 4a28 ldr r2, [pc, #160] @ (800f458 ) - 800f3b6: 5cd3 ldrb r3, [r2, r3] - 800f3b8: 461a mov r2, r3 - 800f3ba: f000 f9f1 bl 800f7a0 - 800f3be: 4603 mov r3, r0 - 800f3c0: 81bb strh r3, [r7, #12] - for (i = 0; i < LWIP_ARRAYSIZE(dhcp_discover_request_options); i++) { - 800f3c2: 7fbb ldrb r3, [r7, #30] - 800f3c4: 3301 adds r3, #1 - 800f3c6: 77bb strb r3, [r7, #30] - 800f3c8: 7fbb ldrb r3, [r7, #30] - 800f3ca: 2b02 cmp r3, #2 - 800f3cc: d9ed bls.n 800f3aa -#if LWIP_NETIF_HOSTNAME - options_out_len = dhcp_option_hostname(options_out_len, msg_out->options, netif); -#endif /* LWIP_NETIF_HOSTNAME */ - - LWIP_HOOK_DHCP_APPEND_OPTIONS(netif, dhcp, DHCP_STATE_REBINDING, msg_out, DHCP_DISCOVER, &options_out_len); - dhcp_option_trailer(options_out_len, msg_out->options, p_out); - 800f3ce: 89b8 ldrh r0, [r7, #12] - 800f3d0: 693b ldr r3, [r7, #16] - 800f3d2: 33f0 adds r3, #240 @ 0xf0 - 800f3d4: 697a ldr r2, [r7, #20] - 800f3d6: 4619 mov r1, r3 - 800f3d8: f000 fef6 bl 80101c8 - - /* broadcast to server */ - result = udp_sendto_if(dhcp_pcb, p_out, IP_ADDR_BROADCAST, LWIP_IANA_PORT_DHCP_SERVER, netif); - 800f3dc: 4b1f ldr r3, [pc, #124] @ (800f45c ) - 800f3de: 6818 ldr r0, [r3, #0] - 800f3e0: 687b ldr r3, [r7, #4] - 800f3e2: 9300 str r3, [sp, #0] - 800f3e4: 2343 movs r3, #67 @ 0x43 - 800f3e6: 4a1e ldr r2, [pc, #120] @ (800f460 ) - 800f3e8: 6979 ldr r1, [r7, #20] - 800f3ea: f7fe fdbb bl 800df64 - 800f3ee: 4603 mov r3, r0 - 800f3f0: 77fb strb r3, [r7, #31] - pbuf_free(p_out); - 800f3f2: 6978 ldr r0, [r7, #20] - 800f3f4: f7f8 fe58 bl 80080a8 - 800f3f8: e001 b.n 800f3fe - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_rebind: REBINDING\n")); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_rebind: could not allocate DHCP request\n")); - result = ERR_MEM; - 800f3fa: 23ff movs r3, #255 @ 0xff - 800f3fc: 77fb strb r3, [r7, #31] - } - if (dhcp->tries < 255) { - 800f3fe: 69bb ldr r3, [r7, #24] - 800f400: 799b ldrb r3, [r3, #6] - 800f402: 2bff cmp r3, #255 @ 0xff - 800f404: d005 beq.n 800f412 - dhcp->tries++; - 800f406: 69bb ldr r3, [r7, #24] - 800f408: 799b ldrb r3, [r3, #6] - 800f40a: 3301 adds r3, #1 - 800f40c: b2da uxtb r2, r3 - 800f40e: 69bb ldr r3, [r7, #24] - 800f410: 719a strb r2, [r3, #6] - } - msecs = (u16_t)(dhcp->tries < 10 ? dhcp->tries * 1000 : 10 * 1000); - 800f412: 69bb ldr r3, [r7, #24] - 800f414: 799b ldrb r3, [r3, #6] - 800f416: 2b09 cmp r3, #9 - 800f418: d809 bhi.n 800f42e - 800f41a: 69bb ldr r3, [r7, #24] - 800f41c: 799b ldrb r3, [r3, #6] - 800f41e: 461a mov r2, r3 - 800f420: 0152 lsls r2, r2, #5 - 800f422: 1ad2 subs r2, r2, r3 - 800f424: 0092 lsls r2, r2, #2 - 800f426: 4413 add r3, r2 - 800f428: 00db lsls r3, r3, #3 - 800f42a: b29b uxth r3, r3 - 800f42c: e001 b.n 800f432 - 800f42e: f242 7310 movw r3, #10000 @ 0x2710 - 800f432: 81fb strh r3, [r7, #14] - dhcp->request_timeout = (u16_t)((msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS); - 800f434: 89fb ldrh r3, [r7, #14] - 800f436: f203 13f3 addw r3, r3, #499 @ 0x1f3 - 800f43a: 4a0a ldr r2, [pc, #40] @ (800f464 ) - 800f43c: fb82 1203 smull r1, r2, r2, r3 - 800f440: 1152 asrs r2, r2, #5 - 800f442: 17db asrs r3, r3, #31 - 800f444: 1ad3 subs r3, r2, r3 - 800f446: b29a uxth r2, r3 - 800f448: 69bb ldr r3, [r7, #24] - 800f44a: 811a strh r2, [r3, #8] - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_rebind(): set request timeout %"U16_F" msecs\n", msecs)); - return result; - 800f44c: f997 301f ldrsb.w r3, [r7, #31] -} - 800f450: 4618 mov r0, r3 - 800f452: 3720 adds r7, #32 - 800f454: 46bd mov sp, r7 - 800f456: bd80 pop {r7, pc} - 800f458: 2000002c .word 0x2000002c - 800f45c: 20019174 .word 0x20019174 - 800f460: 0801a5e8 .word 0x0801a5e8 - 800f464: 10624dd3 .word 0x10624dd3 - -0800f468 : - * - * @param netif network interface which must reboot - */ -static err_t -dhcp_reboot(struct netif *netif) -{ - 800f468: b5b0 push {r4, r5, r7, lr} - 800f46a: b08a sub sp, #40 @ 0x28 - 800f46c: af02 add r7, sp, #8 - 800f46e: 6078 str r0, [r7, #4] - struct dhcp *dhcp = netif_dhcp_data(netif); - 800f470: 687b ldr r3, [r7, #4] - 800f472: 6a5b ldr r3, [r3, #36] @ 0x24 - 800f474: 61bb str r3, [r7, #24] - u8_t i; - struct pbuf *p_out; - u16_t options_out_len; - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_reboot()\n")); - dhcp_set_state(dhcp, DHCP_STATE_REBOOTING); - 800f476: 2103 movs r1, #3 - 800f478: 69b8 ldr r0, [r7, #24] - 800f47a: f000 f943 bl 800f704 - - /* create and initialize the DHCP message header */ - p_out = dhcp_create_msg(netif, dhcp, DHCP_REQUEST, &options_out_len); - 800f47e: f107 030c add.w r3, r7, #12 - 800f482: 2203 movs r2, #3 - 800f484: 69b9 ldr r1, [r7, #24] - 800f486: 6878 ldr r0, [r7, #4] - 800f488: f000 fdc8 bl 801001c - 800f48c: 6178 str r0, [r7, #20] - if (p_out != NULL) { - 800f48e: 697b ldr r3, [r7, #20] - 800f490: 2b00 cmp r3, #0 - 800f492: d066 beq.n 800f562 - struct dhcp_msg *msg_out = (struct dhcp_msg *)p_out->payload; - 800f494: 697b ldr r3, [r7, #20] - 800f496: 685b ldr r3, [r3, #4] - 800f498: 613b str r3, [r7, #16] - options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN); - 800f49a: 89b8 ldrh r0, [r7, #12] - 800f49c: 693b ldr r3, [r7, #16] - 800f49e: f103 01f0 add.w r1, r3, #240 @ 0xf0 - 800f4a2: 2302 movs r3, #2 - 800f4a4: 2239 movs r2, #57 @ 0x39 - 800f4a6: f000 f947 bl 800f738 - 800f4aa: 4603 mov r3, r0 - 800f4ac: 81bb strh r3, [r7, #12] - options_out_len = dhcp_option_short(options_out_len, msg_out->options, DHCP_MAX_MSG_LEN_MIN_REQUIRED); - 800f4ae: 89b8 ldrh r0, [r7, #12] - 800f4b0: 693b ldr r3, [r7, #16] - 800f4b2: 33f0 adds r3, #240 @ 0xf0 - 800f4b4: f44f 7210 mov.w r2, #576 @ 0x240 - 800f4b8: 4619 mov r1, r3 - 800f4ba: f000 f997 bl 800f7ec - 800f4be: 4603 mov r3, r0 - 800f4c0: 81bb strh r3, [r7, #12] - - options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_REQUESTED_IP, 4); - 800f4c2: 89b8 ldrh r0, [r7, #12] - 800f4c4: 693b ldr r3, [r7, #16] - 800f4c6: f103 01f0 add.w r1, r3, #240 @ 0xf0 - 800f4ca: 2304 movs r3, #4 - 800f4cc: 2232 movs r2, #50 @ 0x32 - 800f4ce: f000 f933 bl 800f738 - 800f4d2: 4603 mov r3, r0 - 800f4d4: 81bb strh r3, [r7, #12] - options_out_len = dhcp_option_long(options_out_len, msg_out->options, lwip_ntohl(ip4_addr_get_u32(&dhcp->offered_ip_addr))); - 800f4d6: 89bc ldrh r4, [r7, #12] - 800f4d8: 693b ldr r3, [r7, #16] - 800f4da: f103 05f0 add.w r5, r3, #240 @ 0xf0 - 800f4de: 69bb ldr r3, [r7, #24] - 800f4e0: 69db ldr r3, [r3, #28] - 800f4e2: 4618 mov r0, r3 - 800f4e4: f7f7 faa5 bl 8006a32 - 800f4e8: 4603 mov r3, r0 - 800f4ea: 461a mov r2, r3 - 800f4ec: 4629 mov r1, r5 - 800f4ee: 4620 mov r0, r4 - 800f4f0: f000 f9ae bl 800f850 - 800f4f4: 4603 mov r3, r0 - 800f4f6: 81bb strh r3, [r7, #12] - - options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_PARAMETER_REQUEST_LIST, LWIP_ARRAYSIZE(dhcp_discover_request_options)); - 800f4f8: 89b8 ldrh r0, [r7, #12] - 800f4fa: 693b ldr r3, [r7, #16] - 800f4fc: f103 01f0 add.w r1, r3, #240 @ 0xf0 - 800f500: 2303 movs r3, #3 - 800f502: 2237 movs r2, #55 @ 0x37 - 800f504: f000 f918 bl 800f738 - 800f508: 4603 mov r3, r0 - 800f50a: 81bb strh r3, [r7, #12] - for (i = 0; i < LWIP_ARRAYSIZE(dhcp_discover_request_options); i++) { - 800f50c: 2300 movs r3, #0 - 800f50e: 77bb strb r3, [r7, #30] - 800f510: e00e b.n 800f530 - options_out_len = dhcp_option_byte(options_out_len, msg_out->options, dhcp_discover_request_options[i]); - 800f512: 89b8 ldrh r0, [r7, #12] - 800f514: 693b ldr r3, [r7, #16] - 800f516: f103 01f0 add.w r1, r3, #240 @ 0xf0 - 800f51a: 7fbb ldrb r3, [r7, #30] - 800f51c: 4a28 ldr r2, [pc, #160] @ (800f5c0 ) - 800f51e: 5cd3 ldrb r3, [r2, r3] - 800f520: 461a mov r2, r3 - 800f522: f000 f93d bl 800f7a0 - 800f526: 4603 mov r3, r0 - 800f528: 81bb strh r3, [r7, #12] - for (i = 0; i < LWIP_ARRAYSIZE(dhcp_discover_request_options); i++) { - 800f52a: 7fbb ldrb r3, [r7, #30] - 800f52c: 3301 adds r3, #1 - 800f52e: 77bb strb r3, [r7, #30] - 800f530: 7fbb ldrb r3, [r7, #30] - 800f532: 2b02 cmp r3, #2 - 800f534: d9ed bls.n 800f512 -#if LWIP_NETIF_HOSTNAME - options_out_len = dhcp_option_hostname(options_out_len, msg_out->options, netif); -#endif /* LWIP_NETIF_HOSTNAME */ - - LWIP_HOOK_DHCP_APPEND_OPTIONS(netif, dhcp, DHCP_STATE_REBOOTING, msg_out, DHCP_REQUEST, &options_out_len); - dhcp_option_trailer(options_out_len, msg_out->options, p_out); - 800f536: 89b8 ldrh r0, [r7, #12] - 800f538: 693b ldr r3, [r7, #16] - 800f53a: 33f0 adds r3, #240 @ 0xf0 - 800f53c: 697a ldr r2, [r7, #20] - 800f53e: 4619 mov r1, r3 - 800f540: f000 fe42 bl 80101c8 - - /* broadcast to server */ - result = udp_sendto_if(dhcp_pcb, p_out, IP_ADDR_BROADCAST, LWIP_IANA_PORT_DHCP_SERVER, netif); - 800f544: 4b1f ldr r3, [pc, #124] @ (800f5c4 ) - 800f546: 6818 ldr r0, [r3, #0] - 800f548: 687b ldr r3, [r7, #4] - 800f54a: 9300 str r3, [sp, #0] - 800f54c: 2343 movs r3, #67 @ 0x43 - 800f54e: 4a1e ldr r2, [pc, #120] @ (800f5c8 ) - 800f550: 6979 ldr r1, [r7, #20] - 800f552: f7fe fd07 bl 800df64 - 800f556: 4603 mov r3, r0 - 800f558: 77fb strb r3, [r7, #31] - pbuf_free(p_out); - 800f55a: 6978 ldr r0, [r7, #20] - 800f55c: f7f8 fda4 bl 80080a8 - 800f560: e001 b.n 800f566 - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_reboot: REBOOTING\n")); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_reboot: could not allocate DHCP request\n")); - result = ERR_MEM; - 800f562: 23ff movs r3, #255 @ 0xff - 800f564: 77fb strb r3, [r7, #31] - } - if (dhcp->tries < 255) { - 800f566: 69bb ldr r3, [r7, #24] - 800f568: 799b ldrb r3, [r3, #6] - 800f56a: 2bff cmp r3, #255 @ 0xff - 800f56c: d005 beq.n 800f57a - dhcp->tries++; - 800f56e: 69bb ldr r3, [r7, #24] - 800f570: 799b ldrb r3, [r3, #6] - 800f572: 3301 adds r3, #1 - 800f574: b2da uxtb r2, r3 - 800f576: 69bb ldr r3, [r7, #24] - 800f578: 719a strb r2, [r3, #6] - } - msecs = (u16_t)(dhcp->tries < 10 ? dhcp->tries * 1000 : 10 * 1000); - 800f57a: 69bb ldr r3, [r7, #24] - 800f57c: 799b ldrb r3, [r3, #6] - 800f57e: 2b09 cmp r3, #9 - 800f580: d809 bhi.n 800f596 - 800f582: 69bb ldr r3, [r7, #24] - 800f584: 799b ldrb r3, [r3, #6] - 800f586: 461a mov r2, r3 - 800f588: 0152 lsls r2, r2, #5 - 800f58a: 1ad2 subs r2, r2, r3 - 800f58c: 0092 lsls r2, r2, #2 - 800f58e: 4413 add r3, r2 - 800f590: 00db lsls r3, r3, #3 - 800f592: b29b uxth r3, r3 - 800f594: e001 b.n 800f59a - 800f596: f242 7310 movw r3, #10000 @ 0x2710 - 800f59a: 81fb strh r3, [r7, #14] - dhcp->request_timeout = (u16_t)((msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS); - 800f59c: 89fb ldrh r3, [r7, #14] - 800f59e: f203 13f3 addw r3, r3, #499 @ 0x1f3 - 800f5a2: 4a0a ldr r2, [pc, #40] @ (800f5cc ) - 800f5a4: fb82 1203 smull r1, r2, r2, r3 - 800f5a8: 1152 asrs r2, r2, #5 - 800f5aa: 17db asrs r3, r3, #31 - 800f5ac: 1ad3 subs r3, r2, r3 - 800f5ae: b29a uxth r2, r3 - 800f5b0: 69bb ldr r3, [r7, #24] - 800f5b2: 811a strh r2, [r3, #8] - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_reboot(): set request timeout %"U16_F" msecs\n", msecs)); - return result; - 800f5b4: f997 301f ldrsb.w r3, [r7, #31] -} - 800f5b8: 4618 mov r0, r3 - 800f5ba: 3720 adds r7, #32 - 800f5bc: 46bd mov sp, r7 - 800f5be: bdb0 pop {r4, r5, r7, pc} - 800f5c0: 2000002c .word 0x2000002c - 800f5c4: 20019174 .word 0x20019174 - 800f5c8: 0801a5e8 .word 0x0801a5e8 - 800f5cc: 10624dd3 .word 0x10624dd3 - -0800f5d0 : - * - * @param netif network interface - */ -void -dhcp_release_and_stop(struct netif *netif) -{ - 800f5d0: b5b0 push {r4, r5, r7, lr} - 800f5d2: b08a sub sp, #40 @ 0x28 - 800f5d4: af02 add r7, sp, #8 - 800f5d6: 6078 str r0, [r7, #4] - struct dhcp *dhcp = netif_dhcp_data(netif); - 800f5d8: 687b ldr r3, [r7, #4] - 800f5da: 6a5b ldr r3, [r3, #36] @ 0x24 - 800f5dc: 61fb str r3, [r7, #28] - ip_addr_t server_ip_addr; - - LWIP_ASSERT_CORE_LOCKED(); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_release_and_stop()\n")); - if (dhcp == NULL) { - 800f5de: 69fb ldr r3, [r7, #28] - 800f5e0: 2b00 cmp r3, #0 - 800f5e2: f000 8084 beq.w 800f6ee - return; - } - - /* already off? -> nothing to do */ - if (dhcp->state == DHCP_STATE_OFF) { - 800f5e6: 69fb ldr r3, [r7, #28] - 800f5e8: 795b ldrb r3, [r3, #5] - 800f5ea: 2b00 cmp r3, #0 - 800f5ec: f000 8081 beq.w 800f6f2 - return; - } - - ip_addr_copy(server_ip_addr, dhcp->server_ip_addr); - 800f5f0: 69fb ldr r3, [r7, #28] - 800f5f2: 699b ldr r3, [r3, #24] - 800f5f4: 613b str r3, [r7, #16] - - /* clean old DHCP offer */ - ip_addr_set_zero_ip4(&dhcp->server_ip_addr); - 800f5f6: 69fb ldr r3, [r7, #28] - 800f5f8: 2200 movs r2, #0 - 800f5fa: 619a str r2, [r3, #24] - ip4_addr_set_zero(&dhcp->offered_ip_addr); - 800f5fc: 69fb ldr r3, [r7, #28] - 800f5fe: 2200 movs r2, #0 - 800f600: 61da str r2, [r3, #28] - ip4_addr_set_zero(&dhcp->offered_sn_mask); - 800f602: 69fb ldr r3, [r7, #28] - 800f604: 2200 movs r2, #0 - 800f606: 621a str r2, [r3, #32] - ip4_addr_set_zero(&dhcp->offered_gw_addr); - 800f608: 69fb ldr r3, [r7, #28] - 800f60a: 2200 movs r2, #0 - 800f60c: 625a str r2, [r3, #36] @ 0x24 -#if LWIP_DHCP_BOOTP_FILE - ip4_addr_set_zero(&dhcp->offered_si_addr); -#endif /* LWIP_DHCP_BOOTP_FILE */ - dhcp->offered_t0_lease = dhcp->offered_t1_renew = dhcp->offered_t2_rebind = 0; - 800f60e: 69fb ldr r3, [r7, #28] - 800f610: 2200 movs r2, #0 - 800f612: 631a str r2, [r3, #48] @ 0x30 - 800f614: 69fb ldr r3, [r7, #28] - 800f616: 6b1a ldr r2, [r3, #48] @ 0x30 - 800f618: 69fb ldr r3, [r7, #28] - 800f61a: 62da str r2, [r3, #44] @ 0x2c - 800f61c: 69fb ldr r3, [r7, #28] - 800f61e: 6ada ldr r2, [r3, #44] @ 0x2c - 800f620: 69fb ldr r3, [r7, #28] - 800f622: 629a str r2, [r3, #40] @ 0x28 - dhcp->t1_renew_time = dhcp->t2_rebind_time = dhcp->lease_used = dhcp->t0_timeout = 0; - 800f624: 69fb ldr r3, [r7, #28] - 800f626: 2200 movs r2, #0 - 800f628: 829a strh r2, [r3, #20] - 800f62a: 69fb ldr r3, [r7, #28] - 800f62c: 8a9a ldrh r2, [r3, #20] - 800f62e: 69fb ldr r3, [r7, #28] - 800f630: 825a strh r2, [r3, #18] - 800f632: 69fb ldr r3, [r7, #28] - 800f634: 8a5a ldrh r2, [r3, #18] - 800f636: 69fb ldr r3, [r7, #28] - 800f638: 821a strh r2, [r3, #16] - 800f63a: 69fb ldr r3, [r7, #28] - 800f63c: 8a1a ldrh r2, [r3, #16] - 800f63e: 69fb ldr r3, [r7, #28] - 800f640: 81da strh r2, [r3, #14] - - /* send release message when current IP was assigned via DHCP */ - if (dhcp_supplied_address(netif)) { - 800f642: 6878 ldr r0, [r7, #4] - 800f644: f000 fdee bl 8010224 - 800f648: 4603 mov r3, r0 - 800f64a: 2b00 cmp r3, #0 - 800f64c: d03b beq.n 800f6c6 - /* create and initialize the DHCP message header */ - struct pbuf *p_out; - u16_t options_out_len; - p_out = dhcp_create_msg(netif, dhcp, DHCP_RELEASE, &options_out_len); - 800f64e: f107 030e add.w r3, r7, #14 - 800f652: 2207 movs r2, #7 - 800f654: 69f9 ldr r1, [r7, #28] - 800f656: 6878 ldr r0, [r7, #4] - 800f658: f000 fce0 bl 801001c - 800f65c: 61b8 str r0, [r7, #24] - if (p_out != NULL) { - 800f65e: 69bb ldr r3, [r7, #24] - 800f660: 2b00 cmp r3, #0 - 800f662: d030 beq.n 800f6c6 - struct dhcp_msg *msg_out = (struct dhcp_msg *)p_out->payload; - 800f664: 69bb ldr r3, [r7, #24] - 800f666: 685b ldr r3, [r3, #4] - 800f668: 617b str r3, [r7, #20] - options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_SERVER_ID, 4); - 800f66a: 89f8 ldrh r0, [r7, #14] - 800f66c: 697b ldr r3, [r7, #20] - 800f66e: f103 01f0 add.w r1, r3, #240 @ 0xf0 - 800f672: 2304 movs r3, #4 - 800f674: 2236 movs r2, #54 @ 0x36 - 800f676: f000 f85f bl 800f738 - 800f67a: 4603 mov r3, r0 - 800f67c: 81fb strh r3, [r7, #14] - options_out_len = dhcp_option_long(options_out_len, msg_out->options, lwip_ntohl(ip4_addr_get_u32(ip_2_ip4(&server_ip_addr)))); - 800f67e: 89fc ldrh r4, [r7, #14] - 800f680: 697b ldr r3, [r7, #20] - 800f682: f103 05f0 add.w r5, r3, #240 @ 0xf0 - 800f686: 693b ldr r3, [r7, #16] - 800f688: 4618 mov r0, r3 - 800f68a: f7f7 f9d2 bl 8006a32 - 800f68e: 4603 mov r3, r0 - 800f690: 461a mov r2, r3 - 800f692: 4629 mov r1, r5 - 800f694: 4620 mov r0, r4 - 800f696: f000 f8db bl 800f850 - 800f69a: 4603 mov r3, r0 - 800f69c: 81fb strh r3, [r7, #14] - - LWIP_HOOK_DHCP_APPEND_OPTIONS(netif, dhcp, dhcp->state, msg_out, DHCP_RELEASE, &options_out_len); - dhcp_option_trailer(options_out_len, msg_out->options, p_out); - 800f69e: 89f8 ldrh r0, [r7, #14] - 800f6a0: 697b ldr r3, [r7, #20] - 800f6a2: 33f0 adds r3, #240 @ 0xf0 - 800f6a4: 69ba ldr r2, [r7, #24] - 800f6a6: 4619 mov r1, r3 - 800f6a8: f000 fd8e bl 80101c8 - - udp_sendto_if(dhcp_pcb, p_out, &server_ip_addr, LWIP_IANA_PORT_DHCP_SERVER, netif); - 800f6ac: 4b13 ldr r3, [pc, #76] @ (800f6fc ) - 800f6ae: 6818 ldr r0, [r3, #0] - 800f6b0: f107 0210 add.w r2, r7, #16 - 800f6b4: 687b ldr r3, [r7, #4] - 800f6b6: 9300 str r3, [sp, #0] - 800f6b8: 2343 movs r3, #67 @ 0x43 - 800f6ba: 69b9 ldr r1, [r7, #24] - 800f6bc: f7fe fc52 bl 800df64 - pbuf_free(p_out); - 800f6c0: 69b8 ldr r0, [r7, #24] - 800f6c2: f7f8 fcf1 bl 80080a8 - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_release: could not allocate DHCP request\n")); - } - } - - /* remove IP address from interface (prevents routing from selecting this interface) */ - netif_set_addr(netif, IP4_ADDR_ANY4, IP4_ADDR_ANY4, IP4_ADDR_ANY4); - 800f6c6: 4b0e ldr r3, [pc, #56] @ (800f700 ) - 800f6c8: 4a0d ldr r2, [pc, #52] @ (800f700 ) - 800f6ca: 490d ldr r1, [pc, #52] @ (800f700 ) - 800f6cc: 6878 ldr r0, [r7, #4] - 800f6ce: f7f8 f80d bl 80076ec - autoip_stop(netif); - dhcp->autoip_coop_state = DHCP_AUTOIP_COOP_STATE_OFF; - } -#endif /* LWIP_DHCP_AUTOIP_COOP */ - - dhcp_set_state(dhcp, DHCP_STATE_OFF); - 800f6d2: 2100 movs r1, #0 - 800f6d4: 69f8 ldr r0, [r7, #28] - 800f6d6: f000 f815 bl 800f704 - - if (dhcp->pcb_allocated != 0) { - 800f6da: 69fb ldr r3, [r7, #28] - 800f6dc: 791b ldrb r3, [r3, #4] - 800f6de: 2b00 cmp r3, #0 - 800f6e0: d008 beq.n 800f6f4 - dhcp_dec_pcb_refcount(); /* free DHCP PCB if not needed any more */ - 800f6e2: f7fe ff8b bl 800e5fc - dhcp->pcb_allocated = 0; - 800f6e6: 69fb ldr r3, [r7, #28] - 800f6e8: 2200 movs r2, #0 - 800f6ea: 711a strb r2, [r3, #4] - 800f6ec: e002 b.n 800f6f4 - return; - 800f6ee: bf00 nop - 800f6f0: e000 b.n 800f6f4 - return; - 800f6f2: bf00 nop - } -} - 800f6f4: 3720 adds r7, #32 - 800f6f6: 46bd mov sp, r7 - 800f6f8: bdb0 pop {r4, r5, r7, pc} - 800f6fa: bf00 nop - 800f6fc: 20019174 .word 0x20019174 - 800f700: 0801a5e4 .word 0x0801a5e4 - -0800f704 : - * - * If the state changed, reset the number of tries. - */ -static void -dhcp_set_state(struct dhcp *dhcp, u8_t new_state) -{ - 800f704: b480 push {r7} - 800f706: b083 sub sp, #12 - 800f708: af00 add r7, sp, #0 - 800f70a: 6078 str r0, [r7, #4] - 800f70c: 460b mov r3, r1 - 800f70e: 70fb strb r3, [r7, #3] - if (new_state != dhcp->state) { - 800f710: 687b ldr r3, [r7, #4] - 800f712: 795b ldrb r3, [r3, #5] - 800f714: 78fa ldrb r2, [r7, #3] - 800f716: 429a cmp r2, r3 - 800f718: d008 beq.n 800f72c - dhcp->state = new_state; - 800f71a: 687b ldr r3, [r7, #4] - 800f71c: 78fa ldrb r2, [r7, #3] - 800f71e: 715a strb r2, [r3, #5] - dhcp->tries = 0; - 800f720: 687b ldr r3, [r7, #4] - 800f722: 2200 movs r2, #0 - 800f724: 719a strb r2, [r3, #6] - dhcp->request_timeout = 0; - 800f726: 687b ldr r3, [r7, #4] - 800f728: 2200 movs r2, #0 - 800f72a: 811a strh r2, [r3, #8] - } -} - 800f72c: bf00 nop - 800f72e: 370c adds r7, #12 - 800f730: 46bd mov sp, r7 - 800f732: f85d 7b04 ldr.w r7, [sp], #4 - 800f736: 4770 bx lr - -0800f738 : - * DHCP message. - * - */ -static u16_t -dhcp_option(u16_t options_out_len, u8_t *options, u8_t option_type, u8_t option_len) -{ - 800f738: b580 push {r7, lr} - 800f73a: b082 sub sp, #8 - 800f73c: af00 add r7, sp, #0 - 800f73e: 6039 str r1, [r7, #0] - 800f740: 4611 mov r1, r2 - 800f742: 461a mov r2, r3 - 800f744: 4603 mov r3, r0 - 800f746: 80fb strh r3, [r7, #6] - 800f748: 460b mov r3, r1 - 800f74a: 717b strb r3, [r7, #5] - 800f74c: 4613 mov r3, r2 - 800f74e: 713b strb r3, [r7, #4] - LWIP_ASSERT("dhcp_option: options_out_len + 2 + option_len <= DHCP_OPTIONS_LEN", options_out_len + 2U + option_len <= DHCP_OPTIONS_LEN); - 800f750: 88fa ldrh r2, [r7, #6] - 800f752: 793b ldrb r3, [r7, #4] - 800f754: 4413 add r3, r2 - 800f756: 3302 adds r3, #2 - 800f758: 2b44 cmp r3, #68 @ 0x44 - 800f75a: d906 bls.n 800f76a - 800f75c: 4b0d ldr r3, [pc, #52] @ (800f794 ) - 800f75e: f240 529a movw r2, #1434 @ 0x59a - 800f762: 490d ldr r1, [pc, #52] @ (800f798 ) - 800f764: 480d ldr r0, [pc, #52] @ (800f79c ) - 800f766: f003 fa87 bl 8012c78 - options[options_out_len++] = option_type; - 800f76a: 88fb ldrh r3, [r7, #6] - 800f76c: 1c5a adds r2, r3, #1 - 800f76e: 80fa strh r2, [r7, #6] - 800f770: 461a mov r2, r3 - 800f772: 683b ldr r3, [r7, #0] - 800f774: 4413 add r3, r2 - 800f776: 797a ldrb r2, [r7, #5] - 800f778: 701a strb r2, [r3, #0] - options[options_out_len++] = option_len; - 800f77a: 88fb ldrh r3, [r7, #6] - 800f77c: 1c5a adds r2, r3, #1 - 800f77e: 80fa strh r2, [r7, #6] - 800f780: 461a mov r2, r3 - 800f782: 683b ldr r3, [r7, #0] - 800f784: 4413 add r3, r2 - 800f786: 793a ldrb r2, [r7, #4] - 800f788: 701a strb r2, [r3, #0] - return options_out_len; - 800f78a: 88fb ldrh r3, [r7, #6] -} - 800f78c: 4618 mov r0, r3 - 800f78e: 3708 adds r7, #8 - 800f790: 46bd mov sp, r7 - 800f792: bd80 pop {r7, pc} - 800f794: 08019a14 .word 0x08019a14 - 800f798: 08019ba8 .word 0x08019ba8 - 800f79c: 08019a74 .word 0x08019a74 - -0800f7a0 : - * Concatenate a single byte to the outgoing DHCP message. - * - */ -static u16_t -dhcp_option_byte(u16_t options_out_len, u8_t *options, u8_t value) -{ - 800f7a0: b580 push {r7, lr} - 800f7a2: b082 sub sp, #8 - 800f7a4: af00 add r7, sp, #0 - 800f7a6: 4603 mov r3, r0 - 800f7a8: 6039 str r1, [r7, #0] - 800f7aa: 80fb strh r3, [r7, #6] - 800f7ac: 4613 mov r3, r2 - 800f7ae: 717b strb r3, [r7, #5] - LWIP_ASSERT("dhcp_option_byte: options_out_len < DHCP_OPTIONS_LEN", options_out_len < DHCP_OPTIONS_LEN); - 800f7b0: 88fb ldrh r3, [r7, #6] - 800f7b2: 2b43 cmp r3, #67 @ 0x43 - 800f7b4: d906 bls.n 800f7c4 - 800f7b6: 4b0a ldr r3, [pc, #40] @ (800f7e0 ) - 800f7b8: f240 52a6 movw r2, #1446 @ 0x5a6 - 800f7bc: 4909 ldr r1, [pc, #36] @ (800f7e4 ) - 800f7be: 480a ldr r0, [pc, #40] @ (800f7e8 ) - 800f7c0: f003 fa5a bl 8012c78 - options[options_out_len++] = value; - 800f7c4: 88fb ldrh r3, [r7, #6] - 800f7c6: 1c5a adds r2, r3, #1 - 800f7c8: 80fa strh r2, [r7, #6] - 800f7ca: 461a mov r2, r3 - 800f7cc: 683b ldr r3, [r7, #0] - 800f7ce: 4413 add r3, r2 - 800f7d0: 797a ldrb r2, [r7, #5] - 800f7d2: 701a strb r2, [r3, #0] - return options_out_len; - 800f7d4: 88fb ldrh r3, [r7, #6] -} - 800f7d6: 4618 mov r0, r3 - 800f7d8: 3708 adds r7, #8 - 800f7da: 46bd mov sp, r7 - 800f7dc: bd80 pop {r7, pc} - 800f7de: bf00 nop - 800f7e0: 08019a14 .word 0x08019a14 - 800f7e4: 08019bec .word 0x08019bec - 800f7e8: 08019a74 .word 0x08019a74 - -0800f7ec : - -static u16_t -dhcp_option_short(u16_t options_out_len, u8_t *options, u16_t value) -{ - 800f7ec: b580 push {r7, lr} - 800f7ee: b082 sub sp, #8 - 800f7f0: af00 add r7, sp, #0 - 800f7f2: 4603 mov r3, r0 - 800f7f4: 6039 str r1, [r7, #0] - 800f7f6: 80fb strh r3, [r7, #6] - 800f7f8: 4613 mov r3, r2 - 800f7fa: 80bb strh r3, [r7, #4] - LWIP_ASSERT("dhcp_option_short: options_out_len + 2 <= DHCP_OPTIONS_LEN", options_out_len + 2U <= DHCP_OPTIONS_LEN); - 800f7fc: 88fb ldrh r3, [r7, #6] - 800f7fe: 3302 adds r3, #2 - 800f800: 2b44 cmp r3, #68 @ 0x44 - 800f802: d906 bls.n 800f812 - 800f804: 4b0f ldr r3, [pc, #60] @ (800f844 ) - 800f806: f240 52ae movw r2, #1454 @ 0x5ae - 800f80a: 490f ldr r1, [pc, #60] @ (800f848 ) - 800f80c: 480f ldr r0, [pc, #60] @ (800f84c ) - 800f80e: f003 fa33 bl 8012c78 - options[options_out_len++] = (u8_t)((value & 0xff00U) >> 8); - 800f812: 88bb ldrh r3, [r7, #4] - 800f814: 0a1b lsrs r3, r3, #8 - 800f816: b29a uxth r2, r3 - 800f818: 88fb ldrh r3, [r7, #6] - 800f81a: 1c59 adds r1, r3, #1 - 800f81c: 80f9 strh r1, [r7, #6] - 800f81e: 4619 mov r1, r3 - 800f820: 683b ldr r3, [r7, #0] - 800f822: 440b add r3, r1 - 800f824: b2d2 uxtb r2, r2 - 800f826: 701a strb r2, [r3, #0] - options[options_out_len++] = (u8_t) (value & 0x00ffU); - 800f828: 88fb ldrh r3, [r7, #6] - 800f82a: 1c5a adds r2, r3, #1 - 800f82c: 80fa strh r2, [r7, #6] - 800f82e: 461a mov r2, r3 - 800f830: 683b ldr r3, [r7, #0] - 800f832: 4413 add r3, r2 - 800f834: 88ba ldrh r2, [r7, #4] - 800f836: b2d2 uxtb r2, r2 - 800f838: 701a strb r2, [r3, #0] - return options_out_len; - 800f83a: 88fb ldrh r3, [r7, #6] -} - 800f83c: 4618 mov r0, r3 - 800f83e: 3708 adds r7, #8 - 800f840: 46bd mov sp, r7 - 800f842: bd80 pop {r7, pc} - 800f844: 08019a14 .word 0x08019a14 - 800f848: 08019c24 .word 0x08019c24 - 800f84c: 08019a74 .word 0x08019a74 - -0800f850 : - -static u16_t -dhcp_option_long(u16_t options_out_len, u8_t *options, u32_t value) -{ - 800f850: b580 push {r7, lr} - 800f852: b084 sub sp, #16 - 800f854: af00 add r7, sp, #0 - 800f856: 4603 mov r3, r0 - 800f858: 60b9 str r1, [r7, #8] - 800f85a: 607a str r2, [r7, #4] - 800f85c: 81fb strh r3, [r7, #14] - LWIP_ASSERT("dhcp_option_long: options_out_len + 4 <= DHCP_OPTIONS_LEN", options_out_len + 4U <= DHCP_OPTIONS_LEN); - 800f85e: 89fb ldrh r3, [r7, #14] - 800f860: 3304 adds r3, #4 - 800f862: 2b44 cmp r3, #68 @ 0x44 - 800f864: d906 bls.n 800f874 - 800f866: 4b19 ldr r3, [pc, #100] @ (800f8cc ) - 800f868: f240 52b7 movw r2, #1463 @ 0x5b7 - 800f86c: 4918 ldr r1, [pc, #96] @ (800f8d0 ) - 800f86e: 4819 ldr r0, [pc, #100] @ (800f8d4 ) - 800f870: f003 fa02 bl 8012c78 - options[options_out_len++] = (u8_t)((value & 0xff000000UL) >> 24); - 800f874: 687b ldr r3, [r7, #4] - 800f876: 0e1a lsrs r2, r3, #24 - 800f878: 89fb ldrh r3, [r7, #14] - 800f87a: 1c59 adds r1, r3, #1 - 800f87c: 81f9 strh r1, [r7, #14] - 800f87e: 4619 mov r1, r3 - 800f880: 68bb ldr r3, [r7, #8] - 800f882: 440b add r3, r1 - 800f884: b2d2 uxtb r2, r2 - 800f886: 701a strb r2, [r3, #0] - options[options_out_len++] = (u8_t)((value & 0x00ff0000UL) >> 16); - 800f888: 687b ldr r3, [r7, #4] - 800f88a: 0c1a lsrs r2, r3, #16 - 800f88c: 89fb ldrh r3, [r7, #14] - 800f88e: 1c59 adds r1, r3, #1 - 800f890: 81f9 strh r1, [r7, #14] - 800f892: 4619 mov r1, r3 - 800f894: 68bb ldr r3, [r7, #8] - 800f896: 440b add r3, r1 - 800f898: b2d2 uxtb r2, r2 - 800f89a: 701a strb r2, [r3, #0] - options[options_out_len++] = (u8_t)((value & 0x0000ff00UL) >> 8); - 800f89c: 687b ldr r3, [r7, #4] - 800f89e: 0a1a lsrs r2, r3, #8 - 800f8a0: 89fb ldrh r3, [r7, #14] - 800f8a2: 1c59 adds r1, r3, #1 - 800f8a4: 81f9 strh r1, [r7, #14] - 800f8a6: 4619 mov r1, r3 - 800f8a8: 68bb ldr r3, [r7, #8] - 800f8aa: 440b add r3, r1 - 800f8ac: b2d2 uxtb r2, r2 - 800f8ae: 701a strb r2, [r3, #0] - options[options_out_len++] = (u8_t)((value & 0x000000ffUL)); - 800f8b0: 89fb ldrh r3, [r7, #14] - 800f8b2: 1c5a adds r2, r3, #1 - 800f8b4: 81fa strh r2, [r7, #14] - 800f8b6: 461a mov r2, r3 - 800f8b8: 68bb ldr r3, [r7, #8] - 800f8ba: 4413 add r3, r2 - 800f8bc: 687a ldr r2, [r7, #4] - 800f8be: b2d2 uxtb r2, r2 - 800f8c0: 701a strb r2, [r3, #0] - return options_out_len; - 800f8c2: 89fb ldrh r3, [r7, #14] -} - 800f8c4: 4618 mov r0, r3 - 800f8c6: 3710 adds r7, #16 - 800f8c8: 46bd mov sp, r7 - 800f8ca: bd80 pop {r7, pc} - 800f8cc: 08019a14 .word 0x08019a14 - 800f8d0: 08019c60 .word 0x08019c60 - 800f8d4: 08019a74 .word 0x08019a74 - -0800f8d8 : - * use that further on. - * - */ -static err_t -dhcp_parse_reply(struct pbuf *p, struct dhcp *dhcp) -{ - 800f8d8: b580 push {r7, lr} - 800f8da: b090 sub sp, #64 @ 0x40 - 800f8dc: af00 add r7, sp, #0 - 800f8de: 6078 str r0, [r7, #4] - 800f8e0: 6039 str r1, [r7, #0] - u16_t offset; - u16_t offset_max; - u16_t options_idx; - u16_t options_idx_max; - struct pbuf *q; - int parse_file_as_options = 0; - 800f8e2: 2300 movs r3, #0 - 800f8e4: 62fb str r3, [r7, #44] @ 0x2c - int parse_sname_as_options = 0; - 800f8e6: 2300 movs r3, #0 - 800f8e8: 62bb str r3, [r7, #40] @ 0x28 -#endif - - LWIP_UNUSED_ARG(dhcp); - - /* clear received options */ - dhcp_clear_all_options(dhcp); - 800f8ea: 2208 movs r2, #8 - 800f8ec: 2100 movs r1, #0 - 800f8ee: 48b5 ldr r0, [pc, #724] @ (800fbc4 ) - 800f8f0: f003 fa41 bl 8012d76 - /* check that beginning of dhcp_msg (up to and including chaddr) is in first pbuf */ - if (p->len < DHCP_SNAME_OFS) { - 800f8f4: 687b ldr r3, [r7, #4] - 800f8f6: 895b ldrh r3, [r3, #10] - 800f8f8: 2b2b cmp r3, #43 @ 0x2b - 800f8fa: d802 bhi.n 800f902 - return ERR_BUF; - 800f8fc: f06f 0301 mvn.w r3, #1 - 800f900: e2a7 b.n 800fe52 - } - msg_in = (struct dhcp_msg *)p->payload; - 800f902: 687b ldr r3, [r7, #4] - 800f904: 685b ldr r3, [r3, #4] - 800f906: 61bb str r3, [r7, #24] -#endif /* LWIP_DHCP_BOOTP_FILE */ - - /* parse options */ - - /* start with options field */ - options_idx = DHCP_OPTIONS_OFS; - 800f908: 23f0 movs r3, #240 @ 0xf0 - 800f90a: 86fb strh r3, [r7, #54] @ 0x36 - /* parse options to the end of the received packet */ - options_idx_max = p->tot_len; - 800f90c: 687b ldr r3, [r7, #4] - 800f90e: 891b ldrh r3, [r3, #8] - 800f910: 86bb strh r3, [r7, #52] @ 0x34 -again: - q = p; - 800f912: 687b ldr r3, [r7, #4] - 800f914: 633b str r3, [r7, #48] @ 0x30 - while ((q != NULL) && (options_idx >= q->len)) { - 800f916: e00c b.n 800f932 - options_idx = (u16_t)(options_idx - q->len); - 800f918: 6b3b ldr r3, [r7, #48] @ 0x30 - 800f91a: 895b ldrh r3, [r3, #10] - 800f91c: 8efa ldrh r2, [r7, #54] @ 0x36 - 800f91e: 1ad3 subs r3, r2, r3 - 800f920: 86fb strh r3, [r7, #54] @ 0x36 - options_idx_max = (u16_t)(options_idx_max - q->len); - 800f922: 6b3b ldr r3, [r7, #48] @ 0x30 - 800f924: 895b ldrh r3, [r3, #10] - 800f926: 8eba ldrh r2, [r7, #52] @ 0x34 - 800f928: 1ad3 subs r3, r2, r3 - 800f92a: 86bb strh r3, [r7, #52] @ 0x34 - q = q->next; - 800f92c: 6b3b ldr r3, [r7, #48] @ 0x30 - 800f92e: 681b ldr r3, [r3, #0] - 800f930: 633b str r3, [r7, #48] @ 0x30 - while ((q != NULL) && (options_idx >= q->len)) { - 800f932: 6b3b ldr r3, [r7, #48] @ 0x30 - 800f934: 2b00 cmp r3, #0 - 800f936: d004 beq.n 800f942 - 800f938: 6b3b ldr r3, [r7, #48] @ 0x30 - 800f93a: 895b ldrh r3, [r3, #10] - 800f93c: 8efa ldrh r2, [r7, #54] @ 0x36 - 800f93e: 429a cmp r2, r3 - 800f940: d2ea bcs.n 800f918 - } - if (q == NULL) { - 800f942: 6b3b ldr r3, [r7, #48] @ 0x30 - 800f944: 2b00 cmp r3, #0 - 800f946: d102 bne.n 800f94e - return ERR_BUF; - 800f948: f06f 0301 mvn.w r3, #1 - 800f94c: e281 b.n 800fe52 - } - offset = options_idx; - 800f94e: 8efb ldrh r3, [r7, #54] @ 0x36 - 800f950: 877b strh r3, [r7, #58] @ 0x3a - offset_max = options_idx_max; - 800f952: 8ebb ldrh r3, [r7, #52] @ 0x34 - 800f954: 873b strh r3, [r7, #56] @ 0x38 - options = (u8_t *)q->payload; - 800f956: 6b3b ldr r3, [r7, #48] @ 0x30 - 800f958: 685b ldr r3, [r3, #4] - 800f95a: 63fb str r3, [r7, #60] @ 0x3c - /* at least 1 byte to read and no end marker, then at least 3 bytes to read? */ - while ((q != NULL) && (offset < offset_max) && (options[offset] != DHCP_OPTION_END)) { - 800f95c: e239 b.n 800fdd2 - u8_t op = options[offset]; - 800f95e: 8f7b ldrh r3, [r7, #58] @ 0x3a - 800f960: 6bfa ldr r2, [r7, #60] @ 0x3c - 800f962: 4413 add r3, r2 - 800f964: 781b ldrb r3, [r3, #0] - 800f966: 75fb strb r3, [r7, #23] - u8_t len; - u8_t decode_len = 0; - 800f968: 2300 movs r3, #0 - 800f96a: f887 3026 strb.w r3, [r7, #38] @ 0x26 - int decode_idx = -1; - 800f96e: f04f 33ff mov.w r3, #4294967295 - 800f972: 623b str r3, [r7, #32] - u16_t val_offset = (u16_t)(offset + 2); - 800f974: 8f7b ldrh r3, [r7, #58] @ 0x3a - 800f976: 3302 adds r3, #2 - 800f978: 83fb strh r3, [r7, #30] - if (val_offset < offset) { - 800f97a: 8bfa ldrh r2, [r7, #30] - 800f97c: 8f7b ldrh r3, [r7, #58] @ 0x3a - 800f97e: 429a cmp r2, r3 - 800f980: d202 bcs.n 800f988 - /* overflow */ - return ERR_BUF; - 800f982: f06f 0301 mvn.w r3, #1 - 800f986: e264 b.n 800fe52 - } - /* len byte might be in the next pbuf */ - if ((offset + 1) < q->len) { - 800f988: 8f7b ldrh r3, [r7, #58] @ 0x3a - 800f98a: 3301 adds r3, #1 - 800f98c: 6b3a ldr r2, [r7, #48] @ 0x30 - 800f98e: 8952 ldrh r2, [r2, #10] - 800f990: 4293 cmp r3, r2 - 800f992: da07 bge.n 800f9a4 - len = options[offset + 1]; - 800f994: 8f7b ldrh r3, [r7, #58] @ 0x3a - 800f996: 3301 adds r3, #1 - 800f998: 6bfa ldr r2, [r7, #60] @ 0x3c - 800f99a: 4413 add r3, r2 - 800f99c: 781b ldrb r3, [r3, #0] - 800f99e: f887 3027 strb.w r3, [r7, #39] @ 0x27 - 800f9a2: e00b b.n 800f9bc - } else { - len = (q->next != NULL ? ((u8_t *)q->next->payload)[0] : 0); - 800f9a4: 6b3b ldr r3, [r7, #48] @ 0x30 - 800f9a6: 681b ldr r3, [r3, #0] - 800f9a8: 2b00 cmp r3, #0 - 800f9aa: d004 beq.n 800f9b6 - 800f9ac: 6b3b ldr r3, [r7, #48] @ 0x30 - 800f9ae: 681b ldr r3, [r3, #0] - 800f9b0: 685b ldr r3, [r3, #4] - 800f9b2: 781b ldrb r3, [r3, #0] - 800f9b4: e000 b.n 800f9b8 - 800f9b6: 2300 movs r3, #0 - 800f9b8: f887 3027 strb.w r3, [r7, #39] @ 0x27 - } - /* LWIP_DEBUGF(DHCP_DEBUG, ("msg_offset=%"U16_F", q->len=%"U16_F, msg_offset, q->len)); */ - decode_len = len; - 800f9bc: f897 3027 ldrb.w r3, [r7, #39] @ 0x27 - 800f9c0: f887 3026 strb.w r3, [r7, #38] @ 0x26 - switch (op) { - 800f9c4: 7dfb ldrb r3, [r7, #23] - 800f9c6: 2b3b cmp r3, #59 @ 0x3b - 800f9c8: f200 812c bhi.w 800fc24 - 800f9cc: a201 add r2, pc, #4 @ (adr r2, 800f9d4 ) - 800f9ce: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 800f9d2: bf00 nop - 800f9d4: 0800fac5 .word 0x0800fac5 - 800f9d8: 0800fad5 .word 0x0800fad5 - 800f9dc: 0800fc25 .word 0x0800fc25 - 800f9e0: 0800faf7 .word 0x0800faf7 - 800f9e4: 0800fc25 .word 0x0800fc25 - 800f9e8: 0800fc25 .word 0x0800fc25 - 800f9ec: 0800fc25 .word 0x0800fc25 - 800f9f0: 0800fc25 .word 0x0800fc25 - 800f9f4: 0800fc25 .word 0x0800fc25 - 800f9f8: 0800fc25 .word 0x0800fc25 - 800f9fc: 0800fc25 .word 0x0800fc25 - 800fa00: 0800fc25 .word 0x0800fc25 - 800fa04: 0800fc25 .word 0x0800fc25 - 800fa08: 0800fc25 .word 0x0800fc25 - 800fa0c: 0800fc25 .word 0x0800fc25 - 800fa10: 0800fc25 .word 0x0800fc25 - 800fa14: 0800fc25 .word 0x0800fc25 - 800fa18: 0800fc25 .word 0x0800fc25 - 800fa1c: 0800fc25 .word 0x0800fc25 - 800fa20: 0800fc25 .word 0x0800fc25 - 800fa24: 0800fc25 .word 0x0800fc25 - 800fa28: 0800fc25 .word 0x0800fc25 - 800fa2c: 0800fc25 .word 0x0800fc25 - 800fa30: 0800fc25 .word 0x0800fc25 - 800fa34: 0800fc25 .word 0x0800fc25 - 800fa38: 0800fc25 .word 0x0800fc25 - 800fa3c: 0800fc25 .word 0x0800fc25 - 800fa40: 0800fc25 .word 0x0800fc25 - 800fa44: 0800fc25 .word 0x0800fc25 - 800fa48: 0800fc25 .word 0x0800fc25 - 800fa4c: 0800fc25 .word 0x0800fc25 - 800fa50: 0800fc25 .word 0x0800fc25 - 800fa54: 0800fc25 .word 0x0800fc25 - 800fa58: 0800fc25 .word 0x0800fc25 - 800fa5c: 0800fc25 .word 0x0800fc25 - 800fa60: 0800fc25 .word 0x0800fc25 - 800fa64: 0800fc25 .word 0x0800fc25 - 800fa68: 0800fc25 .word 0x0800fc25 - 800fa6c: 0800fc25 .word 0x0800fc25 - 800fa70: 0800fc25 .word 0x0800fc25 - 800fa74: 0800fc25 .word 0x0800fc25 - 800fa78: 0800fc25 .word 0x0800fc25 - 800fa7c: 0800fc25 .word 0x0800fc25 - 800fa80: 0800fc25 .word 0x0800fc25 - 800fa84: 0800fc25 .word 0x0800fc25 - 800fa88: 0800fc25 .word 0x0800fc25 - 800fa8c: 0800fc25 .word 0x0800fc25 - 800fa90: 0800fc25 .word 0x0800fc25 - 800fa94: 0800fc25 .word 0x0800fc25 - 800fa98: 0800fc25 .word 0x0800fc25 - 800fa9c: 0800fc25 .word 0x0800fc25 - 800faa0: 0800fb23 .word 0x0800fb23 - 800faa4: 0800fb45 .word 0x0800fb45 - 800faa8: 0800fb81 .word 0x0800fb81 - 800faac: 0800fba3 .word 0x0800fba3 - 800fab0: 0800fc25 .word 0x0800fc25 - 800fab4: 0800fc25 .word 0x0800fc25 - 800fab8: 0800fc25 .word 0x0800fc25 - 800fabc: 0800fbe1 .word 0x0800fbe1 - 800fac0: 0800fc03 .word 0x0800fc03 - /* case(DHCP_OPTION_END): handled above */ - case (DHCP_OPTION_PAD): - /* special option: no len encoded */ - decode_len = len = 0; - 800fac4: 2300 movs r3, #0 - 800fac6: f887 3027 strb.w r3, [r7, #39] @ 0x27 - 800faca: f897 3027 ldrb.w r3, [r7, #39] @ 0x27 - 800face: f887 3026 strb.w r3, [r7, #38] @ 0x26 - /* will be increased below */ - break; - 800fad2: e0ab b.n 800fc2c - case (DHCP_OPTION_SUBNET_MASK): - LWIP_ERROR("len == 4", len == 4, return ERR_VAL;); - 800fad4: f897 3027 ldrb.w r3, [r7, #39] @ 0x27 - 800fad8: 2b04 cmp r3, #4 - 800fada: d009 beq.n 800faf0 - 800fadc: 4b3a ldr r3, [pc, #232] @ (800fbc8 ) - 800fade: f240 622e movw r2, #1582 @ 0x62e - 800fae2: 493a ldr r1, [pc, #232] @ (800fbcc ) - 800fae4: 483a ldr r0, [pc, #232] @ (800fbd0 ) - 800fae6: f003 f8c7 bl 8012c78 - 800faea: f06f 0305 mvn.w r3, #5 - 800faee: e1b0 b.n 800fe52 - decode_idx = DHCP_OPTION_IDX_SUBNET_MASK; - 800faf0: 2306 movs r3, #6 - 800faf2: 623b str r3, [r7, #32] - break; - 800faf4: e09a b.n 800fc2c - case (DHCP_OPTION_ROUTER): - decode_len = 4; /* only copy the first given router */ - 800faf6: 2304 movs r3, #4 - 800faf8: f887 3026 strb.w r3, [r7, #38] @ 0x26 - LWIP_ERROR("len >= decode_len", len >= decode_len, return ERR_VAL;); - 800fafc: f897 2027 ldrb.w r2, [r7, #39] @ 0x27 - 800fb00: f897 3026 ldrb.w r3, [r7, #38] @ 0x26 - 800fb04: 429a cmp r2, r3 - 800fb06: d209 bcs.n 800fb1c - 800fb08: 4b2f ldr r3, [pc, #188] @ (800fbc8 ) - 800fb0a: f240 6233 movw r2, #1587 @ 0x633 - 800fb0e: 4931 ldr r1, [pc, #196] @ (800fbd4 ) - 800fb10: 482f ldr r0, [pc, #188] @ (800fbd0 ) - 800fb12: f003 f8b1 bl 8012c78 - 800fb16: f06f 0305 mvn.w r3, #5 - 800fb1a: e19a b.n 800fe52 - decode_idx = DHCP_OPTION_IDX_ROUTER; - 800fb1c: 2307 movs r3, #7 - 800fb1e: 623b str r3, [r7, #32] - break; - 800fb20: e084 b.n 800fc2c - LWIP_ERROR("len >= decode_len", len >= decode_len, return ERR_VAL;); - decode_idx = DHCP_OPTION_IDX_DNS_SERVER; - break; -#endif /* LWIP_DHCP_PROVIDE_DNS_SERVERS */ - case (DHCP_OPTION_LEASE_TIME): - LWIP_ERROR("len == 4", len == 4, return ERR_VAL;); - 800fb22: f897 3027 ldrb.w r3, [r7, #39] @ 0x27 - 800fb26: 2b04 cmp r3, #4 - 800fb28: d009 beq.n 800fb3e - 800fb2a: 4b27 ldr r3, [pc, #156] @ (800fbc8 ) - 800fb2c: f240 6241 movw r2, #1601 @ 0x641 - 800fb30: 4926 ldr r1, [pc, #152] @ (800fbcc ) - 800fb32: 4827 ldr r0, [pc, #156] @ (800fbd0 ) - 800fb34: f003 f8a0 bl 8012c78 - 800fb38: f06f 0305 mvn.w r3, #5 - 800fb3c: e189 b.n 800fe52 - decode_idx = DHCP_OPTION_IDX_LEASE_TIME; - 800fb3e: 2303 movs r3, #3 - 800fb40: 623b str r3, [r7, #32] - break; - 800fb42: e073 b.n 800fc2c - LWIP_ERROR("len >= decode_len", len >= decode_len, return ERR_VAL;); - decode_idx = DHCP_OPTION_IDX_NTP_SERVER; - break; -#endif /* LWIP_DHCP_GET_NTP_SRV*/ - case (DHCP_OPTION_OVERLOAD): - LWIP_ERROR("len == 1", len == 1, return ERR_VAL;); - 800fb44: f897 3027 ldrb.w r3, [r7, #39] @ 0x27 - 800fb48: 2b01 cmp r3, #1 - 800fb4a: d009 beq.n 800fb60 - 800fb4c: 4b1e ldr r3, [pc, #120] @ (800fbc8 ) - 800fb4e: f240 624f movw r2, #1615 @ 0x64f - 800fb52: 4921 ldr r1, [pc, #132] @ (800fbd8 ) - 800fb54: 481e ldr r0, [pc, #120] @ (800fbd0 ) - 800fb56: f003 f88f bl 8012c78 - 800fb5a: f06f 0305 mvn.w r3, #5 - 800fb5e: e178 b.n 800fe52 - /* decode overload only in options, not in file/sname: invalid packet */ - LWIP_ERROR("overload in file/sname", options_idx == DHCP_OPTIONS_OFS, return ERR_VAL;); - 800fb60: 8efb ldrh r3, [r7, #54] @ 0x36 - 800fb62: 2bf0 cmp r3, #240 @ 0xf0 - 800fb64: d009 beq.n 800fb7a - 800fb66: 4b18 ldr r3, [pc, #96] @ (800fbc8 ) - 800fb68: f240 6251 movw r2, #1617 @ 0x651 - 800fb6c: 491b ldr r1, [pc, #108] @ (800fbdc ) - 800fb6e: 4818 ldr r0, [pc, #96] @ (800fbd0 ) - 800fb70: f003 f882 bl 8012c78 - 800fb74: f06f 0305 mvn.w r3, #5 - 800fb78: e16b b.n 800fe52 - decode_idx = DHCP_OPTION_IDX_OVERLOAD; - 800fb7a: 2300 movs r3, #0 - 800fb7c: 623b str r3, [r7, #32] - break; - 800fb7e: e055 b.n 800fc2c - case (DHCP_OPTION_MESSAGE_TYPE): - LWIP_ERROR("len == 1", len == 1, return ERR_VAL;); - 800fb80: f897 3027 ldrb.w r3, [r7, #39] @ 0x27 - 800fb84: 2b01 cmp r3, #1 - 800fb86: d009 beq.n 800fb9c - 800fb88: 4b0f ldr r3, [pc, #60] @ (800fbc8 ) - 800fb8a: f240 6255 movw r2, #1621 @ 0x655 - 800fb8e: 4912 ldr r1, [pc, #72] @ (800fbd8 ) - 800fb90: 480f ldr r0, [pc, #60] @ (800fbd0 ) - 800fb92: f003 f871 bl 8012c78 - 800fb96: f06f 0305 mvn.w r3, #5 - 800fb9a: e15a b.n 800fe52 - decode_idx = DHCP_OPTION_IDX_MSG_TYPE; - 800fb9c: 2301 movs r3, #1 - 800fb9e: 623b str r3, [r7, #32] - break; - 800fba0: e044 b.n 800fc2c - case (DHCP_OPTION_SERVER_ID): - LWIP_ERROR("len == 4", len == 4, return ERR_VAL;); - 800fba2: f897 3027 ldrb.w r3, [r7, #39] @ 0x27 - 800fba6: 2b04 cmp r3, #4 - 800fba8: d009 beq.n 800fbbe - 800fbaa: 4b07 ldr r3, [pc, #28] @ (800fbc8 ) - 800fbac: f240 6259 movw r2, #1625 @ 0x659 - 800fbb0: 4906 ldr r1, [pc, #24] @ (800fbcc ) - 800fbb2: 4807 ldr r0, [pc, #28] @ (800fbd0 ) - 800fbb4: f003 f860 bl 8012c78 - 800fbb8: f06f 0305 mvn.w r3, #5 - 800fbbc: e149 b.n 800fe52 - decode_idx = DHCP_OPTION_IDX_SERVER_ID; - 800fbbe: 2302 movs r3, #2 - 800fbc0: 623b str r3, [r7, #32] - break; - 800fbc2: e033 b.n 800fc2c - 800fbc4: 2001916c .word 0x2001916c - 800fbc8: 08019a14 .word 0x08019a14 - 800fbcc: 08019c9c .word 0x08019c9c - 800fbd0: 08019a74 .word 0x08019a74 - 800fbd4: 08019ca8 .word 0x08019ca8 - 800fbd8: 08019cbc .word 0x08019cbc - 800fbdc: 08019cc8 .word 0x08019cc8 - case (DHCP_OPTION_T1): - LWIP_ERROR("len == 4", len == 4, return ERR_VAL;); - 800fbe0: f897 3027 ldrb.w r3, [r7, #39] @ 0x27 - 800fbe4: 2b04 cmp r3, #4 - 800fbe6: d009 beq.n 800fbfc - 800fbe8: 4b9c ldr r3, [pc, #624] @ (800fe5c ) - 800fbea: f240 625d movw r2, #1629 @ 0x65d - 800fbee: 499c ldr r1, [pc, #624] @ (800fe60 ) - 800fbf0: 489c ldr r0, [pc, #624] @ (800fe64 ) - 800fbf2: f003 f841 bl 8012c78 - 800fbf6: f06f 0305 mvn.w r3, #5 - 800fbfa: e12a b.n 800fe52 - decode_idx = DHCP_OPTION_IDX_T1; - 800fbfc: 2304 movs r3, #4 - 800fbfe: 623b str r3, [r7, #32] - break; - 800fc00: e014 b.n 800fc2c - case (DHCP_OPTION_T2): - LWIP_ERROR("len == 4", len == 4, return ERR_VAL;); - 800fc02: f897 3027 ldrb.w r3, [r7, #39] @ 0x27 - 800fc06: 2b04 cmp r3, #4 - 800fc08: d009 beq.n 800fc1e - 800fc0a: 4b94 ldr r3, [pc, #592] @ (800fe5c ) - 800fc0c: f240 6261 movw r2, #1633 @ 0x661 - 800fc10: 4993 ldr r1, [pc, #588] @ (800fe60 ) - 800fc12: 4894 ldr r0, [pc, #592] @ (800fe64 ) - 800fc14: f003 f830 bl 8012c78 - 800fc18: f06f 0305 mvn.w r3, #5 - 800fc1c: e119 b.n 800fe52 - decode_idx = DHCP_OPTION_IDX_T2; - 800fc1e: 2305 movs r3, #5 - 800fc20: 623b str r3, [r7, #32] - break; - 800fc22: e003 b.n 800fc2c - default: - decode_len = 0; - 800fc24: 2300 movs r3, #0 - 800fc26: f887 3026 strb.w r3, [r7, #38] @ 0x26 - LWIP_DEBUGF(DHCP_DEBUG, ("skipping option %"U16_F" in options\n", (u16_t)op)); - LWIP_HOOK_DHCP_PARSE_OPTION(ip_current_netif(), dhcp, dhcp->state, msg_in, - dhcp_option_given(dhcp, DHCP_OPTION_IDX_MSG_TYPE) ? (u8_t)dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_MSG_TYPE) : 0, - op, len, q, val_offset); - break; - 800fc2a: bf00 nop - } - if (op == DHCP_OPTION_PAD) { - 800fc2c: 7dfb ldrb r3, [r7, #23] - 800fc2e: 2b00 cmp r3, #0 - 800fc30: d103 bne.n 800fc3a - offset++; - 800fc32: 8f7b ldrh r3, [r7, #58] @ 0x3a - 800fc34: 3301 adds r3, #1 - 800fc36: 877b strh r3, [r7, #58] @ 0x3a - 800fc38: e0a1 b.n 800fd7e - } else { - if (offset + len + 2 > 0xFFFF) { - 800fc3a: 8f7a ldrh r2, [r7, #58] @ 0x3a - 800fc3c: f897 3027 ldrb.w r3, [r7, #39] @ 0x27 - 800fc40: 4413 add r3, r2 - 800fc42: f64f 72fd movw r2, #65533 @ 0xfffd - 800fc46: 4293 cmp r3, r2 - 800fc48: dd02 ble.n 800fc50 - /* overflow */ - return ERR_BUF; - 800fc4a: f06f 0301 mvn.w r3, #1 - 800fc4e: e100 b.n 800fe52 - } - offset = (u16_t)(offset + len + 2); - 800fc50: f897 3027 ldrb.w r3, [r7, #39] @ 0x27 - 800fc54: b29a uxth r2, r3 - 800fc56: 8f7b ldrh r3, [r7, #58] @ 0x3a - 800fc58: 4413 add r3, r2 - 800fc5a: b29b uxth r3, r3 - 800fc5c: 3302 adds r3, #2 - 800fc5e: 877b strh r3, [r7, #58] @ 0x3a - if (decode_len > 0) { - 800fc60: f897 3026 ldrb.w r3, [r7, #38] @ 0x26 - 800fc64: 2b00 cmp r3, #0 - 800fc66: f000 808a beq.w 800fd7e - u32_t value = 0; - 800fc6a: 2300 movs r3, #0 - 800fc6c: 60bb str r3, [r7, #8] - u16_t copy_len; -decode_next: - LWIP_ASSERT("check decode_idx", decode_idx >= 0 && decode_idx < DHCP_OPTION_IDX_MAX); - 800fc6e: 6a3b ldr r3, [r7, #32] - 800fc70: 2b00 cmp r3, #0 - 800fc72: db02 blt.n 800fc7a - 800fc74: 6a3b ldr r3, [r7, #32] - 800fc76: 2b07 cmp r3, #7 - 800fc78: dd06 ble.n 800fc88 - 800fc7a: 4b78 ldr r3, [pc, #480] @ (800fe5c ) - 800fc7c: f44f 62cf mov.w r2, #1656 @ 0x678 - 800fc80: 4979 ldr r1, [pc, #484] @ (800fe68 ) - 800fc82: 4878 ldr r0, [pc, #480] @ (800fe64 ) - 800fc84: f002 fff8 bl 8012c78 - if (!dhcp_option_given(dhcp, decode_idx)) { - 800fc88: 4a78 ldr r2, [pc, #480] @ (800fe6c ) - 800fc8a: 6a3b ldr r3, [r7, #32] - 800fc8c: 4413 add r3, r2 - 800fc8e: 781b ldrb r3, [r3, #0] - 800fc90: 2b00 cmp r3, #0 - 800fc92: d174 bne.n 800fd7e - copy_len = LWIP_MIN(decode_len, 4); - 800fc94: f897 3026 ldrb.w r3, [r7, #38] @ 0x26 - 800fc98: 2b04 cmp r3, #4 - 800fc9a: bf28 it cs - 800fc9c: 2304 movcs r3, #4 - 800fc9e: b2db uxtb r3, r3 - 800fca0: 82bb strh r3, [r7, #20] - if (pbuf_copy_partial(q, &value, copy_len, val_offset) != copy_len) { - 800fca2: 8bfb ldrh r3, [r7, #30] - 800fca4: 8aba ldrh r2, [r7, #20] - 800fca6: f107 0108 add.w r1, r7, #8 - 800fcaa: 6b38 ldr r0, [r7, #48] @ 0x30 - 800fcac: f7f8 fbf6 bl 800849c - 800fcb0: 4603 mov r3, r0 - 800fcb2: 461a mov r2, r3 - 800fcb4: 8abb ldrh r3, [r7, #20] - 800fcb6: 4293 cmp r3, r2 - 800fcb8: d002 beq.n 800fcc0 - return ERR_BUF; - 800fcba: f06f 0301 mvn.w r3, #1 - 800fcbe: e0c8 b.n 800fe52 - } - if (decode_len > 4) { - 800fcc0: f897 3026 ldrb.w r3, [r7, #38] @ 0x26 - 800fcc4: 2b04 cmp r3, #4 - 800fcc6: d933 bls.n 800fd30 - /* decode more than one u32_t */ - u16_t next_val_offset; - LWIP_ERROR("decode_len %% 4 == 0", decode_len % 4 == 0, return ERR_VAL;); - 800fcc8: f897 3026 ldrb.w r3, [r7, #38] @ 0x26 - 800fccc: f003 0303 and.w r3, r3, #3 - 800fcd0: b2db uxtb r3, r3 - 800fcd2: 2b00 cmp r3, #0 - 800fcd4: d009 beq.n 800fcea - 800fcd6: 4b61 ldr r3, [pc, #388] @ (800fe5c ) - 800fcd8: f240 6281 movw r2, #1665 @ 0x681 - 800fcdc: 4964 ldr r1, [pc, #400] @ (800fe70 ) - 800fcde: 4861 ldr r0, [pc, #388] @ (800fe64 ) - 800fce0: f002 ffca bl 8012c78 - 800fce4: f06f 0305 mvn.w r3, #5 - 800fce8: e0b3 b.n 800fe52 - dhcp_got_option(dhcp, decode_idx); - 800fcea: 4a60 ldr r2, [pc, #384] @ (800fe6c ) - 800fcec: 6a3b ldr r3, [r7, #32] - 800fcee: 4413 add r3, r2 - 800fcf0: 2201 movs r2, #1 - 800fcf2: 701a strb r2, [r3, #0] - dhcp_set_option_value(dhcp, decode_idx, lwip_htonl(value)); - 800fcf4: 68bb ldr r3, [r7, #8] - 800fcf6: 4618 mov r0, r3 - 800fcf8: f7f6 fe9b bl 8006a32 - 800fcfc: 4602 mov r2, r0 - 800fcfe: 495d ldr r1, [pc, #372] @ (800fe74 ) - 800fd00: 6a3b ldr r3, [r7, #32] - 800fd02: f841 2023 str.w r2, [r1, r3, lsl #2] - decode_len = (u8_t)(decode_len - 4); - 800fd06: f897 3026 ldrb.w r3, [r7, #38] @ 0x26 - 800fd0a: 3b04 subs r3, #4 - 800fd0c: f887 3026 strb.w r3, [r7, #38] @ 0x26 - next_val_offset = (u16_t)(val_offset + 4); - 800fd10: 8bfb ldrh r3, [r7, #30] - 800fd12: 3304 adds r3, #4 - 800fd14: 827b strh r3, [r7, #18] - if (next_val_offset < val_offset) { - 800fd16: 8a7a ldrh r2, [r7, #18] - 800fd18: 8bfb ldrh r3, [r7, #30] - 800fd1a: 429a cmp r2, r3 - 800fd1c: d202 bcs.n 800fd24 - /* overflow */ - return ERR_BUF; - 800fd1e: f06f 0301 mvn.w r3, #1 - 800fd22: e096 b.n 800fe52 - } - val_offset = next_val_offset; - 800fd24: 8a7b ldrh r3, [r7, #18] - 800fd26: 83fb strh r3, [r7, #30] - decode_idx++; - 800fd28: 6a3b ldr r3, [r7, #32] - 800fd2a: 3301 adds r3, #1 - 800fd2c: 623b str r3, [r7, #32] - goto decode_next; - 800fd2e: e79e b.n 800fc6e - } else if (decode_len == 4) { - 800fd30: f897 3026 ldrb.w r3, [r7, #38] @ 0x26 - 800fd34: 2b04 cmp r3, #4 - 800fd36: d106 bne.n 800fd46 - value = lwip_ntohl(value); - 800fd38: 68bb ldr r3, [r7, #8] - 800fd3a: 4618 mov r0, r3 - 800fd3c: f7f6 fe79 bl 8006a32 - 800fd40: 4603 mov r3, r0 - 800fd42: 60bb str r3, [r7, #8] - 800fd44: e011 b.n 800fd6a - } else { - LWIP_ERROR("invalid decode_len", decode_len == 1, return ERR_VAL;); - 800fd46: f897 3026 ldrb.w r3, [r7, #38] @ 0x26 - 800fd4a: 2b01 cmp r3, #1 - 800fd4c: d009 beq.n 800fd62 - 800fd4e: 4b43 ldr r3, [pc, #268] @ (800fe5c ) - 800fd50: f44f 62d2 mov.w r2, #1680 @ 0x690 - 800fd54: 4948 ldr r1, [pc, #288] @ (800fe78 ) - 800fd56: 4843 ldr r0, [pc, #268] @ (800fe64 ) - 800fd58: f002 ff8e bl 8012c78 - 800fd5c: f06f 0305 mvn.w r3, #5 - 800fd60: e077 b.n 800fe52 - value = ((u8_t *)&value)[0]; - 800fd62: f107 0308 add.w r3, r7, #8 - 800fd66: 781b ldrb r3, [r3, #0] - 800fd68: 60bb str r3, [r7, #8] - } - dhcp_got_option(dhcp, decode_idx); - 800fd6a: 4a40 ldr r2, [pc, #256] @ (800fe6c ) - 800fd6c: 6a3b ldr r3, [r7, #32] - 800fd6e: 4413 add r3, r2 - 800fd70: 2201 movs r2, #1 - 800fd72: 701a strb r2, [r3, #0] - dhcp_set_option_value(dhcp, decode_idx, value); - 800fd74: 68ba ldr r2, [r7, #8] - 800fd76: 493f ldr r1, [pc, #252] @ (800fe74 ) - 800fd78: 6a3b ldr r3, [r7, #32] - 800fd7a: f841 2023 str.w r2, [r1, r3, lsl #2] - } - } - } - if (offset >= q->len) { - 800fd7e: 6b3b ldr r3, [r7, #48] @ 0x30 - 800fd80: 895b ldrh r3, [r3, #10] - 800fd82: 8f7a ldrh r2, [r7, #58] @ 0x3a - 800fd84: 429a cmp r2, r3 - 800fd86: d324 bcc.n 800fdd2 - offset = (u16_t)(offset - q->len); - 800fd88: 6b3b ldr r3, [r7, #48] @ 0x30 - 800fd8a: 895b ldrh r3, [r3, #10] - 800fd8c: 8f7a ldrh r2, [r7, #58] @ 0x3a - 800fd8e: 1ad3 subs r3, r2, r3 - 800fd90: 877b strh r3, [r7, #58] @ 0x3a - offset_max = (u16_t)(offset_max - q->len); - 800fd92: 6b3b ldr r3, [r7, #48] @ 0x30 - 800fd94: 895b ldrh r3, [r3, #10] - 800fd96: 8f3a ldrh r2, [r7, #56] @ 0x38 - 800fd98: 1ad3 subs r3, r2, r3 - 800fd9a: 873b strh r3, [r7, #56] @ 0x38 - if (offset < offset_max) { - 800fd9c: 8f7a ldrh r2, [r7, #58] @ 0x3a - 800fd9e: 8f3b ldrh r3, [r7, #56] @ 0x38 - 800fda0: 429a cmp r2, r3 - 800fda2: d213 bcs.n 800fdcc - q = q->next; - 800fda4: 6b3b ldr r3, [r7, #48] @ 0x30 - 800fda6: 681b ldr r3, [r3, #0] - 800fda8: 633b str r3, [r7, #48] @ 0x30 - LWIP_ERROR("next pbuf was null", q != NULL, return ERR_VAL;); - 800fdaa: 6b3b ldr r3, [r7, #48] @ 0x30 - 800fdac: 2b00 cmp r3, #0 - 800fdae: d109 bne.n 800fdc4 - 800fdb0: 4b2a ldr r3, [pc, #168] @ (800fe5c ) - 800fdb2: f240 629d movw r2, #1693 @ 0x69d - 800fdb6: 4931 ldr r1, [pc, #196] @ (800fe7c ) - 800fdb8: 482a ldr r0, [pc, #168] @ (800fe64 ) - 800fdba: f002 ff5d bl 8012c78 - 800fdbe: f06f 0305 mvn.w r3, #5 - 800fdc2: e046 b.n 800fe52 - options = (u8_t *)q->payload; - 800fdc4: 6b3b ldr r3, [r7, #48] @ 0x30 - 800fdc6: 685b ldr r3, [r3, #4] - 800fdc8: 63fb str r3, [r7, #60] @ 0x3c - 800fdca: e002 b.n 800fdd2 - } else { - /* We've run out of bytes, probably no end marker. Don't proceed. */ - return ERR_BUF; - 800fdcc: f06f 0301 mvn.w r3, #1 - 800fdd0: e03f b.n 800fe52 - while ((q != NULL) && (offset < offset_max) && (options[offset] != DHCP_OPTION_END)) { - 800fdd2: 6b3b ldr r3, [r7, #48] @ 0x30 - 800fdd4: 2b00 cmp r3, #0 - 800fdd6: d00a beq.n 800fdee - 800fdd8: 8f7a ldrh r2, [r7, #58] @ 0x3a - 800fdda: 8f3b ldrh r3, [r7, #56] @ 0x38 - 800fddc: 429a cmp r2, r3 - 800fdde: d206 bcs.n 800fdee - 800fde0: 8f7b ldrh r3, [r7, #58] @ 0x3a - 800fde2: 6bfa ldr r2, [r7, #60] @ 0x3c - 800fde4: 4413 add r3, r2 - 800fde6: 781b ldrb r3, [r3, #0] - 800fde8: 2bff cmp r3, #255 @ 0xff - 800fdea: f47f adb8 bne.w 800f95e - } - } - } - /* is this an overloaded message? */ - if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_OVERLOAD)) { - 800fdee: 4b1f ldr r3, [pc, #124] @ (800fe6c ) - 800fdf0: 781b ldrb r3, [r3, #0] - 800fdf2: 2b00 cmp r3, #0 - 800fdf4: d018 beq.n 800fe28 - u32_t overload = dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_OVERLOAD); - 800fdf6: 4b1f ldr r3, [pc, #124] @ (800fe74 ) - 800fdf8: 681b ldr r3, [r3, #0] - 800fdfa: 60fb str r3, [r7, #12] - dhcp_clear_option(dhcp, DHCP_OPTION_IDX_OVERLOAD); - 800fdfc: 4b1b ldr r3, [pc, #108] @ (800fe6c ) - 800fdfe: 2200 movs r2, #0 - 800fe00: 701a strb r2, [r3, #0] - if (overload == DHCP_OVERLOAD_FILE) { - 800fe02: 68fb ldr r3, [r7, #12] - 800fe04: 2b01 cmp r3, #1 - 800fe06: d102 bne.n 800fe0e - parse_file_as_options = 1; - 800fe08: 2301 movs r3, #1 - 800fe0a: 62fb str r3, [r7, #44] @ 0x2c - 800fe0c: e00c b.n 800fe28 - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("overloaded file field\n")); - } else if (overload == DHCP_OVERLOAD_SNAME) { - 800fe0e: 68fb ldr r3, [r7, #12] - 800fe10: 2b02 cmp r3, #2 - 800fe12: d102 bne.n 800fe1a - parse_sname_as_options = 1; - 800fe14: 2301 movs r3, #1 - 800fe16: 62bb str r3, [r7, #40] @ 0x28 - 800fe18: e006 b.n 800fe28 - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("overloaded sname field\n")); - } else if (overload == DHCP_OVERLOAD_SNAME_FILE) { - 800fe1a: 68fb ldr r3, [r7, #12] - 800fe1c: 2b03 cmp r3, #3 - 800fe1e: d103 bne.n 800fe28 - parse_sname_as_options = 1; - 800fe20: 2301 movs r3, #1 - 800fe22: 62bb str r3, [r7, #40] @ 0x28 - parse_file_as_options = 1; - 800fe24: 2301 movs r3, #1 - 800fe26: 62fb str r3, [r7, #44] @ 0x2c - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("overloaded sname and file field\n")); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("invalid overload option: %d\n", (int)overload)); - } - } - if (parse_file_as_options) { - 800fe28: 6afb ldr r3, [r7, #44] @ 0x2c - 800fe2a: 2b00 cmp r3, #0 - 800fe2c: d006 beq.n 800fe3c - /* if both are overloaded, parse file first and then sname (RFC 2131 ch. 4.1) */ - parse_file_as_options = 0; - 800fe2e: 2300 movs r3, #0 - 800fe30: 62fb str r3, [r7, #44] @ 0x2c - options_idx = DHCP_FILE_OFS; - 800fe32: 236c movs r3, #108 @ 0x6c - 800fe34: 86fb strh r3, [r7, #54] @ 0x36 - options_idx_max = DHCP_FILE_OFS + DHCP_FILE_LEN; - 800fe36: 23ec movs r3, #236 @ 0xec - 800fe38: 86bb strh r3, [r7, #52] @ 0x34 -#if LWIP_DHCP_BOOTP_FILE - file_overloaded = 1; -#endif - goto again; - 800fe3a: e56a b.n 800f912 - } else if (parse_sname_as_options) { - 800fe3c: 6abb ldr r3, [r7, #40] @ 0x28 - 800fe3e: 2b00 cmp r3, #0 - 800fe40: d006 beq.n 800fe50 - parse_sname_as_options = 0; - 800fe42: 2300 movs r3, #0 - 800fe44: 62bb str r3, [r7, #40] @ 0x28 - options_idx = DHCP_SNAME_OFS; - 800fe46: 232c movs r3, #44 @ 0x2c - 800fe48: 86fb strh r3, [r7, #54] @ 0x36 - options_idx_max = DHCP_SNAME_OFS + DHCP_SNAME_LEN; - 800fe4a: 236c movs r3, #108 @ 0x6c - 800fe4c: 86bb strh r3, [r7, #52] @ 0x34 - goto again; - 800fe4e: e560 b.n 800f912 - } - /* make sure the string is really NULL-terminated */ - dhcp->boot_file_name[DHCP_FILE_LEN-1] = 0; - } -#endif /* LWIP_DHCP_BOOTP_FILE */ - return ERR_OK; - 800fe50: 2300 movs r3, #0 -} - 800fe52: 4618 mov r0, r3 - 800fe54: 3740 adds r7, #64 @ 0x40 - 800fe56: 46bd mov sp, r7 - 800fe58: bd80 pop {r7, pc} - 800fe5a: bf00 nop - 800fe5c: 08019a14 .word 0x08019a14 - 800fe60: 08019c9c .word 0x08019c9c - 800fe64: 08019a74 .word 0x08019a74 - 800fe68: 08019ce0 .word 0x08019ce0 - 800fe6c: 2001916c .word 0x2001916c - 800fe70: 08019cf4 .word 0x08019cf4 - 800fe74: 2001914c .word 0x2001914c - 800fe78: 08019d0c .word 0x08019d0c - 800fe7c: 08019d20 .word 0x08019d20 - -0800fe80 : -/** - * If an incoming DHCP message is in response to us, then trigger the state machine - */ -static void -dhcp_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *addr, u16_t port) -{ - 800fe80: b580 push {r7, lr} - 800fe82: b08a sub sp, #40 @ 0x28 - 800fe84: af00 add r7, sp, #0 - 800fe86: 60f8 str r0, [r7, #12] - 800fe88: 60b9 str r1, [r7, #8] - 800fe8a: 607a str r2, [r7, #4] - 800fe8c: 603b str r3, [r7, #0] - struct netif *netif = ip_current_input_netif(); - 800fe8e: 4b60 ldr r3, [pc, #384] @ (8010010 ) - 800fe90: 685b ldr r3, [r3, #4] - 800fe92: 623b str r3, [r7, #32] - struct dhcp *dhcp = netif_dhcp_data(netif); - 800fe94: 6a3b ldr r3, [r7, #32] - 800fe96: 6a5b ldr r3, [r3, #36] @ 0x24 - 800fe98: 61fb str r3, [r7, #28] - struct dhcp_msg *reply_msg = (struct dhcp_msg *)p->payload; - 800fe9a: 687b ldr r3, [r7, #4] - 800fe9c: 685b ldr r3, [r3, #4] - 800fe9e: 61bb str r3, [r7, #24] - struct dhcp_msg *msg_in; - - LWIP_UNUSED_ARG(arg); - - /* Caught DHCP message from netif that does not have DHCP enabled? -> not interested */ - if ((dhcp == NULL) || (dhcp->pcb_allocated == 0)) { - 800fea0: 69fb ldr r3, [r7, #28] - 800fea2: 2b00 cmp r3, #0 - 800fea4: f000 809d beq.w 800ffe2 - 800fea8: 69fb ldr r3, [r7, #28] - 800feaa: 791b ldrb r3, [r3, #4] - 800feac: 2b00 cmp r3, #0 - 800feae: f000 8098 beq.w 800ffe2 - /* prevent warnings about unused arguments */ - LWIP_UNUSED_ARG(pcb); - LWIP_UNUSED_ARG(addr); - LWIP_UNUSED_ARG(port); - - if (p->len < DHCP_MIN_REPLY_LEN) { - 800feb2: 687b ldr r3, [r7, #4] - 800feb4: 895b ldrh r3, [r3, #10] - 800feb6: 2b2b cmp r3, #43 @ 0x2b - 800feb8: f240 8095 bls.w 800ffe6 - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("DHCP reply message or pbuf too short\n")); - goto free_pbuf_and_return; - } - - if (reply_msg->op != DHCP_BOOTREPLY) { - 800febc: 69bb ldr r3, [r7, #24] - 800febe: 781b ldrb r3, [r3, #0] - 800fec0: 2b02 cmp r3, #2 - 800fec2: f040 8092 bne.w 800ffea - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("not a DHCP reply message, but type %"U16_F"\n", (u16_t)reply_msg->op)); - goto free_pbuf_and_return; - } - /* iterate through hardware address and match against DHCP message */ - for (i = 0; i < netif->hwaddr_len && i < LWIP_MIN(DHCP_CHADDR_LEN, NETIF_MAX_HWADDR_LEN); i++) { - 800fec6: 2300 movs r3, #0 - 800fec8: f887 3027 strb.w r3, [r7, #39] @ 0x27 - 800fecc: e012 b.n 800fef4 - if (netif->hwaddr[i] != reply_msg->chaddr[i]) { - 800fece: f897 3027 ldrb.w r3, [r7, #39] @ 0x27 - 800fed2: 6a3a ldr r2, [r7, #32] - 800fed4: 4413 add r3, r2 - 800fed6: f893 202a ldrb.w r2, [r3, #42] @ 0x2a - 800feda: f897 3027 ldrb.w r3, [r7, #39] @ 0x27 - 800fede: 69b9 ldr r1, [r7, #24] - 800fee0: 440b add r3, r1 - 800fee2: 7f1b ldrb r3, [r3, #28] - 800fee4: 429a cmp r2, r3 - 800fee6: f040 8082 bne.w 800ffee - for (i = 0; i < netif->hwaddr_len && i < LWIP_MIN(DHCP_CHADDR_LEN, NETIF_MAX_HWADDR_LEN); i++) { - 800feea: f897 3027 ldrb.w r3, [r7, #39] @ 0x27 - 800feee: 3301 adds r3, #1 - 800fef0: f887 3027 strb.w r3, [r7, #39] @ 0x27 - 800fef4: 6a3b ldr r3, [r7, #32] - 800fef6: f893 3030 ldrb.w r3, [r3, #48] @ 0x30 - 800fefa: f897 2027 ldrb.w r2, [r7, #39] @ 0x27 - 800fefe: 429a cmp r2, r3 - 800ff00: d203 bcs.n 800ff0a - 800ff02: f897 3027 ldrb.w r3, [r7, #39] @ 0x27 - 800ff06: 2b05 cmp r3, #5 - 800ff08: d9e1 bls.n 800fece - (u16_t)i, (u16_t)netif->hwaddr[i], (u16_t)i, (u16_t)reply_msg->chaddr[i])); - goto free_pbuf_and_return; - } - } - /* match transaction ID against what we expected */ - if (lwip_ntohl(reply_msg->xid) != dhcp->xid) { - 800ff0a: 69bb ldr r3, [r7, #24] - 800ff0c: 685b ldr r3, [r3, #4] - 800ff0e: 4618 mov r0, r3 - 800ff10: f7f6 fd8f bl 8006a32 - 800ff14: 4602 mov r2, r0 - 800ff16: 69fb ldr r3, [r7, #28] - 800ff18: 681b ldr r3, [r3, #0] - 800ff1a: 429a cmp r2, r3 - 800ff1c: d169 bne.n 800fff2 - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, - ("transaction id mismatch reply_msg->xid(%"X32_F")!=dhcp->xid(%"X32_F")\n", lwip_ntohl(reply_msg->xid), dhcp->xid)); - goto free_pbuf_and_return; - } - /* option fields could be unfold? */ - if (dhcp_parse_reply(p, dhcp) != ERR_OK) { - 800ff1e: 69f9 ldr r1, [r7, #28] - 800ff20: 6878 ldr r0, [r7, #4] - 800ff22: f7ff fcd9 bl 800f8d8 - 800ff26: 4603 mov r3, r0 - 800ff28: 2b00 cmp r3, #0 - 800ff2a: d164 bne.n 800fff6 - goto free_pbuf_and_return; - } - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("searching DHCP_OPTION_MESSAGE_TYPE\n")); - /* obtain pointer to DHCP message type */ - if (!dhcp_option_given(dhcp, DHCP_OPTION_IDX_MSG_TYPE)) { - 800ff2c: 4b39 ldr r3, [pc, #228] @ (8010014 ) - 800ff2e: 785b ldrb r3, [r3, #1] - 800ff30: 2b00 cmp r3, #0 - 800ff32: d062 beq.n 800fffa - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("DHCP_OPTION_MESSAGE_TYPE option not found\n")); - goto free_pbuf_and_return; - } - - msg_in = (struct dhcp_msg *)p->payload; - 800ff34: 687b ldr r3, [r7, #4] - 800ff36: 685b ldr r3, [r3, #4] - 800ff38: 617b str r3, [r7, #20] - /* read DHCP message type */ - msg_type = (u8_t)dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_MSG_TYPE); - 800ff3a: 4b37 ldr r3, [pc, #220] @ (8010018 ) - 800ff3c: 685b ldr r3, [r3, #4] - 800ff3e: 74fb strb r3, [r7, #19] - /* message type is DHCP ACK? */ - if (msg_type == DHCP_ACK) { - 800ff40: 7cfb ldrb r3, [r7, #19] - 800ff42: 2b05 cmp r3, #5 - 800ff44: d12a bne.n 800ff9c - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("DHCP_ACK received\n")); - /* in requesting state? */ - if (dhcp->state == DHCP_STATE_REQUESTING) { - 800ff46: 69fb ldr r3, [r7, #28] - 800ff48: 795b ldrb r3, [r3, #5] - 800ff4a: 2b01 cmp r3, #1 - 800ff4c: d112 bne.n 800ff74 - dhcp_handle_ack(netif, msg_in); - 800ff4e: 6979 ldr r1, [r7, #20] - 800ff50: 6a38 ldr r0, [r7, #32] - 800ff52: f7fe fe1d bl 800eb90 -#if DHCP_DOES_ARP_CHECK - if ((netif->flags & NETIF_FLAG_ETHARP) != 0) { - 800ff56: 6a3b ldr r3, [r7, #32] - 800ff58: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 - 800ff5c: f003 0308 and.w r3, r3, #8 - 800ff60: 2b00 cmp r3, #0 - 800ff62: d003 beq.n 800ff6c - /* check if the acknowledged lease address is already in use */ - dhcp_check(netif); - 800ff64: 6a38 ldr r0, [r7, #32] - 800ff66: f7fe fb8d bl 800e684 - 800ff6a: e049 b.n 8010000 - } else { - /* bind interface to the acknowledged lease address */ - dhcp_bind(netif); - 800ff6c: 6a38 ldr r0, [r7, #32] - 800ff6e: f7ff f86d bl 800f04c - 800ff72: e045 b.n 8010000 - /* bind interface to the acknowledged lease address */ - dhcp_bind(netif); -#endif - } - /* already bound to the given lease address? */ - else if ((dhcp->state == DHCP_STATE_REBOOTING) || (dhcp->state == DHCP_STATE_REBINDING) || - 800ff74: 69fb ldr r3, [r7, #28] - 800ff76: 795b ldrb r3, [r3, #5] - 800ff78: 2b03 cmp r3, #3 - 800ff7a: d007 beq.n 800ff8c - 800ff7c: 69fb ldr r3, [r7, #28] - 800ff7e: 795b ldrb r3, [r3, #5] - 800ff80: 2b04 cmp r3, #4 - 800ff82: d003 beq.n 800ff8c - (dhcp->state == DHCP_STATE_RENEWING)) { - 800ff84: 69fb ldr r3, [r7, #28] - 800ff86: 795b ldrb r3, [r3, #5] - else if ((dhcp->state == DHCP_STATE_REBOOTING) || (dhcp->state == DHCP_STATE_REBINDING) || - 800ff88: 2b05 cmp r3, #5 - 800ff8a: d139 bne.n 8010000 - dhcp_handle_ack(netif, msg_in); - 800ff8c: 6979 ldr r1, [r7, #20] - 800ff8e: 6a38 ldr r0, [r7, #32] - 800ff90: f7fe fdfe bl 800eb90 - dhcp_bind(netif); - 800ff94: 6a38 ldr r0, [r7, #32] - 800ff96: f7ff f859 bl 800f04c - 800ff9a: e031 b.n 8010000 - } - } - /* received a DHCP_NAK in appropriate state? */ - else if ((msg_type == DHCP_NAK) && - 800ff9c: 7cfb ldrb r3, [r7, #19] - 800ff9e: 2b06 cmp r3, #6 - 800ffa0: d113 bne.n 800ffca - ((dhcp->state == DHCP_STATE_REBOOTING) || (dhcp->state == DHCP_STATE_REQUESTING) || - 800ffa2: 69fb ldr r3, [r7, #28] - 800ffa4: 795b ldrb r3, [r3, #5] - else if ((msg_type == DHCP_NAK) && - 800ffa6: 2b03 cmp r3, #3 - 800ffa8: d00b beq.n 800ffc2 - ((dhcp->state == DHCP_STATE_REBOOTING) || (dhcp->state == DHCP_STATE_REQUESTING) || - 800ffaa: 69fb ldr r3, [r7, #28] - 800ffac: 795b ldrb r3, [r3, #5] - 800ffae: 2b01 cmp r3, #1 - 800ffb0: d007 beq.n 800ffc2 - (dhcp->state == DHCP_STATE_REBINDING) || (dhcp->state == DHCP_STATE_RENEWING ))) { - 800ffb2: 69fb ldr r3, [r7, #28] - 800ffb4: 795b ldrb r3, [r3, #5] - ((dhcp->state == DHCP_STATE_REBOOTING) || (dhcp->state == DHCP_STATE_REQUESTING) || - 800ffb6: 2b04 cmp r3, #4 - 800ffb8: d003 beq.n 800ffc2 - (dhcp->state == DHCP_STATE_REBINDING) || (dhcp->state == DHCP_STATE_RENEWING ))) { - 800ffba: 69fb ldr r3, [r7, #28] - 800ffbc: 795b ldrb r3, [r3, #5] - 800ffbe: 2b05 cmp r3, #5 - 800ffc0: d103 bne.n 800ffca - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("DHCP_NAK received\n")); - dhcp_handle_nak(netif); - 800ffc2: 6a38 ldr r0, [r7, #32] - 800ffc4: f7fe fb44 bl 800e650 - 800ffc8: e01a b.n 8010000 - } - /* received a DHCP_OFFER in DHCP_STATE_SELECTING state? */ - else if ((msg_type == DHCP_OFFER) && (dhcp->state == DHCP_STATE_SELECTING)) { - 800ffca: 7cfb ldrb r3, [r7, #19] - 800ffcc: 2b02 cmp r3, #2 - 800ffce: d116 bne.n 800fffe - 800ffd0: 69fb ldr r3, [r7, #28] - 800ffd2: 795b ldrb r3, [r3, #5] - 800ffd4: 2b06 cmp r3, #6 - 800ffd6: d112 bne.n 800fffe - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("DHCP_OFFER received in DHCP_STATE_SELECTING state\n")); - /* remember offered lease */ - dhcp_handle_offer(netif, msg_in); - 800ffd8: 6979 ldr r1, [r7, #20] - 800ffda: 6a38 ldr r0, [r7, #32] - 800ffdc: f7fe fb86 bl 800e6ec - 800ffe0: e00e b.n 8010000 - goto free_pbuf_and_return; - 800ffe2: bf00 nop - 800ffe4: e00c b.n 8010000 - goto free_pbuf_and_return; - 800ffe6: bf00 nop - 800ffe8: e00a b.n 8010000 - goto free_pbuf_and_return; - 800ffea: bf00 nop - 800ffec: e008 b.n 8010000 - goto free_pbuf_and_return; - 800ffee: bf00 nop - 800fff0: e006 b.n 8010000 - goto free_pbuf_and_return; - 800fff2: bf00 nop - 800fff4: e004 b.n 8010000 - goto free_pbuf_and_return; - 800fff6: bf00 nop - 800fff8: e002 b.n 8010000 - goto free_pbuf_and_return; - 800fffa: bf00 nop - 800fffc: e000 b.n 8010000 - } - -free_pbuf_and_return: - 800fffe: bf00 nop - pbuf_free(p); - 8010000: 6878 ldr r0, [r7, #4] - 8010002: f7f8 f851 bl 80080a8 -} - 8010006: bf00 nop - 8010008: 3728 adds r7, #40 @ 0x28 - 801000a: 46bd mov sp, r7 - 801000c: bd80 pop {r7, pc} - 801000e: bf00 nop - 8010010: 20006194 .word 0x20006194 - 8010014: 2001916c .word 0x2001916c - 8010018: 2001914c .word 0x2001914c - -0801001c : - * @param dhcp dhcp control struct - * @param message_type message type of the request - */ -static struct pbuf * -dhcp_create_msg(struct netif *netif, struct dhcp *dhcp, u8_t message_type, u16_t *options_out_len) -{ - 801001c: b580 push {r7, lr} - 801001e: b088 sub sp, #32 - 8010020: af00 add r7, sp, #0 - 8010022: 60f8 str r0, [r7, #12] - 8010024: 60b9 str r1, [r7, #8] - 8010026: 603b str r3, [r7, #0] - 8010028: 4613 mov r3, r2 - 801002a: 71fb strb r3, [r7, #7] - if (!xid_initialised) { - xid = DHCP_GLOBAL_XID; - xid_initialised = !xid_initialised; - } -#endif - LWIP_ERROR("dhcp_create_msg: netif != NULL", (netif != NULL), return NULL;); - 801002c: 68fb ldr r3, [r7, #12] - 801002e: 2b00 cmp r3, #0 - 8010030: d108 bne.n 8010044 - 8010032: 4b5f ldr r3, [pc, #380] @ (80101b0 ) - 8010034: f240 7269 movw r2, #1897 @ 0x769 - 8010038: 495e ldr r1, [pc, #376] @ (80101b4 ) - 801003a: 485f ldr r0, [pc, #380] @ (80101b8 ) - 801003c: f002 fe1c bl 8012c78 - 8010040: 2300 movs r3, #0 - 8010042: e0b1 b.n 80101a8 - LWIP_ERROR("dhcp_create_msg: dhcp != NULL", (dhcp != NULL), return NULL;); - 8010044: 68bb ldr r3, [r7, #8] - 8010046: 2b00 cmp r3, #0 - 8010048: d108 bne.n 801005c - 801004a: 4b59 ldr r3, [pc, #356] @ (80101b0 ) - 801004c: f240 726a movw r2, #1898 @ 0x76a - 8010050: 495a ldr r1, [pc, #360] @ (80101bc ) - 8010052: 4859 ldr r0, [pc, #356] @ (80101b8 ) - 8010054: f002 fe10 bl 8012c78 - 8010058: 2300 movs r3, #0 - 801005a: e0a5 b.n 80101a8 - p_out = pbuf_alloc(PBUF_TRANSPORT, sizeof(struct dhcp_msg), PBUF_RAM); - 801005c: f44f 7220 mov.w r2, #640 @ 0x280 - 8010060: f44f 719a mov.w r1, #308 @ 0x134 - 8010064: 2036 movs r0, #54 @ 0x36 - 8010066: f7f7 fd3d bl 8007ae4 - 801006a: 61b8 str r0, [r7, #24] - if (p_out == NULL) { - 801006c: 69bb ldr r3, [r7, #24] - 801006e: 2b00 cmp r3, #0 - 8010070: d101 bne.n 8010076 - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, - ("dhcp_create_msg(): could not allocate pbuf\n")); - return NULL; - 8010072: 2300 movs r3, #0 - 8010074: e098 b.n 80101a8 - } - LWIP_ASSERT("dhcp_create_msg: check that first pbuf can hold struct dhcp_msg", - 8010076: 69bb ldr r3, [r7, #24] - 8010078: 895b ldrh r3, [r3, #10] - 801007a: f5b3 7f9a cmp.w r3, #308 @ 0x134 - 801007e: d206 bcs.n 801008e - 8010080: 4b4b ldr r3, [pc, #300] @ (80101b0 ) - 8010082: f240 7271 movw r2, #1905 @ 0x771 - 8010086: 494e ldr r1, [pc, #312] @ (80101c0 ) - 8010088: 484b ldr r0, [pc, #300] @ (80101b8 ) - 801008a: f002 fdf5 bl 8012c78 - (p_out->len >= sizeof(struct dhcp_msg))); - - /* DHCP_REQUEST should reuse 'xid' from DHCPOFFER */ - if ((message_type != DHCP_REQUEST) || (dhcp->state == DHCP_STATE_REBOOTING)) { - 801008e: 79fb ldrb r3, [r7, #7] - 8010090: 2b03 cmp r3, #3 - 8010092: d103 bne.n 801009c - 8010094: 68bb ldr r3, [r7, #8] - 8010096: 795b ldrb r3, [r3, #5] - 8010098: 2b03 cmp r3, #3 - 801009a: d10d bne.n 80100b8 - /* reuse transaction identifier in retransmissions */ - if (dhcp->tries == 0) { - 801009c: 68bb ldr r3, [r7, #8] - 801009e: 799b ldrb r3, [r3, #6] - 80100a0: 2b00 cmp r3, #0 - 80100a2: d105 bne.n 80100b0 -#if DHCP_CREATE_RAND_XID && defined(LWIP_RAND) - xid = LWIP_RAND(); - 80100a4: f002 fd0a bl 8012abc - 80100a8: 4603 mov r3, r0 - 80100aa: 461a mov r2, r3 - 80100ac: 4b45 ldr r3, [pc, #276] @ (80101c4 ) - 80100ae: 601a str r2, [r3, #0] -#else /* DHCP_CREATE_RAND_XID && defined(LWIP_RAND) */ - xid++; -#endif /* DHCP_CREATE_RAND_XID && defined(LWIP_RAND) */ - } - dhcp->xid = xid; - 80100b0: 4b44 ldr r3, [pc, #272] @ (80101c4 ) - 80100b2: 681a ldr r2, [r3, #0] - 80100b4: 68bb ldr r3, [r7, #8] - 80100b6: 601a str r2, [r3, #0] - } - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, - ("transaction id xid(%"X32_F")\n", xid)); - - msg_out = (struct dhcp_msg *)p_out->payload; - 80100b8: 69bb ldr r3, [r7, #24] - 80100ba: 685b ldr r3, [r3, #4] - 80100bc: 617b str r3, [r7, #20] - memset(msg_out, 0, sizeof(struct dhcp_msg)); - 80100be: f44f 729a mov.w r2, #308 @ 0x134 - 80100c2: 2100 movs r1, #0 - 80100c4: 6978 ldr r0, [r7, #20] - 80100c6: f002 fe56 bl 8012d76 - - msg_out->op = DHCP_BOOTREQUEST; - 80100ca: 697b ldr r3, [r7, #20] - 80100cc: 2201 movs r2, #1 - 80100ce: 701a strb r2, [r3, #0] - /* @todo: make link layer independent */ - msg_out->htype = LWIP_IANA_HWTYPE_ETHERNET; - 80100d0: 697b ldr r3, [r7, #20] - 80100d2: 2201 movs r2, #1 - 80100d4: 705a strb r2, [r3, #1] - msg_out->hlen = netif->hwaddr_len; - 80100d6: 68fb ldr r3, [r7, #12] - 80100d8: f893 2030 ldrb.w r2, [r3, #48] @ 0x30 - 80100dc: 697b ldr r3, [r7, #20] - 80100de: 709a strb r2, [r3, #2] - msg_out->xid = lwip_htonl(dhcp->xid); - 80100e0: 68bb ldr r3, [r7, #8] - 80100e2: 681b ldr r3, [r3, #0] - 80100e4: 4618 mov r0, r3 - 80100e6: f7f6 fca4 bl 8006a32 - 80100ea: 4602 mov r2, r0 - 80100ec: 697b ldr r3, [r7, #20] - 80100ee: 605a str r2, [r3, #4] - /* we don't need the broadcast flag since we can receive unicast traffic - before being fully configured! */ - /* set ciaddr to netif->ip_addr based on message_type and state */ - if ((message_type == DHCP_INFORM) || (message_type == DHCP_DECLINE) || (message_type == DHCP_RELEASE) || - 80100f0: 79fb ldrb r3, [r7, #7] - 80100f2: 2b08 cmp r3, #8 - 80100f4: d010 beq.n 8010118 - 80100f6: 79fb ldrb r3, [r7, #7] - 80100f8: 2b04 cmp r3, #4 - 80100fa: d00d beq.n 8010118 - 80100fc: 79fb ldrb r3, [r7, #7] - 80100fe: 2b07 cmp r3, #7 - 8010100: d00a beq.n 8010118 - 8010102: 79fb ldrb r3, [r7, #7] - 8010104: 2b03 cmp r3, #3 - 8010106: d10c bne.n 8010122 - ((message_type == DHCP_REQUEST) && /* DHCP_STATE_BOUND not used for sending! */ - ((dhcp->state == DHCP_STATE_RENEWING) || dhcp->state == DHCP_STATE_REBINDING))) { - 8010108: 68bb ldr r3, [r7, #8] - 801010a: 795b ldrb r3, [r3, #5] - ((message_type == DHCP_REQUEST) && /* DHCP_STATE_BOUND not used for sending! */ - 801010c: 2b05 cmp r3, #5 - 801010e: d003 beq.n 8010118 - ((dhcp->state == DHCP_STATE_RENEWING) || dhcp->state == DHCP_STATE_REBINDING))) { - 8010110: 68bb ldr r3, [r7, #8] - 8010112: 795b ldrb r3, [r3, #5] - 8010114: 2b04 cmp r3, #4 - 8010116: d104 bne.n 8010122 - ip4_addr_copy(msg_out->ciaddr, *netif_ip4_addr(netif)); - 8010118: 68fb ldr r3, [r7, #12] - 801011a: 3304 adds r3, #4 - 801011c: 681a ldr r2, [r3, #0] - 801011e: 697b ldr r3, [r7, #20] - 8010120: 60da str r2, [r3, #12] - } - for (i = 0; i < LWIP_MIN(DHCP_CHADDR_LEN, NETIF_MAX_HWADDR_LEN); i++) { - 8010122: 2300 movs r3, #0 - 8010124: 83fb strh r3, [r7, #30] - 8010126: e00c b.n 8010142 - /* copy netif hardware address (padded with zeroes through memset already) */ - msg_out->chaddr[i] = netif->hwaddr[i]; - 8010128: 8bfa ldrh r2, [r7, #30] - 801012a: 8bfb ldrh r3, [r7, #30] - 801012c: 68f9 ldr r1, [r7, #12] - 801012e: 440a add r2, r1 - 8010130: f892 102a ldrb.w r1, [r2, #42] @ 0x2a - 8010134: 697a ldr r2, [r7, #20] - 8010136: 4413 add r3, r2 - 8010138: 460a mov r2, r1 - 801013a: 771a strb r2, [r3, #28] - for (i = 0; i < LWIP_MIN(DHCP_CHADDR_LEN, NETIF_MAX_HWADDR_LEN); i++) { - 801013c: 8bfb ldrh r3, [r7, #30] - 801013e: 3301 adds r3, #1 - 8010140: 83fb strh r3, [r7, #30] - 8010142: 8bfb ldrh r3, [r7, #30] - 8010144: 2b05 cmp r3, #5 - 8010146: d9ef bls.n 8010128 - } - msg_out->cookie = PP_HTONL(DHCP_MAGIC_COOKIE); - 8010148: 697b ldr r3, [r7, #20] - 801014a: 2200 movs r2, #0 - 801014c: f042 0263 orr.w r2, r2, #99 @ 0x63 - 8010150: f883 20ec strb.w r2, [r3, #236] @ 0xec - 8010154: 2200 movs r2, #0 - 8010156: f062 027d orn r2, r2, #125 @ 0x7d - 801015a: f883 20ed strb.w r2, [r3, #237] @ 0xed - 801015e: 2200 movs r2, #0 - 8010160: f042 0253 orr.w r2, r2, #83 @ 0x53 - 8010164: f883 20ee strb.w r2, [r3, #238] @ 0xee - 8010168: 2200 movs r2, #0 - 801016a: f042 0263 orr.w r2, r2, #99 @ 0x63 - 801016e: f883 20ef strb.w r2, [r3, #239] @ 0xef - /* Add option MESSAGE_TYPE */ - options_out_len_loc = dhcp_option(0, msg_out->options, DHCP_OPTION_MESSAGE_TYPE, DHCP_OPTION_MESSAGE_TYPE_LEN); - 8010172: 697b ldr r3, [r7, #20] - 8010174: f103 01f0 add.w r1, r3, #240 @ 0xf0 - 8010178: 2301 movs r3, #1 - 801017a: 2235 movs r2, #53 @ 0x35 - 801017c: 2000 movs r0, #0 - 801017e: f7ff fadb bl 800f738 - 8010182: 4603 mov r3, r0 - 8010184: 827b strh r3, [r7, #18] - options_out_len_loc = dhcp_option_byte(options_out_len_loc, msg_out->options, message_type); - 8010186: 697b ldr r3, [r7, #20] - 8010188: f103 01f0 add.w r1, r3, #240 @ 0xf0 - 801018c: 79fa ldrb r2, [r7, #7] - 801018e: 8a7b ldrh r3, [r7, #18] - 8010190: 4618 mov r0, r3 - 8010192: f7ff fb05 bl 800f7a0 - 8010196: 4603 mov r3, r0 - 8010198: 827b strh r3, [r7, #18] - if (options_out_len) { - 801019a: 683b ldr r3, [r7, #0] - 801019c: 2b00 cmp r3, #0 - 801019e: d002 beq.n 80101a6 - *options_out_len = options_out_len_loc; - 80101a0: 683b ldr r3, [r7, #0] - 80101a2: 8a7a ldrh r2, [r7, #18] - 80101a4: 801a strh r2, [r3, #0] - } - return p_out; - 80101a6: 69bb ldr r3, [r7, #24] -} - 80101a8: 4618 mov r0, r3 - 80101aa: 3720 adds r7, #32 - 80101ac: 46bd mov sp, r7 - 80101ae: bd80 pop {r7, pc} - 80101b0: 08019a14 .word 0x08019a14 - 80101b4: 08019d34 .word 0x08019d34 - 80101b8: 08019a74 .word 0x08019a74 - 80101bc: 08019d54 .word 0x08019d54 - 80101c0: 08019d74 .word 0x08019d74 - 80101c4: 2001917c .word 0x2001917c - -080101c8 : - * Adds the END option to the DHCP message, and if - * necessary, up to three padding bytes. - */ -static void -dhcp_option_trailer(u16_t options_out_len, u8_t *options, struct pbuf *p_out) -{ - 80101c8: b580 push {r7, lr} - 80101ca: b084 sub sp, #16 - 80101cc: af00 add r7, sp, #0 - 80101ce: 4603 mov r3, r0 - 80101d0: 60b9 str r1, [r7, #8] - 80101d2: 607a str r2, [r7, #4] - 80101d4: 81fb strh r3, [r7, #14] - options[options_out_len++] = DHCP_OPTION_END; - 80101d6: 89fb ldrh r3, [r7, #14] - 80101d8: 1c5a adds r2, r3, #1 - 80101da: 81fa strh r2, [r7, #14] - 80101dc: 461a mov r2, r3 - 80101de: 68bb ldr r3, [r7, #8] - 80101e0: 4413 add r3, r2 - 80101e2: 22ff movs r2, #255 @ 0xff - 80101e4: 701a strb r2, [r3, #0] - /* packet is too small, or not 4 byte aligned? */ - while (((options_out_len < DHCP_MIN_OPTIONS_LEN) || (options_out_len & 3)) && - 80101e6: e007 b.n 80101f8 - (options_out_len < DHCP_OPTIONS_LEN)) { - /* add a fill/padding byte */ - options[options_out_len++] = 0; - 80101e8: 89fb ldrh r3, [r7, #14] - 80101ea: 1c5a adds r2, r3, #1 - 80101ec: 81fa strh r2, [r7, #14] - 80101ee: 461a mov r2, r3 - 80101f0: 68bb ldr r3, [r7, #8] - 80101f2: 4413 add r3, r2 - 80101f4: 2200 movs r2, #0 - 80101f6: 701a strb r2, [r3, #0] - while (((options_out_len < DHCP_MIN_OPTIONS_LEN) || (options_out_len & 3)) && - 80101f8: 89fb ldrh r3, [r7, #14] - 80101fa: 2b43 cmp r3, #67 @ 0x43 - 80101fc: d904 bls.n 8010208 - 80101fe: 89fb ldrh r3, [r7, #14] - 8010200: f003 0303 and.w r3, r3, #3 - 8010204: 2b00 cmp r3, #0 - 8010206: d002 beq.n 801020e - 8010208: 89fb ldrh r3, [r7, #14] - 801020a: 2b43 cmp r3, #67 @ 0x43 - 801020c: d9ec bls.n 80101e8 - } - /* shrink the pbuf to the actual content length */ - pbuf_realloc(p_out, (u16_t)(sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + options_out_len)); - 801020e: 89fb ldrh r3, [r7, #14] - 8010210: 33f0 adds r3, #240 @ 0xf0 - 8010212: b29b uxth r3, r3 - 8010214: 4619 mov r1, r3 - 8010216: 6878 ldr r0, [r7, #4] - 8010218: f7f7 fdc2 bl 8007da0 -} - 801021c: bf00 nop - 801021e: 3710 adds r7, #16 - 8010220: 46bd mov sp, r7 - 8010222: bd80 pop {r7, pc} - -08010224 : - * @return 1 if DHCP supplied netif->ip_addr (states BOUND or RENEWING), - * 0 otherwise - */ -u8_t -dhcp_supplied_address(const struct netif *netif) -{ - 8010224: b480 push {r7} - 8010226: b085 sub sp, #20 - 8010228: af00 add r7, sp, #0 - 801022a: 6078 str r0, [r7, #4] - if ((netif != NULL) && (netif_dhcp_data(netif) != NULL)) { - 801022c: 687b ldr r3, [r7, #4] - 801022e: 2b00 cmp r3, #0 - 8010230: d017 beq.n 8010262 - 8010232: 687b ldr r3, [r7, #4] - 8010234: 6a5b ldr r3, [r3, #36] @ 0x24 - 8010236: 2b00 cmp r3, #0 - 8010238: d013 beq.n 8010262 - struct dhcp *dhcp = netif_dhcp_data(netif); - 801023a: 687b ldr r3, [r7, #4] - 801023c: 6a5b ldr r3, [r3, #36] @ 0x24 - 801023e: 60fb str r3, [r7, #12] - return (dhcp->state == DHCP_STATE_BOUND) || (dhcp->state == DHCP_STATE_RENEWING) || - 8010240: 68fb ldr r3, [r7, #12] - 8010242: 795b ldrb r3, [r3, #5] - 8010244: 2b0a cmp r3, #10 - 8010246: d007 beq.n 8010258 - 8010248: 68fb ldr r3, [r7, #12] - 801024a: 795b ldrb r3, [r3, #5] - 801024c: 2b05 cmp r3, #5 - 801024e: d003 beq.n 8010258 - (dhcp->state == DHCP_STATE_REBINDING); - 8010250: 68fb ldr r3, [r7, #12] - 8010252: 795b ldrb r3, [r3, #5] - return (dhcp->state == DHCP_STATE_BOUND) || (dhcp->state == DHCP_STATE_RENEWING) || - 8010254: 2b04 cmp r3, #4 - 8010256: d101 bne.n 801025c - 8010258: 2301 movs r3, #1 - 801025a: e000 b.n 801025e - 801025c: 2300 movs r3, #0 - 801025e: b2db uxtb r3, r3 - 8010260: e000 b.n 8010264 - } - return 0; - 8010262: 2300 movs r3, #0 -} - 8010264: 4618 mov r0, r3 - 8010266: 3714 adds r7, #20 - 8010268: 46bd mov sp, r7 - 801026a: f85d 7b04 ldr.w r7, [sp], #4 - 801026e: 4770 bx lr - -08010270 : -#endif /* ARP_QUEUEING */ - -/** Clean up ARP table entries */ -static void -etharp_free_entry(int i) -{ - 8010270: b580 push {r7, lr} - 8010272: b082 sub sp, #8 - 8010274: af00 add r7, sp, #0 - 8010276: 6078 str r0, [r7, #4] - /* remove from SNMP ARP index tree */ - mib2_remove_arp_entry(arp_table[i].netif, &arp_table[i].ipaddr); - /* and empty packet queue */ - if (arp_table[i].q != NULL) { - 8010278: 4915 ldr r1, [pc, #84] @ (80102d0 ) - 801027a: 687a ldr r2, [r7, #4] - 801027c: 4613 mov r3, r2 - 801027e: 005b lsls r3, r3, #1 - 8010280: 4413 add r3, r2 - 8010282: 00db lsls r3, r3, #3 - 8010284: 440b add r3, r1 - 8010286: 681b ldr r3, [r3, #0] - 8010288: 2b00 cmp r3, #0 - 801028a: d013 beq.n 80102b4 - /* remove all queued packets */ - LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_free_entry: freeing entry %"U16_F", packet queue %p.\n", (u16_t)i, (void *)(arp_table[i].q))); - free_etharp_q(arp_table[i].q); - 801028c: 4910 ldr r1, [pc, #64] @ (80102d0 ) - 801028e: 687a ldr r2, [r7, #4] - 8010290: 4613 mov r3, r2 - 8010292: 005b lsls r3, r3, #1 - 8010294: 4413 add r3, r2 - 8010296: 00db lsls r3, r3, #3 - 8010298: 440b add r3, r1 - 801029a: 681b ldr r3, [r3, #0] - 801029c: 4618 mov r0, r3 - 801029e: f7f7 ff03 bl 80080a8 - arp_table[i].q = NULL; - 80102a2: 490b ldr r1, [pc, #44] @ (80102d0 ) - 80102a4: 687a ldr r2, [r7, #4] - 80102a6: 4613 mov r3, r2 - 80102a8: 005b lsls r3, r3, #1 - 80102aa: 4413 add r3, r2 - 80102ac: 00db lsls r3, r3, #3 - 80102ae: 440b add r3, r1 - 80102b0: 2200 movs r2, #0 - 80102b2: 601a str r2, [r3, #0] - } - /* recycle entry for re-use */ - arp_table[i].state = ETHARP_STATE_EMPTY; - 80102b4: 4906 ldr r1, [pc, #24] @ (80102d0 ) - 80102b6: 687a ldr r2, [r7, #4] - 80102b8: 4613 mov r3, r2 - 80102ba: 005b lsls r3, r3, #1 - 80102bc: 4413 add r3, r2 - 80102be: 00db lsls r3, r3, #3 - 80102c0: 440b add r3, r1 - 80102c2: 3314 adds r3, #20 - 80102c4: 2200 movs r2, #0 - 80102c6: 701a strb r2, [r3, #0] - arp_table[i].ctime = 0; - arp_table[i].netif = NULL; - ip4_addr_set_zero(&arp_table[i].ipaddr); - arp_table[i].ethaddr = ethzero; -#endif /* LWIP_DEBUG */ -} - 80102c8: bf00 nop - 80102ca: 3708 adds r7, #8 - 80102cc: 46bd mov sp, r7 - 80102ce: bd80 pop {r7, pc} - 80102d0: 20019180 .word 0x20019180 - -080102d4 : - * This function should be called every ARP_TMR_INTERVAL milliseconds (1 second), - * in order to expire entries in the ARP table. - */ -void -etharp_tmr(void) -{ - 80102d4: b580 push {r7, lr} - 80102d6: b082 sub sp, #8 - 80102d8: af00 add r7, sp, #0 - int i; - - LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_timer\n")); - /* remove expired entries from the ARP table */ - for (i = 0; i < ARP_TABLE_SIZE; ++i) { - 80102da: 2300 movs r3, #0 - 80102dc: 607b str r3, [r7, #4] - 80102de: e096 b.n 801040e - u8_t state = arp_table[i].state; - 80102e0: 494f ldr r1, [pc, #316] @ (8010420 ) - 80102e2: 687a ldr r2, [r7, #4] - 80102e4: 4613 mov r3, r2 - 80102e6: 005b lsls r3, r3, #1 - 80102e8: 4413 add r3, r2 - 80102ea: 00db lsls r3, r3, #3 - 80102ec: 440b add r3, r1 - 80102ee: 3314 adds r3, #20 - 80102f0: 781b ldrb r3, [r3, #0] - 80102f2: 70fb strb r3, [r7, #3] - if (state != ETHARP_STATE_EMPTY - 80102f4: 78fb ldrb r3, [r7, #3] - 80102f6: 2b00 cmp r3, #0 - 80102f8: f000 8086 beq.w 8010408 -#if ETHARP_SUPPORT_STATIC_ENTRIES - && (state != ETHARP_STATE_STATIC) -#endif /* ETHARP_SUPPORT_STATIC_ENTRIES */ - ) { - arp_table[i].ctime++; - 80102fc: 4948 ldr r1, [pc, #288] @ (8010420 ) - 80102fe: 687a ldr r2, [r7, #4] - 8010300: 4613 mov r3, r2 - 8010302: 005b lsls r3, r3, #1 - 8010304: 4413 add r3, r2 - 8010306: 00db lsls r3, r3, #3 - 8010308: 440b add r3, r1 - 801030a: 3312 adds r3, #18 - 801030c: 881b ldrh r3, [r3, #0] - 801030e: 3301 adds r3, #1 - 8010310: b298 uxth r0, r3 - 8010312: 4943 ldr r1, [pc, #268] @ (8010420 ) - 8010314: 687a ldr r2, [r7, #4] - 8010316: 4613 mov r3, r2 - 8010318: 005b lsls r3, r3, #1 - 801031a: 4413 add r3, r2 - 801031c: 00db lsls r3, r3, #3 - 801031e: 440b add r3, r1 - 8010320: 3312 adds r3, #18 - 8010322: 4602 mov r2, r0 - 8010324: 801a strh r2, [r3, #0] - if ((arp_table[i].ctime >= ARP_MAXAGE) || - 8010326: 493e ldr r1, [pc, #248] @ (8010420 ) - 8010328: 687a ldr r2, [r7, #4] - 801032a: 4613 mov r3, r2 - 801032c: 005b lsls r3, r3, #1 - 801032e: 4413 add r3, r2 - 8010330: 00db lsls r3, r3, #3 - 8010332: 440b add r3, r1 - 8010334: 3312 adds r3, #18 - 8010336: 881b ldrh r3, [r3, #0] - 8010338: f5b3 7f96 cmp.w r3, #300 @ 0x12c - 801033c: d215 bcs.n 801036a - ((arp_table[i].state == ETHARP_STATE_PENDING) && - 801033e: 4938 ldr r1, [pc, #224] @ (8010420 ) - 8010340: 687a ldr r2, [r7, #4] - 8010342: 4613 mov r3, r2 - 8010344: 005b lsls r3, r3, #1 - 8010346: 4413 add r3, r2 - 8010348: 00db lsls r3, r3, #3 - 801034a: 440b add r3, r1 - 801034c: 3314 adds r3, #20 - 801034e: 781b ldrb r3, [r3, #0] - if ((arp_table[i].ctime >= ARP_MAXAGE) || - 8010350: 2b01 cmp r3, #1 - 8010352: d10e bne.n 8010372 - (arp_table[i].ctime >= ARP_MAXPENDING))) { - 8010354: 4932 ldr r1, [pc, #200] @ (8010420 ) - 8010356: 687a ldr r2, [r7, #4] - 8010358: 4613 mov r3, r2 - 801035a: 005b lsls r3, r3, #1 - 801035c: 4413 add r3, r2 - 801035e: 00db lsls r3, r3, #3 - 8010360: 440b add r3, r1 - 8010362: 3312 adds r3, #18 - 8010364: 881b ldrh r3, [r3, #0] - ((arp_table[i].state == ETHARP_STATE_PENDING) && - 8010366: 2b04 cmp r3, #4 - 8010368: d903 bls.n 8010372 - /* pending or stable entry has become old! */ - LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_timer: expired %s entry %d.\n", - arp_table[i].state >= ETHARP_STATE_STABLE ? "stable" : "pending", i)); - /* clean up entries that have just been expired */ - etharp_free_entry(i); - 801036a: 6878 ldr r0, [r7, #4] - 801036c: f7ff ff80 bl 8010270 - 8010370: e04a b.n 8010408 - } else if (arp_table[i].state == ETHARP_STATE_STABLE_REREQUESTING_1) { - 8010372: 492b ldr r1, [pc, #172] @ (8010420 ) - 8010374: 687a ldr r2, [r7, #4] - 8010376: 4613 mov r3, r2 - 8010378: 005b lsls r3, r3, #1 - 801037a: 4413 add r3, r2 - 801037c: 00db lsls r3, r3, #3 - 801037e: 440b add r3, r1 - 8010380: 3314 adds r3, #20 - 8010382: 781b ldrb r3, [r3, #0] - 8010384: 2b03 cmp r3, #3 - 8010386: d10a bne.n 801039e - /* Don't send more than one request every 2 seconds. */ - arp_table[i].state = ETHARP_STATE_STABLE_REREQUESTING_2; - 8010388: 4925 ldr r1, [pc, #148] @ (8010420 ) - 801038a: 687a ldr r2, [r7, #4] - 801038c: 4613 mov r3, r2 - 801038e: 005b lsls r3, r3, #1 - 8010390: 4413 add r3, r2 - 8010392: 00db lsls r3, r3, #3 - 8010394: 440b add r3, r1 - 8010396: 3314 adds r3, #20 - 8010398: 2204 movs r2, #4 - 801039a: 701a strb r2, [r3, #0] - 801039c: e034 b.n 8010408 - } else if (arp_table[i].state == ETHARP_STATE_STABLE_REREQUESTING_2) { - 801039e: 4920 ldr r1, [pc, #128] @ (8010420 ) - 80103a0: 687a ldr r2, [r7, #4] - 80103a2: 4613 mov r3, r2 - 80103a4: 005b lsls r3, r3, #1 - 80103a6: 4413 add r3, r2 - 80103a8: 00db lsls r3, r3, #3 - 80103aa: 440b add r3, r1 - 80103ac: 3314 adds r3, #20 - 80103ae: 781b ldrb r3, [r3, #0] - 80103b0: 2b04 cmp r3, #4 - 80103b2: d10a bne.n 80103ca - /* Reset state to stable, so that the next transmitted packet will - re-send an ARP request. */ - arp_table[i].state = ETHARP_STATE_STABLE; - 80103b4: 491a ldr r1, [pc, #104] @ (8010420 ) - 80103b6: 687a ldr r2, [r7, #4] - 80103b8: 4613 mov r3, r2 - 80103ba: 005b lsls r3, r3, #1 - 80103bc: 4413 add r3, r2 - 80103be: 00db lsls r3, r3, #3 - 80103c0: 440b add r3, r1 - 80103c2: 3314 adds r3, #20 - 80103c4: 2202 movs r2, #2 - 80103c6: 701a strb r2, [r3, #0] - 80103c8: e01e b.n 8010408 - } else if (arp_table[i].state == ETHARP_STATE_PENDING) { - 80103ca: 4915 ldr r1, [pc, #84] @ (8010420 ) - 80103cc: 687a ldr r2, [r7, #4] - 80103ce: 4613 mov r3, r2 - 80103d0: 005b lsls r3, r3, #1 - 80103d2: 4413 add r3, r2 - 80103d4: 00db lsls r3, r3, #3 - 80103d6: 440b add r3, r1 - 80103d8: 3314 adds r3, #20 - 80103da: 781b ldrb r3, [r3, #0] - 80103dc: 2b01 cmp r3, #1 - 80103de: d113 bne.n 8010408 - /* still pending, resend an ARP query */ - etharp_request(arp_table[i].netif, &arp_table[i].ipaddr); - 80103e0: 490f ldr r1, [pc, #60] @ (8010420 ) - 80103e2: 687a ldr r2, [r7, #4] - 80103e4: 4613 mov r3, r2 - 80103e6: 005b lsls r3, r3, #1 - 80103e8: 4413 add r3, r2 - 80103ea: 00db lsls r3, r3, #3 - 80103ec: 440b add r3, r1 - 80103ee: 3308 adds r3, #8 - 80103f0: 6818 ldr r0, [r3, #0] - 80103f2: 687a ldr r2, [r7, #4] - 80103f4: 4613 mov r3, r2 - 80103f6: 005b lsls r3, r3, #1 - 80103f8: 4413 add r3, r2 - 80103fa: 00db lsls r3, r3, #3 - 80103fc: 4a08 ldr r2, [pc, #32] @ (8010420 ) - 80103fe: 4413 add r3, r2 - 8010400: 3304 adds r3, #4 - 8010402: 4619 mov r1, r3 - 8010404: f000 fe72 bl 80110ec - for (i = 0; i < ARP_TABLE_SIZE; ++i) { - 8010408: 687b ldr r3, [r7, #4] - 801040a: 3301 adds r3, #1 - 801040c: 607b str r3, [r7, #4] - 801040e: 687b ldr r3, [r7, #4] - 8010410: 2b09 cmp r3, #9 - 8010412: f77f af65 ble.w 80102e0 - } - } - } -} - 8010416: bf00 nop - 8010418: bf00 nop - 801041a: 3708 adds r7, #8 - 801041c: 46bd mov sp, r7 - 801041e: bd80 pop {r7, pc} - 8010420: 20019180 .word 0x20019180 - -08010424 : - * @return The ARP entry index that matched or is created, ERR_MEM if no - * entry is found or could be recycled. - */ -static s16_t -etharp_find_entry(const ip4_addr_t *ipaddr, u8_t flags, struct netif *netif) -{ - 8010424: b580 push {r7, lr} - 8010426: b08a sub sp, #40 @ 0x28 - 8010428: af00 add r7, sp, #0 - 801042a: 60f8 str r0, [r7, #12] - 801042c: 460b mov r3, r1 - 801042e: 607a str r2, [r7, #4] - 8010430: 72fb strb r3, [r7, #11] - s16_t old_pending = ARP_TABLE_SIZE, old_stable = ARP_TABLE_SIZE; - 8010432: 230a movs r3, #10 - 8010434: 84fb strh r3, [r7, #38] @ 0x26 - 8010436: 230a movs r3, #10 - 8010438: 84bb strh r3, [r7, #36] @ 0x24 - s16_t empty = ARP_TABLE_SIZE; - 801043a: 230a movs r3, #10 - 801043c: 847b strh r3, [r7, #34] @ 0x22 - s16_t i = 0; - 801043e: 2300 movs r3, #0 - 8010440: 843b strh r3, [r7, #32] - /* oldest entry with packets on queue */ - s16_t old_queue = ARP_TABLE_SIZE; - 8010442: 230a movs r3, #10 - 8010444: 83fb strh r3, [r7, #30] - /* its age */ - u16_t age_queue = 0, age_pending = 0, age_stable = 0; - 8010446: 2300 movs r3, #0 - 8010448: 83bb strh r3, [r7, #28] - 801044a: 2300 movs r3, #0 - 801044c: 837b strh r3, [r7, #26] - 801044e: 2300 movs r3, #0 - 8010450: 833b strh r3, [r7, #24] - * 4) remember the oldest pending entry with queued packets (if any) - * 5) search for a matching IP entry, either pending or stable - * until 5 matches, or all entries are searched for. - */ - - for (i = 0; i < ARP_TABLE_SIZE; ++i) { - 8010452: 2300 movs r3, #0 - 8010454: 843b strh r3, [r7, #32] - 8010456: e0ae b.n 80105b6 - u8_t state = arp_table[i].state; - 8010458: f9b7 2020 ldrsh.w r2, [r7, #32] - 801045c: 49a6 ldr r1, [pc, #664] @ (80106f8 ) - 801045e: 4613 mov r3, r2 - 8010460: 005b lsls r3, r3, #1 - 8010462: 4413 add r3, r2 - 8010464: 00db lsls r3, r3, #3 - 8010466: 440b add r3, r1 - 8010468: 3314 adds r3, #20 - 801046a: 781b ldrb r3, [r3, #0] - 801046c: 75fb strb r3, [r7, #23] - /* no empty entry found yet and now we do find one? */ - if ((empty == ARP_TABLE_SIZE) && (state == ETHARP_STATE_EMPTY)) { - 801046e: f9b7 3022 ldrsh.w r3, [r7, #34] @ 0x22 - 8010472: 2b0a cmp r3, #10 - 8010474: d105 bne.n 8010482 - 8010476: 7dfb ldrb r3, [r7, #23] - 8010478: 2b00 cmp r3, #0 - 801047a: d102 bne.n 8010482 - LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_find_entry: found empty entry %d\n", (int)i)); - /* remember first empty entry */ - empty = i; - 801047c: 8c3b ldrh r3, [r7, #32] - 801047e: 847b strh r3, [r7, #34] @ 0x22 - 8010480: e095 b.n 80105ae - } else if (state != ETHARP_STATE_EMPTY) { - 8010482: 7dfb ldrb r3, [r7, #23] - 8010484: 2b00 cmp r3, #0 - 8010486: f000 8092 beq.w 80105ae - LWIP_ASSERT("state == ETHARP_STATE_PENDING || state >= ETHARP_STATE_STABLE", - 801048a: 7dfb ldrb r3, [r7, #23] - 801048c: 2b01 cmp r3, #1 - 801048e: d009 beq.n 80104a4 - 8010490: 7dfb ldrb r3, [r7, #23] - 8010492: 2b01 cmp r3, #1 - 8010494: d806 bhi.n 80104a4 - 8010496: 4b99 ldr r3, [pc, #612] @ (80106fc ) - 8010498: f240 1223 movw r2, #291 @ 0x123 - 801049c: 4998 ldr r1, [pc, #608] @ (8010700 ) - 801049e: 4899 ldr r0, [pc, #612] @ (8010704 ) - 80104a0: f002 fbea bl 8012c78 - state == ETHARP_STATE_PENDING || state >= ETHARP_STATE_STABLE); - /* if given, does IP address match IP address in ARP entry? */ - if (ipaddr && ip4_addr_cmp(ipaddr, &arp_table[i].ipaddr) - 80104a4: 68fb ldr r3, [r7, #12] - 80104a6: 2b00 cmp r3, #0 - 80104a8: d020 beq.n 80104ec - 80104aa: 68fb ldr r3, [r7, #12] - 80104ac: 6819 ldr r1, [r3, #0] - 80104ae: f9b7 2020 ldrsh.w r2, [r7, #32] - 80104b2: 4891 ldr r0, [pc, #580] @ (80106f8 ) - 80104b4: 4613 mov r3, r2 - 80104b6: 005b lsls r3, r3, #1 - 80104b8: 4413 add r3, r2 - 80104ba: 00db lsls r3, r3, #3 - 80104bc: 4403 add r3, r0 - 80104be: 3304 adds r3, #4 - 80104c0: 681b ldr r3, [r3, #0] - 80104c2: 4299 cmp r1, r3 - 80104c4: d112 bne.n 80104ec -#if ETHARP_TABLE_MATCH_NETIF - && ((netif == NULL) || (netif == arp_table[i].netif)) - 80104c6: 687b ldr r3, [r7, #4] - 80104c8: 2b00 cmp r3, #0 - 80104ca: d00c beq.n 80104e6 - 80104cc: f9b7 2020 ldrsh.w r2, [r7, #32] - 80104d0: 4989 ldr r1, [pc, #548] @ (80106f8 ) - 80104d2: 4613 mov r3, r2 - 80104d4: 005b lsls r3, r3, #1 - 80104d6: 4413 add r3, r2 - 80104d8: 00db lsls r3, r3, #3 - 80104da: 440b add r3, r1 - 80104dc: 3308 adds r3, #8 - 80104de: 681b ldr r3, [r3, #0] - 80104e0: 687a ldr r2, [r7, #4] - 80104e2: 429a cmp r2, r3 - 80104e4: d102 bne.n 80104ec -#endif /* ETHARP_TABLE_MATCH_NETIF */ - ) { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: found matching entry %d\n", (int)i)); - /* found exact IP address match, simply bail out */ - return i; - 80104e6: f9b7 3020 ldrsh.w r3, [r7, #32] - 80104ea: e100 b.n 80106ee - } - /* pending entry? */ - if (state == ETHARP_STATE_PENDING) { - 80104ec: 7dfb ldrb r3, [r7, #23] - 80104ee: 2b01 cmp r3, #1 - 80104f0: d140 bne.n 8010574 - /* pending with queued packets? */ - if (arp_table[i].q != NULL) { - 80104f2: f9b7 2020 ldrsh.w r2, [r7, #32] - 80104f6: 4980 ldr r1, [pc, #512] @ (80106f8 ) - 80104f8: 4613 mov r3, r2 - 80104fa: 005b lsls r3, r3, #1 - 80104fc: 4413 add r3, r2 - 80104fe: 00db lsls r3, r3, #3 - 8010500: 440b add r3, r1 - 8010502: 681b ldr r3, [r3, #0] - 8010504: 2b00 cmp r3, #0 - 8010506: d01a beq.n 801053e - if (arp_table[i].ctime >= age_queue) { - 8010508: f9b7 2020 ldrsh.w r2, [r7, #32] - 801050c: 497a ldr r1, [pc, #488] @ (80106f8 ) - 801050e: 4613 mov r3, r2 - 8010510: 005b lsls r3, r3, #1 - 8010512: 4413 add r3, r2 - 8010514: 00db lsls r3, r3, #3 - 8010516: 440b add r3, r1 - 8010518: 3312 adds r3, #18 - 801051a: 881b ldrh r3, [r3, #0] - 801051c: 8bba ldrh r2, [r7, #28] - 801051e: 429a cmp r2, r3 - 8010520: d845 bhi.n 80105ae - old_queue = i; - 8010522: 8c3b ldrh r3, [r7, #32] - 8010524: 83fb strh r3, [r7, #30] - age_queue = arp_table[i].ctime; - 8010526: f9b7 2020 ldrsh.w r2, [r7, #32] - 801052a: 4973 ldr r1, [pc, #460] @ (80106f8 ) - 801052c: 4613 mov r3, r2 - 801052e: 005b lsls r3, r3, #1 - 8010530: 4413 add r3, r2 - 8010532: 00db lsls r3, r3, #3 - 8010534: 440b add r3, r1 - 8010536: 3312 adds r3, #18 - 8010538: 881b ldrh r3, [r3, #0] - 801053a: 83bb strh r3, [r7, #28] - 801053c: e037 b.n 80105ae - } - } else - /* pending without queued packets? */ - { - if (arp_table[i].ctime >= age_pending) { - 801053e: f9b7 2020 ldrsh.w r2, [r7, #32] - 8010542: 496d ldr r1, [pc, #436] @ (80106f8 ) - 8010544: 4613 mov r3, r2 - 8010546: 005b lsls r3, r3, #1 - 8010548: 4413 add r3, r2 - 801054a: 00db lsls r3, r3, #3 - 801054c: 440b add r3, r1 - 801054e: 3312 adds r3, #18 - 8010550: 881b ldrh r3, [r3, #0] - 8010552: 8b7a ldrh r2, [r7, #26] - 8010554: 429a cmp r2, r3 - 8010556: d82a bhi.n 80105ae - old_pending = i; - 8010558: 8c3b ldrh r3, [r7, #32] - 801055a: 84fb strh r3, [r7, #38] @ 0x26 - age_pending = arp_table[i].ctime; - 801055c: f9b7 2020 ldrsh.w r2, [r7, #32] - 8010560: 4965 ldr r1, [pc, #404] @ (80106f8 ) - 8010562: 4613 mov r3, r2 - 8010564: 005b lsls r3, r3, #1 - 8010566: 4413 add r3, r2 - 8010568: 00db lsls r3, r3, #3 - 801056a: 440b add r3, r1 - 801056c: 3312 adds r3, #18 - 801056e: 881b ldrh r3, [r3, #0] - 8010570: 837b strh r3, [r7, #26] - 8010572: e01c b.n 80105ae - } - } - /* stable entry? */ - } else if (state >= ETHARP_STATE_STABLE) { - 8010574: 7dfb ldrb r3, [r7, #23] - 8010576: 2b01 cmp r3, #1 - 8010578: d919 bls.n 80105ae - /* don't record old_stable for static entries since they never expire */ - if (state < ETHARP_STATE_STATIC) -#endif /* ETHARP_SUPPORT_STATIC_ENTRIES */ - { - /* remember entry with oldest stable entry in oldest, its age in maxtime */ - if (arp_table[i].ctime >= age_stable) { - 801057a: f9b7 2020 ldrsh.w r2, [r7, #32] - 801057e: 495e ldr r1, [pc, #376] @ (80106f8 ) - 8010580: 4613 mov r3, r2 - 8010582: 005b lsls r3, r3, #1 - 8010584: 4413 add r3, r2 - 8010586: 00db lsls r3, r3, #3 - 8010588: 440b add r3, r1 - 801058a: 3312 adds r3, #18 - 801058c: 881b ldrh r3, [r3, #0] - 801058e: 8b3a ldrh r2, [r7, #24] - 8010590: 429a cmp r2, r3 - 8010592: d80c bhi.n 80105ae - old_stable = i; - 8010594: 8c3b ldrh r3, [r7, #32] - 8010596: 84bb strh r3, [r7, #36] @ 0x24 - age_stable = arp_table[i].ctime; - 8010598: f9b7 2020 ldrsh.w r2, [r7, #32] - 801059c: 4956 ldr r1, [pc, #344] @ (80106f8 ) - 801059e: 4613 mov r3, r2 - 80105a0: 005b lsls r3, r3, #1 - 80105a2: 4413 add r3, r2 - 80105a4: 00db lsls r3, r3, #3 - 80105a6: 440b add r3, r1 - 80105a8: 3312 adds r3, #18 - 80105aa: 881b ldrh r3, [r3, #0] - 80105ac: 833b strh r3, [r7, #24] - for (i = 0; i < ARP_TABLE_SIZE; ++i) { - 80105ae: 8c3b ldrh r3, [r7, #32] - 80105b0: 3301 adds r3, #1 - 80105b2: b29b uxth r3, r3 - 80105b4: 843b strh r3, [r7, #32] - 80105b6: f9b7 3020 ldrsh.w r3, [r7, #32] - 80105ba: 2b09 cmp r3, #9 - 80105bc: f77f af4c ble.w 8010458 - } - } - /* { we have no match } => try to create a new entry */ - - /* don't create new entry, only search? */ - if (((flags & ETHARP_FLAG_FIND_ONLY) != 0) || - 80105c0: 7afb ldrb r3, [r7, #11] - 80105c2: f003 0302 and.w r3, r3, #2 - 80105c6: 2b00 cmp r3, #0 - 80105c8: d108 bne.n 80105dc - 80105ca: f9b7 3022 ldrsh.w r3, [r7, #34] @ 0x22 - 80105ce: 2b0a cmp r3, #10 - 80105d0: d107 bne.n 80105e2 - /* or no empty entry found and not allowed to recycle? */ - ((empty == ARP_TABLE_SIZE) && ((flags & ETHARP_FLAG_TRY_HARD) == 0))) { - 80105d2: 7afb ldrb r3, [r7, #11] - 80105d4: f003 0301 and.w r3, r3, #1 - 80105d8: 2b00 cmp r3, #0 - 80105da: d102 bne.n 80105e2 - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: no empty entry found and not allowed to recycle\n")); - return (s16_t)ERR_MEM; - 80105dc: f04f 33ff mov.w r3, #4294967295 - 80105e0: e085 b.n 80106ee - * - * { ETHARP_FLAG_TRY_HARD is set at this point } - */ - - /* 1) empty entry available? */ - if (empty < ARP_TABLE_SIZE) { - 80105e2: f9b7 3022 ldrsh.w r3, [r7, #34] @ 0x22 - 80105e6: 2b09 cmp r3, #9 - 80105e8: dc02 bgt.n 80105f0 - i = empty; - 80105ea: 8c7b ldrh r3, [r7, #34] @ 0x22 - 80105ec: 843b strh r3, [r7, #32] - 80105ee: e039 b.n 8010664 - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: selecting empty entry %d\n", (int)i)); - } else { - /* 2) found recyclable stable entry? */ - if (old_stable < ARP_TABLE_SIZE) { - 80105f0: f9b7 3024 ldrsh.w r3, [r7, #36] @ 0x24 - 80105f4: 2b09 cmp r3, #9 - 80105f6: dc14 bgt.n 8010622 - /* recycle oldest stable*/ - i = old_stable; - 80105f8: 8cbb ldrh r3, [r7, #36] @ 0x24 - 80105fa: 843b strh r3, [r7, #32] - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: selecting oldest stable entry %d\n", (int)i)); - /* no queued packets should exist on stable entries */ - LWIP_ASSERT("arp_table[i].q == NULL", arp_table[i].q == NULL); - 80105fc: f9b7 2020 ldrsh.w r2, [r7, #32] - 8010600: 493d ldr r1, [pc, #244] @ (80106f8 ) - 8010602: 4613 mov r3, r2 - 8010604: 005b lsls r3, r3, #1 - 8010606: 4413 add r3, r2 - 8010608: 00db lsls r3, r3, #3 - 801060a: 440b add r3, r1 - 801060c: 681b ldr r3, [r3, #0] - 801060e: 2b00 cmp r3, #0 - 8010610: d018 beq.n 8010644 - 8010612: 4b3a ldr r3, [pc, #232] @ (80106fc ) - 8010614: f240 126d movw r2, #365 @ 0x16d - 8010618: 493b ldr r1, [pc, #236] @ (8010708 ) - 801061a: 483a ldr r0, [pc, #232] @ (8010704 ) - 801061c: f002 fb2c bl 8012c78 - 8010620: e010 b.n 8010644 - /* 3) found recyclable pending entry without queued packets? */ - } else if (old_pending < ARP_TABLE_SIZE) { - 8010622: f9b7 3026 ldrsh.w r3, [r7, #38] @ 0x26 - 8010626: 2b09 cmp r3, #9 - 8010628: dc02 bgt.n 8010630 - /* recycle oldest pending */ - i = old_pending; - 801062a: 8cfb ldrh r3, [r7, #38] @ 0x26 - 801062c: 843b strh r3, [r7, #32] - 801062e: e009 b.n 8010644 - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: selecting oldest pending entry %d (without queue)\n", (int)i)); - /* 4) found recyclable pending entry with queued packets? */ - } else if (old_queue < ARP_TABLE_SIZE) { - 8010630: f9b7 301e ldrsh.w r3, [r7, #30] - 8010634: 2b09 cmp r3, #9 - 8010636: dc02 bgt.n 801063e - /* recycle oldest pending (queued packets are free in etharp_free_entry) */ - i = old_queue; - 8010638: 8bfb ldrh r3, [r7, #30] - 801063a: 843b strh r3, [r7, #32] - 801063c: e002 b.n 8010644 - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: selecting oldest pending entry %d, freeing packet queue %p\n", (int)i, (void *)(arp_table[i].q))); - /* no empty or recyclable entries found */ - } else { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: no empty or recyclable entries found\n")); - return (s16_t)ERR_MEM; - 801063e: f04f 33ff mov.w r3, #4294967295 - 8010642: e054 b.n 80106ee - } - - /* { empty or recyclable entry found } */ - LWIP_ASSERT("i < ARP_TABLE_SIZE", i < ARP_TABLE_SIZE); - 8010644: f9b7 3020 ldrsh.w r3, [r7, #32] - 8010648: 2b09 cmp r3, #9 - 801064a: dd06 ble.n 801065a - 801064c: 4b2b ldr r3, [pc, #172] @ (80106fc ) - 801064e: f240 127f movw r2, #383 @ 0x17f - 8010652: 492e ldr r1, [pc, #184] @ (801070c ) - 8010654: 482b ldr r0, [pc, #172] @ (8010704 ) - 8010656: f002 fb0f bl 8012c78 - etharp_free_entry(i); - 801065a: f9b7 3020 ldrsh.w r3, [r7, #32] - 801065e: 4618 mov r0, r3 - 8010660: f7ff fe06 bl 8010270 - } - - LWIP_ASSERT("i < ARP_TABLE_SIZE", i < ARP_TABLE_SIZE); - 8010664: f9b7 3020 ldrsh.w r3, [r7, #32] - 8010668: 2b09 cmp r3, #9 - 801066a: dd06 ble.n 801067a - 801066c: 4b23 ldr r3, [pc, #140] @ (80106fc ) - 801066e: f240 1283 movw r2, #387 @ 0x183 - 8010672: 4926 ldr r1, [pc, #152] @ (801070c ) - 8010674: 4823 ldr r0, [pc, #140] @ (8010704 ) - 8010676: f002 faff bl 8012c78 - LWIP_ASSERT("arp_table[i].state == ETHARP_STATE_EMPTY", - 801067a: f9b7 2020 ldrsh.w r2, [r7, #32] - 801067e: 491e ldr r1, [pc, #120] @ (80106f8 ) - 8010680: 4613 mov r3, r2 - 8010682: 005b lsls r3, r3, #1 - 8010684: 4413 add r3, r2 - 8010686: 00db lsls r3, r3, #3 - 8010688: 440b add r3, r1 - 801068a: 3314 adds r3, #20 - 801068c: 781b ldrb r3, [r3, #0] - 801068e: 2b00 cmp r3, #0 - 8010690: d006 beq.n 80106a0 - 8010692: 4b1a ldr r3, [pc, #104] @ (80106fc ) - 8010694: f44f 72c2 mov.w r2, #388 @ 0x184 - 8010698: 491d ldr r1, [pc, #116] @ (8010710 ) - 801069a: 481a ldr r0, [pc, #104] @ (8010704 ) - 801069c: f002 faec bl 8012c78 - arp_table[i].state == ETHARP_STATE_EMPTY); - - /* IP address given? */ - if (ipaddr != NULL) { - 80106a0: 68fb ldr r3, [r7, #12] - 80106a2: 2b00 cmp r3, #0 - 80106a4: d00b beq.n 80106be - /* set IP address */ - ip4_addr_copy(arp_table[i].ipaddr, *ipaddr); - 80106a6: f9b7 2020 ldrsh.w r2, [r7, #32] - 80106aa: 68fb ldr r3, [r7, #12] - 80106ac: 6819 ldr r1, [r3, #0] - 80106ae: 4812 ldr r0, [pc, #72] @ (80106f8 ) - 80106b0: 4613 mov r3, r2 - 80106b2: 005b lsls r3, r3, #1 - 80106b4: 4413 add r3, r2 - 80106b6: 00db lsls r3, r3, #3 - 80106b8: 4403 add r3, r0 - 80106ba: 3304 adds r3, #4 - 80106bc: 6019 str r1, [r3, #0] - } - arp_table[i].ctime = 0; - 80106be: f9b7 2020 ldrsh.w r2, [r7, #32] - 80106c2: 490d ldr r1, [pc, #52] @ (80106f8 ) - 80106c4: 4613 mov r3, r2 - 80106c6: 005b lsls r3, r3, #1 - 80106c8: 4413 add r3, r2 - 80106ca: 00db lsls r3, r3, #3 - 80106cc: 440b add r3, r1 - 80106ce: 3312 adds r3, #18 - 80106d0: 2200 movs r2, #0 - 80106d2: 801a strh r2, [r3, #0] -#if ETHARP_TABLE_MATCH_NETIF - arp_table[i].netif = netif; - 80106d4: f9b7 2020 ldrsh.w r2, [r7, #32] - 80106d8: 4907 ldr r1, [pc, #28] @ (80106f8 ) - 80106da: 4613 mov r3, r2 - 80106dc: 005b lsls r3, r3, #1 - 80106de: 4413 add r3, r2 - 80106e0: 00db lsls r3, r3, #3 - 80106e2: 440b add r3, r1 - 80106e4: 3308 adds r3, #8 - 80106e6: 687a ldr r2, [r7, #4] - 80106e8: 601a str r2, [r3, #0] -#endif /* ETHARP_TABLE_MATCH_NETIF */ - return (s16_t)i; - 80106ea: f9b7 3020 ldrsh.w r3, [r7, #32] -} - 80106ee: 4618 mov r0, r3 - 80106f0: 3728 adds r7, #40 @ 0x28 - 80106f2: 46bd mov sp, r7 - 80106f4: bd80 pop {r7, pc} - 80106f6: bf00 nop - 80106f8: 20019180 .word 0x20019180 - 80106fc: 08019db4 .word 0x08019db4 - 8010700: 08019dec .word 0x08019dec - 8010704: 08019e2c .word 0x08019e2c - 8010708: 08019e54 .word 0x08019e54 - 801070c: 08019e6c .word 0x08019e6c - 8010710: 08019e80 .word 0x08019e80 - -08010714 : - * - * @see pbuf_free() - */ -static err_t -etharp_update_arp_entry(struct netif *netif, const ip4_addr_t *ipaddr, struct eth_addr *ethaddr, u8_t flags) -{ - 8010714: b580 push {r7, lr} - 8010716: b088 sub sp, #32 - 8010718: af02 add r7, sp, #8 - 801071a: 60f8 str r0, [r7, #12] - 801071c: 60b9 str r1, [r7, #8] - 801071e: 607a str r2, [r7, #4] - 8010720: 70fb strb r3, [r7, #3] - s16_t i; - LWIP_ASSERT("netif->hwaddr_len == ETH_HWADDR_LEN", netif->hwaddr_len == ETH_HWADDR_LEN); - 8010722: 68fb ldr r3, [r7, #12] - 8010724: f893 3030 ldrb.w r3, [r3, #48] @ 0x30 - 8010728: 2b06 cmp r3, #6 - 801072a: d006 beq.n 801073a - 801072c: 4b48 ldr r3, [pc, #288] @ (8010850 ) - 801072e: f240 12a9 movw r2, #425 @ 0x1a9 - 8010732: 4948 ldr r1, [pc, #288] @ (8010854 ) - 8010734: 4848 ldr r0, [pc, #288] @ (8010858 ) - 8010736: f002 fa9f bl 8012c78 - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_update_arp_entry: %"U16_F".%"U16_F".%"U16_F".%"U16_F" - %02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F"\n", - ip4_addr1_16(ipaddr), ip4_addr2_16(ipaddr), ip4_addr3_16(ipaddr), ip4_addr4_16(ipaddr), - (u16_t)ethaddr->addr[0], (u16_t)ethaddr->addr[1], (u16_t)ethaddr->addr[2], - (u16_t)ethaddr->addr[3], (u16_t)ethaddr->addr[4], (u16_t)ethaddr->addr[5])); - /* non-unicast address? */ - if (ip4_addr_isany(ipaddr) || - 801073a: 68bb ldr r3, [r7, #8] - 801073c: 2b00 cmp r3, #0 - 801073e: d012 beq.n 8010766 - 8010740: 68bb ldr r3, [r7, #8] - 8010742: 681b ldr r3, [r3, #0] - 8010744: 2b00 cmp r3, #0 - 8010746: d00e beq.n 8010766 - ip4_addr_isbroadcast(ipaddr, netif) || - 8010748: 68bb ldr r3, [r7, #8] - 801074a: 681b ldr r3, [r3, #0] - 801074c: 68f9 ldr r1, [r7, #12] - 801074e: 4618 mov r0, r3 - 8010750: f001 f920 bl 8011994 - 8010754: 4603 mov r3, r0 - if (ip4_addr_isany(ipaddr) || - 8010756: 2b00 cmp r3, #0 - 8010758: d105 bne.n 8010766 - ip4_addr_ismulticast(ipaddr)) { - 801075a: 68bb ldr r3, [r7, #8] - 801075c: 681b ldr r3, [r3, #0] - 801075e: f003 03f0 and.w r3, r3, #240 @ 0xf0 - ip4_addr_isbroadcast(ipaddr, netif) || - 8010762: 2be0 cmp r3, #224 @ 0xe0 - 8010764: d102 bne.n 801076c - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_update_arp_entry: will not add non-unicast IP address to ARP cache\n")); - return ERR_ARG; - 8010766: f06f 030f mvn.w r3, #15 - 801076a: e06c b.n 8010846 - } - /* find or create ARP entry */ - i = etharp_find_entry(ipaddr, flags, netif); - 801076c: 78fb ldrb r3, [r7, #3] - 801076e: 68fa ldr r2, [r7, #12] - 8010770: 4619 mov r1, r3 - 8010772: 68b8 ldr r0, [r7, #8] - 8010774: f7ff fe56 bl 8010424 - 8010778: 4603 mov r3, r0 - 801077a: 82fb strh r3, [r7, #22] - /* bail out if no entry could be found */ - if (i < 0) { - 801077c: f9b7 3016 ldrsh.w r3, [r7, #22] - 8010780: 2b00 cmp r3, #0 - 8010782: da02 bge.n 801078a - return (err_t)i; - 8010784: 8afb ldrh r3, [r7, #22] - 8010786: b25b sxtb r3, r3 - 8010788: e05d b.n 8010846 - return ERR_VAL; - } else -#endif /* ETHARP_SUPPORT_STATIC_ENTRIES */ - { - /* mark it stable */ - arp_table[i].state = ETHARP_STATE_STABLE; - 801078a: f9b7 2016 ldrsh.w r2, [r7, #22] - 801078e: 4933 ldr r1, [pc, #204] @ (801085c ) - 8010790: 4613 mov r3, r2 - 8010792: 005b lsls r3, r3, #1 - 8010794: 4413 add r3, r2 - 8010796: 00db lsls r3, r3, #3 - 8010798: 440b add r3, r1 - 801079a: 3314 adds r3, #20 - 801079c: 2202 movs r2, #2 - 801079e: 701a strb r2, [r3, #0] - } - - /* record network interface */ - arp_table[i].netif = netif; - 80107a0: f9b7 2016 ldrsh.w r2, [r7, #22] - 80107a4: 492d ldr r1, [pc, #180] @ (801085c ) - 80107a6: 4613 mov r3, r2 - 80107a8: 005b lsls r3, r3, #1 - 80107aa: 4413 add r3, r2 - 80107ac: 00db lsls r3, r3, #3 - 80107ae: 440b add r3, r1 - 80107b0: 3308 adds r3, #8 - 80107b2: 68fa ldr r2, [r7, #12] - 80107b4: 601a str r2, [r3, #0] - /* insert in SNMP ARP index tree */ - mib2_add_arp_entry(netif, &arp_table[i].ipaddr); - - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_update_arp_entry: updating stable entry %"S16_F"\n", i)); - /* update address */ - SMEMCPY(&arp_table[i].ethaddr, ethaddr, ETH_HWADDR_LEN); - 80107b6: f9b7 2016 ldrsh.w r2, [r7, #22] - 80107ba: 4613 mov r3, r2 - 80107bc: 005b lsls r3, r3, #1 - 80107be: 4413 add r3, r2 - 80107c0: 00db lsls r3, r3, #3 - 80107c2: 3308 adds r3, #8 - 80107c4: 4a25 ldr r2, [pc, #148] @ (801085c ) - 80107c6: 4413 add r3, r2 - 80107c8: 3304 adds r3, #4 - 80107ca: 2206 movs r2, #6 - 80107cc: 6879 ldr r1, [r7, #4] - 80107ce: 4618 mov r0, r3 - 80107d0: f002 fb4e bl 8012e70 - /* reset time stamp */ - arp_table[i].ctime = 0; - 80107d4: f9b7 2016 ldrsh.w r2, [r7, #22] - 80107d8: 4920 ldr r1, [pc, #128] @ (801085c ) - 80107da: 4613 mov r3, r2 - 80107dc: 005b lsls r3, r3, #1 - 80107de: 4413 add r3, r2 - 80107e0: 00db lsls r3, r3, #3 - 80107e2: 440b add r3, r1 - 80107e4: 3312 adds r3, #18 - 80107e6: 2200 movs r2, #0 - 80107e8: 801a strh r2, [r3, #0] - /* get the packet pointer */ - p = q->p; - /* now queue entry can be freed */ - memp_free(MEMP_ARP_QUEUE, q); -#else /* ARP_QUEUEING */ - if (arp_table[i].q != NULL) { - 80107ea: f9b7 2016 ldrsh.w r2, [r7, #22] - 80107ee: 491b ldr r1, [pc, #108] @ (801085c ) - 80107f0: 4613 mov r3, r2 - 80107f2: 005b lsls r3, r3, #1 - 80107f4: 4413 add r3, r2 - 80107f6: 00db lsls r3, r3, #3 - 80107f8: 440b add r3, r1 - 80107fa: 681b ldr r3, [r3, #0] - 80107fc: 2b00 cmp r3, #0 - 80107fe: d021 beq.n 8010844 - struct pbuf *p = arp_table[i].q; - 8010800: f9b7 2016 ldrsh.w r2, [r7, #22] - 8010804: 4915 ldr r1, [pc, #84] @ (801085c ) - 8010806: 4613 mov r3, r2 - 8010808: 005b lsls r3, r3, #1 - 801080a: 4413 add r3, r2 - 801080c: 00db lsls r3, r3, #3 - 801080e: 440b add r3, r1 - 8010810: 681b ldr r3, [r3, #0] - 8010812: 613b str r3, [r7, #16] - arp_table[i].q = NULL; - 8010814: f9b7 2016 ldrsh.w r2, [r7, #22] - 8010818: 4910 ldr r1, [pc, #64] @ (801085c ) - 801081a: 4613 mov r3, r2 - 801081c: 005b lsls r3, r3, #1 - 801081e: 4413 add r3, r2 - 8010820: 00db lsls r3, r3, #3 - 8010822: 440b add r3, r1 - 8010824: 2200 movs r2, #0 - 8010826: 601a str r2, [r3, #0] -#endif /* ARP_QUEUEING */ - /* send the queued IP packet */ - ethernet_output(netif, p, (struct eth_addr *)(netif->hwaddr), ethaddr, ETHTYPE_IP); - 8010828: 68fb ldr r3, [r7, #12] - 801082a: f103 022a add.w r2, r3, #42 @ 0x2a - 801082e: f44f 6300 mov.w r3, #2048 @ 0x800 - 8010832: 9300 str r3, [sp, #0] - 8010834: 687b ldr r3, [r7, #4] - 8010836: 6939 ldr r1, [r7, #16] - 8010838: 68f8 ldr r0, [r7, #12] - 801083a: f002 f8f7 bl 8012a2c - /* free the queued IP packet */ - pbuf_free(p); - 801083e: 6938 ldr r0, [r7, #16] - 8010840: f7f7 fc32 bl 80080a8 - } - return ERR_OK; - 8010844: 2300 movs r3, #0 -} - 8010846: 4618 mov r0, r3 - 8010848: 3718 adds r7, #24 - 801084a: 46bd mov sp, r7 - 801084c: bd80 pop {r7, pc} - 801084e: bf00 nop - 8010850: 08019db4 .word 0x08019db4 - 8010854: 08019eac .word 0x08019eac - 8010858: 08019e2c .word 0x08019e2c - 801085c: 20019180 .word 0x20019180 - -08010860 : - * - * @param netif points to a network interface - */ -void -etharp_cleanup_netif(struct netif *netif) -{ - 8010860: b580 push {r7, lr} - 8010862: b084 sub sp, #16 - 8010864: af00 add r7, sp, #0 - 8010866: 6078 str r0, [r7, #4] - int i; - - for (i = 0; i < ARP_TABLE_SIZE; ++i) { - 8010868: 2300 movs r3, #0 - 801086a: 60fb str r3, [r7, #12] - 801086c: e01e b.n 80108ac - u8_t state = arp_table[i].state; - 801086e: 4913 ldr r1, [pc, #76] @ (80108bc ) - 8010870: 68fa ldr r2, [r7, #12] - 8010872: 4613 mov r3, r2 - 8010874: 005b lsls r3, r3, #1 - 8010876: 4413 add r3, r2 - 8010878: 00db lsls r3, r3, #3 - 801087a: 440b add r3, r1 - 801087c: 3314 adds r3, #20 - 801087e: 781b ldrb r3, [r3, #0] - 8010880: 72fb strb r3, [r7, #11] - if ((state != ETHARP_STATE_EMPTY) && (arp_table[i].netif == netif)) { - 8010882: 7afb ldrb r3, [r7, #11] - 8010884: 2b00 cmp r3, #0 - 8010886: d00e beq.n 80108a6 - 8010888: 490c ldr r1, [pc, #48] @ (80108bc ) - 801088a: 68fa ldr r2, [r7, #12] - 801088c: 4613 mov r3, r2 - 801088e: 005b lsls r3, r3, #1 - 8010890: 4413 add r3, r2 - 8010892: 00db lsls r3, r3, #3 - 8010894: 440b add r3, r1 - 8010896: 3308 adds r3, #8 - 8010898: 681b ldr r3, [r3, #0] - 801089a: 687a ldr r2, [r7, #4] - 801089c: 429a cmp r2, r3 - 801089e: d102 bne.n 80108a6 - etharp_free_entry(i); - 80108a0: 68f8 ldr r0, [r7, #12] - 80108a2: f7ff fce5 bl 8010270 - for (i = 0; i < ARP_TABLE_SIZE; ++i) { - 80108a6: 68fb ldr r3, [r7, #12] - 80108a8: 3301 adds r3, #1 - 80108aa: 60fb str r3, [r7, #12] - 80108ac: 68fb ldr r3, [r7, #12] - 80108ae: 2b09 cmp r3, #9 - 80108b0: dddd ble.n 801086e - } - } -} - 80108b2: bf00 nop - 80108b4: bf00 nop - 80108b6: 3710 adds r7, #16 - 80108b8: 46bd mov sp, r7 - 80108ba: bd80 pop {r7, pc} - 80108bc: 20019180 .word 0x20019180 - -080108c0 : - * - * @see pbuf_free() - */ -void -etharp_input(struct pbuf *p, struct netif *netif) -{ - 80108c0: b5b0 push {r4, r5, r7, lr} - 80108c2: b08a sub sp, #40 @ 0x28 - 80108c4: af04 add r7, sp, #16 - 80108c6: 6078 str r0, [r7, #4] - 80108c8: 6039 str r1, [r7, #0] - ip4_addr_t sipaddr, dipaddr; - u8_t for_us; - - LWIP_ASSERT_CORE_LOCKED(); - - LWIP_ERROR("netif != NULL", (netif != NULL), return;); - 80108ca: 683b ldr r3, [r7, #0] - 80108cc: 2b00 cmp r3, #0 - 80108ce: d107 bne.n 80108e0 - 80108d0: 4b3f ldr r3, [pc, #252] @ (80109d0 ) - 80108d2: f240 228a movw r2, #650 @ 0x28a - 80108d6: 493f ldr r1, [pc, #252] @ (80109d4 ) - 80108d8: 483f ldr r0, [pc, #252] @ (80109d8 ) - 80108da: f002 f9cd bl 8012c78 - 80108de: e074 b.n 80109ca - - hdr = (struct etharp_hdr *)p->payload; - 80108e0: 687b ldr r3, [r7, #4] - 80108e2: 685b ldr r3, [r3, #4] - 80108e4: 613b str r3, [r7, #16] - - /* RFC 826 "Packet Reception": */ - if ((hdr->hwtype != PP_HTONS(LWIP_IANA_HWTYPE_ETHERNET)) || - 80108e6: 693b ldr r3, [r7, #16] - 80108e8: 881b ldrh r3, [r3, #0] - 80108ea: b29b uxth r3, r3 - 80108ec: f5b3 7f80 cmp.w r3, #256 @ 0x100 - 80108f0: d10c bne.n 801090c - (hdr->hwlen != ETH_HWADDR_LEN) || - 80108f2: 693b ldr r3, [r7, #16] - 80108f4: 791b ldrb r3, [r3, #4] - if ((hdr->hwtype != PP_HTONS(LWIP_IANA_HWTYPE_ETHERNET)) || - 80108f6: 2b06 cmp r3, #6 - 80108f8: d108 bne.n 801090c - (hdr->protolen != sizeof(ip4_addr_t)) || - 80108fa: 693b ldr r3, [r7, #16] - 80108fc: 795b ldrb r3, [r3, #5] - (hdr->hwlen != ETH_HWADDR_LEN) || - 80108fe: 2b04 cmp r3, #4 - 8010900: d104 bne.n 801090c - (hdr->proto != PP_HTONS(ETHTYPE_IP))) { - 8010902: 693b ldr r3, [r7, #16] - 8010904: 885b ldrh r3, [r3, #2] - 8010906: b29b uxth r3, r3 - (hdr->protolen != sizeof(ip4_addr_t)) || - 8010908: 2b08 cmp r3, #8 - 801090a: d003 beq.n 8010914 - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, - ("etharp_input: packet dropped, wrong hw type, hwlen, proto, protolen or ethernet type (%"U16_F"/%"U16_F"/%"U16_F"/%"U16_F")\n", - hdr->hwtype, (u16_t)hdr->hwlen, hdr->proto, (u16_t)hdr->protolen)); - ETHARP_STATS_INC(etharp.proterr); - ETHARP_STATS_INC(etharp.drop); - pbuf_free(p); - 801090c: 6878 ldr r0, [r7, #4] - 801090e: f7f7 fbcb bl 80080a8 - return; - 8010912: e05a b.n 80109ca - autoip_arp_reply(netif, hdr); -#endif /* LWIP_AUTOIP */ - - /* Copy struct ip4_addr_wordaligned to aligned ip4_addr, to support compilers without - * structure packing (not using structure copy which breaks strict-aliasing rules). */ - IPADDR_WORDALIGNED_COPY_TO_IP4_ADDR_T(&sipaddr, &hdr->sipaddr); - 8010914: 693b ldr r3, [r7, #16] - 8010916: 330e adds r3, #14 - 8010918: 681b ldr r3, [r3, #0] - 801091a: 60fb str r3, [r7, #12] - IPADDR_WORDALIGNED_COPY_TO_IP4_ADDR_T(&dipaddr, &hdr->dipaddr); - 801091c: 693b ldr r3, [r7, #16] - 801091e: 3318 adds r3, #24 - 8010920: 681b ldr r3, [r3, #0] - 8010922: 60bb str r3, [r7, #8] - - /* this interface is not configured? */ - if (ip4_addr_isany_val(*netif_ip4_addr(netif))) { - 8010924: 683b ldr r3, [r7, #0] - 8010926: 3304 adds r3, #4 - 8010928: 681b ldr r3, [r3, #0] - 801092a: 2b00 cmp r3, #0 - 801092c: d102 bne.n 8010934 - for_us = 0; - 801092e: 2300 movs r3, #0 - 8010930: 75fb strb r3, [r7, #23] - 8010932: e009 b.n 8010948 - } else { - /* ARP packet directed to us? */ - for_us = (u8_t)ip4_addr_cmp(&dipaddr, netif_ip4_addr(netif)); - 8010934: 68ba ldr r2, [r7, #8] - 8010936: 683b ldr r3, [r7, #0] - 8010938: 3304 adds r3, #4 - 801093a: 681b ldr r3, [r3, #0] - 801093c: 429a cmp r2, r3 - 801093e: bf0c ite eq - 8010940: 2301 moveq r3, #1 - 8010942: 2300 movne r3, #0 - 8010944: b2db uxtb r3, r3 - 8010946: 75fb strb r3, [r7, #23] - /* ARP message directed to us? - -> add IP address in ARP cache; assume requester wants to talk to us, - can result in directly sending the queued packets for this host. - ARP message not directed to us? - -> update the source IP address in the cache, if present */ - etharp_update_arp_entry(netif, &sipaddr, &(hdr->shwaddr), - 8010948: 693b ldr r3, [r7, #16] - 801094a: f103 0208 add.w r2, r3, #8 - 801094e: 7dfb ldrb r3, [r7, #23] - 8010950: 2b00 cmp r3, #0 - 8010952: d001 beq.n 8010958 - 8010954: 2301 movs r3, #1 - 8010956: e000 b.n 801095a - 8010958: 2302 movs r3, #2 - 801095a: f107 010c add.w r1, r7, #12 - 801095e: 6838 ldr r0, [r7, #0] - 8010960: f7ff fed8 bl 8010714 - for_us ? ETHARP_FLAG_TRY_HARD : ETHARP_FLAG_FIND_ONLY); - - /* now act on the message itself */ - switch (hdr->opcode) { - 8010964: 693b ldr r3, [r7, #16] - 8010966: 88db ldrh r3, [r3, #6] - 8010968: b29b uxth r3, r3 - 801096a: f5b3 7f80 cmp.w r3, #256 @ 0x100 - 801096e: d003 beq.n 8010978 - 8010970: f5b3 7f00 cmp.w r3, #512 @ 0x200 - 8010974: d01e beq.n 80109b4 -#endif /* (LWIP_DHCP && DHCP_DOES_ARP_CHECK) */ - break; - default: - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_input: ARP unknown opcode type %"S16_F"\n", lwip_htons(hdr->opcode))); - ETHARP_STATS_INC(etharp.err); - break; - 8010976: e025 b.n 80109c4 - if (for_us) { - 8010978: 7dfb ldrb r3, [r7, #23] - 801097a: 2b00 cmp r3, #0 - 801097c: d021 beq.n 80109c2 - (struct eth_addr *)netif->hwaddr, &hdr->shwaddr, - 801097e: 683b ldr r3, [r7, #0] - 8010980: f103 002a add.w r0, r3, #42 @ 0x2a - 8010984: 693b ldr r3, [r7, #16] - 8010986: f103 0408 add.w r4, r3, #8 - (struct eth_addr *)netif->hwaddr, netif_ip4_addr(netif), - 801098a: 683b ldr r3, [r7, #0] - 801098c: f103 052a add.w r5, r3, #42 @ 0x2a - 8010990: 683b ldr r3, [r7, #0] - 8010992: 3304 adds r3, #4 - &hdr->shwaddr, &sipaddr, - 8010994: 693a ldr r2, [r7, #16] - 8010996: 3208 adds r2, #8 - etharp_raw(netif, - 8010998: 2102 movs r1, #2 - 801099a: 9103 str r1, [sp, #12] - 801099c: f107 010c add.w r1, r7, #12 - 80109a0: 9102 str r1, [sp, #8] - 80109a2: 9201 str r2, [sp, #4] - 80109a4: 9300 str r3, [sp, #0] - 80109a6: 462b mov r3, r5 - 80109a8: 4622 mov r2, r4 - 80109aa: 4601 mov r1, r0 - 80109ac: 6838 ldr r0, [r7, #0] - 80109ae: f000 faef bl 8010f90 - break; - 80109b2: e006 b.n 80109c2 - dhcp_arp_reply(netif, &sipaddr); - 80109b4: f107 030c add.w r3, r7, #12 - 80109b8: 4619 mov r1, r3 - 80109ba: 6838 ldr r0, [r7, #0] - 80109bc: f7fe fa02 bl 800edc4 - break; - 80109c0: e000 b.n 80109c4 - break; - 80109c2: bf00 nop - } - /* free ARP packet */ - pbuf_free(p); - 80109c4: 6878 ldr r0, [r7, #4] - 80109c6: f7f7 fb6f bl 80080a8 -} - 80109ca: 3718 adds r7, #24 - 80109cc: 46bd mov sp, r7 - 80109ce: bdb0 pop {r4, r5, r7, pc} - 80109d0: 08019db4 .word 0x08019db4 - 80109d4: 08019f04 .word 0x08019f04 - 80109d8: 08019e2c .word 0x08019e2c - -080109dc : -/** Just a small helper function that sends a pbuf to an ethernet address - * in the arp_table specified by the index 'arp_idx'. - */ -static err_t -etharp_output_to_arp_index(struct netif *netif, struct pbuf *q, netif_addr_idx_t arp_idx) -{ - 80109dc: b580 push {r7, lr} - 80109de: b086 sub sp, #24 - 80109e0: af02 add r7, sp, #8 - 80109e2: 60f8 str r0, [r7, #12] - 80109e4: 60b9 str r1, [r7, #8] - 80109e6: 4613 mov r3, r2 - 80109e8: 71fb strb r3, [r7, #7] - LWIP_ASSERT("arp_table[arp_idx].state >= ETHARP_STATE_STABLE", - 80109ea: 79fa ldrb r2, [r7, #7] - 80109ec: 4944 ldr r1, [pc, #272] @ (8010b00 ) - 80109ee: 4613 mov r3, r2 - 80109f0: 005b lsls r3, r3, #1 - 80109f2: 4413 add r3, r2 - 80109f4: 00db lsls r3, r3, #3 - 80109f6: 440b add r3, r1 - 80109f8: 3314 adds r3, #20 - 80109fa: 781b ldrb r3, [r3, #0] - 80109fc: 2b01 cmp r3, #1 - 80109fe: d806 bhi.n 8010a0e - 8010a00: 4b40 ldr r3, [pc, #256] @ (8010b04 ) - 8010a02: f240 22ee movw r2, #750 @ 0x2ee - 8010a06: 4940 ldr r1, [pc, #256] @ (8010b08 ) - 8010a08: 4840 ldr r0, [pc, #256] @ (8010b0c ) - 8010a0a: f002 f935 bl 8012c78 - arp_table[arp_idx].state >= ETHARP_STATE_STABLE); - /* if arp table entry is about to expire: re-request it, - but only if its state is ETHARP_STATE_STABLE to prevent flooding the - network with ARP requests if this address is used frequently. */ - if (arp_table[arp_idx].state == ETHARP_STATE_STABLE) { - 8010a0e: 79fa ldrb r2, [r7, #7] - 8010a10: 493b ldr r1, [pc, #236] @ (8010b00 ) - 8010a12: 4613 mov r3, r2 - 8010a14: 005b lsls r3, r3, #1 - 8010a16: 4413 add r3, r2 - 8010a18: 00db lsls r3, r3, #3 - 8010a1a: 440b add r3, r1 - 8010a1c: 3314 adds r3, #20 - 8010a1e: 781b ldrb r3, [r3, #0] - 8010a20: 2b02 cmp r3, #2 - 8010a22: d153 bne.n 8010acc - if (arp_table[arp_idx].ctime >= ARP_AGE_REREQUEST_USED_BROADCAST) { - 8010a24: 79fa ldrb r2, [r7, #7] - 8010a26: 4936 ldr r1, [pc, #216] @ (8010b00 ) - 8010a28: 4613 mov r3, r2 - 8010a2a: 005b lsls r3, r3, #1 - 8010a2c: 4413 add r3, r2 - 8010a2e: 00db lsls r3, r3, #3 - 8010a30: 440b add r3, r1 - 8010a32: 3312 adds r3, #18 - 8010a34: 881b ldrh r3, [r3, #0] - 8010a36: f5b3 7f8e cmp.w r3, #284 @ 0x11c - 8010a3a: d919 bls.n 8010a70 - /* issue a standard request using broadcast */ - if (etharp_request(netif, &arp_table[arp_idx].ipaddr) == ERR_OK) { - 8010a3c: 79fa ldrb r2, [r7, #7] - 8010a3e: 4613 mov r3, r2 - 8010a40: 005b lsls r3, r3, #1 - 8010a42: 4413 add r3, r2 - 8010a44: 00db lsls r3, r3, #3 - 8010a46: 4a2e ldr r2, [pc, #184] @ (8010b00 ) - 8010a48: 4413 add r3, r2 - 8010a4a: 3304 adds r3, #4 - 8010a4c: 4619 mov r1, r3 - 8010a4e: 68f8 ldr r0, [r7, #12] - 8010a50: f000 fb4c bl 80110ec - 8010a54: 4603 mov r3, r0 - 8010a56: 2b00 cmp r3, #0 - 8010a58: d138 bne.n 8010acc - arp_table[arp_idx].state = ETHARP_STATE_STABLE_REREQUESTING_1; - 8010a5a: 79fa ldrb r2, [r7, #7] - 8010a5c: 4928 ldr r1, [pc, #160] @ (8010b00 ) - 8010a5e: 4613 mov r3, r2 - 8010a60: 005b lsls r3, r3, #1 - 8010a62: 4413 add r3, r2 - 8010a64: 00db lsls r3, r3, #3 - 8010a66: 440b add r3, r1 - 8010a68: 3314 adds r3, #20 - 8010a6a: 2203 movs r2, #3 - 8010a6c: 701a strb r2, [r3, #0] - 8010a6e: e02d b.n 8010acc - } - } else if (arp_table[arp_idx].ctime >= ARP_AGE_REREQUEST_USED_UNICAST) { - 8010a70: 79fa ldrb r2, [r7, #7] - 8010a72: 4923 ldr r1, [pc, #140] @ (8010b00 ) - 8010a74: 4613 mov r3, r2 - 8010a76: 005b lsls r3, r3, #1 - 8010a78: 4413 add r3, r2 - 8010a7a: 00db lsls r3, r3, #3 - 8010a7c: 440b add r3, r1 - 8010a7e: 3312 adds r3, #18 - 8010a80: 881b ldrh r3, [r3, #0] - 8010a82: f5b3 7f87 cmp.w r3, #270 @ 0x10e - 8010a86: d321 bcc.n 8010acc - /* issue a unicast request (for 15 seconds) to prevent unnecessary broadcast */ - if (etharp_request_dst(netif, &arp_table[arp_idx].ipaddr, &arp_table[arp_idx].ethaddr) == ERR_OK) { - 8010a88: 79fa ldrb r2, [r7, #7] - 8010a8a: 4613 mov r3, r2 - 8010a8c: 005b lsls r3, r3, #1 - 8010a8e: 4413 add r3, r2 - 8010a90: 00db lsls r3, r3, #3 - 8010a92: 4a1b ldr r2, [pc, #108] @ (8010b00 ) - 8010a94: 4413 add r3, r2 - 8010a96: 1d19 adds r1, r3, #4 - 8010a98: 79fa ldrb r2, [r7, #7] - 8010a9a: 4613 mov r3, r2 - 8010a9c: 005b lsls r3, r3, #1 - 8010a9e: 4413 add r3, r2 - 8010aa0: 00db lsls r3, r3, #3 - 8010aa2: 3308 adds r3, #8 - 8010aa4: 4a16 ldr r2, [pc, #88] @ (8010b00 ) - 8010aa6: 4413 add r3, r2 - 8010aa8: 3304 adds r3, #4 - 8010aaa: 461a mov r2, r3 - 8010aac: 68f8 ldr r0, [r7, #12] - 8010aae: f000 fafb bl 80110a8 - 8010ab2: 4603 mov r3, r0 - 8010ab4: 2b00 cmp r3, #0 - 8010ab6: d109 bne.n 8010acc - arp_table[arp_idx].state = ETHARP_STATE_STABLE_REREQUESTING_1; - 8010ab8: 79fa ldrb r2, [r7, #7] - 8010aba: 4911 ldr r1, [pc, #68] @ (8010b00 ) - 8010abc: 4613 mov r3, r2 - 8010abe: 005b lsls r3, r3, #1 - 8010ac0: 4413 add r3, r2 - 8010ac2: 00db lsls r3, r3, #3 - 8010ac4: 440b add r3, r1 - 8010ac6: 3314 adds r3, #20 - 8010ac8: 2203 movs r2, #3 - 8010aca: 701a strb r2, [r3, #0] - } - } - } - - return ethernet_output(netif, q, (struct eth_addr *)(netif->hwaddr), &arp_table[arp_idx].ethaddr, ETHTYPE_IP); - 8010acc: 68fb ldr r3, [r7, #12] - 8010ace: f103 012a add.w r1, r3, #42 @ 0x2a - 8010ad2: 79fa ldrb r2, [r7, #7] - 8010ad4: 4613 mov r3, r2 - 8010ad6: 005b lsls r3, r3, #1 - 8010ad8: 4413 add r3, r2 - 8010ada: 00db lsls r3, r3, #3 - 8010adc: 3308 adds r3, #8 - 8010ade: 4a08 ldr r2, [pc, #32] @ (8010b00 ) - 8010ae0: 4413 add r3, r2 - 8010ae2: 3304 adds r3, #4 - 8010ae4: f44f 6200 mov.w r2, #2048 @ 0x800 - 8010ae8: 9200 str r2, [sp, #0] - 8010aea: 460a mov r2, r1 - 8010aec: 68b9 ldr r1, [r7, #8] - 8010aee: 68f8 ldr r0, [r7, #12] - 8010af0: f001 ff9c bl 8012a2c - 8010af4: 4603 mov r3, r0 -} - 8010af6: 4618 mov r0, r3 - 8010af8: 3710 adds r7, #16 - 8010afa: 46bd mov sp, r7 - 8010afc: bd80 pop {r7, pc} - 8010afe: bf00 nop - 8010b00: 20019180 .word 0x20019180 - 8010b04: 08019db4 .word 0x08019db4 - 8010b08: 08019f24 .word 0x08019f24 - 8010b0c: 08019e2c .word 0x08019e2c - -08010b10 : - * - ERR_RTE No route to destination (no gateway to external networks), - * or the return type of either etharp_query() or ethernet_output(). - */ -err_t -etharp_output(struct netif *netif, struct pbuf *q, const ip4_addr_t *ipaddr) -{ - 8010b10: b580 push {r7, lr} - 8010b12: b08a sub sp, #40 @ 0x28 - 8010b14: af02 add r7, sp, #8 - 8010b16: 60f8 str r0, [r7, #12] - 8010b18: 60b9 str r1, [r7, #8] - 8010b1a: 607a str r2, [r7, #4] - const struct eth_addr *dest; - struct eth_addr mcastaddr; - const ip4_addr_t *dst_addr = ipaddr; - 8010b1c: 687b ldr r3, [r7, #4] - 8010b1e: 61bb str r3, [r7, #24] - - LWIP_ASSERT_CORE_LOCKED(); - LWIP_ASSERT("netif != NULL", netif != NULL); - 8010b20: 68fb ldr r3, [r7, #12] - 8010b22: 2b00 cmp r3, #0 - 8010b24: d106 bne.n 8010b34 - 8010b26: 4b73 ldr r3, [pc, #460] @ (8010cf4 ) - 8010b28: f240 321e movw r2, #798 @ 0x31e - 8010b2c: 4972 ldr r1, [pc, #456] @ (8010cf8 ) - 8010b2e: 4873 ldr r0, [pc, #460] @ (8010cfc ) - 8010b30: f002 f8a2 bl 8012c78 - LWIP_ASSERT("q != NULL", q != NULL); - 8010b34: 68bb ldr r3, [r7, #8] - 8010b36: 2b00 cmp r3, #0 - 8010b38: d106 bne.n 8010b48 - 8010b3a: 4b6e ldr r3, [pc, #440] @ (8010cf4 ) - 8010b3c: f240 321f movw r2, #799 @ 0x31f - 8010b40: 496f ldr r1, [pc, #444] @ (8010d00 ) - 8010b42: 486e ldr r0, [pc, #440] @ (8010cfc ) - 8010b44: f002 f898 bl 8012c78 - LWIP_ASSERT("ipaddr != NULL", ipaddr != NULL); - 8010b48: 687b ldr r3, [r7, #4] - 8010b4a: 2b00 cmp r3, #0 - 8010b4c: d106 bne.n 8010b5c - 8010b4e: 4b69 ldr r3, [pc, #420] @ (8010cf4 ) - 8010b50: f44f 7248 mov.w r2, #800 @ 0x320 - 8010b54: 496b ldr r1, [pc, #428] @ (8010d04 ) - 8010b56: 4869 ldr r0, [pc, #420] @ (8010cfc ) - 8010b58: f002 f88e bl 8012c78 - - /* Determine on destination hardware address. Broadcasts and multicasts - * are special, other IP addresses are looked up in the ARP table. */ - - /* broadcast destination IP address? */ - if (ip4_addr_isbroadcast(ipaddr, netif)) { - 8010b5c: 687b ldr r3, [r7, #4] - 8010b5e: 681b ldr r3, [r3, #0] - 8010b60: 68f9 ldr r1, [r7, #12] - 8010b62: 4618 mov r0, r3 - 8010b64: f000 ff16 bl 8011994 - 8010b68: 4603 mov r3, r0 - 8010b6a: 2b00 cmp r3, #0 - 8010b6c: d002 beq.n 8010b74 - /* broadcast on Ethernet also */ - dest = (const struct eth_addr *)ðbroadcast; - 8010b6e: 4b66 ldr r3, [pc, #408] @ (8010d08 ) - 8010b70: 61fb str r3, [r7, #28] - 8010b72: e0af b.n 8010cd4 - /* multicast destination IP address? */ - } else if (ip4_addr_ismulticast(ipaddr)) { - 8010b74: 687b ldr r3, [r7, #4] - 8010b76: 681b ldr r3, [r3, #0] - 8010b78: f003 03f0 and.w r3, r3, #240 @ 0xf0 - 8010b7c: 2be0 cmp r3, #224 @ 0xe0 - 8010b7e: d118 bne.n 8010bb2 - /* Hash IP multicast address to MAC address.*/ - mcastaddr.addr[0] = LL_IP4_MULTICAST_ADDR_0; - 8010b80: 2301 movs r3, #1 - 8010b82: 743b strb r3, [r7, #16] - mcastaddr.addr[1] = LL_IP4_MULTICAST_ADDR_1; - 8010b84: 2300 movs r3, #0 - 8010b86: 747b strb r3, [r7, #17] - mcastaddr.addr[2] = LL_IP4_MULTICAST_ADDR_2; - 8010b88: 235e movs r3, #94 @ 0x5e - 8010b8a: 74bb strb r3, [r7, #18] - mcastaddr.addr[3] = ip4_addr2(ipaddr) & 0x7f; - 8010b8c: 687b ldr r3, [r7, #4] - 8010b8e: 3301 adds r3, #1 - 8010b90: 781b ldrb r3, [r3, #0] - 8010b92: f003 037f and.w r3, r3, #127 @ 0x7f - 8010b96: b2db uxtb r3, r3 - 8010b98: 74fb strb r3, [r7, #19] - mcastaddr.addr[4] = ip4_addr3(ipaddr); - 8010b9a: 687b ldr r3, [r7, #4] - 8010b9c: 3302 adds r3, #2 - 8010b9e: 781b ldrb r3, [r3, #0] - 8010ba0: 753b strb r3, [r7, #20] - mcastaddr.addr[5] = ip4_addr4(ipaddr); - 8010ba2: 687b ldr r3, [r7, #4] - 8010ba4: 3303 adds r3, #3 - 8010ba6: 781b ldrb r3, [r3, #0] - 8010ba8: 757b strb r3, [r7, #21] - /* destination Ethernet address is multicast */ - dest = &mcastaddr; - 8010baa: f107 0310 add.w r3, r7, #16 - 8010bae: 61fb str r3, [r7, #28] - 8010bb0: e090 b.n 8010cd4 - /* unicast destination IP address? */ - } else { - netif_addr_idx_t i; - /* outside local network? if so, this can neither be a global broadcast nor - a subnet broadcast. */ - if (!ip4_addr_netcmp(ipaddr, netif_ip4_addr(netif), netif_ip4_netmask(netif)) && - 8010bb2: 687b ldr r3, [r7, #4] - 8010bb4: 681a ldr r2, [r3, #0] - 8010bb6: 68fb ldr r3, [r7, #12] - 8010bb8: 3304 adds r3, #4 - 8010bba: 681b ldr r3, [r3, #0] - 8010bbc: 405a eors r2, r3 - 8010bbe: 68fb ldr r3, [r7, #12] - 8010bc0: 3308 adds r3, #8 - 8010bc2: 681b ldr r3, [r3, #0] - 8010bc4: 4013 ands r3, r2 - 8010bc6: 2b00 cmp r3, #0 - 8010bc8: d012 beq.n 8010bf0 - !ip4_addr_islinklocal(ipaddr)) { - 8010bca: 687b ldr r3, [r7, #4] - 8010bcc: 681b ldr r3, [r3, #0] - 8010bce: b29b uxth r3, r3 - if (!ip4_addr_netcmp(ipaddr, netif_ip4_addr(netif), netif_ip4_netmask(netif)) && - 8010bd0: f64f 62a9 movw r2, #65193 @ 0xfea9 - 8010bd4: 4293 cmp r3, r2 - 8010bd6: d00b beq.n 8010bf0 - dst_addr = LWIP_HOOK_ETHARP_GET_GW(netif, ipaddr); - if (dst_addr == NULL) -#endif /* LWIP_HOOK_ETHARP_GET_GW */ - { - /* interface has default gateway? */ - if (!ip4_addr_isany_val(*netif_ip4_gw(netif))) { - 8010bd8: 68fb ldr r3, [r7, #12] - 8010bda: 330c adds r3, #12 - 8010bdc: 681b ldr r3, [r3, #0] - 8010bde: 2b00 cmp r3, #0 - 8010be0: d003 beq.n 8010bea - /* send to hardware address of default gateway IP address */ - dst_addr = netif_ip4_gw(netif); - 8010be2: 68fb ldr r3, [r7, #12] - 8010be4: 330c adds r3, #12 - 8010be6: 61bb str r3, [r7, #24] - 8010be8: e002 b.n 8010bf0 - /* no default gateway available */ - } else { - /* no route to destination error (default gateway missing) */ - return ERR_RTE; - 8010bea: f06f 0303 mvn.w r3, #3 - 8010bee: e07d b.n 8010cec - if (netif->hints != NULL) { - /* per-pcb cached entry was given */ - netif_addr_idx_t etharp_cached_entry = netif->hints->addr_hint; - if (etharp_cached_entry < ARP_TABLE_SIZE) { -#endif /* LWIP_NETIF_HWADDRHINT */ - if ((arp_table[etharp_cached_entry].state >= ETHARP_STATE_STABLE) && - 8010bf0: 4b46 ldr r3, [pc, #280] @ (8010d0c ) - 8010bf2: 781b ldrb r3, [r3, #0] - 8010bf4: 4619 mov r1, r3 - 8010bf6: 4a46 ldr r2, [pc, #280] @ (8010d10 ) - 8010bf8: 460b mov r3, r1 - 8010bfa: 005b lsls r3, r3, #1 - 8010bfc: 440b add r3, r1 - 8010bfe: 00db lsls r3, r3, #3 - 8010c00: 4413 add r3, r2 - 8010c02: 3314 adds r3, #20 - 8010c04: 781b ldrb r3, [r3, #0] - 8010c06: 2b01 cmp r3, #1 - 8010c08: d925 bls.n 8010c56 -#if ETHARP_TABLE_MATCH_NETIF - (arp_table[etharp_cached_entry].netif == netif) && - 8010c0a: 4b40 ldr r3, [pc, #256] @ (8010d0c ) - 8010c0c: 781b ldrb r3, [r3, #0] - 8010c0e: 4619 mov r1, r3 - 8010c10: 4a3f ldr r2, [pc, #252] @ (8010d10 ) - 8010c12: 460b mov r3, r1 - 8010c14: 005b lsls r3, r3, #1 - 8010c16: 440b add r3, r1 - 8010c18: 00db lsls r3, r3, #3 - 8010c1a: 4413 add r3, r2 - 8010c1c: 3308 adds r3, #8 - 8010c1e: 681b ldr r3, [r3, #0] - if ((arp_table[etharp_cached_entry].state >= ETHARP_STATE_STABLE) && - 8010c20: 68fa ldr r2, [r7, #12] - 8010c22: 429a cmp r2, r3 - 8010c24: d117 bne.n 8010c56 -#endif - (ip4_addr_cmp(dst_addr, &arp_table[etharp_cached_entry].ipaddr))) { - 8010c26: 69bb ldr r3, [r7, #24] - 8010c28: 681a ldr r2, [r3, #0] - 8010c2a: 4b38 ldr r3, [pc, #224] @ (8010d0c ) - 8010c2c: 781b ldrb r3, [r3, #0] - 8010c2e: 4618 mov r0, r3 - 8010c30: 4937 ldr r1, [pc, #220] @ (8010d10 ) - 8010c32: 4603 mov r3, r0 - 8010c34: 005b lsls r3, r3, #1 - 8010c36: 4403 add r3, r0 - 8010c38: 00db lsls r3, r3, #3 - 8010c3a: 440b add r3, r1 - 8010c3c: 3304 adds r3, #4 - 8010c3e: 681b ldr r3, [r3, #0] - (arp_table[etharp_cached_entry].netif == netif) && - 8010c40: 429a cmp r2, r3 - 8010c42: d108 bne.n 8010c56 - /* the per-pcb-cached entry is stable and the right one! */ - ETHARP_STATS_INC(etharp.cachehit); - return etharp_output_to_arp_index(netif, q, etharp_cached_entry); - 8010c44: 4b31 ldr r3, [pc, #196] @ (8010d0c ) - 8010c46: 781b ldrb r3, [r3, #0] - 8010c48: 461a mov r2, r3 - 8010c4a: 68b9 ldr r1, [r7, #8] - 8010c4c: 68f8 ldr r0, [r7, #12] - 8010c4e: f7ff fec5 bl 80109dc - 8010c52: 4603 mov r3, r0 - 8010c54: e04a b.n 8010cec - } -#endif /* LWIP_NETIF_HWADDRHINT */ - - /* find stable entry: do this here since this is a critical path for - throughput and etharp_find_entry() is kind of slow */ - for (i = 0; i < ARP_TABLE_SIZE; i++) { - 8010c56: 2300 movs r3, #0 - 8010c58: 75fb strb r3, [r7, #23] - 8010c5a: e031 b.n 8010cc0 - if ((arp_table[i].state >= ETHARP_STATE_STABLE) && - 8010c5c: 7dfa ldrb r2, [r7, #23] - 8010c5e: 492c ldr r1, [pc, #176] @ (8010d10 ) - 8010c60: 4613 mov r3, r2 - 8010c62: 005b lsls r3, r3, #1 - 8010c64: 4413 add r3, r2 - 8010c66: 00db lsls r3, r3, #3 - 8010c68: 440b add r3, r1 - 8010c6a: 3314 adds r3, #20 - 8010c6c: 781b ldrb r3, [r3, #0] - 8010c6e: 2b01 cmp r3, #1 - 8010c70: d923 bls.n 8010cba -#if ETHARP_TABLE_MATCH_NETIF - (arp_table[i].netif == netif) && - 8010c72: 7dfa ldrb r2, [r7, #23] - 8010c74: 4926 ldr r1, [pc, #152] @ (8010d10 ) - 8010c76: 4613 mov r3, r2 - 8010c78: 005b lsls r3, r3, #1 - 8010c7a: 4413 add r3, r2 - 8010c7c: 00db lsls r3, r3, #3 - 8010c7e: 440b add r3, r1 - 8010c80: 3308 adds r3, #8 - 8010c82: 681b ldr r3, [r3, #0] - if ((arp_table[i].state >= ETHARP_STATE_STABLE) && - 8010c84: 68fa ldr r2, [r7, #12] - 8010c86: 429a cmp r2, r3 - 8010c88: d117 bne.n 8010cba -#endif - (ip4_addr_cmp(dst_addr, &arp_table[i].ipaddr))) { - 8010c8a: 69bb ldr r3, [r7, #24] - 8010c8c: 6819 ldr r1, [r3, #0] - 8010c8e: 7dfa ldrb r2, [r7, #23] - 8010c90: 481f ldr r0, [pc, #124] @ (8010d10 ) - 8010c92: 4613 mov r3, r2 - 8010c94: 005b lsls r3, r3, #1 - 8010c96: 4413 add r3, r2 - 8010c98: 00db lsls r3, r3, #3 - 8010c9a: 4403 add r3, r0 - 8010c9c: 3304 adds r3, #4 - 8010c9e: 681b ldr r3, [r3, #0] - (arp_table[i].netif == netif) && - 8010ca0: 4299 cmp r1, r3 - 8010ca2: d10a bne.n 8010cba - /* found an existing, stable entry */ - ETHARP_SET_ADDRHINT(netif, i); - 8010ca4: 4a19 ldr r2, [pc, #100] @ (8010d0c ) - 8010ca6: 7dfb ldrb r3, [r7, #23] - 8010ca8: 7013 strb r3, [r2, #0] - return etharp_output_to_arp_index(netif, q, i); - 8010caa: 7dfb ldrb r3, [r7, #23] - 8010cac: 461a mov r2, r3 - 8010cae: 68b9 ldr r1, [r7, #8] - 8010cb0: 68f8 ldr r0, [r7, #12] - 8010cb2: f7ff fe93 bl 80109dc - 8010cb6: 4603 mov r3, r0 - 8010cb8: e018 b.n 8010cec - for (i = 0; i < ARP_TABLE_SIZE; i++) { - 8010cba: 7dfb ldrb r3, [r7, #23] - 8010cbc: 3301 adds r3, #1 - 8010cbe: 75fb strb r3, [r7, #23] - 8010cc0: 7dfb ldrb r3, [r7, #23] - 8010cc2: 2b09 cmp r3, #9 - 8010cc4: d9ca bls.n 8010c5c - } - } - /* no stable entry found, use the (slower) query function: - queue on destination Ethernet address belonging to ipaddr */ - return etharp_query(netif, dst_addr, q); - 8010cc6: 68ba ldr r2, [r7, #8] - 8010cc8: 69b9 ldr r1, [r7, #24] - 8010cca: 68f8 ldr r0, [r7, #12] - 8010ccc: f000 f822 bl 8010d14 - 8010cd0: 4603 mov r3, r0 - 8010cd2: e00b b.n 8010cec - } - - /* continuation for multicast/broadcast destinations */ - /* obtain source Ethernet address of the given interface */ - /* send packet directly on the link */ - return ethernet_output(netif, q, (struct eth_addr *)(netif->hwaddr), dest, ETHTYPE_IP); - 8010cd4: 68fb ldr r3, [r7, #12] - 8010cd6: f103 022a add.w r2, r3, #42 @ 0x2a - 8010cda: f44f 6300 mov.w r3, #2048 @ 0x800 - 8010cde: 9300 str r3, [sp, #0] - 8010ce0: 69fb ldr r3, [r7, #28] - 8010ce2: 68b9 ldr r1, [r7, #8] - 8010ce4: 68f8 ldr r0, [r7, #12] - 8010ce6: f001 fea1 bl 8012a2c - 8010cea: 4603 mov r3, r0 -} - 8010cec: 4618 mov r0, r3 - 8010cee: 3720 adds r7, #32 - 8010cf0: 46bd mov sp, r7 - 8010cf2: bd80 pop {r7, pc} - 8010cf4: 08019db4 .word 0x08019db4 - 8010cf8: 08019f04 .word 0x08019f04 - 8010cfc: 08019e2c .word 0x08019e2c - 8010d00: 08019f54 .word 0x08019f54 - 8010d04: 08019ef4 .word 0x08019ef4 - 8010d08: 0801a5ec .word 0x0801a5ec - 8010d0c: 20019270 .word 0x20019270 - 8010d10: 20019180 .word 0x20019180 - -08010d14 : - * - ERR_ARG Non-unicast address given, those will not appear in ARP cache. - * - */ -err_t -etharp_query(struct netif *netif, const ip4_addr_t *ipaddr, struct pbuf *q) -{ - 8010d14: b580 push {r7, lr} - 8010d16: b08c sub sp, #48 @ 0x30 - 8010d18: af02 add r7, sp, #8 - 8010d1a: 60f8 str r0, [r7, #12] - 8010d1c: 60b9 str r1, [r7, #8] - 8010d1e: 607a str r2, [r7, #4] - struct eth_addr *srcaddr = (struct eth_addr *)netif->hwaddr; - 8010d20: 68fb ldr r3, [r7, #12] - 8010d22: 332a adds r3, #42 @ 0x2a - 8010d24: 617b str r3, [r7, #20] - err_t result = ERR_MEM; - 8010d26: 23ff movs r3, #255 @ 0xff - 8010d28: f887 3027 strb.w r3, [r7, #39] @ 0x27 - int is_new_entry = 0; - 8010d2c: 2300 movs r3, #0 - 8010d2e: 623b str r3, [r7, #32] - s16_t i_err; - netif_addr_idx_t i; - - /* non-unicast address? */ - if (ip4_addr_isbroadcast(ipaddr, netif) || - 8010d30: 68bb ldr r3, [r7, #8] - 8010d32: 681b ldr r3, [r3, #0] - 8010d34: 68f9 ldr r1, [r7, #12] - 8010d36: 4618 mov r0, r3 - 8010d38: f000 fe2c bl 8011994 - 8010d3c: 4603 mov r3, r0 - 8010d3e: 2b00 cmp r3, #0 - 8010d40: d10c bne.n 8010d5c - ip4_addr_ismulticast(ipaddr) || - 8010d42: 68bb ldr r3, [r7, #8] - 8010d44: 681b ldr r3, [r3, #0] - 8010d46: f003 03f0 and.w r3, r3, #240 @ 0xf0 - if (ip4_addr_isbroadcast(ipaddr, netif) || - 8010d4a: 2be0 cmp r3, #224 @ 0xe0 - 8010d4c: d006 beq.n 8010d5c - ip4_addr_ismulticast(ipaddr) || - 8010d4e: 68bb ldr r3, [r7, #8] - 8010d50: 2b00 cmp r3, #0 - 8010d52: d003 beq.n 8010d5c - ip4_addr_isany(ipaddr)) { - 8010d54: 68bb ldr r3, [r7, #8] - 8010d56: 681b ldr r3, [r3, #0] - 8010d58: 2b00 cmp r3, #0 - 8010d5a: d102 bne.n 8010d62 - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: will not add non-unicast IP address to ARP cache\n")); - return ERR_ARG; - 8010d5c: f06f 030f mvn.w r3, #15 - 8010d60: e101 b.n 8010f66 - } - - /* find entry in ARP cache, ask to create entry if queueing packet */ - i_err = etharp_find_entry(ipaddr, ETHARP_FLAG_TRY_HARD, netif); - 8010d62: 68fa ldr r2, [r7, #12] - 8010d64: 2101 movs r1, #1 - 8010d66: 68b8 ldr r0, [r7, #8] - 8010d68: f7ff fb5c bl 8010424 - 8010d6c: 4603 mov r3, r0 - 8010d6e: 827b strh r3, [r7, #18] - - /* could not find or create entry? */ - if (i_err < 0) { - 8010d70: f9b7 3012 ldrsh.w r3, [r7, #18] - 8010d74: 2b00 cmp r3, #0 - 8010d76: da02 bge.n 8010d7e - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: could not create ARP entry\n")); - if (q) { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: packet dropped\n")); - ETHARP_STATS_INC(etharp.memerr); - } - return (err_t)i_err; - 8010d78: 8a7b ldrh r3, [r7, #18] - 8010d7a: b25b sxtb r3, r3 - 8010d7c: e0f3 b.n 8010f66 - } - LWIP_ASSERT("type overflow", (size_t)i_err < NETIF_ADDR_IDX_MAX); - 8010d7e: 8a7b ldrh r3, [r7, #18] - 8010d80: 2b7e cmp r3, #126 @ 0x7e - 8010d82: d906 bls.n 8010d92 - 8010d84: 4b7a ldr r3, [pc, #488] @ (8010f70 ) - 8010d86: f240 32c1 movw r2, #961 @ 0x3c1 - 8010d8a: 497a ldr r1, [pc, #488] @ (8010f74 ) - 8010d8c: 487a ldr r0, [pc, #488] @ (8010f78 ) - 8010d8e: f001 ff73 bl 8012c78 - i = (netif_addr_idx_t)i_err; - 8010d92: 8a7b ldrh r3, [r7, #18] - 8010d94: 747b strb r3, [r7, #17] - - /* mark a fresh entry as pending (we just sent a request) */ - if (arp_table[i].state == ETHARP_STATE_EMPTY) { - 8010d96: 7c7a ldrb r2, [r7, #17] - 8010d98: 4978 ldr r1, [pc, #480] @ (8010f7c ) - 8010d9a: 4613 mov r3, r2 - 8010d9c: 005b lsls r3, r3, #1 - 8010d9e: 4413 add r3, r2 - 8010da0: 00db lsls r3, r3, #3 - 8010da2: 440b add r3, r1 - 8010da4: 3314 adds r3, #20 - 8010da6: 781b ldrb r3, [r3, #0] - 8010da8: 2b00 cmp r3, #0 - 8010daa: d115 bne.n 8010dd8 - is_new_entry = 1; - 8010dac: 2301 movs r3, #1 - 8010dae: 623b str r3, [r7, #32] - arp_table[i].state = ETHARP_STATE_PENDING; - 8010db0: 7c7a ldrb r2, [r7, #17] - 8010db2: 4972 ldr r1, [pc, #456] @ (8010f7c ) - 8010db4: 4613 mov r3, r2 - 8010db6: 005b lsls r3, r3, #1 - 8010db8: 4413 add r3, r2 - 8010dba: 00db lsls r3, r3, #3 - 8010dbc: 440b add r3, r1 - 8010dbe: 3314 adds r3, #20 - 8010dc0: 2201 movs r2, #1 - 8010dc2: 701a strb r2, [r3, #0] - /* record network interface for re-sending arp request in etharp_tmr */ - arp_table[i].netif = netif; - 8010dc4: 7c7a ldrb r2, [r7, #17] - 8010dc6: 496d ldr r1, [pc, #436] @ (8010f7c ) - 8010dc8: 4613 mov r3, r2 - 8010dca: 005b lsls r3, r3, #1 - 8010dcc: 4413 add r3, r2 - 8010dce: 00db lsls r3, r3, #3 - 8010dd0: 440b add r3, r1 - 8010dd2: 3308 adds r3, #8 - 8010dd4: 68fa ldr r2, [r7, #12] - 8010dd6: 601a str r2, [r3, #0] - } - - /* { i is either a STABLE or (new or existing) PENDING entry } */ - LWIP_ASSERT("arp_table[i].state == PENDING or STABLE", - 8010dd8: 7c7a ldrb r2, [r7, #17] - 8010dda: 4968 ldr r1, [pc, #416] @ (8010f7c ) - 8010ddc: 4613 mov r3, r2 - 8010dde: 005b lsls r3, r3, #1 - 8010de0: 4413 add r3, r2 - 8010de2: 00db lsls r3, r3, #3 - 8010de4: 440b add r3, r1 - 8010de6: 3314 adds r3, #20 - 8010de8: 781b ldrb r3, [r3, #0] - 8010dea: 2b01 cmp r3, #1 - 8010dec: d011 beq.n 8010e12 - 8010dee: 7c7a ldrb r2, [r7, #17] - 8010df0: 4962 ldr r1, [pc, #392] @ (8010f7c ) - 8010df2: 4613 mov r3, r2 - 8010df4: 005b lsls r3, r3, #1 - 8010df6: 4413 add r3, r2 - 8010df8: 00db lsls r3, r3, #3 - 8010dfa: 440b add r3, r1 - 8010dfc: 3314 adds r3, #20 - 8010dfe: 781b ldrb r3, [r3, #0] - 8010e00: 2b01 cmp r3, #1 - 8010e02: d806 bhi.n 8010e12 - 8010e04: 4b5a ldr r3, [pc, #360] @ (8010f70 ) - 8010e06: f240 32cd movw r2, #973 @ 0x3cd - 8010e0a: 495d ldr r1, [pc, #372] @ (8010f80 ) - 8010e0c: 485a ldr r0, [pc, #360] @ (8010f78 ) - 8010e0e: f001 ff33 bl 8012c78 - ((arp_table[i].state == ETHARP_STATE_PENDING) || - (arp_table[i].state >= ETHARP_STATE_STABLE))); - - /* do we have a new entry? or an implicit query request? */ - if (is_new_entry || (q == NULL)) { - 8010e12: 6a3b ldr r3, [r7, #32] - 8010e14: 2b00 cmp r3, #0 - 8010e16: d102 bne.n 8010e1e - 8010e18: 687b ldr r3, [r7, #4] - 8010e1a: 2b00 cmp r3, #0 - 8010e1c: d10c bne.n 8010e38 - /* try to resolve it; send out ARP request */ - result = etharp_request(netif, ipaddr); - 8010e1e: 68b9 ldr r1, [r7, #8] - 8010e20: 68f8 ldr r0, [r7, #12] - 8010e22: f000 f963 bl 80110ec - 8010e26: 4603 mov r3, r0 - 8010e28: f887 3027 strb.w r3, [r7, #39] @ 0x27 - /* ARP request couldn't be sent */ - /* We don't re-send arp request in etharp_tmr, but we still queue packets, - since this failure could be temporary, and the next packet calling - etharp_query again could lead to sending the queued packets. */ - } - if (q == NULL) { - 8010e2c: 687b ldr r3, [r7, #4] - 8010e2e: 2b00 cmp r3, #0 - 8010e30: d102 bne.n 8010e38 - return result; - 8010e32: f997 3027 ldrsb.w r3, [r7, #39] @ 0x27 - 8010e36: e096 b.n 8010f66 - } - } - - /* packet given? */ - LWIP_ASSERT("q != NULL", q != NULL); - 8010e38: 687b ldr r3, [r7, #4] - 8010e3a: 2b00 cmp r3, #0 - 8010e3c: d106 bne.n 8010e4c - 8010e3e: 4b4c ldr r3, [pc, #304] @ (8010f70 ) - 8010e40: f240 32e1 movw r2, #993 @ 0x3e1 - 8010e44: 494f ldr r1, [pc, #316] @ (8010f84 ) - 8010e46: 484c ldr r0, [pc, #304] @ (8010f78 ) - 8010e48: f001 ff16 bl 8012c78 - /* stable entry? */ - if (arp_table[i].state >= ETHARP_STATE_STABLE) { - 8010e4c: 7c7a ldrb r2, [r7, #17] - 8010e4e: 494b ldr r1, [pc, #300] @ (8010f7c ) - 8010e50: 4613 mov r3, r2 - 8010e52: 005b lsls r3, r3, #1 - 8010e54: 4413 add r3, r2 - 8010e56: 00db lsls r3, r3, #3 - 8010e58: 440b add r3, r1 - 8010e5a: 3314 adds r3, #20 - 8010e5c: 781b ldrb r3, [r3, #0] - 8010e5e: 2b01 cmp r3, #1 - 8010e60: d917 bls.n 8010e92 - /* we have a valid IP->Ethernet address mapping */ - ETHARP_SET_ADDRHINT(netif, i); - 8010e62: 4a49 ldr r2, [pc, #292] @ (8010f88 ) - 8010e64: 7c7b ldrb r3, [r7, #17] - 8010e66: 7013 strb r3, [r2, #0] - /* send the packet */ - result = ethernet_output(netif, q, srcaddr, &(arp_table[i].ethaddr), ETHTYPE_IP); - 8010e68: 7c7a ldrb r2, [r7, #17] - 8010e6a: 4613 mov r3, r2 - 8010e6c: 005b lsls r3, r3, #1 - 8010e6e: 4413 add r3, r2 - 8010e70: 00db lsls r3, r3, #3 - 8010e72: 3308 adds r3, #8 - 8010e74: 4a41 ldr r2, [pc, #260] @ (8010f7c ) - 8010e76: 4413 add r3, r2 - 8010e78: 3304 adds r3, #4 - 8010e7a: f44f 6200 mov.w r2, #2048 @ 0x800 - 8010e7e: 9200 str r2, [sp, #0] - 8010e80: 697a ldr r2, [r7, #20] - 8010e82: 6879 ldr r1, [r7, #4] - 8010e84: 68f8 ldr r0, [r7, #12] - 8010e86: f001 fdd1 bl 8012a2c - 8010e8a: 4603 mov r3, r0 - 8010e8c: f887 3027 strb.w r3, [r7, #39] @ 0x27 - 8010e90: e067 b.n 8010f62 - /* pending entry? (either just created or already pending */ - } else if (arp_table[i].state == ETHARP_STATE_PENDING) { - 8010e92: 7c7a ldrb r2, [r7, #17] - 8010e94: 4939 ldr r1, [pc, #228] @ (8010f7c ) - 8010e96: 4613 mov r3, r2 - 8010e98: 005b lsls r3, r3, #1 - 8010e9a: 4413 add r3, r2 - 8010e9c: 00db lsls r3, r3, #3 - 8010e9e: 440b add r3, r1 - 8010ea0: 3314 adds r3, #20 - 8010ea2: 781b ldrb r3, [r3, #0] - 8010ea4: 2b01 cmp r3, #1 - 8010ea6: d15c bne.n 8010f62 - /* entry is still pending, queue the given packet 'q' */ - struct pbuf *p; - int copy_needed = 0; - 8010ea8: 2300 movs r3, #0 - 8010eaa: 61bb str r3, [r7, #24] - /* IF q includes a pbuf that must be copied, copy the whole chain into a - * new PBUF_RAM. See the definition of PBUF_NEEDS_COPY for details. */ - p = q; - 8010eac: 687b ldr r3, [r7, #4] - 8010eae: 61fb str r3, [r7, #28] - while (p) { - 8010eb0: e01c b.n 8010eec - LWIP_ASSERT("no packet queues allowed!", (p->len != p->tot_len) || (p->next == 0)); - 8010eb2: 69fb ldr r3, [r7, #28] - 8010eb4: 895a ldrh r2, [r3, #10] - 8010eb6: 69fb ldr r3, [r7, #28] - 8010eb8: 891b ldrh r3, [r3, #8] - 8010eba: 429a cmp r2, r3 - 8010ebc: d10a bne.n 8010ed4 - 8010ebe: 69fb ldr r3, [r7, #28] - 8010ec0: 681b ldr r3, [r3, #0] - 8010ec2: 2b00 cmp r3, #0 - 8010ec4: d006 beq.n 8010ed4 - 8010ec6: 4b2a ldr r3, [pc, #168] @ (8010f70 ) - 8010ec8: f240 32f1 movw r2, #1009 @ 0x3f1 - 8010ecc: 492f ldr r1, [pc, #188] @ (8010f8c ) - 8010ece: 482a ldr r0, [pc, #168] @ (8010f78 ) - 8010ed0: f001 fed2 bl 8012c78 - if (PBUF_NEEDS_COPY(p)) { - 8010ed4: 69fb ldr r3, [r7, #28] - 8010ed6: 7b1b ldrb r3, [r3, #12] - 8010ed8: f003 0340 and.w r3, r3, #64 @ 0x40 - 8010edc: 2b00 cmp r3, #0 - 8010ede: d002 beq.n 8010ee6 - copy_needed = 1; - 8010ee0: 2301 movs r3, #1 - 8010ee2: 61bb str r3, [r7, #24] - break; - 8010ee4: e005 b.n 8010ef2 - } - p = p->next; - 8010ee6: 69fb ldr r3, [r7, #28] - 8010ee8: 681b ldr r3, [r3, #0] - 8010eea: 61fb str r3, [r7, #28] - while (p) { - 8010eec: 69fb ldr r3, [r7, #28] - 8010eee: 2b00 cmp r3, #0 - 8010ef0: d1df bne.n 8010eb2 - } - if (copy_needed) { - 8010ef2: 69bb ldr r3, [r7, #24] - 8010ef4: 2b00 cmp r3, #0 - 8010ef6: d007 beq.n 8010f08 - /* copy the whole packet into new pbufs */ - p = pbuf_clone(PBUF_LINK, PBUF_RAM, q); - 8010ef8: 687a ldr r2, [r7, #4] - 8010efa: f44f 7120 mov.w r1, #640 @ 0x280 - 8010efe: 200e movs r0, #14 - 8010f00: f7f7 fb3e bl 8008580 - 8010f04: 61f8 str r0, [r7, #28] - 8010f06: e004 b.n 8010f12 - } else { - /* referencing the old pbuf is enough */ - p = q; - 8010f08: 687b ldr r3, [r7, #4] - 8010f0a: 61fb str r3, [r7, #28] - pbuf_ref(p); - 8010f0c: 69f8 ldr r0, [r7, #28] - 8010f0e: f7f7 f96b bl 80081e8 - } - /* packet could be taken over? */ - if (p != NULL) { - 8010f12: 69fb ldr r3, [r7, #28] - 8010f14: 2b00 cmp r3, #0 - 8010f16: d021 beq.n 8010f5c - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: could not queue a copy of PBUF_REF packet %p (out of memory)\n", (void *)q)); - result = ERR_MEM; - } -#else /* ARP_QUEUEING */ - /* always queue one packet per ARP request only, freeing a previously queued packet */ - if (arp_table[i].q != NULL) { - 8010f18: 7c7a ldrb r2, [r7, #17] - 8010f1a: 4918 ldr r1, [pc, #96] @ (8010f7c ) - 8010f1c: 4613 mov r3, r2 - 8010f1e: 005b lsls r3, r3, #1 - 8010f20: 4413 add r3, r2 - 8010f22: 00db lsls r3, r3, #3 - 8010f24: 440b add r3, r1 - 8010f26: 681b ldr r3, [r3, #0] - 8010f28: 2b00 cmp r3, #0 - 8010f2a: d00a beq.n 8010f42 - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: dropped previously queued packet %p for ARP entry %"U16_F"\n", (void *)q, (u16_t)i)); - pbuf_free(arp_table[i].q); - 8010f2c: 7c7a ldrb r2, [r7, #17] - 8010f2e: 4913 ldr r1, [pc, #76] @ (8010f7c ) - 8010f30: 4613 mov r3, r2 - 8010f32: 005b lsls r3, r3, #1 - 8010f34: 4413 add r3, r2 - 8010f36: 00db lsls r3, r3, #3 - 8010f38: 440b add r3, r1 - 8010f3a: 681b ldr r3, [r3, #0] - 8010f3c: 4618 mov r0, r3 - 8010f3e: f7f7 f8b3 bl 80080a8 - } - arp_table[i].q = p; - 8010f42: 7c7a ldrb r2, [r7, #17] - 8010f44: 490d ldr r1, [pc, #52] @ (8010f7c ) - 8010f46: 4613 mov r3, r2 - 8010f48: 005b lsls r3, r3, #1 - 8010f4a: 4413 add r3, r2 - 8010f4c: 00db lsls r3, r3, #3 - 8010f4e: 440b add r3, r1 - 8010f50: 69fa ldr r2, [r7, #28] - 8010f52: 601a str r2, [r3, #0] - result = ERR_OK; - 8010f54: 2300 movs r3, #0 - 8010f56: f887 3027 strb.w r3, [r7, #39] @ 0x27 - 8010f5a: e002 b.n 8010f62 - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: queued packet %p on ARP entry %"U16_F"\n", (void *)q, (u16_t)i)); -#endif /* ARP_QUEUEING */ - } else { - ETHARP_STATS_INC(etharp.memerr); - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: could not queue a copy of PBUF_REF packet %p (out of memory)\n", (void *)q)); - result = ERR_MEM; - 8010f5c: 23ff movs r3, #255 @ 0xff - 8010f5e: f887 3027 strb.w r3, [r7, #39] @ 0x27 - } - } - return result; - 8010f62: f997 3027 ldrsb.w r3, [r7, #39] @ 0x27 -} - 8010f66: 4618 mov r0, r3 - 8010f68: 3728 adds r7, #40 @ 0x28 - 8010f6a: 46bd mov sp, r7 - 8010f6c: bd80 pop {r7, pc} - 8010f6e: bf00 nop - 8010f70: 08019db4 .word 0x08019db4 - 8010f74: 08019f60 .word 0x08019f60 - 8010f78: 08019e2c .word 0x08019e2c - 8010f7c: 20019180 .word 0x20019180 - 8010f80: 08019f70 .word 0x08019f70 - 8010f84: 08019f54 .word 0x08019f54 - 8010f88: 20019270 .word 0x20019270 - 8010f8c: 08019f98 .word 0x08019f98 - -08010f90 : -etharp_raw(struct netif *netif, const struct eth_addr *ethsrc_addr, - const struct eth_addr *ethdst_addr, - const struct eth_addr *hwsrc_addr, const ip4_addr_t *ipsrc_addr, - const struct eth_addr *hwdst_addr, const ip4_addr_t *ipdst_addr, - const u16_t opcode) -{ - 8010f90: b580 push {r7, lr} - 8010f92: b08a sub sp, #40 @ 0x28 - 8010f94: af02 add r7, sp, #8 - 8010f96: 60f8 str r0, [r7, #12] - 8010f98: 60b9 str r1, [r7, #8] - 8010f9a: 607a str r2, [r7, #4] - 8010f9c: 603b str r3, [r7, #0] - struct pbuf *p; - err_t result = ERR_OK; - 8010f9e: 2300 movs r3, #0 - 8010fa0: 77fb strb r3, [r7, #31] - struct etharp_hdr *hdr; - - LWIP_ASSERT("netif != NULL", netif != NULL); - 8010fa2: 68fb ldr r3, [r7, #12] - 8010fa4: 2b00 cmp r3, #0 - 8010fa6: d106 bne.n 8010fb6 - 8010fa8: 4b3a ldr r3, [pc, #232] @ (8011094 ) - 8010faa: f240 4257 movw r2, #1111 @ 0x457 - 8010fae: 493a ldr r1, [pc, #232] @ (8011098 ) - 8010fb0: 483a ldr r0, [pc, #232] @ (801109c ) - 8010fb2: f001 fe61 bl 8012c78 - - /* allocate a pbuf for the outgoing ARP request packet */ - p = pbuf_alloc(PBUF_LINK, SIZEOF_ETHARP_HDR, PBUF_RAM); - 8010fb6: f44f 7220 mov.w r2, #640 @ 0x280 - 8010fba: 211c movs r1, #28 - 8010fbc: 200e movs r0, #14 - 8010fbe: f7f6 fd91 bl 8007ae4 - 8010fc2: 61b8 str r0, [r7, #24] - /* could allocate a pbuf for an ARP request? */ - if (p == NULL) { - 8010fc4: 69bb ldr r3, [r7, #24] - 8010fc6: 2b00 cmp r3, #0 - 8010fc8: d102 bne.n 8010fd0 - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, - ("etharp_raw: could not allocate pbuf for ARP request.\n")); - ETHARP_STATS_INC(etharp.memerr); - return ERR_MEM; - 8010fca: f04f 33ff mov.w r3, #4294967295 - 8010fce: e05d b.n 801108c - } - LWIP_ASSERT("check that first pbuf can hold struct etharp_hdr", - 8010fd0: 69bb ldr r3, [r7, #24] - 8010fd2: 895b ldrh r3, [r3, #10] - 8010fd4: 2b1b cmp r3, #27 - 8010fd6: d806 bhi.n 8010fe6 - 8010fd8: 4b2e ldr r3, [pc, #184] @ (8011094 ) - 8010fda: f240 4262 movw r2, #1122 @ 0x462 - 8010fde: 4930 ldr r1, [pc, #192] @ (80110a0 ) - 8010fe0: 482e ldr r0, [pc, #184] @ (801109c ) - 8010fe2: f001 fe49 bl 8012c78 - (p->len >= SIZEOF_ETHARP_HDR)); - - hdr = (struct etharp_hdr *)p->payload; - 8010fe6: 69bb ldr r3, [r7, #24] - 8010fe8: 685b ldr r3, [r3, #4] - 8010fea: 617b str r3, [r7, #20] - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_raw: sending raw ARP packet.\n")); - hdr->opcode = lwip_htons(opcode); - 8010fec: 8ebb ldrh r3, [r7, #52] @ 0x34 - 8010fee: 4618 mov r0, r3 - 8010ff0: f7f5 fd0a bl 8006a08 - 8010ff4: 4603 mov r3, r0 - 8010ff6: 461a mov r2, r3 - 8010ff8: 697b ldr r3, [r7, #20] - 8010ffa: 80da strh r2, [r3, #6] - - LWIP_ASSERT("netif->hwaddr_len must be the same as ETH_HWADDR_LEN for etharp!", - 8010ffc: 68fb ldr r3, [r7, #12] - 8010ffe: f893 3030 ldrb.w r3, [r3, #48] @ 0x30 - 8011002: 2b06 cmp r3, #6 - 8011004: d006 beq.n 8011014 - 8011006: 4b23 ldr r3, [pc, #140] @ (8011094 ) - 8011008: f240 4269 movw r2, #1129 @ 0x469 - 801100c: 4925 ldr r1, [pc, #148] @ (80110a4 ) - 801100e: 4823 ldr r0, [pc, #140] @ (801109c ) - 8011010: f001 fe32 bl 8012c78 - (netif->hwaddr_len == ETH_HWADDR_LEN)); - - /* Write the ARP MAC-Addresses */ - SMEMCPY(&hdr->shwaddr, hwsrc_addr, ETH_HWADDR_LEN); - 8011014: 697b ldr r3, [r7, #20] - 8011016: 3308 adds r3, #8 - 8011018: 2206 movs r2, #6 - 801101a: 6839 ldr r1, [r7, #0] - 801101c: 4618 mov r0, r3 - 801101e: f001 ff27 bl 8012e70 - SMEMCPY(&hdr->dhwaddr, hwdst_addr, ETH_HWADDR_LEN); - 8011022: 697b ldr r3, [r7, #20] - 8011024: 3312 adds r3, #18 - 8011026: 2206 movs r2, #6 - 8011028: 6af9 ldr r1, [r7, #44] @ 0x2c - 801102a: 4618 mov r0, r3 - 801102c: f001 ff20 bl 8012e70 - /* Copy struct ip4_addr_wordaligned to aligned ip4_addr, to support compilers without - * structure packing. */ - IPADDR_WORDALIGNED_COPY_FROM_IP4_ADDR_T(&hdr->sipaddr, ipsrc_addr); - 8011030: 697b ldr r3, [r7, #20] - 8011032: 330e adds r3, #14 - 8011034: 6aba ldr r2, [r7, #40] @ 0x28 - 8011036: 6812 ldr r2, [r2, #0] - 8011038: 601a str r2, [r3, #0] - IPADDR_WORDALIGNED_COPY_FROM_IP4_ADDR_T(&hdr->dipaddr, ipdst_addr); - 801103a: 697b ldr r3, [r7, #20] - 801103c: 3318 adds r3, #24 - 801103e: 6b3a ldr r2, [r7, #48] @ 0x30 - 8011040: 6812 ldr r2, [r2, #0] - 8011042: 601a str r2, [r3, #0] - - hdr->hwtype = PP_HTONS(LWIP_IANA_HWTYPE_ETHERNET); - 8011044: 697b ldr r3, [r7, #20] - 8011046: 2200 movs r2, #0 - 8011048: 701a strb r2, [r3, #0] - 801104a: 2200 movs r2, #0 - 801104c: f042 0201 orr.w r2, r2, #1 - 8011050: 705a strb r2, [r3, #1] - hdr->proto = PP_HTONS(ETHTYPE_IP); - 8011052: 697b ldr r3, [r7, #20] - 8011054: 2200 movs r2, #0 - 8011056: f042 0208 orr.w r2, r2, #8 - 801105a: 709a strb r2, [r3, #2] - 801105c: 2200 movs r2, #0 - 801105e: 70da strb r2, [r3, #3] - /* set hwlen and protolen */ - hdr->hwlen = ETH_HWADDR_LEN; - 8011060: 697b ldr r3, [r7, #20] - 8011062: 2206 movs r2, #6 - 8011064: 711a strb r2, [r3, #4] - hdr->protolen = sizeof(ip4_addr_t); - 8011066: 697b ldr r3, [r7, #20] - 8011068: 2204 movs r2, #4 - 801106a: 715a strb r2, [r3, #5] - if (ip4_addr_islinklocal(ipsrc_addr)) { - ethernet_output(netif, p, ethsrc_addr, ðbroadcast, ETHTYPE_ARP); - } else -#endif /* LWIP_AUTOIP */ - { - ethernet_output(netif, p, ethsrc_addr, ethdst_addr, ETHTYPE_ARP); - 801106c: f640 0306 movw r3, #2054 @ 0x806 - 8011070: 9300 str r3, [sp, #0] - 8011072: 687b ldr r3, [r7, #4] - 8011074: 68ba ldr r2, [r7, #8] - 8011076: 69b9 ldr r1, [r7, #24] - 8011078: 68f8 ldr r0, [r7, #12] - 801107a: f001 fcd7 bl 8012a2c - } - - ETHARP_STATS_INC(etharp.xmit); - /* free ARP query packet */ - pbuf_free(p); - 801107e: 69b8 ldr r0, [r7, #24] - 8011080: f7f7 f812 bl 80080a8 - p = NULL; - 8011084: 2300 movs r3, #0 - 8011086: 61bb str r3, [r7, #24] - /* could not allocate pbuf for ARP request */ - - return result; - 8011088: f997 301f ldrsb.w r3, [r7, #31] -} - 801108c: 4618 mov r0, r3 - 801108e: 3720 adds r7, #32 - 8011090: 46bd mov sp, r7 - 8011092: bd80 pop {r7, pc} - 8011094: 08019db4 .word 0x08019db4 - 8011098: 08019f04 .word 0x08019f04 - 801109c: 08019e2c .word 0x08019e2c - 80110a0: 08019fb4 .word 0x08019fb4 - 80110a4: 08019fe8 .word 0x08019fe8 - -080110a8 : - * ERR_MEM if the ARP packet couldn't be allocated - * any other err_t on failure - */ -static err_t -etharp_request_dst(struct netif *netif, const ip4_addr_t *ipaddr, const struct eth_addr *hw_dst_addr) -{ - 80110a8: b580 push {r7, lr} - 80110aa: b088 sub sp, #32 - 80110ac: af04 add r7, sp, #16 - 80110ae: 60f8 str r0, [r7, #12] - 80110b0: 60b9 str r1, [r7, #8] - 80110b2: 607a str r2, [r7, #4] - return etharp_raw(netif, (struct eth_addr *)netif->hwaddr, hw_dst_addr, - 80110b4: 68fb ldr r3, [r7, #12] - 80110b6: f103 012a add.w r1, r3, #42 @ 0x2a - (struct eth_addr *)netif->hwaddr, netif_ip4_addr(netif), ðzero, - 80110ba: 68fb ldr r3, [r7, #12] - 80110bc: f103 002a add.w r0, r3, #42 @ 0x2a - 80110c0: 68fb ldr r3, [r7, #12] - 80110c2: 3304 adds r3, #4 - return etharp_raw(netif, (struct eth_addr *)netif->hwaddr, hw_dst_addr, - 80110c4: 2201 movs r2, #1 - 80110c6: 9203 str r2, [sp, #12] - 80110c8: 68ba ldr r2, [r7, #8] - 80110ca: 9202 str r2, [sp, #8] - 80110cc: 4a06 ldr r2, [pc, #24] @ (80110e8 ) - 80110ce: 9201 str r2, [sp, #4] - 80110d0: 9300 str r3, [sp, #0] - 80110d2: 4603 mov r3, r0 - 80110d4: 687a ldr r2, [r7, #4] - 80110d6: 68f8 ldr r0, [r7, #12] - 80110d8: f7ff ff5a bl 8010f90 - 80110dc: 4603 mov r3, r0 - ipaddr, ARP_REQUEST); -} - 80110de: 4618 mov r0, r3 - 80110e0: 3710 adds r7, #16 - 80110e2: 46bd mov sp, r7 - 80110e4: bd80 pop {r7, pc} - 80110e6: bf00 nop - 80110e8: 0801a5f4 .word 0x0801a5f4 - -080110ec : - * ERR_MEM if the ARP packet couldn't be allocated - * any other err_t on failure - */ -err_t -etharp_request(struct netif *netif, const ip4_addr_t *ipaddr) -{ - 80110ec: b580 push {r7, lr} - 80110ee: b082 sub sp, #8 - 80110f0: af00 add r7, sp, #0 - 80110f2: 6078 str r0, [r7, #4] - 80110f4: 6039 str r1, [r7, #0] - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_request: sending ARP request.\n")); - return etharp_request_dst(netif, ipaddr, ðbroadcast); - 80110f6: 4a05 ldr r2, [pc, #20] @ (801110c ) - 80110f8: 6839 ldr r1, [r7, #0] - 80110fa: 6878 ldr r0, [r7, #4] - 80110fc: f7ff ffd4 bl 80110a8 - 8011100: 4603 mov r3, r0 -} - 8011102: 4618 mov r0, r3 - 8011104: 3708 adds r7, #8 - 8011106: 46bd mov sp, r7 - 8011108: bd80 pop {r7, pc} - 801110a: bf00 nop - 801110c: 0801a5ec .word 0x0801a5ec - -08011110 : - * @param p the icmp echo request packet, p->payload pointing to the icmp header - * @param inp the netif on which this packet was received - */ -void -icmp_input(struct pbuf *p, struct netif *inp) -{ - 8011110: b580 push {r7, lr} - 8011112: b08e sub sp, #56 @ 0x38 - 8011114: af04 add r7, sp, #16 - 8011116: 6078 str r0, [r7, #4] - 8011118: 6039 str r1, [r7, #0] - const ip4_addr_t *src; - - ICMP_STATS_INC(icmp.recv); - MIB2_STATS_INC(mib2.icmpinmsgs); - - iphdr_in = ip4_current_header(); - 801111a: 4b79 ldr r3, [pc, #484] @ (8011300 ) - 801111c: 689b ldr r3, [r3, #8] - 801111e: 627b str r3, [r7, #36] @ 0x24 - hlen = IPH_HL_BYTES(iphdr_in); - 8011120: 6a7b ldr r3, [r7, #36] @ 0x24 - 8011122: 781b ldrb r3, [r3, #0] - 8011124: f003 030f and.w r3, r3, #15 - 8011128: b2db uxtb r3, r3 - 801112a: 009b lsls r3, r3, #2 - 801112c: b2db uxtb r3, r3 - 801112e: 847b strh r3, [r7, #34] @ 0x22 - if (hlen < IP_HLEN) { - 8011130: 8c7b ldrh r3, [r7, #34] @ 0x22 - 8011132: 2b13 cmp r3, #19 - 8011134: f240 80cd bls.w 80112d2 - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: short IP header (%"S16_F" bytes) received\n", hlen)); - goto lenerr; - } - if (p->len < sizeof(u16_t) * 2) { - 8011138: 687b ldr r3, [r7, #4] - 801113a: 895b ldrh r3, [r3, #10] - 801113c: 2b03 cmp r3, #3 - 801113e: f240 80ca bls.w 80112d6 - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: short ICMP (%"U16_F" bytes) received\n", p->tot_len)); - goto lenerr; - } - - type = *((u8_t *)p->payload); - 8011142: 687b ldr r3, [r7, #4] - 8011144: 685b ldr r3, [r3, #4] - 8011146: 781b ldrb r3, [r3, #0] - 8011148: f887 3021 strb.w r3, [r7, #33] @ 0x21 -#ifdef LWIP_DEBUG - code = *(((u8_t *)p->payload) + 1); - /* if debug is enabled but debug statement below is somehow disabled: */ - LWIP_UNUSED_ARG(code); -#endif /* LWIP_DEBUG */ - switch (type) { - 801114c: f897 3021 ldrb.w r3, [r7, #33] @ 0x21 - 8011150: 2b00 cmp r3, #0 - 8011152: f000 80b7 beq.w 80112c4 - 8011156: 2b08 cmp r3, #8 - 8011158: f040 80b7 bne.w 80112ca - (as obviously, an echo request has been sent, too). */ - MIB2_STATS_INC(mib2.icmpinechoreps); - break; - case ICMP_ECHO: - MIB2_STATS_INC(mib2.icmpinechos); - src = ip4_current_dest_addr(); - 801115c: 4b69 ldr r3, [pc, #420] @ (8011304 ) - 801115e: 61fb str r3, [r7, #28] - /* multicast destination address? */ - if (ip4_addr_ismulticast(ip4_current_dest_addr())) { - 8011160: 4b67 ldr r3, [pc, #412] @ (8011300 ) - 8011162: 695b ldr r3, [r3, #20] - 8011164: f003 03f0 and.w r3, r3, #240 @ 0xf0 - 8011168: 2be0 cmp r3, #224 @ 0xe0 - 801116a: f000 80bb beq.w 80112e4 - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: Not echoing to multicast pings\n")); - goto icmperr; -#endif /* LWIP_MULTICAST_PING */ - } - /* broadcast destination address? */ - if (ip4_addr_isbroadcast(ip4_current_dest_addr(), ip_current_netif())) { - 801116e: 4b64 ldr r3, [pc, #400] @ (8011300 ) - 8011170: 695b ldr r3, [r3, #20] - 8011172: 4a63 ldr r2, [pc, #396] @ (8011300 ) - 8011174: 6812 ldr r2, [r2, #0] - 8011176: 4611 mov r1, r2 - 8011178: 4618 mov r0, r3 - 801117a: f000 fc0b bl 8011994 - 801117e: 4603 mov r3, r0 - 8011180: 2b00 cmp r3, #0 - 8011182: f040 80b1 bne.w 80112e8 - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: Not echoing to broadcast pings\n")); - goto icmperr; -#endif /* LWIP_BROADCAST_PING */ - } - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: ping\n")); - if (p->tot_len < sizeof(struct icmp_echo_hdr)) { - 8011186: 687b ldr r3, [r7, #4] - 8011188: 891b ldrh r3, [r3, #8] - 801118a: 2b07 cmp r3, #7 - 801118c: f240 80a5 bls.w 80112da - return; - } - } -#endif -#if LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN - if (pbuf_add_header(p, hlen + PBUF_LINK_HLEN + PBUF_LINK_ENCAPSULATION_HLEN)) { - 8011190: 8c7b ldrh r3, [r7, #34] @ 0x22 - 8011192: 330e adds r3, #14 - 8011194: 4619 mov r1, r3 - 8011196: 6878 ldr r0, [r7, #4] - 8011198: f7f6 fef0 bl 8007f7c - 801119c: 4603 mov r3, r0 - 801119e: 2b00 cmp r3, #0 - 80111a0: d04b beq.n 801123a - /* p is not big enough to contain link headers - * allocate a new one and copy p into it - */ - struct pbuf *r; - u16_t alloc_len = (u16_t)(p->tot_len + hlen); - 80111a2: 687b ldr r3, [r7, #4] - 80111a4: 891a ldrh r2, [r3, #8] - 80111a6: 8c7b ldrh r3, [r7, #34] @ 0x22 - 80111a8: 4413 add r3, r2 - 80111aa: 837b strh r3, [r7, #26] - if (alloc_len < p->tot_len) { - 80111ac: 687b ldr r3, [r7, #4] - 80111ae: 891b ldrh r3, [r3, #8] - 80111b0: 8b7a ldrh r2, [r7, #26] - 80111b2: 429a cmp r2, r3 - 80111b4: f0c0 809a bcc.w 80112ec - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: allocating new pbuf failed (tot_len overflow)\n")); - goto icmperr; - } - /* allocate new packet buffer with space for link headers */ - r = pbuf_alloc(PBUF_LINK, alloc_len, PBUF_RAM); - 80111b8: 8b7b ldrh r3, [r7, #26] - 80111ba: f44f 7220 mov.w r2, #640 @ 0x280 - 80111be: 4619 mov r1, r3 - 80111c0: 200e movs r0, #14 - 80111c2: f7f6 fc8f bl 8007ae4 - 80111c6: 6178 str r0, [r7, #20] - if (r == NULL) { - 80111c8: 697b ldr r3, [r7, #20] - 80111ca: 2b00 cmp r3, #0 - 80111cc: f000 8090 beq.w 80112f0 - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: allocating new pbuf failed\n")); - goto icmperr; - } - if (r->len < hlen + sizeof(struct icmp_echo_hdr)) { - 80111d0: 697b ldr r3, [r7, #20] - 80111d2: 895b ldrh r3, [r3, #10] - 80111d4: 461a mov r2, r3 - 80111d6: 8c7b ldrh r3, [r7, #34] @ 0x22 - 80111d8: 3308 adds r3, #8 - 80111da: 429a cmp r2, r3 - 80111dc: d203 bcs.n 80111e6 - LWIP_DEBUGF(ICMP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("first pbuf cannot hold the ICMP header")); - pbuf_free(r); - 80111de: 6978 ldr r0, [r7, #20] - 80111e0: f7f6 ff62 bl 80080a8 - goto icmperr; - 80111e4: e085 b.n 80112f2 - } - /* copy the ip header */ - MEMCPY(r->payload, iphdr_in, hlen); - 80111e6: 697b ldr r3, [r7, #20] - 80111e8: 685b ldr r3, [r3, #4] - 80111ea: 8c7a ldrh r2, [r7, #34] @ 0x22 - 80111ec: 6a79 ldr r1, [r7, #36] @ 0x24 - 80111ee: 4618 mov r0, r3 - 80111f0: f001 fe3e bl 8012e70 - /* switch r->payload back to icmp header (cannot fail) */ - if (pbuf_remove_header(r, hlen)) { - 80111f4: 8c7b ldrh r3, [r7, #34] @ 0x22 - 80111f6: 4619 mov r1, r3 - 80111f8: 6978 ldr r0, [r7, #20] - 80111fa: f7f6 fecf bl 8007f9c - 80111fe: 4603 mov r3, r0 - 8011200: 2b00 cmp r3, #0 - 8011202: d009 beq.n 8011218 - LWIP_ASSERT("icmp_input: moving r->payload to icmp header failed\n", 0); - 8011204: 4b40 ldr r3, [pc, #256] @ (8011308 ) - 8011206: 22b6 movs r2, #182 @ 0xb6 - 8011208: 4940 ldr r1, [pc, #256] @ (801130c ) - 801120a: 4841 ldr r0, [pc, #260] @ (8011310 ) - 801120c: f001 fd34 bl 8012c78 - pbuf_free(r); - 8011210: 6978 ldr r0, [r7, #20] - 8011212: f7f6 ff49 bl 80080a8 - goto icmperr; - 8011216: e06c b.n 80112f2 - } - /* copy the rest of the packet without ip header */ - if (pbuf_copy(r, p) != ERR_OK) { - 8011218: 6879 ldr r1, [r7, #4] - 801121a: 6978 ldr r0, [r7, #20] - 801121c: f7f7 f86c bl 80082f8 - 8011220: 4603 mov r3, r0 - 8011222: 2b00 cmp r3, #0 - 8011224: d003 beq.n 801122e - LWIP_DEBUGF(ICMP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("icmp_input: copying to new pbuf failed")); - pbuf_free(r); - 8011226: 6978 ldr r0, [r7, #20] - 8011228: f7f6 ff3e bl 80080a8 - goto icmperr; - 801122c: e061 b.n 80112f2 - } - /* free the original p */ - pbuf_free(p); - 801122e: 6878 ldr r0, [r7, #4] - 8011230: f7f6 ff3a bl 80080a8 - /* we now have an identical copy of p that has room for link headers */ - p = r; - 8011234: 697b ldr r3, [r7, #20] - 8011236: 607b str r3, [r7, #4] - 8011238: e00f b.n 801125a - } else { - /* restore p->payload to point to icmp header (cannot fail) */ - if (pbuf_remove_header(p, hlen + PBUF_LINK_HLEN + PBUF_LINK_ENCAPSULATION_HLEN)) { - 801123a: 8c7b ldrh r3, [r7, #34] @ 0x22 - 801123c: 330e adds r3, #14 - 801123e: 4619 mov r1, r3 - 8011240: 6878 ldr r0, [r7, #4] - 8011242: f7f6 feab bl 8007f9c - 8011246: 4603 mov r3, r0 - 8011248: 2b00 cmp r3, #0 - 801124a: d006 beq.n 801125a - LWIP_ASSERT("icmp_input: restoring original p->payload failed\n", 0); - 801124c: 4b2e ldr r3, [pc, #184] @ (8011308 ) - 801124e: 22c7 movs r2, #199 @ 0xc7 - 8011250: 4930 ldr r1, [pc, #192] @ (8011314 ) - 8011252: 482f ldr r0, [pc, #188] @ (8011310 ) - 8011254: f001 fd10 bl 8012c78 - goto icmperr; - 8011258: e04b b.n 80112f2 - } -#endif /* LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN */ - /* At this point, all checks are OK. */ - /* We generate an answer by switching the dest and src ip addresses, - * setting the icmp type to ECHO_RESPONSE and updating the checksum. */ - iecho = (struct icmp_echo_hdr *)p->payload; - 801125a: 687b ldr r3, [r7, #4] - 801125c: 685b ldr r3, [r3, #4] - 801125e: 613b str r3, [r7, #16] - if (pbuf_add_header(p, hlen)) { - 8011260: 8c7b ldrh r3, [r7, #34] @ 0x22 - 8011262: 4619 mov r1, r3 - 8011264: 6878 ldr r0, [r7, #4] - 8011266: f7f6 fe89 bl 8007f7c - 801126a: 4603 mov r3, r0 - 801126c: 2b00 cmp r3, #0 - 801126e: d12b bne.n 80112c8 - LWIP_DEBUGF(ICMP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("Can't move over header in packet")); - } else { - err_t ret; - struct ip_hdr *iphdr = (struct ip_hdr *)p->payload; - 8011270: 687b ldr r3, [r7, #4] - 8011272: 685b ldr r3, [r3, #4] - 8011274: 60fb str r3, [r7, #12] - ip4_addr_copy(iphdr->src, *src); - 8011276: 69fb ldr r3, [r7, #28] - 8011278: 681a ldr r2, [r3, #0] - 801127a: 68fb ldr r3, [r7, #12] - 801127c: 60da str r2, [r3, #12] - ip4_addr_copy(iphdr->dest, *ip4_current_src_addr()); - 801127e: 4b20 ldr r3, [pc, #128] @ (8011300 ) - 8011280: 691a ldr r2, [r3, #16] - 8011282: 68fb ldr r3, [r7, #12] - 8011284: 611a str r2, [r3, #16] - ICMPH_TYPE_SET(iecho, ICMP_ER); - 8011286: 693b ldr r3, [r7, #16] - 8011288: 2200 movs r2, #0 - 801128a: 701a strb r2, [r3, #0] - else { - iecho->chksum = 0; - } -#endif /* LWIP_CHECKSUM_CTRL_PER_NETIF */ -#else /* CHECKSUM_GEN_ICMP */ - iecho->chksum = 0; - 801128c: 693b ldr r3, [r7, #16] - 801128e: 2200 movs r2, #0 - 8011290: 709a strb r2, [r3, #2] - 8011292: 2200 movs r2, #0 - 8011294: 70da strb r2, [r3, #3] -#endif /* CHECKSUM_GEN_ICMP */ - - /* Set the correct TTL and recalculate the header checksum. */ - IPH_TTL_SET(iphdr, ICMP_TTL); - 8011296: 68fb ldr r3, [r7, #12] - 8011298: 22ff movs r2, #255 @ 0xff - 801129a: 721a strb r2, [r3, #8] - IPH_CHKSUM_SET(iphdr, 0); - 801129c: 68fb ldr r3, [r7, #12] - 801129e: 2200 movs r2, #0 - 80112a0: 729a strb r2, [r3, #10] - 80112a2: 2200 movs r2, #0 - 80112a4: 72da strb r2, [r3, #11] - MIB2_STATS_INC(mib2.icmpoutmsgs); - /* increase number of echo replies attempted to send */ - MIB2_STATS_INC(mib2.icmpoutechoreps); - - /* send an ICMP packet */ - ret = ip4_output_if(p, src, LWIP_IP_HDRINCL, - 80112a6: 683b ldr r3, [r7, #0] - 80112a8: 9302 str r3, [sp, #8] - 80112aa: 2301 movs r3, #1 - 80112ac: 9301 str r3, [sp, #4] - 80112ae: 2300 movs r3, #0 - 80112b0: 9300 str r3, [sp, #0] - 80112b2: 23ff movs r3, #255 @ 0xff - 80112b4: 2200 movs r2, #0 - 80112b6: 69f9 ldr r1, [r7, #28] - 80112b8: 6878 ldr r0, [r7, #4] - 80112ba: f000 fa93 bl 80117e4 - 80112be: 4603 mov r3, r0 - 80112c0: 72fb strb r3, [r7, #11] - ICMP_TTL, 0, IP_PROTO_ICMP, inp); - if (ret != ERR_OK) { - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: ip_output_if returned an error: %s\n", lwip_strerr(ret))); - } - } - break; - 80112c2: e001 b.n 80112c8 - break; - 80112c4: bf00 nop - 80112c6: e000 b.n 80112ca - break; - 80112c8: bf00 nop - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: ICMP type %"S16_F" code %"S16_F" not supported.\n", - (s16_t)type, (s16_t)code)); - ICMP_STATS_INC(icmp.proterr); - ICMP_STATS_INC(icmp.drop); - } - pbuf_free(p); - 80112ca: 6878 ldr r0, [r7, #4] - 80112cc: f7f6 feec bl 80080a8 - return; - 80112d0: e013 b.n 80112fa - goto lenerr; - 80112d2: bf00 nop - 80112d4: e002 b.n 80112dc - goto lenerr; - 80112d6: bf00 nop - 80112d8: e000 b.n 80112dc - goto lenerr; - 80112da: bf00 nop -lenerr: - pbuf_free(p); - 80112dc: 6878 ldr r0, [r7, #4] - 80112de: f7f6 fee3 bl 80080a8 - ICMP_STATS_INC(icmp.lenerr); - MIB2_STATS_INC(mib2.icmpinerrors); - return; - 80112e2: e00a b.n 80112fa - goto icmperr; - 80112e4: bf00 nop - 80112e6: e004 b.n 80112f2 - goto icmperr; - 80112e8: bf00 nop - 80112ea: e002 b.n 80112f2 - goto icmperr; - 80112ec: bf00 nop - 80112ee: e000 b.n 80112f2 - goto icmperr; - 80112f0: bf00 nop -#if LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN || !LWIP_MULTICAST_PING || !LWIP_BROADCAST_PING -icmperr: - pbuf_free(p); - 80112f2: 6878 ldr r0, [r7, #4] - 80112f4: f7f6 fed8 bl 80080a8 - ICMP_STATS_INC(icmp.err); - MIB2_STATS_INC(mib2.icmpinerrors); - return; - 80112f8: bf00 nop -#endif /* LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN || !LWIP_MULTICAST_PING || !LWIP_BROADCAST_PING */ -} - 80112fa: 3728 adds r7, #40 @ 0x28 - 80112fc: 46bd mov sp, r7 - 80112fe: bd80 pop {r7, pc} - 8011300: 20006194 .word 0x20006194 - 8011304: 200061a8 .word 0x200061a8 - 8011308: 0801a02c .word 0x0801a02c - 801130c: 0801a064 .word 0x0801a064 - 8011310: 0801a09c .word 0x0801a09c - 8011314: 0801a0c4 .word 0x0801a0c4 - -08011318 : - * p->payload pointing to the IP header - * @param t type of the 'unreachable' packet - */ -void -icmp_dest_unreach(struct pbuf *p, enum icmp_dur_type t) -{ - 8011318: b580 push {r7, lr} - 801131a: b082 sub sp, #8 - 801131c: af00 add r7, sp, #0 - 801131e: 6078 str r0, [r7, #4] - 8011320: 460b mov r3, r1 - 8011322: 70fb strb r3, [r7, #3] - MIB2_STATS_INC(mib2.icmpoutdestunreachs); - icmp_send_response(p, ICMP_DUR, t); - 8011324: 78fb ldrb r3, [r7, #3] - 8011326: 461a mov r2, r3 - 8011328: 2103 movs r1, #3 - 801132a: 6878 ldr r0, [r7, #4] - 801132c: f000 f814 bl 8011358 -} - 8011330: bf00 nop - 8011332: 3708 adds r7, #8 - 8011334: 46bd mov sp, r7 - 8011336: bd80 pop {r7, pc} - -08011338 : - * p->payload pointing to the IP header - * @param t type of the 'time exceeded' packet - */ -void -icmp_time_exceeded(struct pbuf *p, enum icmp_te_type t) -{ - 8011338: b580 push {r7, lr} - 801133a: b082 sub sp, #8 - 801133c: af00 add r7, sp, #0 - 801133e: 6078 str r0, [r7, #4] - 8011340: 460b mov r3, r1 - 8011342: 70fb strb r3, [r7, #3] - MIB2_STATS_INC(mib2.icmpouttimeexcds); - icmp_send_response(p, ICMP_TE, t); - 8011344: 78fb ldrb r3, [r7, #3] - 8011346: 461a mov r2, r3 - 8011348: 210b movs r1, #11 - 801134a: 6878 ldr r0, [r7, #4] - 801134c: f000 f804 bl 8011358 -} - 8011350: bf00 nop - 8011352: 3708 adds r7, #8 - 8011354: 46bd mov sp, r7 - 8011356: bd80 pop {r7, pc} - -08011358 : - * @param type Type of the ICMP header - * @param code Code of the ICMP header - */ -static void -icmp_send_response(struct pbuf *p, u8_t type, u8_t code) -{ - 8011358: b580 push {r7, lr} - 801135a: b08c sub sp, #48 @ 0x30 - 801135c: af04 add r7, sp, #16 - 801135e: 6078 str r0, [r7, #4] - 8011360: 460b mov r3, r1 - 8011362: 70fb strb r3, [r7, #3] - 8011364: 4613 mov r3, r2 - 8011366: 70bb strb r3, [r7, #2] - - /* increase number of messages attempted to send */ - MIB2_STATS_INC(mib2.icmpoutmsgs); - - /* ICMP header + IP header + 8 bytes of data */ - q = pbuf_alloc(PBUF_IP, sizeof(struct icmp_echo_hdr) + IP_HLEN + ICMP_DEST_UNREACH_DATASIZE, - 8011368: f44f 7220 mov.w r2, #640 @ 0x280 - 801136c: 2124 movs r1, #36 @ 0x24 - 801136e: 2022 movs r0, #34 @ 0x22 - 8011370: f7f6 fbb8 bl 8007ae4 - 8011374: 61f8 str r0, [r7, #28] - PBUF_RAM); - if (q == NULL) { - 8011376: 69fb ldr r3, [r7, #28] - 8011378: 2b00 cmp r3, #0 - 801137a: d04c beq.n 8011416 - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_time_exceeded: failed to allocate pbuf for ICMP packet.\n")); - MIB2_STATS_INC(mib2.icmpouterrors); - return; - } - LWIP_ASSERT("check that first pbuf can hold icmp message", - 801137c: 69fb ldr r3, [r7, #28] - 801137e: 895b ldrh r3, [r3, #10] - 8011380: 2b23 cmp r3, #35 @ 0x23 - 8011382: d806 bhi.n 8011392 - 8011384: 4b26 ldr r3, [pc, #152] @ (8011420 ) - 8011386: f44f 72b4 mov.w r2, #360 @ 0x168 - 801138a: 4926 ldr r1, [pc, #152] @ (8011424 ) - 801138c: 4826 ldr r0, [pc, #152] @ (8011428 ) - 801138e: f001 fc73 bl 8012c78 - (q->len >= (sizeof(struct icmp_echo_hdr) + IP_HLEN + ICMP_DEST_UNREACH_DATASIZE))); - - iphdr = (struct ip_hdr *)p->payload; - 8011392: 687b ldr r3, [r7, #4] - 8011394: 685b ldr r3, [r3, #4] - 8011396: 61bb str r3, [r7, #24] - ip4_addr_debug_print_val(ICMP_DEBUG, iphdr->src); - LWIP_DEBUGF(ICMP_DEBUG, (" to ")); - ip4_addr_debug_print_val(ICMP_DEBUG, iphdr->dest); - LWIP_DEBUGF(ICMP_DEBUG, ("\n")); - - icmphdr = (struct icmp_echo_hdr *)q->payload; - 8011398: 69fb ldr r3, [r7, #28] - 801139a: 685b ldr r3, [r3, #4] - 801139c: 617b str r3, [r7, #20] - icmphdr->type = type; - 801139e: 697b ldr r3, [r7, #20] - 80113a0: 78fa ldrb r2, [r7, #3] - 80113a2: 701a strb r2, [r3, #0] - icmphdr->code = code; - 80113a4: 697b ldr r3, [r7, #20] - 80113a6: 78ba ldrb r2, [r7, #2] - 80113a8: 705a strb r2, [r3, #1] - icmphdr->id = 0; - 80113aa: 697b ldr r3, [r7, #20] - 80113ac: 2200 movs r2, #0 - 80113ae: 711a strb r2, [r3, #4] - 80113b0: 2200 movs r2, #0 - 80113b2: 715a strb r2, [r3, #5] - icmphdr->seqno = 0; - 80113b4: 697b ldr r3, [r7, #20] - 80113b6: 2200 movs r2, #0 - 80113b8: 719a strb r2, [r3, #6] - 80113ba: 2200 movs r2, #0 - 80113bc: 71da strb r2, [r3, #7] - - /* copy fields from original packet */ - SMEMCPY((u8_t *)q->payload + sizeof(struct icmp_echo_hdr), (u8_t *)p->payload, - 80113be: 69fb ldr r3, [r7, #28] - 80113c0: 685b ldr r3, [r3, #4] - 80113c2: f103 0008 add.w r0, r3, #8 - 80113c6: 687b ldr r3, [r7, #4] - 80113c8: 685b ldr r3, [r3, #4] - 80113ca: 221c movs r2, #28 - 80113cc: 4619 mov r1, r3 - 80113ce: f001 fd4f bl 8012e70 - IP_HLEN + ICMP_DEST_UNREACH_DATASIZE); - - ip4_addr_copy(iphdr_src, iphdr->src); - 80113d2: 69bb ldr r3, [r7, #24] - 80113d4: 68db ldr r3, [r3, #12] - 80113d6: 60fb str r3, [r7, #12] - ip4_addr_t iphdr_dst; - ip4_addr_copy(iphdr_dst, iphdr->dest); - netif = ip4_route_src(&iphdr_dst, &iphdr_src); - } -#else - netif = ip4_route(&iphdr_src); - 80113d8: f107 030c add.w r3, r7, #12 - 80113dc: 4618 mov r0, r3 - 80113de: f000 f825 bl 801142c - 80113e2: 6138 str r0, [r7, #16] -#endif - if (netif != NULL) { - 80113e4: 693b ldr r3, [r7, #16] - 80113e6: 2b00 cmp r3, #0 - 80113e8: d011 beq.n 801140e - /* calculate checksum */ - icmphdr->chksum = 0; - 80113ea: 697b ldr r3, [r7, #20] - 80113ec: 2200 movs r2, #0 - 80113ee: 709a strb r2, [r3, #2] - 80113f0: 2200 movs r2, #0 - 80113f2: 70da strb r2, [r3, #3] - IF__NETIF_CHECKSUM_ENABLED(netif, NETIF_CHECKSUM_GEN_ICMP) { - icmphdr->chksum = inet_chksum(icmphdr, q->len); - } -#endif - ICMP_STATS_INC(icmp.xmit); - ip4_output_if(q, NULL, &iphdr_src, ICMP_TTL, 0, IP_PROTO_ICMP, netif); - 80113f4: f107 020c add.w r2, r7, #12 - 80113f8: 693b ldr r3, [r7, #16] - 80113fa: 9302 str r3, [sp, #8] - 80113fc: 2301 movs r3, #1 - 80113fe: 9301 str r3, [sp, #4] - 8011400: 2300 movs r3, #0 - 8011402: 9300 str r3, [sp, #0] - 8011404: 23ff movs r3, #255 @ 0xff - 8011406: 2100 movs r1, #0 - 8011408: 69f8 ldr r0, [r7, #28] - 801140a: f000 f9eb bl 80117e4 - } - pbuf_free(q); - 801140e: 69f8 ldr r0, [r7, #28] - 8011410: f7f6 fe4a bl 80080a8 - 8011414: e000 b.n 8011418 - return; - 8011416: bf00 nop -} - 8011418: 3720 adds r7, #32 - 801141a: 46bd mov sp, r7 - 801141c: bd80 pop {r7, pc} - 801141e: bf00 nop - 8011420: 0801a02c .word 0x0801a02c - 8011424: 0801a0f8 .word 0x0801a0f8 - 8011428: 0801a09c .word 0x0801a09c - -0801142c : - * @param dest the destination IP address for which to find the route - * @return the netif on which to send to reach dest - */ -struct netif * -ip4_route(const ip4_addr_t *dest) -{ - 801142c: b480 push {r7} - 801142e: b085 sub sp, #20 - 8011430: af00 add r7, sp, #0 - 8011432: 6078 str r0, [r7, #4] - - /* bug #54569: in case LWIP_SINGLE_NETIF=1 and LWIP_DEBUGF() disabled, the following loop is optimized away */ - LWIP_UNUSED_ARG(dest); - - /* iterate through netifs */ - NETIF_FOREACH(netif) { - 8011434: 4b33 ldr r3, [pc, #204] @ (8011504 ) - 8011436: 681b ldr r3, [r3, #0] - 8011438: 60fb str r3, [r7, #12] - 801143a: e036 b.n 80114aa - /* is the netif up, does it have a link and a valid address? */ - if (netif_is_up(netif) && netif_is_link_up(netif) && !ip4_addr_isany_val(*netif_ip4_addr(netif))) { - 801143c: 68fb ldr r3, [r7, #12] - 801143e: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 - 8011442: f003 0301 and.w r3, r3, #1 - 8011446: b2db uxtb r3, r3 - 8011448: 2b00 cmp r3, #0 - 801144a: d02b beq.n 80114a4 - 801144c: 68fb ldr r3, [r7, #12] - 801144e: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 - 8011452: 089b lsrs r3, r3, #2 - 8011454: f003 0301 and.w r3, r3, #1 - 8011458: b2db uxtb r3, r3 - 801145a: 2b00 cmp r3, #0 - 801145c: d022 beq.n 80114a4 - 801145e: 68fb ldr r3, [r7, #12] - 8011460: 3304 adds r3, #4 - 8011462: 681b ldr r3, [r3, #0] - 8011464: 2b00 cmp r3, #0 - 8011466: d01d beq.n 80114a4 - /* network mask matches? */ - if (ip4_addr_netcmp(dest, netif_ip4_addr(netif), netif_ip4_netmask(netif))) { - 8011468: 687b ldr r3, [r7, #4] - 801146a: 681a ldr r2, [r3, #0] - 801146c: 68fb ldr r3, [r7, #12] - 801146e: 3304 adds r3, #4 - 8011470: 681b ldr r3, [r3, #0] - 8011472: 405a eors r2, r3 - 8011474: 68fb ldr r3, [r7, #12] - 8011476: 3308 adds r3, #8 - 8011478: 681b ldr r3, [r3, #0] - 801147a: 4013 ands r3, r2 - 801147c: 2b00 cmp r3, #0 - 801147e: d101 bne.n 8011484 - /* return netif on which to forward IP packet */ - return netif; - 8011480: 68fb ldr r3, [r7, #12] - 8011482: e038 b.n 80114f6 - } - /* gateway matches on a non broadcast interface? (i.e. peer in a point to point interface) */ - if (((netif->flags & NETIF_FLAG_BROADCAST) == 0) && ip4_addr_cmp(dest, netif_ip4_gw(netif))) { - 8011484: 68fb ldr r3, [r7, #12] - 8011486: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 - 801148a: f003 0302 and.w r3, r3, #2 - 801148e: 2b00 cmp r3, #0 - 8011490: d108 bne.n 80114a4 - 8011492: 687b ldr r3, [r7, #4] - 8011494: 681a ldr r2, [r3, #0] - 8011496: 68fb ldr r3, [r7, #12] - 8011498: 330c adds r3, #12 - 801149a: 681b ldr r3, [r3, #0] - 801149c: 429a cmp r2, r3 - 801149e: d101 bne.n 80114a4 - /* return netif on which to forward IP packet */ - return netif; - 80114a0: 68fb ldr r3, [r7, #12] - 80114a2: e028 b.n 80114f6 - NETIF_FOREACH(netif) { - 80114a4: 68fb ldr r3, [r7, #12] - 80114a6: 681b ldr r3, [r3, #0] - 80114a8: 60fb str r3, [r7, #12] - 80114aa: 68fb ldr r3, [r7, #12] - 80114ac: 2b00 cmp r3, #0 - 80114ae: d1c5 bne.n 801143c - return netif; - } -#endif -#endif /* !LWIP_SINGLE_NETIF */ - - if ((netif_default == NULL) || !netif_is_up(netif_default) || !netif_is_link_up(netif_default) || - 80114b0: 4b15 ldr r3, [pc, #84] @ (8011508 ) - 80114b2: 681b ldr r3, [r3, #0] - 80114b4: 2b00 cmp r3, #0 - 80114b6: d01a beq.n 80114ee - 80114b8: 4b13 ldr r3, [pc, #76] @ (8011508 ) - 80114ba: 681b ldr r3, [r3, #0] - 80114bc: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 - 80114c0: f003 0301 and.w r3, r3, #1 - 80114c4: 2b00 cmp r3, #0 - 80114c6: d012 beq.n 80114ee - 80114c8: 4b0f ldr r3, [pc, #60] @ (8011508 ) - 80114ca: 681b ldr r3, [r3, #0] - 80114cc: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 - 80114d0: f003 0304 and.w r3, r3, #4 - 80114d4: 2b00 cmp r3, #0 - 80114d6: d00a beq.n 80114ee - ip4_addr_isany_val(*netif_ip4_addr(netif_default)) || ip4_addr_isloopback(dest)) { - 80114d8: 4b0b ldr r3, [pc, #44] @ (8011508 ) - 80114da: 681b ldr r3, [r3, #0] - 80114dc: 3304 adds r3, #4 - 80114de: 681b ldr r3, [r3, #0] - if ((netif_default == NULL) || !netif_is_up(netif_default) || !netif_is_link_up(netif_default) || - 80114e0: 2b00 cmp r3, #0 - 80114e2: d004 beq.n 80114ee - ip4_addr_isany_val(*netif_ip4_addr(netif_default)) || ip4_addr_isloopback(dest)) { - 80114e4: 687b ldr r3, [r7, #4] - 80114e6: 681b ldr r3, [r3, #0] - 80114e8: b2db uxtb r3, r3 - 80114ea: 2b7f cmp r3, #127 @ 0x7f - 80114ec: d101 bne.n 80114f2 - If this is not good enough for you, use LWIP_HOOK_IP4_ROUTE() */ - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("ip4_route: No route to %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n", - ip4_addr1_16(dest), ip4_addr2_16(dest), ip4_addr3_16(dest), ip4_addr4_16(dest))); - IP_STATS_INC(ip.rterr); - MIB2_STATS_INC(mib2.ipoutnoroutes); - return NULL; - 80114ee: 2300 movs r3, #0 - 80114f0: e001 b.n 80114f6 - } - - return netif_default; - 80114f2: 4b05 ldr r3, [pc, #20] @ (8011508 ) - 80114f4: 681b ldr r3, [r3, #0] -} - 80114f6: 4618 mov r0, r3 - 80114f8: 3714 adds r7, #20 - 80114fa: 46bd mov sp, r7 - 80114fc: f85d 7b04 ldr.w r7, [sp], #4 - 8011500: 4770 bx lr - 8011502: bf00 nop - 8011504: 200190e0 .word 0x200190e0 - 8011508: 200190e4 .word 0x200190e4 - -0801150c : -#endif /* IP_FORWARD */ - -/** Return true if the current input packet should be accepted on this netif */ -static int -ip4_input_accept(struct netif *netif) -{ - 801150c: b580 push {r7, lr} - 801150e: b082 sub sp, #8 - 8011510: af00 add r7, sp, #0 - 8011512: 6078 str r0, [r7, #4] - ip4_addr_get_u32(ip4_current_dest_addr()) & ip4_addr_get_u32(netif_ip4_netmask(netif)), - ip4_addr_get_u32(netif_ip4_addr(netif)) & ip4_addr_get_u32(netif_ip4_netmask(netif)), - ip4_addr_get_u32(ip4_current_dest_addr()) & ~ip4_addr_get_u32(netif_ip4_netmask(netif)))); - - /* interface is up and configured? */ - if ((netif_is_up(netif)) && (!ip4_addr_isany_val(*netif_ip4_addr(netif)))) { - 8011514: 687b ldr r3, [r7, #4] - 8011516: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 - 801151a: f003 0301 and.w r3, r3, #1 - 801151e: b2db uxtb r3, r3 - 8011520: 2b00 cmp r3, #0 - 8011522: d016 beq.n 8011552 - 8011524: 687b ldr r3, [r7, #4] - 8011526: 3304 adds r3, #4 - 8011528: 681b ldr r3, [r3, #0] - 801152a: 2b00 cmp r3, #0 - 801152c: d011 beq.n 8011552 - /* unicast to this interface address? */ - if (ip4_addr_cmp(ip4_current_dest_addr(), netif_ip4_addr(netif)) || - 801152e: 4b0b ldr r3, [pc, #44] @ (801155c ) - 8011530: 695a ldr r2, [r3, #20] - 8011532: 687b ldr r3, [r7, #4] - 8011534: 3304 adds r3, #4 - 8011536: 681b ldr r3, [r3, #0] - 8011538: 429a cmp r2, r3 - 801153a: d008 beq.n 801154e - /* or broadcast on this interface network address? */ - ip4_addr_isbroadcast(ip4_current_dest_addr(), netif) - 801153c: 4b07 ldr r3, [pc, #28] @ (801155c ) - 801153e: 695b ldr r3, [r3, #20] - 8011540: 6879 ldr r1, [r7, #4] - 8011542: 4618 mov r0, r3 - 8011544: f000 fa26 bl 8011994 - 8011548: 4603 mov r3, r0 - if (ip4_addr_cmp(ip4_current_dest_addr(), netif_ip4_addr(netif)) || - 801154a: 2b00 cmp r3, #0 - 801154c: d001 beq.n 8011552 -#endif /* LWIP_NETIF_LOOPBACK && !LWIP_HAVE_LOOPIF */ - ) { - LWIP_DEBUGF(IP_DEBUG, ("ip4_input: packet accepted on interface %c%c\n", - netif->name[0], netif->name[1])); - /* accept on this netif */ - return 1; - 801154e: 2301 movs r3, #1 - 8011550: e000 b.n 8011554 - /* accept on this netif */ - return 1; - } -#endif /* LWIP_AUTOIP */ - } - return 0; - 8011552: 2300 movs r3, #0 -} - 8011554: 4618 mov r0, r3 - 8011556: 3708 adds r7, #8 - 8011558: 46bd mov sp, r7 - 801155a: bd80 pop {r7, pc} - 801155c: 20006194 .word 0x20006194 - -08011560 : - * @return ERR_OK if the packet was processed (could return ERR_* if it wasn't - * processed, but currently always returns ERR_OK) - */ -err_t -ip4_input(struct pbuf *p, struct netif *inp) -{ - 8011560: b580 push {r7, lr} - 8011562: b088 sub sp, #32 - 8011564: af00 add r7, sp, #0 - 8011566: 6078 str r0, [r7, #4] - 8011568: 6039 str r1, [r7, #0] - const struct ip_hdr *iphdr; - struct netif *netif; - u16_t iphdr_hlen; - u16_t iphdr_len; -#if IP_ACCEPT_LINK_LAYER_ADDRESSING || LWIP_IGMP - int check_ip_src = 1; - 801156a: 2301 movs r3, #1 - 801156c: 617b str r3, [r7, #20] - - IP_STATS_INC(ip.recv); - MIB2_STATS_INC(mib2.ipinreceives); - - /* identify the IP header */ - iphdr = (struct ip_hdr *)p->payload; - 801156e: 687b ldr r3, [r7, #4] - 8011570: 685b ldr r3, [r3, #4] - 8011572: 61fb str r3, [r7, #28] - if (IPH_V(iphdr) != 4) { - 8011574: 69fb ldr r3, [r7, #28] - 8011576: 781b ldrb r3, [r3, #0] - 8011578: 091b lsrs r3, r3, #4 - 801157a: b2db uxtb r3, r3 - 801157c: 2b04 cmp r3, #4 - 801157e: d004 beq.n 801158a - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_WARNING, ("IP packet dropped due to bad version number %"U16_F"\n", (u16_t)IPH_V(iphdr))); - ip4_debug_print(p); - pbuf_free(p); - 8011580: 6878 ldr r0, [r7, #4] - 8011582: f7f6 fd91 bl 80080a8 - IP_STATS_INC(ip.err); - IP_STATS_INC(ip.drop); - MIB2_STATS_INC(mib2.ipinhdrerrors); - return ERR_OK; - 8011586: 2300 movs r3, #0 - 8011588: e123 b.n 80117d2 - return ERR_OK; - } -#endif - - /* obtain IP header length in bytes */ - iphdr_hlen = IPH_HL_BYTES(iphdr); - 801158a: 69fb ldr r3, [r7, #28] - 801158c: 781b ldrb r3, [r3, #0] - 801158e: f003 030f and.w r3, r3, #15 - 8011592: b2db uxtb r3, r3 - 8011594: 009b lsls r3, r3, #2 - 8011596: b2db uxtb r3, r3 - 8011598: 827b strh r3, [r7, #18] - /* obtain ip length in bytes */ - iphdr_len = lwip_ntohs(IPH_LEN(iphdr)); - 801159a: 69fb ldr r3, [r7, #28] - 801159c: 885b ldrh r3, [r3, #2] - 801159e: b29b uxth r3, r3 - 80115a0: 4618 mov r0, r3 - 80115a2: f7f5 fa31 bl 8006a08 - 80115a6: 4603 mov r3, r0 - 80115a8: 823b strh r3, [r7, #16] - - /* Trim pbuf. This is especially required for packets < 60 bytes. */ - if (iphdr_len < p->tot_len) { - 80115aa: 687b ldr r3, [r7, #4] - 80115ac: 891b ldrh r3, [r3, #8] - 80115ae: 8a3a ldrh r2, [r7, #16] - 80115b0: 429a cmp r2, r3 - 80115b2: d204 bcs.n 80115be - pbuf_realloc(p, iphdr_len); - 80115b4: 8a3b ldrh r3, [r7, #16] - 80115b6: 4619 mov r1, r3 - 80115b8: 6878 ldr r0, [r7, #4] - 80115ba: f7f6 fbf1 bl 8007da0 - } - - /* header length exceeds first pbuf length, or ip length exceeds total pbuf length? */ - if ((iphdr_hlen > p->len) || (iphdr_len > p->tot_len) || (iphdr_hlen < IP_HLEN)) { - 80115be: 687b ldr r3, [r7, #4] - 80115c0: 895b ldrh r3, [r3, #10] - 80115c2: 8a7a ldrh r2, [r7, #18] - 80115c4: 429a cmp r2, r3 - 80115c6: d807 bhi.n 80115d8 - 80115c8: 687b ldr r3, [r7, #4] - 80115ca: 891b ldrh r3, [r3, #8] - 80115cc: 8a3a ldrh r2, [r7, #16] - 80115ce: 429a cmp r2, r3 - 80115d0: d802 bhi.n 80115d8 - 80115d2: 8a7b ldrh r3, [r7, #18] - 80115d4: 2b13 cmp r3, #19 - 80115d6: d804 bhi.n 80115e2 - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("IP (len %"U16_F") is longer than pbuf (len %"U16_F"), IP packet dropped.\n", - iphdr_len, p->tot_len)); - } - /* free (drop) packet pbufs */ - pbuf_free(p); - 80115d8: 6878 ldr r0, [r7, #4] - 80115da: f7f6 fd65 bl 80080a8 - IP_STATS_INC(ip.lenerr); - IP_STATS_INC(ip.drop); - MIB2_STATS_INC(mib2.ipindiscards); - return ERR_OK; - 80115de: 2300 movs r3, #0 - 80115e0: e0f7 b.n 80117d2 - } - } -#endif - - /* copy IP addresses to aligned ip_addr_t */ - ip_addr_copy_from_ip4(ip_data.current_iphdr_dest, iphdr->dest); - 80115e2: 69fb ldr r3, [r7, #28] - 80115e4: 691b ldr r3, [r3, #16] - 80115e6: 4a7d ldr r2, [pc, #500] @ (80117dc ) - 80115e8: 6153 str r3, [r2, #20] - ip_addr_copy_from_ip4(ip_data.current_iphdr_src, iphdr->src); - 80115ea: 69fb ldr r3, [r7, #28] - 80115ec: 68db ldr r3, [r3, #12] - 80115ee: 4a7b ldr r2, [pc, #492] @ (80117dc ) - 80115f0: 6113 str r3, [r2, #16] - - /* match packet against an interface, i.e. is this packet for us? */ - if (ip4_addr_ismulticast(ip4_current_dest_addr())) { - 80115f2: 4b7a ldr r3, [pc, #488] @ (80117dc ) - 80115f4: 695b ldr r3, [r3, #20] - 80115f6: f003 03f0 and.w r3, r3, #240 @ 0xf0 - 80115fa: 2be0 cmp r3, #224 @ 0xe0 - 80115fc: d112 bne.n 8011624 - netif = inp; - } else { - netif = NULL; - } -#else /* LWIP_IGMP */ - if ((netif_is_up(inp)) && (!ip4_addr_isany_val(*netif_ip4_addr(inp)))) { - 80115fe: 683b ldr r3, [r7, #0] - 8011600: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 - 8011604: f003 0301 and.w r3, r3, #1 - 8011608: b2db uxtb r3, r3 - 801160a: 2b00 cmp r3, #0 - 801160c: d007 beq.n 801161e - 801160e: 683b ldr r3, [r7, #0] - 8011610: 3304 adds r3, #4 - 8011612: 681b ldr r3, [r3, #0] - 8011614: 2b00 cmp r3, #0 - 8011616: d002 beq.n 801161e - netif = inp; - 8011618: 683b ldr r3, [r7, #0] - 801161a: 61bb str r3, [r7, #24] - 801161c: e02a b.n 8011674 - } else { - netif = NULL; - 801161e: 2300 movs r3, #0 - 8011620: 61bb str r3, [r7, #24] - 8011622: e027 b.n 8011674 - } -#endif /* LWIP_IGMP */ - } else { - /* start trying with inp. if that's not acceptable, start walking the - list of configured netifs. */ - if (ip4_input_accept(inp)) { - 8011624: 6838 ldr r0, [r7, #0] - 8011626: f7ff ff71 bl 801150c - 801162a: 4603 mov r3, r0 - 801162c: 2b00 cmp r3, #0 - 801162e: d002 beq.n 8011636 - netif = inp; - 8011630: 683b ldr r3, [r7, #0] - 8011632: 61bb str r3, [r7, #24] - 8011634: e01e b.n 8011674 - } else { - netif = NULL; - 8011636: 2300 movs r3, #0 - 8011638: 61bb str r3, [r7, #24] -#if !LWIP_NETIF_LOOPBACK || LWIP_HAVE_LOOPIF - /* Packets sent to the loopback address must not be accepted on an - * interface that does not have the loopback address assigned to it, - * unless a non-loopback interface is used for loopback traffic. */ - if (!ip4_addr_isloopback(ip4_current_dest_addr())) - 801163a: 4b68 ldr r3, [pc, #416] @ (80117dc ) - 801163c: 695b ldr r3, [r3, #20] - 801163e: b2db uxtb r3, r3 - 8011640: 2b7f cmp r3, #127 @ 0x7f - 8011642: d017 beq.n 8011674 -#endif /* !LWIP_NETIF_LOOPBACK || LWIP_HAVE_LOOPIF */ - { -#if !LWIP_SINGLE_NETIF - NETIF_FOREACH(netif) { - 8011644: 4b66 ldr r3, [pc, #408] @ (80117e0 ) - 8011646: 681b ldr r3, [r3, #0] - 8011648: 61bb str r3, [r7, #24] - 801164a: e00e b.n 801166a - if (netif == inp) { - 801164c: 69ba ldr r2, [r7, #24] - 801164e: 683b ldr r3, [r7, #0] - 8011650: 429a cmp r2, r3 - 8011652: d006 beq.n 8011662 - /* we checked that before already */ - continue; - } - if (ip4_input_accept(netif)) { - 8011654: 69b8 ldr r0, [r7, #24] - 8011656: f7ff ff59 bl 801150c - 801165a: 4603 mov r3, r0 - 801165c: 2b00 cmp r3, #0 - 801165e: d108 bne.n 8011672 - 8011660: e000 b.n 8011664 - continue; - 8011662: bf00 nop - NETIF_FOREACH(netif) { - 8011664: 69bb ldr r3, [r7, #24] - 8011666: 681b ldr r3, [r3, #0] - 8011668: 61bb str r3, [r7, #24] - 801166a: 69bb ldr r3, [r7, #24] - 801166c: 2b00 cmp r3, #0 - 801166e: d1ed bne.n 801164c - 8011670: e000 b.n 8011674 - break; - 8011672: bf00 nop - * If you want to accept private broadcast communication while a netif is down, - * define LWIP_IP_ACCEPT_UDP_PORT(dst_port), e.g.: - * - * #define LWIP_IP_ACCEPT_UDP_PORT(dst_port) ((dst_port) == PP_NTOHS(12345)) - */ - if (netif == NULL) { - 8011674: 69bb ldr r3, [r7, #24] - 8011676: 2b00 cmp r3, #0 - 8011678: d111 bne.n 801169e - /* remote port is DHCP server? */ - if (IPH_PROTO(iphdr) == IP_PROTO_UDP) { - 801167a: 69fb ldr r3, [r7, #28] - 801167c: 7a5b ldrb r3, [r3, #9] - 801167e: 2b11 cmp r3, #17 - 8011680: d10d bne.n 801169e - const struct udp_hdr *udphdr = (const struct udp_hdr *)((const u8_t *)iphdr + iphdr_hlen); - 8011682: 8a7b ldrh r3, [r7, #18] - 8011684: 69fa ldr r2, [r7, #28] - 8011686: 4413 add r3, r2 - 8011688: 60fb str r3, [r7, #12] - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_TRACE, ("ip4_input: UDP packet to DHCP client port %"U16_F"\n", - lwip_ntohs(udphdr->dest))); - if (IP_ACCEPT_LINK_LAYER_ADDRESSED_PORT(udphdr->dest)) { - 801168a: 68fb ldr r3, [r7, #12] - 801168c: 885b ldrh r3, [r3, #2] - 801168e: b29b uxth r3, r3 - 8011690: f5b3 4f88 cmp.w r3, #17408 @ 0x4400 - 8011694: d103 bne.n 801169e - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_TRACE, ("ip4_input: DHCP packet accepted.\n")); - netif = inp; - 8011696: 683b ldr r3, [r7, #0] - 8011698: 61bb str r3, [r7, #24] - check_ip_src = 0; - 801169a: 2300 movs r3, #0 - 801169c: 617b str r3, [r7, #20] - } -#endif /* IP_ACCEPT_LINK_LAYER_ADDRESSING */ - - /* broadcast or multicast packet source address? Compliant with RFC 1122: 3.2.1.3 */ -#if LWIP_IGMP || IP_ACCEPT_LINK_LAYER_ADDRESSING - if (check_ip_src - 801169e: 697b ldr r3, [r7, #20] - 80116a0: 2b00 cmp r3, #0 - 80116a2: d017 beq.n 80116d4 -#if IP_ACCEPT_LINK_LAYER_ADDRESSING - /* DHCP servers need 0.0.0.0 to be allowed as source address (RFC 1.1.2.2: 3.2.1.3/a) */ - && !ip4_addr_isany_val(*ip4_current_src_addr()) - 80116a4: 4b4d ldr r3, [pc, #308] @ (80117dc ) - 80116a6: 691b ldr r3, [r3, #16] - 80116a8: 2b00 cmp r3, #0 - 80116aa: d013 beq.n 80116d4 -#endif /* IP_ACCEPT_LINK_LAYER_ADDRESSING */ - ) -#endif /* LWIP_IGMP || IP_ACCEPT_LINK_LAYER_ADDRESSING */ - { - if ((ip4_addr_isbroadcast(ip4_current_src_addr(), inp)) || - 80116ac: 4b4b ldr r3, [pc, #300] @ (80117dc ) - 80116ae: 691b ldr r3, [r3, #16] - 80116b0: 6839 ldr r1, [r7, #0] - 80116b2: 4618 mov r0, r3 - 80116b4: f000 f96e bl 8011994 - 80116b8: 4603 mov r3, r0 - 80116ba: 2b00 cmp r3, #0 - 80116bc: d105 bne.n 80116ca - (ip4_addr_ismulticast(ip4_current_src_addr()))) { - 80116be: 4b47 ldr r3, [pc, #284] @ (80117dc ) - 80116c0: 691b ldr r3, [r3, #16] - 80116c2: f003 03f0 and.w r3, r3, #240 @ 0xf0 - if ((ip4_addr_isbroadcast(ip4_current_src_addr(), inp)) || - 80116c6: 2be0 cmp r3, #224 @ 0xe0 - 80116c8: d104 bne.n 80116d4 - /* packet source is not valid */ - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("ip4_input: packet source is not valid.\n")); - /* free (drop) packet pbufs */ - pbuf_free(p); - 80116ca: 6878 ldr r0, [r7, #4] - 80116cc: f7f6 fcec bl 80080a8 - IP_STATS_INC(ip.drop); - MIB2_STATS_INC(mib2.ipinaddrerrors); - MIB2_STATS_INC(mib2.ipindiscards); - return ERR_OK; - 80116d0: 2300 movs r3, #0 - 80116d2: e07e b.n 80117d2 - } - } - - /* packet not for us? */ - if (netif == NULL) { - 80116d4: 69bb ldr r3, [r7, #24] - 80116d6: 2b00 cmp r3, #0 - 80116d8: d104 bne.n 80116e4 - { - IP_STATS_INC(ip.drop); - MIB2_STATS_INC(mib2.ipinaddrerrors); - MIB2_STATS_INC(mib2.ipindiscards); - } - pbuf_free(p); - 80116da: 6878 ldr r0, [r7, #4] - 80116dc: f7f6 fce4 bl 80080a8 - return ERR_OK; - 80116e0: 2300 movs r3, #0 - 80116e2: e076 b.n 80117d2 - } - /* packet consists of multiple fragments? */ - if ((IPH_OFFSET(iphdr) & PP_HTONS(IP_OFFMASK | IP_MF)) != 0) { - 80116e4: 69fb ldr r3, [r7, #28] - 80116e6: 88db ldrh r3, [r3, #6] - 80116e8: b29b uxth r3, r3 - 80116ea: 461a mov r2, r3 - 80116ec: f64f 733f movw r3, #65343 @ 0xff3f - 80116f0: 4013 ands r3, r2 - 80116f2: 2b00 cmp r3, #0 - 80116f4: d00b beq.n 801170e -#if IP_REASSEMBLY /* packet fragment reassembly code present? */ - LWIP_DEBUGF(IP_DEBUG, ("IP packet is a fragment (id=0x%04"X16_F" tot_len=%"U16_F" len=%"U16_F" MF=%"U16_F" offset=%"U16_F"), calling ip4_reass()\n", - lwip_ntohs(IPH_ID(iphdr)), p->tot_len, lwip_ntohs(IPH_LEN(iphdr)), (u16_t)!!(IPH_OFFSET(iphdr) & PP_HTONS(IP_MF)), (u16_t)((lwip_ntohs(IPH_OFFSET(iphdr)) & IP_OFFMASK) * 8))); - /* reassemble the packet*/ - p = ip4_reass(p); - 80116f6: 6878 ldr r0, [r7, #4] - 80116f8: f000 fdd0 bl 801229c - 80116fc: 6078 str r0, [r7, #4] - /* packet not fully reassembled yet? */ - if (p == NULL) { - 80116fe: 687b ldr r3, [r7, #4] - 8011700: 2b00 cmp r3, #0 - 8011702: d101 bne.n 8011708 - return ERR_OK; - 8011704: 2300 movs r3, #0 - 8011706: e064 b.n 80117d2 - } - iphdr = (const struct ip_hdr *)p->payload; - 8011708: 687b ldr r3, [r7, #4] - 801170a: 685b ldr r3, [r3, #4] - 801170c: 61fb str r3, [r7, #28] - /* send to upper layers */ - LWIP_DEBUGF(IP_DEBUG, ("ip4_input: \n")); - ip4_debug_print(p); - LWIP_DEBUGF(IP_DEBUG, ("ip4_input: p->len %"U16_F" p->tot_len %"U16_F"\n", p->len, p->tot_len)); - - ip_data.current_netif = netif; - 801170e: 4a33 ldr r2, [pc, #204] @ (80117dc ) - 8011710: 69bb ldr r3, [r7, #24] - 8011712: 6013 str r3, [r2, #0] - ip_data.current_input_netif = inp; - 8011714: 4a31 ldr r2, [pc, #196] @ (80117dc ) - 8011716: 683b ldr r3, [r7, #0] - 8011718: 6053 str r3, [r2, #4] - ip_data.current_ip4_header = iphdr; - 801171a: 4a30 ldr r2, [pc, #192] @ (80117dc ) - 801171c: 69fb ldr r3, [r7, #28] - 801171e: 6093 str r3, [r2, #8] - ip_data.current_ip_header_tot_len = IPH_HL_BYTES(iphdr); - 8011720: 69fb ldr r3, [r7, #28] - 8011722: 781b ldrb r3, [r3, #0] - 8011724: f003 030f and.w r3, r3, #15 - 8011728: b2db uxtb r3, r3 - 801172a: 009b lsls r3, r3, #2 - 801172c: b2db uxtb r3, r3 - 801172e: 461a mov r2, r3 - 8011730: 4b2a ldr r3, [pc, #168] @ (80117dc ) - 8011732: 819a strh r2, [r3, #12] - /* raw input did not eat the packet? */ - raw_status = raw_input(p, inp); - if (raw_status != RAW_INPUT_EATEN) -#endif /* LWIP_RAW */ - { - pbuf_remove_header(p, iphdr_hlen); /* Move to payload, no check necessary. */ - 8011734: 8a7b ldrh r3, [r7, #18] - 8011736: 4619 mov r1, r3 - 8011738: 6878 ldr r0, [r7, #4] - 801173a: f7f6 fc2f bl 8007f9c - - switch (IPH_PROTO(iphdr)) { - 801173e: 69fb ldr r3, [r7, #28] - 8011740: 7a5b ldrb r3, [r3, #9] - 8011742: 2b11 cmp r3, #17 - 8011744: d006 beq.n 8011754 - 8011746: 2b11 cmp r3, #17 - 8011748: dc13 bgt.n 8011772 - 801174a: 2b01 cmp r3, #1 - 801174c: d00c beq.n 8011768 - 801174e: 2b06 cmp r3, #6 - 8011750: d005 beq.n 801175e - 8011752: e00e b.n 8011772 - case IP_PROTO_UDP: -#if LWIP_UDPLITE - case IP_PROTO_UDPLITE: -#endif /* LWIP_UDPLITE */ - MIB2_STATS_INC(mib2.ipindelivers); - udp_input(p, inp); - 8011754: 6839 ldr r1, [r7, #0] - 8011756: 6878 ldr r0, [r7, #4] - 8011758: f7fc fa94 bl 800dc84 - break; - 801175c: e026 b.n 80117ac -#endif /* LWIP_UDP */ -#if LWIP_TCP - case IP_PROTO_TCP: - MIB2_STATS_INC(mib2.ipindelivers); - tcp_input(p, inp); - 801175e: 6839 ldr r1, [r7, #0] - 8011760: 6878 ldr r0, [r7, #4] - 8011762: f7f8 fadb bl 8009d1c - break; - 8011766: e021 b.n 80117ac -#endif /* LWIP_TCP */ -#if LWIP_ICMP - case IP_PROTO_ICMP: - MIB2_STATS_INC(mib2.ipindelivers); - icmp_input(p, inp); - 8011768: 6839 ldr r1, [r7, #0] - 801176a: 6878 ldr r0, [r7, #4] - 801176c: f7ff fcd0 bl 8011110 - break; - 8011770: e01c b.n 80117ac - } else -#endif /* LWIP_RAW */ - { -#if LWIP_ICMP - /* send ICMP destination protocol unreachable unless is was a broadcast */ - if (!ip4_addr_isbroadcast(ip4_current_dest_addr(), netif) && - 8011772: 4b1a ldr r3, [pc, #104] @ (80117dc ) - 8011774: 695b ldr r3, [r3, #20] - 8011776: 69b9 ldr r1, [r7, #24] - 8011778: 4618 mov r0, r3 - 801177a: f000 f90b bl 8011994 - 801177e: 4603 mov r3, r0 - 8011780: 2b00 cmp r3, #0 - 8011782: d10f bne.n 80117a4 - !ip4_addr_ismulticast(ip4_current_dest_addr())) { - 8011784: 4b15 ldr r3, [pc, #84] @ (80117dc ) - 8011786: 695b ldr r3, [r3, #20] - 8011788: f003 03f0 and.w r3, r3, #240 @ 0xf0 - if (!ip4_addr_isbroadcast(ip4_current_dest_addr(), netif) && - 801178c: 2be0 cmp r3, #224 @ 0xe0 - 801178e: d009 beq.n 80117a4 - pbuf_header_force(p, (s16_t)iphdr_hlen); /* Move to ip header, no check necessary. */ - 8011790: f9b7 3012 ldrsh.w r3, [r7, #18] - 8011794: 4619 mov r1, r3 - 8011796: 6878 ldr r0, [r7, #4] - 8011798: f7f6 fc73 bl 8008082 - icmp_dest_unreach(p, ICMP_DUR_PROTO); - 801179c: 2102 movs r1, #2 - 801179e: 6878 ldr r0, [r7, #4] - 80117a0: f7ff fdba bl 8011318 - - IP_STATS_INC(ip.proterr); - IP_STATS_INC(ip.drop); - MIB2_STATS_INC(mib2.ipinunknownprotos); - } - pbuf_free(p); - 80117a4: 6878 ldr r0, [r7, #4] - 80117a6: f7f6 fc7f bl 80080a8 - break; - 80117aa: bf00 nop - } - } - - /* @todo: this is not really necessary... */ - ip_data.current_netif = NULL; - 80117ac: 4b0b ldr r3, [pc, #44] @ (80117dc ) - 80117ae: 2200 movs r2, #0 - 80117b0: 601a str r2, [r3, #0] - ip_data.current_input_netif = NULL; - 80117b2: 4b0a ldr r3, [pc, #40] @ (80117dc ) - 80117b4: 2200 movs r2, #0 - 80117b6: 605a str r2, [r3, #4] - ip_data.current_ip4_header = NULL; - 80117b8: 4b08 ldr r3, [pc, #32] @ (80117dc ) - 80117ba: 2200 movs r2, #0 - 80117bc: 609a str r2, [r3, #8] - ip_data.current_ip_header_tot_len = 0; - 80117be: 4b07 ldr r3, [pc, #28] @ (80117dc ) - 80117c0: 2200 movs r2, #0 - 80117c2: 819a strh r2, [r3, #12] - ip4_addr_set_any(ip4_current_src_addr()); - 80117c4: 4b05 ldr r3, [pc, #20] @ (80117dc ) - 80117c6: 2200 movs r2, #0 - 80117c8: 611a str r2, [r3, #16] - ip4_addr_set_any(ip4_current_dest_addr()); - 80117ca: 4b04 ldr r3, [pc, #16] @ (80117dc ) - 80117cc: 2200 movs r2, #0 - 80117ce: 615a str r2, [r3, #20] - - return ERR_OK; - 80117d0: 2300 movs r3, #0 -} - 80117d2: 4618 mov r0, r3 - 80117d4: 3720 adds r7, #32 - 80117d6: 46bd mov sp, r7 - 80117d8: bd80 pop {r7, pc} - 80117da: bf00 nop - 80117dc: 20006194 .word 0x20006194 - 80117e0: 200190e0 .word 0x200190e0 - -080117e4 : - */ -err_t -ip4_output_if(struct pbuf *p, const ip4_addr_t *src, const ip4_addr_t *dest, - u8_t ttl, u8_t tos, - u8_t proto, struct netif *netif) -{ - 80117e4: b580 push {r7, lr} - 80117e6: b08a sub sp, #40 @ 0x28 - 80117e8: af04 add r7, sp, #16 - 80117ea: 60f8 str r0, [r7, #12] - 80117ec: 60b9 str r1, [r7, #8] - 80117ee: 607a str r2, [r7, #4] - 80117f0: 70fb strb r3, [r7, #3] -ip4_output_if_opt(struct pbuf *p, const ip4_addr_t *src, const ip4_addr_t *dest, - u8_t ttl, u8_t tos, u8_t proto, struct netif *netif, void *ip_options, - u16_t optlen) -{ -#endif /* IP_OPTIONS_SEND */ - const ip4_addr_t *src_used = src; - 80117f2: 68bb ldr r3, [r7, #8] - 80117f4: 617b str r3, [r7, #20] - if (dest != LWIP_IP_HDRINCL) { - 80117f6: 687b ldr r3, [r7, #4] - 80117f8: 2b00 cmp r3, #0 - 80117fa: d009 beq.n 8011810 - if (ip4_addr_isany(src)) { - 80117fc: 68bb ldr r3, [r7, #8] - 80117fe: 2b00 cmp r3, #0 - 8011800: d003 beq.n 801180a - 8011802: 68bb ldr r3, [r7, #8] - 8011804: 681b ldr r3, [r3, #0] - 8011806: 2b00 cmp r3, #0 - 8011808: d102 bne.n 8011810 - src_used = netif_ip4_addr(netif); - 801180a: 6abb ldr r3, [r7, #40] @ 0x28 - 801180c: 3304 adds r3, #4 - 801180e: 617b str r3, [r7, #20] - -#if IP_OPTIONS_SEND - return ip4_output_if_opt_src(p, src_used, dest, ttl, tos, proto, netif, - ip_options, optlen); -#else /* IP_OPTIONS_SEND */ - return ip4_output_if_src(p, src_used, dest, ttl, tos, proto, netif); - 8011810: 78fa ldrb r2, [r7, #3] - 8011812: 6abb ldr r3, [r7, #40] @ 0x28 - 8011814: 9302 str r3, [sp, #8] - 8011816: f897 3024 ldrb.w r3, [r7, #36] @ 0x24 - 801181a: 9301 str r3, [sp, #4] - 801181c: f897 3020 ldrb.w r3, [r7, #32] - 8011820: 9300 str r3, [sp, #0] - 8011822: 4613 mov r3, r2 - 8011824: 687a ldr r2, [r7, #4] - 8011826: 6979 ldr r1, [r7, #20] - 8011828: 68f8 ldr r0, [r7, #12] - 801182a: f000 f805 bl 8011838 - 801182e: 4603 mov r3, r0 -#endif /* IP_OPTIONS_SEND */ -} - 8011830: 4618 mov r0, r3 - 8011832: 3718 adds r7, #24 - 8011834: 46bd mov sp, r7 - 8011836: bd80 pop {r7, pc} - -08011838 : - */ -err_t -ip4_output_if_src(struct pbuf *p, const ip4_addr_t *src, const ip4_addr_t *dest, - u8_t ttl, u8_t tos, - u8_t proto, struct netif *netif) -{ - 8011838: b580 push {r7, lr} - 801183a: b088 sub sp, #32 - 801183c: af00 add r7, sp, #0 - 801183e: 60f8 str r0, [r7, #12] - 8011840: 60b9 str r1, [r7, #8] - 8011842: 607a str r2, [r7, #4] - 8011844: 70fb strb r3, [r7, #3] -#if CHECKSUM_GEN_IP_INLINE - u32_t chk_sum = 0; -#endif /* CHECKSUM_GEN_IP_INLINE */ - - LWIP_ASSERT_CORE_LOCKED(); - LWIP_IP_CHECK_PBUF_REF_COUNT_FOR_TX(p); - 8011846: 68fb ldr r3, [r7, #12] - 8011848: 7b9b ldrb r3, [r3, #14] - 801184a: 2b01 cmp r3, #1 - 801184c: d006 beq.n 801185c - 801184e: 4b4b ldr r3, [pc, #300] @ (801197c ) - 8011850: f44f 7255 mov.w r2, #852 @ 0x354 - 8011854: 494a ldr r1, [pc, #296] @ (8011980 ) - 8011856: 484b ldr r0, [pc, #300] @ (8011984 ) - 8011858: f001 fa0e bl 8012c78 - - MIB2_STATS_INC(mib2.ipoutrequests); - - /* Should the IP header be generated or is it already included in p? */ - if (dest != LWIP_IP_HDRINCL) { - 801185c: 687b ldr r3, [r7, #4] - 801185e: 2b00 cmp r3, #0 - 8011860: d060 beq.n 8011924 - u16_t ip_hlen = IP_HLEN; - 8011862: 2314 movs r3, #20 - 8011864: 837b strh r3, [r7, #26] - } -#endif /* CHECKSUM_GEN_IP_INLINE */ - } -#endif /* IP_OPTIONS_SEND */ - /* generate IP header */ - if (pbuf_add_header(p, IP_HLEN)) { - 8011866: 2114 movs r1, #20 - 8011868: 68f8 ldr r0, [r7, #12] - 801186a: f7f6 fb87 bl 8007f7c - 801186e: 4603 mov r3, r0 - 8011870: 2b00 cmp r3, #0 - 8011872: d002 beq.n 801187a - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("ip4_output: not enough room for IP header in pbuf\n")); - - IP_STATS_INC(ip.err); - MIB2_STATS_INC(mib2.ipoutdiscards); - return ERR_BUF; - 8011874: f06f 0301 mvn.w r3, #1 - 8011878: e07c b.n 8011974 - } - - iphdr = (struct ip_hdr *)p->payload; - 801187a: 68fb ldr r3, [r7, #12] - 801187c: 685b ldr r3, [r3, #4] - 801187e: 61fb str r3, [r7, #28] - LWIP_ASSERT("check that first pbuf can hold struct ip_hdr", - 8011880: 68fb ldr r3, [r7, #12] - 8011882: 895b ldrh r3, [r3, #10] - 8011884: 2b13 cmp r3, #19 - 8011886: d806 bhi.n 8011896 - 8011888: 4b3c ldr r3, [pc, #240] @ (801197c ) - 801188a: f44f 7262 mov.w r2, #904 @ 0x388 - 801188e: 493e ldr r1, [pc, #248] @ (8011988 ) - 8011890: 483c ldr r0, [pc, #240] @ (8011984 ) - 8011892: f001 f9f1 bl 8012c78 - (p->len >= sizeof(struct ip_hdr))); - - IPH_TTL_SET(iphdr, ttl); - 8011896: 69fb ldr r3, [r7, #28] - 8011898: 78fa ldrb r2, [r7, #3] - 801189a: 721a strb r2, [r3, #8] - IPH_PROTO_SET(iphdr, proto); - 801189c: 69fb ldr r3, [r7, #28] - 801189e: f897 202c ldrb.w r2, [r7, #44] @ 0x2c - 80118a2: 725a strb r2, [r3, #9] -#if CHECKSUM_GEN_IP_INLINE - chk_sum += PP_NTOHS(proto | (ttl << 8)); -#endif /* CHECKSUM_GEN_IP_INLINE */ - - /* dest cannot be NULL here */ - ip4_addr_copy(iphdr->dest, *dest); - 80118a4: 687b ldr r3, [r7, #4] - 80118a6: 681a ldr r2, [r3, #0] - 80118a8: 69fb ldr r3, [r7, #28] - 80118aa: 611a str r2, [r3, #16] -#if CHECKSUM_GEN_IP_INLINE - chk_sum += ip4_addr_get_u32(&iphdr->dest) & 0xFFFF; - chk_sum += ip4_addr_get_u32(&iphdr->dest) >> 16; -#endif /* CHECKSUM_GEN_IP_INLINE */ - - IPH_VHL_SET(iphdr, 4, ip_hlen / 4); - 80118ac: 8b7b ldrh r3, [r7, #26] - 80118ae: 089b lsrs r3, r3, #2 - 80118b0: b29b uxth r3, r3 - 80118b2: b2db uxtb r3, r3 - 80118b4: f043 0340 orr.w r3, r3, #64 @ 0x40 - 80118b8: b2da uxtb r2, r3 - 80118ba: 69fb ldr r3, [r7, #28] - 80118bc: 701a strb r2, [r3, #0] - IPH_TOS_SET(iphdr, tos); - 80118be: 69fb ldr r3, [r7, #28] - 80118c0: f897 2028 ldrb.w r2, [r7, #40] @ 0x28 - 80118c4: 705a strb r2, [r3, #1] -#if CHECKSUM_GEN_IP_INLINE - chk_sum += PP_NTOHS(tos | (iphdr->_v_hl << 8)); -#endif /* CHECKSUM_GEN_IP_INLINE */ - IPH_LEN_SET(iphdr, lwip_htons(p->tot_len)); - 80118c6: 68fb ldr r3, [r7, #12] - 80118c8: 891b ldrh r3, [r3, #8] - 80118ca: 4618 mov r0, r3 - 80118cc: f7f5 f89c bl 8006a08 - 80118d0: 4603 mov r3, r0 - 80118d2: 461a mov r2, r3 - 80118d4: 69fb ldr r3, [r7, #28] - 80118d6: 805a strh r2, [r3, #2] -#if CHECKSUM_GEN_IP_INLINE - chk_sum += iphdr->_len; -#endif /* CHECKSUM_GEN_IP_INLINE */ - IPH_OFFSET_SET(iphdr, 0); - 80118d8: 69fb ldr r3, [r7, #28] - 80118da: 2200 movs r2, #0 - 80118dc: 719a strb r2, [r3, #6] - 80118de: 2200 movs r2, #0 - 80118e0: 71da strb r2, [r3, #7] - IPH_ID_SET(iphdr, lwip_htons(ip_id)); - 80118e2: 4b2a ldr r3, [pc, #168] @ (801198c ) - 80118e4: 881b ldrh r3, [r3, #0] - 80118e6: 4618 mov r0, r3 - 80118e8: f7f5 f88e bl 8006a08 - 80118ec: 4603 mov r3, r0 - 80118ee: 461a mov r2, r3 - 80118f0: 69fb ldr r3, [r7, #28] - 80118f2: 809a strh r2, [r3, #4] -#if CHECKSUM_GEN_IP_INLINE - chk_sum += iphdr->_id; -#endif /* CHECKSUM_GEN_IP_INLINE */ - ++ip_id; - 80118f4: 4b25 ldr r3, [pc, #148] @ (801198c ) - 80118f6: 881b ldrh r3, [r3, #0] - 80118f8: 3301 adds r3, #1 - 80118fa: b29a uxth r2, r3 - 80118fc: 4b23 ldr r3, [pc, #140] @ (801198c ) - 80118fe: 801a strh r2, [r3, #0] - - if (src == NULL) { - 8011900: 68bb ldr r3, [r7, #8] - 8011902: 2b00 cmp r3, #0 - 8011904: d104 bne.n 8011910 - ip4_addr_copy(iphdr->src, *IP4_ADDR_ANY4); - 8011906: 4b22 ldr r3, [pc, #136] @ (8011990 ) - 8011908: 681a ldr r2, [r3, #0] - 801190a: 69fb ldr r3, [r7, #28] - 801190c: 60da str r2, [r3, #12] - 801190e: e003 b.n 8011918 - } else { - /* src cannot be NULL here */ - ip4_addr_copy(iphdr->src, *src); - 8011910: 68bb ldr r3, [r7, #8] - 8011912: 681a ldr r2, [r3, #0] - 8011914: 69fb ldr r3, [r7, #28] - 8011916: 60da str r2, [r3, #12] - else { - IPH_CHKSUM_SET(iphdr, 0); - } -#endif /* LWIP_CHECKSUM_CTRL_PER_NETIF*/ -#else /* CHECKSUM_GEN_IP_INLINE */ - IPH_CHKSUM_SET(iphdr, 0); - 8011918: 69fb ldr r3, [r7, #28] - 801191a: 2200 movs r2, #0 - 801191c: 729a strb r2, [r3, #10] - 801191e: 2200 movs r2, #0 - 8011920: 72da strb r2, [r3, #11] - 8011922: e00f b.n 8011944 - } -#endif /* CHECKSUM_GEN_IP */ -#endif /* CHECKSUM_GEN_IP_INLINE */ - } else { - /* IP header already included in p */ - if (p->len < IP_HLEN) { - 8011924: 68fb ldr r3, [r7, #12] - 8011926: 895b ldrh r3, [r3, #10] - 8011928: 2b13 cmp r3, #19 - 801192a: d802 bhi.n 8011932 - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("ip4_output: LWIP_IP_HDRINCL but pbuf is too short\n")); - IP_STATS_INC(ip.err); - MIB2_STATS_INC(mib2.ipoutdiscards); - return ERR_BUF; - 801192c: f06f 0301 mvn.w r3, #1 - 8011930: e020 b.n 8011974 - } - iphdr = (struct ip_hdr *)p->payload; - 8011932: 68fb ldr r3, [r7, #12] - 8011934: 685b ldr r3, [r3, #4] - 8011936: 61fb str r3, [r7, #28] - ip4_addr_copy(dest_addr, iphdr->dest); - 8011938: 69fb ldr r3, [r7, #28] - 801193a: 691b ldr r3, [r3, #16] - 801193c: 617b str r3, [r7, #20] - dest = &dest_addr; - 801193e: f107 0314 add.w r3, r7, #20 - 8011942: 607b str r3, [r7, #4] - } -#endif /* LWIP_MULTICAST_TX_OPTIONS */ -#endif /* ENABLE_LOOPBACK */ -#if IP_FRAG - /* don't fragment if interface has mtu set to 0 [loopif] */ - if (netif->mtu && (p->tot_len > netif->mtu)) { - 8011944: 6b3b ldr r3, [r7, #48] @ 0x30 - 8011946: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8011948: 2b00 cmp r3, #0 - 801194a: d00c beq.n 8011966 - 801194c: 68fb ldr r3, [r7, #12] - 801194e: 891a ldrh r2, [r3, #8] - 8011950: 6b3b ldr r3, [r7, #48] @ 0x30 - 8011952: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8011954: 429a cmp r2, r3 - 8011956: d906 bls.n 8011966 - return ip4_frag(p, netif, dest); - 8011958: 687a ldr r2, [r7, #4] - 801195a: 6b39 ldr r1, [r7, #48] @ 0x30 - 801195c: 68f8 ldr r0, [r7, #12] - 801195e: f000 fe91 bl 8012684 - 8011962: 4603 mov r3, r0 - 8011964: e006 b.n 8011974 - } -#endif /* IP_FRAG */ - - LWIP_DEBUGF(IP_DEBUG, ("ip4_output_if: call netif->output()\n")); - return netif->output(netif, p, dest); - 8011966: 6b3b ldr r3, [r7, #48] @ 0x30 - 8011968: 695b ldr r3, [r3, #20] - 801196a: 687a ldr r2, [r7, #4] - 801196c: 68f9 ldr r1, [r7, #12] - 801196e: 6b38 ldr r0, [r7, #48] @ 0x30 - 8011970: 4798 blx r3 - 8011972: 4603 mov r3, r0 -} - 8011974: 4618 mov r0, r3 - 8011976: 3720 adds r7, #32 - 8011978: 46bd mov sp, r7 - 801197a: bd80 pop {r7, pc} - 801197c: 0801a124 .word 0x0801a124 - 8011980: 0801a158 .word 0x0801a158 - 8011984: 0801a164 .word 0x0801a164 - 8011988: 0801a18c .word 0x0801a18c - 801198c: 20019272 .word 0x20019272 - 8011990: 0801a5e4 .word 0x0801a5e4 - -08011994 : - * @param netif the network interface against which the address is checked - * @return returns non-zero if the address is a broadcast address - */ -u8_t -ip4_addr_isbroadcast_u32(u32_t addr, const struct netif *netif) -{ - 8011994: b480 push {r7} - 8011996: b085 sub sp, #20 - 8011998: af00 add r7, sp, #0 - 801199a: 6078 str r0, [r7, #4] - 801199c: 6039 str r1, [r7, #0] - ip4_addr_t ipaddr; - ip4_addr_set_u32(&ipaddr, addr); - 801199e: 687b ldr r3, [r7, #4] - 80119a0: 60fb str r3, [r7, #12] - - /* all ones (broadcast) or all zeroes (old skool broadcast) */ - if ((~addr == IPADDR_ANY) || - 80119a2: 687b ldr r3, [r7, #4] - 80119a4: f1b3 3fff cmp.w r3, #4294967295 - 80119a8: d002 beq.n 80119b0 - 80119aa: 687b ldr r3, [r7, #4] - 80119ac: 2b00 cmp r3, #0 - 80119ae: d101 bne.n 80119b4 - (addr == IPADDR_ANY)) { - return 1; - 80119b0: 2301 movs r3, #1 - 80119b2: e02a b.n 8011a0a - /* no broadcast support on this network interface? */ - } else if ((netif->flags & NETIF_FLAG_BROADCAST) == 0) { - 80119b4: 683b ldr r3, [r7, #0] - 80119b6: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 - 80119ba: f003 0302 and.w r3, r3, #2 - 80119be: 2b00 cmp r3, #0 - 80119c0: d101 bne.n 80119c6 - /* the given address cannot be a broadcast address - * nor can we check against any broadcast addresses */ - return 0; - 80119c2: 2300 movs r3, #0 - 80119c4: e021 b.n 8011a0a - /* address matches network interface address exactly? => no broadcast */ - } else if (addr == ip4_addr_get_u32(netif_ip4_addr(netif))) { - 80119c6: 683b ldr r3, [r7, #0] - 80119c8: 3304 adds r3, #4 - 80119ca: 681b ldr r3, [r3, #0] - 80119cc: 687a ldr r2, [r7, #4] - 80119ce: 429a cmp r2, r3 - 80119d0: d101 bne.n 80119d6 - return 0; - 80119d2: 2300 movs r3, #0 - 80119d4: e019 b.n 8011a0a - /* on the same (sub) network... */ - } else if (ip4_addr_netcmp(&ipaddr, netif_ip4_addr(netif), netif_ip4_netmask(netif)) - 80119d6: 68fa ldr r2, [r7, #12] - 80119d8: 683b ldr r3, [r7, #0] - 80119da: 3304 adds r3, #4 - 80119dc: 681b ldr r3, [r3, #0] - 80119de: 405a eors r2, r3 - 80119e0: 683b ldr r3, [r7, #0] - 80119e2: 3308 adds r3, #8 - 80119e4: 681b ldr r3, [r3, #0] - 80119e6: 4013 ands r3, r2 - 80119e8: 2b00 cmp r3, #0 - 80119ea: d10d bne.n 8011a08 - /* ...and host identifier bits are all ones? =>... */ - && ((addr & ~ip4_addr_get_u32(netif_ip4_netmask(netif))) == - 80119ec: 683b ldr r3, [r7, #0] - 80119ee: 3308 adds r3, #8 - 80119f0: 681b ldr r3, [r3, #0] - 80119f2: 43da mvns r2, r3 - 80119f4: 687b ldr r3, [r7, #4] - 80119f6: 401a ands r2, r3 - (IPADDR_BROADCAST & ~ip4_addr_get_u32(netif_ip4_netmask(netif))))) { - 80119f8: 683b ldr r3, [r7, #0] - 80119fa: 3308 adds r3, #8 - 80119fc: 681b ldr r3, [r3, #0] - 80119fe: 43db mvns r3, r3 - && ((addr & ~ip4_addr_get_u32(netif_ip4_netmask(netif))) == - 8011a00: 429a cmp r2, r3 - 8011a02: d101 bne.n 8011a08 - /* => network broadcast address */ - return 1; - 8011a04: 2301 movs r3, #1 - 8011a06: e000 b.n 8011a0a - } else { - return 0; - 8011a08: 2300 movs r3, #0 - } -} - 8011a0a: 4618 mov r0, r3 - 8011a0c: 3714 adds r7, #20 - 8011a0e: 46bd mov sp, r7 - 8011a10: f85d 7b04 ldr.w r7, [sp], #4 - 8011a14: 4770 bx lr - -08011a16 : - * @param cp IP address in ascii representation (e.g. "127.0.0.1") - * @return ip address in network order - */ -u32_t -ipaddr_addr(const char *cp) -{ - 8011a16: b580 push {r7, lr} - 8011a18: b084 sub sp, #16 - 8011a1a: af00 add r7, sp, #0 - 8011a1c: 6078 str r0, [r7, #4] - ip4_addr_t val; - - if (ip4addr_aton(cp, &val)) { - 8011a1e: f107 030c add.w r3, r7, #12 - 8011a22: 4619 mov r1, r3 - 8011a24: 6878 ldr r0, [r7, #4] - 8011a26: f000 f80b bl 8011a40 - 8011a2a: 4603 mov r3, r0 - 8011a2c: 2b00 cmp r3, #0 - 8011a2e: d001 beq.n 8011a34 - return ip4_addr_get_u32(&val); - 8011a30: 68fb ldr r3, [r7, #12] - 8011a32: e001 b.n 8011a38 - } - return (IPADDR_NONE); - 8011a34: f04f 33ff mov.w r3, #4294967295 -} - 8011a38: 4618 mov r0, r3 - 8011a3a: 3710 adds r7, #16 - 8011a3c: 46bd mov sp, r7 - 8011a3e: bd80 pop {r7, pc} - -08011a40 : - * @param addr pointer to which to save the ip address in network order - * @return 1 if cp could be converted to addr, 0 on failure - */ -int -ip4addr_aton(const char *cp, ip4_addr_t *addr) -{ - 8011a40: b580 push {r7, lr} - 8011a42: b08a sub sp, #40 @ 0x28 - 8011a44: af00 add r7, sp, #0 - 8011a46: 6078 str r0, [r7, #4] - 8011a48: 6039 str r1, [r7, #0] - u32_t val; - u8_t base; - char c; - u32_t parts[4]; - u32_t *pp = parts; - 8011a4a: f107 030c add.w r3, r7, #12 - 8011a4e: 61fb str r3, [r7, #28] - - c = *cp; - 8011a50: 687b ldr r3, [r7, #4] - 8011a52: 781b ldrb r3, [r3, #0] - 8011a54: f887 3022 strb.w r3, [r7, #34] @ 0x22 - /* - * Collect number up to ``.''. - * Values are specified as for C: - * 0x=hex, 0=octal, 1-9=decimal. - */ - if (!lwip_isdigit(c)) { - 8011a58: f897 3022 ldrb.w r3, [r7, #34] @ 0x22 - 8011a5c: 3301 adds r3, #1 - 8011a5e: 4a89 ldr r2, [pc, #548] @ (8011c84 ) - 8011a60: 4413 add r3, r2 - 8011a62: 781b ldrb r3, [r3, #0] - 8011a64: f003 0304 and.w r3, r3, #4 - 8011a68: 2b00 cmp r3, #0 - 8011a6a: d101 bne.n 8011a70 - return 0; - 8011a6c: 2300 movs r3, #0 - 8011a6e: e105 b.n 8011c7c - } - val = 0; - 8011a70: 2300 movs r3, #0 - 8011a72: 627b str r3, [r7, #36] @ 0x24 - base = 10; - 8011a74: 230a movs r3, #10 - 8011a76: f887 3023 strb.w r3, [r7, #35] @ 0x23 - if (c == '0') { - 8011a7a: f897 3022 ldrb.w r3, [r7, #34] @ 0x22 - 8011a7e: 2b30 cmp r3, #48 @ 0x30 - 8011a80: d11c bne.n 8011abc - c = *++cp; - 8011a82: 687b ldr r3, [r7, #4] - 8011a84: 3301 adds r3, #1 - 8011a86: 607b str r3, [r7, #4] - 8011a88: 687b ldr r3, [r7, #4] - 8011a8a: 781b ldrb r3, [r3, #0] - 8011a8c: f887 3022 strb.w r3, [r7, #34] @ 0x22 - if (c == 'x' || c == 'X') { - 8011a90: f897 3022 ldrb.w r3, [r7, #34] @ 0x22 - 8011a94: 2b78 cmp r3, #120 @ 0x78 - 8011a96: d003 beq.n 8011aa0 - 8011a98: f897 3022 ldrb.w r3, [r7, #34] @ 0x22 - 8011a9c: 2b58 cmp r3, #88 @ 0x58 - 8011a9e: d10a bne.n 8011ab6 - base = 16; - 8011aa0: 2310 movs r3, #16 - 8011aa2: f887 3023 strb.w r3, [r7, #35] @ 0x23 - c = *++cp; - 8011aa6: 687b ldr r3, [r7, #4] - 8011aa8: 3301 adds r3, #1 - 8011aaa: 607b str r3, [r7, #4] - 8011aac: 687b ldr r3, [r7, #4] - 8011aae: 781b ldrb r3, [r3, #0] - 8011ab0: f887 3022 strb.w r3, [r7, #34] @ 0x22 - 8011ab4: e002 b.n 8011abc - } else { - base = 8; - 8011ab6: 2308 movs r3, #8 - 8011ab8: f887 3023 strb.w r3, [r7, #35] @ 0x23 - } - } - for (;;) { - if (lwip_isdigit(c)) { - 8011abc: f897 3022 ldrb.w r3, [r7, #34] @ 0x22 - 8011ac0: 3301 adds r3, #1 - 8011ac2: 4a70 ldr r2, [pc, #448] @ (8011c84 ) - 8011ac4: 4413 add r3, r2 - 8011ac6: 781b ldrb r3, [r3, #0] - 8011ac8: f003 0304 and.w r3, r3, #4 - 8011acc: 2b00 cmp r3, #0 - 8011ace: d011 beq.n 8011af4 - val = (val * base) + (u32_t)(c - '0'); - 8011ad0: f897 3023 ldrb.w r3, [r7, #35] @ 0x23 - 8011ad4: 6a7a ldr r2, [r7, #36] @ 0x24 - 8011ad6: fb03 f202 mul.w r2, r3, r2 - 8011ada: f897 3022 ldrb.w r3, [r7, #34] @ 0x22 - 8011ade: 4413 add r3, r2 - 8011ae0: 3b30 subs r3, #48 @ 0x30 - 8011ae2: 627b str r3, [r7, #36] @ 0x24 - c = *++cp; - 8011ae4: 687b ldr r3, [r7, #4] - 8011ae6: 3301 adds r3, #1 - 8011ae8: 607b str r3, [r7, #4] - 8011aea: 687b ldr r3, [r7, #4] - 8011aec: 781b ldrb r3, [r3, #0] - 8011aee: f887 3022 strb.w r3, [r7, #34] @ 0x22 - 8011af2: e7e3 b.n 8011abc - } else if (base == 16 && lwip_isxdigit(c)) { - 8011af4: f897 3023 ldrb.w r3, [r7, #35] @ 0x23 - 8011af8: 2b10 cmp r3, #16 - 8011afa: d127 bne.n 8011b4c - 8011afc: f897 3022 ldrb.w r3, [r7, #34] @ 0x22 - 8011b00: 3301 adds r3, #1 - 8011b02: 4a60 ldr r2, [pc, #384] @ (8011c84 ) - 8011b04: 4413 add r3, r2 - 8011b06: 781b ldrb r3, [r3, #0] - 8011b08: f003 0344 and.w r3, r3, #68 @ 0x44 - 8011b0c: 2b00 cmp r3, #0 - 8011b0e: d01d beq.n 8011b4c - val = (val << 4) | (u32_t)(c + 10 - (lwip_islower(c) ? 'a' : 'A')); - 8011b10: 6a7b ldr r3, [r7, #36] @ 0x24 - 8011b12: 011b lsls r3, r3, #4 - 8011b14: f897 2022 ldrb.w r2, [r7, #34] @ 0x22 - 8011b18: f102 010a add.w r1, r2, #10 - 8011b1c: f897 2022 ldrb.w r2, [r7, #34] @ 0x22 - 8011b20: 3201 adds r2, #1 - 8011b22: 4858 ldr r0, [pc, #352] @ (8011c84 ) - 8011b24: 4402 add r2, r0 - 8011b26: 7812 ldrb r2, [r2, #0] - 8011b28: f002 0203 and.w r2, r2, #3 - 8011b2c: 2a02 cmp r2, #2 - 8011b2e: d101 bne.n 8011b34 - 8011b30: 2261 movs r2, #97 @ 0x61 - 8011b32: e000 b.n 8011b36 - 8011b34: 2241 movs r2, #65 @ 0x41 - 8011b36: 1a8a subs r2, r1, r2 - 8011b38: 4313 orrs r3, r2 - 8011b3a: 627b str r3, [r7, #36] @ 0x24 - c = *++cp; - 8011b3c: 687b ldr r3, [r7, #4] - 8011b3e: 3301 adds r3, #1 - 8011b40: 607b str r3, [r7, #4] - 8011b42: 687b ldr r3, [r7, #4] - 8011b44: 781b ldrb r3, [r3, #0] - 8011b46: f887 3022 strb.w r3, [r7, #34] @ 0x22 - if (lwip_isdigit(c)) { - 8011b4a: e7b7 b.n 8011abc - } else { - break; - } - } - if (c == '.') { - 8011b4c: f897 3022 ldrb.w r3, [r7, #34] @ 0x22 - 8011b50: 2b2e cmp r3, #46 @ 0x2e - 8011b52: d114 bne.n 8011b7e - * Internet format: - * a.b.c.d - * a.b.c (with c treated as 16 bits) - * a.b (with b treated as 24 bits) - */ - if (pp >= parts + 3) { - 8011b54: f107 030c add.w r3, r7, #12 - 8011b58: 330c adds r3, #12 - 8011b5a: 69fa ldr r2, [r7, #28] - 8011b5c: 429a cmp r2, r3 - 8011b5e: d301 bcc.n 8011b64 - return 0; - 8011b60: 2300 movs r3, #0 - 8011b62: e08b b.n 8011c7c - } - *pp++ = val; - 8011b64: 69fb ldr r3, [r7, #28] - 8011b66: 1d1a adds r2, r3, #4 - 8011b68: 61fa str r2, [r7, #28] - 8011b6a: 6a7a ldr r2, [r7, #36] @ 0x24 - 8011b6c: 601a str r2, [r3, #0] - c = *++cp; - 8011b6e: 687b ldr r3, [r7, #4] - 8011b70: 3301 adds r3, #1 - 8011b72: 607b str r3, [r7, #4] - 8011b74: 687b ldr r3, [r7, #4] - 8011b76: 781b ldrb r3, [r3, #0] - 8011b78: f887 3022 strb.w r3, [r7, #34] @ 0x22 - if (!lwip_isdigit(c)) { - 8011b7c: e76c b.n 8011a58 - } else { - break; - 8011b7e: bf00 nop - } - } - /* - * Check for trailing characters. - */ - if (c != '\0' && !lwip_isspace(c)) { - 8011b80: f897 3022 ldrb.w r3, [r7, #34] @ 0x22 - 8011b84: 2b00 cmp r3, #0 - 8011b86: d00b beq.n 8011ba0 - 8011b88: f897 3022 ldrb.w r3, [r7, #34] @ 0x22 - 8011b8c: 3301 adds r3, #1 - 8011b8e: 4a3d ldr r2, [pc, #244] @ (8011c84 ) - 8011b90: 4413 add r3, r2 - 8011b92: 781b ldrb r3, [r3, #0] - 8011b94: f003 0308 and.w r3, r3, #8 - 8011b98: 2b00 cmp r3, #0 - 8011b9a: d101 bne.n 8011ba0 - return 0; - 8011b9c: 2300 movs r3, #0 - 8011b9e: e06d b.n 8011c7c - } - /* - * Concoct the address according to - * the number of parts specified. - */ - switch (pp - parts + 1) { - 8011ba0: f107 030c add.w r3, r7, #12 - 8011ba4: 69fa ldr r2, [r7, #28] - 8011ba6: 1ad3 subs r3, r2, r3 - 8011ba8: 109b asrs r3, r3, #2 - 8011baa: 3301 adds r3, #1 - 8011bac: 2b04 cmp r3, #4 - 8011bae: d853 bhi.n 8011c58 - 8011bb0: a201 add r2, pc, #4 @ (adr r2, 8011bb8 ) - 8011bb2: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 8011bb6: bf00 nop - 8011bb8: 08011bcd .word 0x08011bcd - 8011bbc: 08011c67 .word 0x08011c67 - 8011bc0: 08011bd1 .word 0x08011bd1 - 8011bc4: 08011bf3 .word 0x08011bf3 - 8011bc8: 08011c21 .word 0x08011c21 - - case 0: - return 0; /* initial nondigit */ - 8011bcc: 2300 movs r3, #0 - 8011bce: e055 b.n 8011c7c - - case 1: /* a -- 32 bits */ - break; - - case 2: /* a.b -- 8.24 bits */ - if (val > 0xffffffUL) { - 8011bd0: 6a7b ldr r3, [r7, #36] @ 0x24 - 8011bd2: f1b3 7f80 cmp.w r3, #16777216 @ 0x1000000 - 8011bd6: d301 bcc.n 8011bdc - return 0; - 8011bd8: 2300 movs r3, #0 - 8011bda: e04f b.n 8011c7c - } - if (parts[0] > 0xff) { - 8011bdc: 68fb ldr r3, [r7, #12] - 8011bde: 2bff cmp r3, #255 @ 0xff - 8011be0: d901 bls.n 8011be6 - return 0; - 8011be2: 2300 movs r3, #0 - 8011be4: e04a b.n 8011c7c - } - val |= parts[0] << 24; - 8011be6: 68fb ldr r3, [r7, #12] - 8011be8: 061b lsls r3, r3, #24 - 8011bea: 6a7a ldr r2, [r7, #36] @ 0x24 - 8011bec: 4313 orrs r3, r2 - 8011bee: 627b str r3, [r7, #36] @ 0x24 - break; - 8011bf0: e03a b.n 8011c68 - - case 3: /* a.b.c -- 8.8.16 bits */ - if (val > 0xffff) { - 8011bf2: 6a7b ldr r3, [r7, #36] @ 0x24 - 8011bf4: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8011bf8: d301 bcc.n 8011bfe - return 0; - 8011bfa: 2300 movs r3, #0 - 8011bfc: e03e b.n 8011c7c - } - if ((parts[0] > 0xff) || (parts[1] > 0xff)) { - 8011bfe: 68fb ldr r3, [r7, #12] - 8011c00: 2bff cmp r3, #255 @ 0xff - 8011c02: d802 bhi.n 8011c0a - 8011c04: 693b ldr r3, [r7, #16] - 8011c06: 2bff cmp r3, #255 @ 0xff - 8011c08: d901 bls.n 8011c0e - return 0; - 8011c0a: 2300 movs r3, #0 - 8011c0c: e036 b.n 8011c7c - } - val |= (parts[0] << 24) | (parts[1] << 16); - 8011c0e: 68fb ldr r3, [r7, #12] - 8011c10: 061a lsls r2, r3, #24 - 8011c12: 693b ldr r3, [r7, #16] - 8011c14: 041b lsls r3, r3, #16 - 8011c16: 4313 orrs r3, r2 - 8011c18: 6a7a ldr r2, [r7, #36] @ 0x24 - 8011c1a: 4313 orrs r3, r2 - 8011c1c: 627b str r3, [r7, #36] @ 0x24 - break; - 8011c1e: e023 b.n 8011c68 - - case 4: /* a.b.c.d -- 8.8.8.8 bits */ - if (val > 0xff) { - 8011c20: 6a7b ldr r3, [r7, #36] @ 0x24 - 8011c22: 2bff cmp r3, #255 @ 0xff - 8011c24: d901 bls.n 8011c2a - return 0; - 8011c26: 2300 movs r3, #0 - 8011c28: e028 b.n 8011c7c - } - if ((parts[0] > 0xff) || (parts[1] > 0xff) || (parts[2] > 0xff)) { - 8011c2a: 68fb ldr r3, [r7, #12] - 8011c2c: 2bff cmp r3, #255 @ 0xff - 8011c2e: d805 bhi.n 8011c3c - 8011c30: 693b ldr r3, [r7, #16] - 8011c32: 2bff cmp r3, #255 @ 0xff - 8011c34: d802 bhi.n 8011c3c - 8011c36: 697b ldr r3, [r7, #20] - 8011c38: 2bff cmp r3, #255 @ 0xff - 8011c3a: d901 bls.n 8011c40 - return 0; - 8011c3c: 2300 movs r3, #0 - 8011c3e: e01d b.n 8011c7c - } - val |= (parts[0] << 24) | (parts[1] << 16) | (parts[2] << 8); - 8011c40: 68fb ldr r3, [r7, #12] - 8011c42: 061a lsls r2, r3, #24 - 8011c44: 693b ldr r3, [r7, #16] - 8011c46: 041b lsls r3, r3, #16 - 8011c48: 431a orrs r2, r3 - 8011c4a: 697b ldr r3, [r7, #20] - 8011c4c: 021b lsls r3, r3, #8 - 8011c4e: 4313 orrs r3, r2 - 8011c50: 6a7a ldr r2, [r7, #36] @ 0x24 - 8011c52: 4313 orrs r3, r2 - 8011c54: 627b str r3, [r7, #36] @ 0x24 - break; - 8011c56: e007 b.n 8011c68 - default: - LWIP_ASSERT("unhandled", 0); - 8011c58: 4b0b ldr r3, [pc, #44] @ (8011c88 ) - 8011c5a: 22f9 movs r2, #249 @ 0xf9 - 8011c5c: 490b ldr r1, [pc, #44] @ (8011c8c ) - 8011c5e: 480c ldr r0, [pc, #48] @ (8011c90 ) - 8011c60: f001 f80a bl 8012c78 - break; - 8011c64: e000 b.n 8011c68 - break; - 8011c66: bf00 nop - } - if (addr) { - 8011c68: 683b ldr r3, [r7, #0] - 8011c6a: 2b00 cmp r3, #0 - 8011c6c: d005 beq.n 8011c7a - ip4_addr_set_u32(addr, lwip_htonl(val)); - 8011c6e: 6a78 ldr r0, [r7, #36] @ 0x24 - 8011c70: f7f4 fedf bl 8006a32 - 8011c74: 4602 mov r2, r0 - 8011c76: 683b ldr r3, [r7, #0] - 8011c78: 601a str r2, [r3, #0] - } - return 1; - 8011c7a: 2301 movs r3, #1 -} - 8011c7c: 4618 mov r0, r3 - 8011c7e: 3728 adds r7, #40 @ 0x28 - 8011c80: 46bd mov sp, r7 - 8011c82: bd80 pop {r7, pc} - 8011c84: 0801a5fa .word 0x0801a5fa - 8011c88: 0801a1bc .word 0x0801a1bc - 8011c8c: 0801a1f8 .word 0x0801a1f8 - 8011c90: 0801a204 .word 0x0801a204 - -08011c94 : - * - * Should be called every 1000 msec (defined by IP_TMR_INTERVAL). - */ -void -ip_reass_tmr(void) -{ - 8011c94: b580 push {r7, lr} - 8011c96: b084 sub sp, #16 - 8011c98: af00 add r7, sp, #0 - struct ip_reassdata *r, *prev = NULL; - 8011c9a: 2300 movs r3, #0 - 8011c9c: 60bb str r3, [r7, #8] - - r = reassdatagrams; - 8011c9e: 4b12 ldr r3, [pc, #72] @ (8011ce8 ) - 8011ca0: 681b ldr r3, [r3, #0] - 8011ca2: 60fb str r3, [r7, #12] - while (r != NULL) { - 8011ca4: e018 b.n 8011cd8 - /* Decrement the timer. Once it reaches 0, - * clean up the incomplete fragment assembly */ - if (r->timer > 0) { - 8011ca6: 68fb ldr r3, [r7, #12] - 8011ca8: 7fdb ldrb r3, [r3, #31] - 8011caa: 2b00 cmp r3, #0 - 8011cac: d00b beq.n 8011cc6 - r->timer--; - 8011cae: 68fb ldr r3, [r7, #12] - 8011cb0: 7fdb ldrb r3, [r3, #31] - 8011cb2: 3b01 subs r3, #1 - 8011cb4: b2da uxtb r2, r3 - 8011cb6: 68fb ldr r3, [r7, #12] - 8011cb8: 77da strb r2, [r3, #31] - LWIP_DEBUGF(IP_REASS_DEBUG, ("ip_reass_tmr: timer dec %"U16_F"\n", (u16_t)r->timer)); - prev = r; - 8011cba: 68fb ldr r3, [r7, #12] - 8011cbc: 60bb str r3, [r7, #8] - r = r->next; - 8011cbe: 68fb ldr r3, [r7, #12] - 8011cc0: 681b ldr r3, [r3, #0] - 8011cc2: 60fb str r3, [r7, #12] - 8011cc4: e008 b.n 8011cd8 - } else { - /* reassembly timed out */ - struct ip_reassdata *tmp; - LWIP_DEBUGF(IP_REASS_DEBUG, ("ip_reass_tmr: timer timed out\n")); - tmp = r; - 8011cc6: 68fb ldr r3, [r7, #12] - 8011cc8: 607b str r3, [r7, #4] - /* get the next pointer before freeing */ - r = r->next; - 8011cca: 68fb ldr r3, [r7, #12] - 8011ccc: 681b ldr r3, [r3, #0] - 8011cce: 60fb str r3, [r7, #12] - /* free the helper struct and all enqueued pbufs */ - ip_reass_free_complete_datagram(tmp, prev); - 8011cd0: 68b9 ldr r1, [r7, #8] - 8011cd2: 6878 ldr r0, [r7, #4] - 8011cd4: f000 f80a bl 8011cec - while (r != NULL) { - 8011cd8: 68fb ldr r3, [r7, #12] - 8011cda: 2b00 cmp r3, #0 - 8011cdc: d1e3 bne.n 8011ca6 - } - } -} - 8011cde: bf00 nop - 8011ce0: bf00 nop - 8011ce2: 3710 adds r7, #16 - 8011ce4: 46bd mov sp, r7 - 8011ce6: bd80 pop {r7, pc} - 8011ce8: 20019274 .word 0x20019274 - -08011cec : - * @param prev the previous datagram in the linked list - * @return the number of pbufs freed - */ -static int -ip_reass_free_complete_datagram(struct ip_reassdata *ipr, struct ip_reassdata *prev) -{ - 8011cec: b580 push {r7, lr} - 8011cee: b088 sub sp, #32 - 8011cf0: af00 add r7, sp, #0 - 8011cf2: 6078 str r0, [r7, #4] - 8011cf4: 6039 str r1, [r7, #0] - u16_t pbufs_freed = 0; - 8011cf6: 2300 movs r3, #0 - 8011cf8: 83fb strh r3, [r7, #30] - u16_t clen; - struct pbuf *p; - struct ip_reass_helper *iprh; - - LWIP_ASSERT("prev != ipr", prev != ipr); - 8011cfa: 683a ldr r2, [r7, #0] - 8011cfc: 687b ldr r3, [r7, #4] - 8011cfe: 429a cmp r2, r3 - 8011d00: d105 bne.n 8011d0e - 8011d02: 4b45 ldr r3, [pc, #276] @ (8011e18 ) - 8011d04: 22ab movs r2, #171 @ 0xab - 8011d06: 4945 ldr r1, [pc, #276] @ (8011e1c ) - 8011d08: 4845 ldr r0, [pc, #276] @ (8011e20 ) - 8011d0a: f000 ffb5 bl 8012c78 - if (prev != NULL) { - 8011d0e: 683b ldr r3, [r7, #0] - 8011d10: 2b00 cmp r3, #0 - 8011d12: d00a beq.n 8011d2a - LWIP_ASSERT("prev->next == ipr", prev->next == ipr); - 8011d14: 683b ldr r3, [r7, #0] - 8011d16: 681b ldr r3, [r3, #0] - 8011d18: 687a ldr r2, [r7, #4] - 8011d1a: 429a cmp r2, r3 - 8011d1c: d005 beq.n 8011d2a - 8011d1e: 4b3e ldr r3, [pc, #248] @ (8011e18 ) - 8011d20: 22ad movs r2, #173 @ 0xad - 8011d22: 4940 ldr r1, [pc, #256] @ (8011e24 ) - 8011d24: 483e ldr r0, [pc, #248] @ (8011e20 ) - 8011d26: f000 ffa7 bl 8012c78 - } - - MIB2_STATS_INC(mib2.ipreasmfails); -#if LWIP_ICMP - iprh = (struct ip_reass_helper *)ipr->p->payload; - 8011d2a: 687b ldr r3, [r7, #4] - 8011d2c: 685b ldr r3, [r3, #4] - 8011d2e: 685b ldr r3, [r3, #4] - 8011d30: 617b str r3, [r7, #20] - if (iprh->start == 0) { - 8011d32: 697b ldr r3, [r7, #20] - 8011d34: 889b ldrh r3, [r3, #4] - 8011d36: b29b uxth r3, r3 - 8011d38: 2b00 cmp r3, #0 - 8011d3a: d12a bne.n 8011d92 - /* The first fragment was received, send ICMP time exceeded. */ - /* First, de-queue the first pbuf from r->p. */ - p = ipr->p; - 8011d3c: 687b ldr r3, [r7, #4] - 8011d3e: 685b ldr r3, [r3, #4] - 8011d40: 61bb str r3, [r7, #24] - ipr->p = iprh->next_pbuf; - 8011d42: 697b ldr r3, [r7, #20] - 8011d44: 681a ldr r2, [r3, #0] - 8011d46: 687b ldr r3, [r7, #4] - 8011d48: 605a str r2, [r3, #4] - /* Then, copy the original header into it. */ - SMEMCPY(p->payload, &ipr->iphdr, IP_HLEN); - 8011d4a: 69bb ldr r3, [r7, #24] - 8011d4c: 6858 ldr r0, [r3, #4] - 8011d4e: 687b ldr r3, [r7, #4] - 8011d50: 3308 adds r3, #8 - 8011d52: 2214 movs r2, #20 - 8011d54: 4619 mov r1, r3 - 8011d56: f001 f88b bl 8012e70 - icmp_time_exceeded(p, ICMP_TE_FRAG); - 8011d5a: 2101 movs r1, #1 - 8011d5c: 69b8 ldr r0, [r7, #24] - 8011d5e: f7ff faeb bl 8011338 - clen = pbuf_clen(p); - 8011d62: 69b8 ldr r0, [r7, #24] - 8011d64: f7f6 fa28 bl 80081b8 - 8011d68: 4603 mov r3, r0 - 8011d6a: 827b strh r3, [r7, #18] - LWIP_ASSERT("pbufs_freed + clen <= 0xffff", pbufs_freed + clen <= 0xffff); - 8011d6c: 8bfa ldrh r2, [r7, #30] - 8011d6e: 8a7b ldrh r3, [r7, #18] - 8011d70: 4413 add r3, r2 - 8011d72: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8011d76: db05 blt.n 8011d84 - 8011d78: 4b27 ldr r3, [pc, #156] @ (8011e18 ) - 8011d7a: 22bc movs r2, #188 @ 0xbc - 8011d7c: 492a ldr r1, [pc, #168] @ (8011e28 ) - 8011d7e: 4828 ldr r0, [pc, #160] @ (8011e20 ) - 8011d80: f000 ff7a bl 8012c78 - pbufs_freed = (u16_t)(pbufs_freed + clen); - 8011d84: 8bfa ldrh r2, [r7, #30] - 8011d86: 8a7b ldrh r3, [r7, #18] - 8011d88: 4413 add r3, r2 - 8011d8a: 83fb strh r3, [r7, #30] - pbuf_free(p); - 8011d8c: 69b8 ldr r0, [r7, #24] - 8011d8e: f7f6 f98b bl 80080a8 - } -#endif /* LWIP_ICMP */ - - /* First, free all received pbufs. The individual pbufs need to be released - separately as they have not yet been chained */ - p = ipr->p; - 8011d92: 687b ldr r3, [r7, #4] - 8011d94: 685b ldr r3, [r3, #4] - 8011d96: 61bb str r3, [r7, #24] - while (p != NULL) { - 8011d98: e01f b.n 8011dda - struct pbuf *pcur; - iprh = (struct ip_reass_helper *)p->payload; - 8011d9a: 69bb ldr r3, [r7, #24] - 8011d9c: 685b ldr r3, [r3, #4] - 8011d9e: 617b str r3, [r7, #20] - pcur = p; - 8011da0: 69bb ldr r3, [r7, #24] - 8011da2: 60fb str r3, [r7, #12] - /* get the next pointer before freeing */ - p = iprh->next_pbuf; - 8011da4: 697b ldr r3, [r7, #20] - 8011da6: 681b ldr r3, [r3, #0] - 8011da8: 61bb str r3, [r7, #24] - clen = pbuf_clen(pcur); - 8011daa: 68f8 ldr r0, [r7, #12] - 8011dac: f7f6 fa04 bl 80081b8 - 8011db0: 4603 mov r3, r0 - 8011db2: 827b strh r3, [r7, #18] - LWIP_ASSERT("pbufs_freed + clen <= 0xffff", pbufs_freed + clen <= 0xffff); - 8011db4: 8bfa ldrh r2, [r7, #30] - 8011db6: 8a7b ldrh r3, [r7, #18] - 8011db8: 4413 add r3, r2 - 8011dba: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8011dbe: db05 blt.n 8011dcc - 8011dc0: 4b15 ldr r3, [pc, #84] @ (8011e18 ) - 8011dc2: 22cc movs r2, #204 @ 0xcc - 8011dc4: 4918 ldr r1, [pc, #96] @ (8011e28 ) - 8011dc6: 4816 ldr r0, [pc, #88] @ (8011e20 ) - 8011dc8: f000 ff56 bl 8012c78 - pbufs_freed = (u16_t)(pbufs_freed + clen); - 8011dcc: 8bfa ldrh r2, [r7, #30] - 8011dce: 8a7b ldrh r3, [r7, #18] - 8011dd0: 4413 add r3, r2 - 8011dd2: 83fb strh r3, [r7, #30] - pbuf_free(pcur); - 8011dd4: 68f8 ldr r0, [r7, #12] - 8011dd6: f7f6 f967 bl 80080a8 - while (p != NULL) { - 8011dda: 69bb ldr r3, [r7, #24] - 8011ddc: 2b00 cmp r3, #0 - 8011dde: d1dc bne.n 8011d9a - } - /* Then, unchain the struct ip_reassdata from the list and free it. */ - ip_reass_dequeue_datagram(ipr, prev); - 8011de0: 6839 ldr r1, [r7, #0] - 8011de2: 6878 ldr r0, [r7, #4] - 8011de4: f000 f8c2 bl 8011f6c - LWIP_ASSERT("ip_reass_pbufcount >= pbufs_freed", ip_reass_pbufcount >= pbufs_freed); - 8011de8: 4b10 ldr r3, [pc, #64] @ (8011e2c ) - 8011dea: 881b ldrh r3, [r3, #0] - 8011dec: 8bfa ldrh r2, [r7, #30] - 8011dee: 429a cmp r2, r3 - 8011df0: d905 bls.n 8011dfe - 8011df2: 4b09 ldr r3, [pc, #36] @ (8011e18 ) - 8011df4: 22d2 movs r2, #210 @ 0xd2 - 8011df6: 490e ldr r1, [pc, #56] @ (8011e30 ) - 8011df8: 4809 ldr r0, [pc, #36] @ (8011e20 ) - 8011dfa: f000 ff3d bl 8012c78 - ip_reass_pbufcount = (u16_t)(ip_reass_pbufcount - pbufs_freed); - 8011dfe: 4b0b ldr r3, [pc, #44] @ (8011e2c ) - 8011e00: 881a ldrh r2, [r3, #0] - 8011e02: 8bfb ldrh r3, [r7, #30] - 8011e04: 1ad3 subs r3, r2, r3 - 8011e06: b29a uxth r2, r3 - 8011e08: 4b08 ldr r3, [pc, #32] @ (8011e2c ) - 8011e0a: 801a strh r2, [r3, #0] - - return pbufs_freed; - 8011e0c: 8bfb ldrh r3, [r7, #30] -} - 8011e0e: 4618 mov r0, r3 - 8011e10: 3720 adds r7, #32 - 8011e12: 46bd mov sp, r7 - 8011e14: bd80 pop {r7, pc} - 8011e16: bf00 nop - 8011e18: 0801a22c .word 0x0801a22c - 8011e1c: 0801a268 .word 0x0801a268 - 8011e20: 0801a274 .word 0x0801a274 - 8011e24: 0801a29c .word 0x0801a29c - 8011e28: 0801a2b0 .word 0x0801a2b0 - 8011e2c: 20019278 .word 0x20019278 - 8011e30: 0801a2d0 .word 0x0801a2d0 - -08011e34 : - * (used for freeing other datagrams if not enough space) - * @return the number of pbufs freed - */ -static int -ip_reass_remove_oldest_datagram(struct ip_hdr *fraghdr, int pbufs_needed) -{ - 8011e34: b580 push {r7, lr} - 8011e36: b08a sub sp, #40 @ 0x28 - 8011e38: af00 add r7, sp, #0 - 8011e3a: 6078 str r0, [r7, #4] - 8011e3c: 6039 str r1, [r7, #0] - /* @todo Can't we simply remove the last datagram in the - * linked list behind reassdatagrams? - */ - struct ip_reassdata *r, *oldest, *prev, *oldest_prev; - int pbufs_freed = 0, pbufs_freed_current; - 8011e3e: 2300 movs r3, #0 - 8011e40: 617b str r3, [r7, #20] - int other_datagrams; - - /* Free datagrams until being allowed to enqueue 'pbufs_needed' pbufs, - * but don't free the datagram that 'fraghdr' belongs to! */ - do { - oldest = NULL; - 8011e42: 2300 movs r3, #0 - 8011e44: 623b str r3, [r7, #32] - prev = NULL; - 8011e46: 2300 movs r3, #0 - 8011e48: 61fb str r3, [r7, #28] - oldest_prev = NULL; - 8011e4a: 2300 movs r3, #0 - 8011e4c: 61bb str r3, [r7, #24] - other_datagrams = 0; - 8011e4e: 2300 movs r3, #0 - 8011e50: 613b str r3, [r7, #16] - r = reassdatagrams; - 8011e52: 4b28 ldr r3, [pc, #160] @ (8011ef4 ) - 8011e54: 681b ldr r3, [r3, #0] - 8011e56: 627b str r3, [r7, #36] @ 0x24 - while (r != NULL) { - 8011e58: e030 b.n 8011ebc - if (!IP_ADDRESSES_AND_ID_MATCH(&r->iphdr, fraghdr)) { - 8011e5a: 6a7b ldr r3, [r7, #36] @ 0x24 - 8011e5c: 695a ldr r2, [r3, #20] - 8011e5e: 687b ldr r3, [r7, #4] - 8011e60: 68db ldr r3, [r3, #12] - 8011e62: 429a cmp r2, r3 - 8011e64: d10c bne.n 8011e80 - 8011e66: 6a7b ldr r3, [r7, #36] @ 0x24 - 8011e68: 699a ldr r2, [r3, #24] - 8011e6a: 687b ldr r3, [r7, #4] - 8011e6c: 691b ldr r3, [r3, #16] - 8011e6e: 429a cmp r2, r3 - 8011e70: d106 bne.n 8011e80 - 8011e72: 6a7b ldr r3, [r7, #36] @ 0x24 - 8011e74: 899a ldrh r2, [r3, #12] - 8011e76: 687b ldr r3, [r7, #4] - 8011e78: 889b ldrh r3, [r3, #4] - 8011e7a: b29b uxth r3, r3 - 8011e7c: 429a cmp r2, r3 - 8011e7e: d014 beq.n 8011eaa - /* Not the same datagram as fraghdr */ - other_datagrams++; - 8011e80: 693b ldr r3, [r7, #16] - 8011e82: 3301 adds r3, #1 - 8011e84: 613b str r3, [r7, #16] - if (oldest == NULL) { - 8011e86: 6a3b ldr r3, [r7, #32] - 8011e88: 2b00 cmp r3, #0 - 8011e8a: d104 bne.n 8011e96 - oldest = r; - 8011e8c: 6a7b ldr r3, [r7, #36] @ 0x24 - 8011e8e: 623b str r3, [r7, #32] - oldest_prev = prev; - 8011e90: 69fb ldr r3, [r7, #28] - 8011e92: 61bb str r3, [r7, #24] - 8011e94: e009 b.n 8011eaa - } else if (r->timer <= oldest->timer) { - 8011e96: 6a7b ldr r3, [r7, #36] @ 0x24 - 8011e98: 7fda ldrb r2, [r3, #31] - 8011e9a: 6a3b ldr r3, [r7, #32] - 8011e9c: 7fdb ldrb r3, [r3, #31] - 8011e9e: 429a cmp r2, r3 - 8011ea0: d803 bhi.n 8011eaa - /* older than the previous oldest */ - oldest = r; - 8011ea2: 6a7b ldr r3, [r7, #36] @ 0x24 - 8011ea4: 623b str r3, [r7, #32] - oldest_prev = prev; - 8011ea6: 69fb ldr r3, [r7, #28] - 8011ea8: 61bb str r3, [r7, #24] - } - } - if (r->next != NULL) { - 8011eaa: 6a7b ldr r3, [r7, #36] @ 0x24 - 8011eac: 681b ldr r3, [r3, #0] - 8011eae: 2b00 cmp r3, #0 - 8011eb0: d001 beq.n 8011eb6 - prev = r; - 8011eb2: 6a7b ldr r3, [r7, #36] @ 0x24 - 8011eb4: 61fb str r3, [r7, #28] - } - r = r->next; - 8011eb6: 6a7b ldr r3, [r7, #36] @ 0x24 - 8011eb8: 681b ldr r3, [r3, #0] - 8011eba: 627b str r3, [r7, #36] @ 0x24 - while (r != NULL) { - 8011ebc: 6a7b ldr r3, [r7, #36] @ 0x24 - 8011ebe: 2b00 cmp r3, #0 - 8011ec0: d1cb bne.n 8011e5a - } - if (oldest != NULL) { - 8011ec2: 6a3b ldr r3, [r7, #32] - 8011ec4: 2b00 cmp r3, #0 - 8011ec6: d008 beq.n 8011eda - pbufs_freed_current = ip_reass_free_complete_datagram(oldest, oldest_prev); - 8011ec8: 69b9 ldr r1, [r7, #24] - 8011eca: 6a38 ldr r0, [r7, #32] - 8011ecc: f7ff ff0e bl 8011cec - 8011ed0: 60f8 str r0, [r7, #12] - pbufs_freed += pbufs_freed_current; - 8011ed2: 697a ldr r2, [r7, #20] - 8011ed4: 68fb ldr r3, [r7, #12] - 8011ed6: 4413 add r3, r2 - 8011ed8: 617b str r3, [r7, #20] - } - } while ((pbufs_freed < pbufs_needed) && (other_datagrams > 1)); - 8011eda: 697a ldr r2, [r7, #20] - 8011edc: 683b ldr r3, [r7, #0] - 8011ede: 429a cmp r2, r3 - 8011ee0: da02 bge.n 8011ee8 - 8011ee2: 693b ldr r3, [r7, #16] - 8011ee4: 2b01 cmp r3, #1 - 8011ee6: dcac bgt.n 8011e42 - return pbufs_freed; - 8011ee8: 697b ldr r3, [r7, #20] -} - 8011eea: 4618 mov r0, r3 - 8011eec: 3728 adds r7, #40 @ 0x28 - 8011eee: 46bd mov sp, r7 - 8011ef0: bd80 pop {r7, pc} - 8011ef2: bf00 nop - 8011ef4: 20019274 .word 0x20019274 - -08011ef8 : - * @param clen number of pbufs needed to enqueue (used for freeing other datagrams if not enough space) - * @return A pointer to the queue location into which the fragment was enqueued - */ -static struct ip_reassdata * -ip_reass_enqueue_new_datagram(struct ip_hdr *fraghdr, int clen) -{ - 8011ef8: b580 push {r7, lr} - 8011efa: b084 sub sp, #16 - 8011efc: af00 add r7, sp, #0 - 8011efe: 6078 str r0, [r7, #4] - 8011f00: 6039 str r1, [r7, #0] -#if ! IP_REASS_FREE_OLDEST - LWIP_UNUSED_ARG(clen); -#endif - - /* No matching previous fragment found, allocate a new reassdata struct */ - ipr = (struct ip_reassdata *)memp_malloc(MEMP_REASSDATA); - 8011f02: 2004 movs r0, #4 - 8011f04: f7f5 f9e0 bl 80072c8 - 8011f08: 60f8 str r0, [r7, #12] - if (ipr == NULL) { - 8011f0a: 68fb ldr r3, [r7, #12] - 8011f0c: 2b00 cmp r3, #0 - 8011f0e: d110 bne.n 8011f32 -#if IP_REASS_FREE_OLDEST - if (ip_reass_remove_oldest_datagram(fraghdr, clen) >= clen) { - 8011f10: 6839 ldr r1, [r7, #0] - 8011f12: 6878 ldr r0, [r7, #4] - 8011f14: f7ff ff8e bl 8011e34 - 8011f18: 4602 mov r2, r0 - 8011f1a: 683b ldr r3, [r7, #0] - 8011f1c: 4293 cmp r3, r2 - 8011f1e: dc03 bgt.n 8011f28 - ipr = (struct ip_reassdata *)memp_malloc(MEMP_REASSDATA); - 8011f20: 2004 movs r0, #4 - 8011f22: f7f5 f9d1 bl 80072c8 - 8011f26: 60f8 str r0, [r7, #12] - } - if (ipr == NULL) - 8011f28: 68fb ldr r3, [r7, #12] - 8011f2a: 2b00 cmp r3, #0 - 8011f2c: d101 bne.n 8011f32 -#endif /* IP_REASS_FREE_OLDEST */ - { - IPFRAG_STATS_INC(ip_frag.memerr); - LWIP_DEBUGF(IP_REASS_DEBUG, ("Failed to alloc reassdata struct\n")); - return NULL; - 8011f2e: 2300 movs r3, #0 - 8011f30: e016 b.n 8011f60 - } - } - memset(ipr, 0, sizeof(struct ip_reassdata)); - 8011f32: 2220 movs r2, #32 - 8011f34: 2100 movs r1, #0 - 8011f36: 68f8 ldr r0, [r7, #12] - 8011f38: f000 ff1d bl 8012d76 - ipr->timer = IP_REASS_MAXAGE; - 8011f3c: 68fb ldr r3, [r7, #12] - 8011f3e: 220f movs r2, #15 - 8011f40: 77da strb r2, [r3, #31] - - /* enqueue the new structure to the front of the list */ - ipr->next = reassdatagrams; - 8011f42: 4b09 ldr r3, [pc, #36] @ (8011f68 ) - 8011f44: 681a ldr r2, [r3, #0] - 8011f46: 68fb ldr r3, [r7, #12] - 8011f48: 601a str r2, [r3, #0] - reassdatagrams = ipr; - 8011f4a: 4a07 ldr r2, [pc, #28] @ (8011f68 ) - 8011f4c: 68fb ldr r3, [r7, #12] - 8011f4e: 6013 str r3, [r2, #0] - /* copy the ip header for later tests and input */ - /* @todo: no ip options supported? */ - SMEMCPY(&(ipr->iphdr), fraghdr, IP_HLEN); - 8011f50: 68fb ldr r3, [r7, #12] - 8011f52: 3308 adds r3, #8 - 8011f54: 2214 movs r2, #20 - 8011f56: 6879 ldr r1, [r7, #4] - 8011f58: 4618 mov r0, r3 - 8011f5a: f000 ff89 bl 8012e70 - return ipr; - 8011f5e: 68fb ldr r3, [r7, #12] -} - 8011f60: 4618 mov r0, r3 - 8011f62: 3710 adds r7, #16 - 8011f64: 46bd mov sp, r7 - 8011f66: bd80 pop {r7, pc} - 8011f68: 20019274 .word 0x20019274 - -08011f6c : - * Dequeues a datagram from the datagram queue. Doesn't deallocate the pbufs. - * @param ipr points to the queue entry to dequeue - */ -static void -ip_reass_dequeue_datagram(struct ip_reassdata *ipr, struct ip_reassdata *prev) -{ - 8011f6c: b580 push {r7, lr} - 8011f6e: b082 sub sp, #8 - 8011f70: af00 add r7, sp, #0 - 8011f72: 6078 str r0, [r7, #4] - 8011f74: 6039 str r1, [r7, #0] - /* dequeue the reass struct */ - if (reassdatagrams == ipr) { - 8011f76: 4b10 ldr r3, [pc, #64] @ (8011fb8 ) - 8011f78: 681b ldr r3, [r3, #0] - 8011f7a: 687a ldr r2, [r7, #4] - 8011f7c: 429a cmp r2, r3 - 8011f7e: d104 bne.n 8011f8a - /* it was the first in the list */ - reassdatagrams = ipr->next; - 8011f80: 687b ldr r3, [r7, #4] - 8011f82: 681b ldr r3, [r3, #0] - 8011f84: 4a0c ldr r2, [pc, #48] @ (8011fb8 ) - 8011f86: 6013 str r3, [r2, #0] - 8011f88: e00d b.n 8011fa6 - } else { - /* it wasn't the first, so it must have a valid 'prev' */ - LWIP_ASSERT("sanity check linked list", prev != NULL); - 8011f8a: 683b ldr r3, [r7, #0] - 8011f8c: 2b00 cmp r3, #0 - 8011f8e: d106 bne.n 8011f9e - 8011f90: 4b0a ldr r3, [pc, #40] @ (8011fbc ) - 8011f92: f240 1245 movw r2, #325 @ 0x145 - 8011f96: 490a ldr r1, [pc, #40] @ (8011fc0 ) - 8011f98: 480a ldr r0, [pc, #40] @ (8011fc4 ) - 8011f9a: f000 fe6d bl 8012c78 - prev->next = ipr->next; - 8011f9e: 687b ldr r3, [r7, #4] - 8011fa0: 681a ldr r2, [r3, #0] - 8011fa2: 683b ldr r3, [r7, #0] - 8011fa4: 601a str r2, [r3, #0] - } - - /* now we can free the ip_reassdata struct */ - memp_free(MEMP_REASSDATA, ipr); - 8011fa6: 6879 ldr r1, [r7, #4] - 8011fa8: 2004 movs r0, #4 - 8011faa: f7f5 f9fd bl 80073a8 -} - 8011fae: bf00 nop - 8011fb0: 3708 adds r7, #8 - 8011fb2: 46bd mov sp, r7 - 8011fb4: bd80 pop {r7, pc} - 8011fb6: bf00 nop - 8011fb8: 20019274 .word 0x20019274 - 8011fbc: 0801a22c .word 0x0801a22c - 8011fc0: 0801a2f4 .word 0x0801a2f4 - 8011fc4: 0801a274 .word 0x0801a274 - -08011fc8 : - * @param is_last is 1 if this pbuf has MF==0 (ipr->flags not updated yet) - * @return see IP_REASS_VALIDATE_* defines - */ -static int -ip_reass_chain_frag_into_datagram_and_validate(struct ip_reassdata *ipr, struct pbuf *new_p, int is_last) -{ - 8011fc8: b580 push {r7, lr} - 8011fca: b08c sub sp, #48 @ 0x30 - 8011fcc: af00 add r7, sp, #0 - 8011fce: 60f8 str r0, [r7, #12] - 8011fd0: 60b9 str r1, [r7, #8] - 8011fd2: 607a str r2, [r7, #4] - struct ip_reass_helper *iprh, *iprh_tmp, *iprh_prev = NULL; - 8011fd4: 2300 movs r3, #0 - 8011fd6: 62bb str r3, [r7, #40] @ 0x28 - struct pbuf *q; - u16_t offset, len; - u8_t hlen; - struct ip_hdr *fraghdr; - int valid = 1; - 8011fd8: 2301 movs r3, #1 - 8011fda: 623b str r3, [r7, #32] - - /* Extract length and fragment offset from current fragment */ - fraghdr = (struct ip_hdr *)new_p->payload; - 8011fdc: 68bb ldr r3, [r7, #8] - 8011fde: 685b ldr r3, [r3, #4] - 8011fe0: 61fb str r3, [r7, #28] - len = lwip_ntohs(IPH_LEN(fraghdr)); - 8011fe2: 69fb ldr r3, [r7, #28] - 8011fe4: 885b ldrh r3, [r3, #2] - 8011fe6: b29b uxth r3, r3 - 8011fe8: 4618 mov r0, r3 - 8011fea: f7f4 fd0d bl 8006a08 - 8011fee: 4603 mov r3, r0 - 8011ff0: 837b strh r3, [r7, #26] - hlen = IPH_HL_BYTES(fraghdr); - 8011ff2: 69fb ldr r3, [r7, #28] - 8011ff4: 781b ldrb r3, [r3, #0] - 8011ff6: f003 030f and.w r3, r3, #15 - 8011ffa: b2db uxtb r3, r3 - 8011ffc: 009b lsls r3, r3, #2 - 8011ffe: 767b strb r3, [r7, #25] - if (hlen > len) { - 8012000: 7e7b ldrb r3, [r7, #25] - 8012002: b29b uxth r3, r3 - 8012004: 8b7a ldrh r2, [r7, #26] - 8012006: 429a cmp r2, r3 - 8012008: d202 bcs.n 8012010 - /* invalid datagram */ - return IP_REASS_VALIDATE_PBUF_DROPPED; - 801200a: f04f 33ff mov.w r3, #4294967295 - 801200e: e135 b.n 801227c - } - len = (u16_t)(len - hlen); - 8012010: 7e7b ldrb r3, [r7, #25] - 8012012: b29b uxth r3, r3 - 8012014: 8b7a ldrh r2, [r7, #26] - 8012016: 1ad3 subs r3, r2, r3 - 8012018: 837b strh r3, [r7, #26] - offset = IPH_OFFSET_BYTES(fraghdr); - 801201a: 69fb ldr r3, [r7, #28] - 801201c: 88db ldrh r3, [r3, #6] - 801201e: b29b uxth r3, r3 - 8012020: 4618 mov r0, r3 - 8012022: f7f4 fcf1 bl 8006a08 - 8012026: 4603 mov r3, r0 - 8012028: f3c3 030c ubfx r3, r3, #0, #13 - 801202c: b29b uxth r3, r3 - 801202e: 00db lsls r3, r3, #3 - 8012030: 82fb strh r3, [r7, #22] - /* overwrite the fragment's ip header from the pbuf with our helper struct, - * and setup the embedded helper structure. */ - /* make sure the struct ip_reass_helper fits into the IP header */ - LWIP_ASSERT("sizeof(struct ip_reass_helper) <= IP_HLEN", - sizeof(struct ip_reass_helper) <= IP_HLEN); - iprh = (struct ip_reass_helper *)new_p->payload; - 8012032: 68bb ldr r3, [r7, #8] - 8012034: 685b ldr r3, [r3, #4] - 8012036: 62fb str r3, [r7, #44] @ 0x2c - iprh->next_pbuf = NULL; - 8012038: 6afb ldr r3, [r7, #44] @ 0x2c - 801203a: 2200 movs r2, #0 - 801203c: 701a strb r2, [r3, #0] - 801203e: 2200 movs r2, #0 - 8012040: 705a strb r2, [r3, #1] - 8012042: 2200 movs r2, #0 - 8012044: 709a strb r2, [r3, #2] - 8012046: 2200 movs r2, #0 - 8012048: 70da strb r2, [r3, #3] - iprh->start = offset; - 801204a: 6afb ldr r3, [r7, #44] @ 0x2c - 801204c: 8afa ldrh r2, [r7, #22] - 801204e: 809a strh r2, [r3, #4] - iprh->end = (u16_t)(offset + len); - 8012050: 8afa ldrh r2, [r7, #22] - 8012052: 8b7b ldrh r3, [r7, #26] - 8012054: 4413 add r3, r2 - 8012056: b29a uxth r2, r3 - 8012058: 6afb ldr r3, [r7, #44] @ 0x2c - 801205a: 80da strh r2, [r3, #6] - if (iprh->end < offset) { - 801205c: 6afb ldr r3, [r7, #44] @ 0x2c - 801205e: 88db ldrh r3, [r3, #6] - 8012060: b29b uxth r3, r3 - 8012062: 8afa ldrh r2, [r7, #22] - 8012064: 429a cmp r2, r3 - 8012066: d902 bls.n 801206e - /* u16_t overflow, cannot handle this */ - return IP_REASS_VALIDATE_PBUF_DROPPED; - 8012068: f04f 33ff mov.w r3, #4294967295 - 801206c: e106 b.n 801227c - } - - /* Iterate through until we either get to the end of the list (append), - * or we find one with a larger offset (insert). */ - for (q = ipr->p; q != NULL;) { - 801206e: 68fb ldr r3, [r7, #12] - 8012070: 685b ldr r3, [r3, #4] - 8012072: 627b str r3, [r7, #36] @ 0x24 - 8012074: e068 b.n 8012148 - iprh_tmp = (struct ip_reass_helper *)q->payload; - 8012076: 6a7b ldr r3, [r7, #36] @ 0x24 - 8012078: 685b ldr r3, [r3, #4] - 801207a: 613b str r3, [r7, #16] - if (iprh->start < iprh_tmp->start) { - 801207c: 6afb ldr r3, [r7, #44] @ 0x2c - 801207e: 889b ldrh r3, [r3, #4] - 8012080: b29a uxth r2, r3 - 8012082: 693b ldr r3, [r7, #16] - 8012084: 889b ldrh r3, [r3, #4] - 8012086: b29b uxth r3, r3 - 8012088: 429a cmp r2, r3 - 801208a: d235 bcs.n 80120f8 - /* the new pbuf should be inserted before this */ - iprh->next_pbuf = q; - 801208c: 6afb ldr r3, [r7, #44] @ 0x2c - 801208e: 6a7a ldr r2, [r7, #36] @ 0x24 - 8012090: 601a str r2, [r3, #0] - if (iprh_prev != NULL) { - 8012092: 6abb ldr r3, [r7, #40] @ 0x28 - 8012094: 2b00 cmp r3, #0 - 8012096: d020 beq.n 80120da - /* not the fragment with the lowest offset */ -#if IP_REASS_CHECK_OVERLAP - if ((iprh->start < iprh_prev->end) || (iprh->end > iprh_tmp->start)) { - 8012098: 6afb ldr r3, [r7, #44] @ 0x2c - 801209a: 889b ldrh r3, [r3, #4] - 801209c: b29a uxth r2, r3 - 801209e: 6abb ldr r3, [r7, #40] @ 0x28 - 80120a0: 88db ldrh r3, [r3, #6] - 80120a2: b29b uxth r3, r3 - 80120a4: 429a cmp r2, r3 - 80120a6: d307 bcc.n 80120b8 - 80120a8: 6afb ldr r3, [r7, #44] @ 0x2c - 80120aa: 88db ldrh r3, [r3, #6] - 80120ac: b29a uxth r2, r3 - 80120ae: 693b ldr r3, [r7, #16] - 80120b0: 889b ldrh r3, [r3, #4] - 80120b2: b29b uxth r3, r3 - 80120b4: 429a cmp r2, r3 - 80120b6: d902 bls.n 80120be - /* fragment overlaps with previous or following, throw away */ - return IP_REASS_VALIDATE_PBUF_DROPPED; - 80120b8: f04f 33ff mov.w r3, #4294967295 - 80120bc: e0de b.n 801227c - } -#endif /* IP_REASS_CHECK_OVERLAP */ - iprh_prev->next_pbuf = new_p; - 80120be: 6abb ldr r3, [r7, #40] @ 0x28 - 80120c0: 68ba ldr r2, [r7, #8] - 80120c2: 601a str r2, [r3, #0] - if (iprh_prev->end != iprh->start) { - 80120c4: 6abb ldr r3, [r7, #40] @ 0x28 - 80120c6: 88db ldrh r3, [r3, #6] - 80120c8: b29a uxth r2, r3 - 80120ca: 6afb ldr r3, [r7, #44] @ 0x2c - 80120cc: 889b ldrh r3, [r3, #4] - 80120ce: b29b uxth r3, r3 - 80120d0: 429a cmp r2, r3 - 80120d2: d03d beq.n 8012150 - /* There is a fragment missing between the current - * and the previous fragment */ - valid = 0; - 80120d4: 2300 movs r3, #0 - 80120d6: 623b str r3, [r7, #32] - } -#endif /* IP_REASS_CHECK_OVERLAP */ - /* fragment with the lowest offset */ - ipr->p = new_p; - } - break; - 80120d8: e03a b.n 8012150 - if (iprh->end > iprh_tmp->start) { - 80120da: 6afb ldr r3, [r7, #44] @ 0x2c - 80120dc: 88db ldrh r3, [r3, #6] - 80120de: b29a uxth r2, r3 - 80120e0: 693b ldr r3, [r7, #16] - 80120e2: 889b ldrh r3, [r3, #4] - 80120e4: b29b uxth r3, r3 - 80120e6: 429a cmp r2, r3 - 80120e8: d902 bls.n 80120f0 - return IP_REASS_VALIDATE_PBUF_DROPPED; - 80120ea: f04f 33ff mov.w r3, #4294967295 - 80120ee: e0c5 b.n 801227c - ipr->p = new_p; - 80120f0: 68fb ldr r3, [r7, #12] - 80120f2: 68ba ldr r2, [r7, #8] - 80120f4: 605a str r2, [r3, #4] - break; - 80120f6: e02b b.n 8012150 - } else if (iprh->start == iprh_tmp->start) { - 80120f8: 6afb ldr r3, [r7, #44] @ 0x2c - 80120fa: 889b ldrh r3, [r3, #4] - 80120fc: b29a uxth r2, r3 - 80120fe: 693b ldr r3, [r7, #16] - 8012100: 889b ldrh r3, [r3, #4] - 8012102: b29b uxth r3, r3 - 8012104: 429a cmp r2, r3 - 8012106: d102 bne.n 801210e - /* received the same datagram twice: no need to keep the datagram */ - return IP_REASS_VALIDATE_PBUF_DROPPED; - 8012108: f04f 33ff mov.w r3, #4294967295 - 801210c: e0b6 b.n 801227c -#if IP_REASS_CHECK_OVERLAP - } else if (iprh->start < iprh_tmp->end) { - 801210e: 6afb ldr r3, [r7, #44] @ 0x2c - 8012110: 889b ldrh r3, [r3, #4] - 8012112: b29a uxth r2, r3 - 8012114: 693b ldr r3, [r7, #16] - 8012116: 88db ldrh r3, [r3, #6] - 8012118: b29b uxth r3, r3 - 801211a: 429a cmp r2, r3 - 801211c: d202 bcs.n 8012124 - /* overlap: no need to keep the new datagram */ - return IP_REASS_VALIDATE_PBUF_DROPPED; - 801211e: f04f 33ff mov.w r3, #4294967295 - 8012122: e0ab b.n 801227c -#endif /* IP_REASS_CHECK_OVERLAP */ - } else { - /* Check if the fragments received so far have no holes. */ - if (iprh_prev != NULL) { - 8012124: 6abb ldr r3, [r7, #40] @ 0x28 - 8012126: 2b00 cmp r3, #0 - 8012128: d009 beq.n 801213e - if (iprh_prev->end != iprh_tmp->start) { - 801212a: 6abb ldr r3, [r7, #40] @ 0x28 - 801212c: 88db ldrh r3, [r3, #6] - 801212e: b29a uxth r2, r3 - 8012130: 693b ldr r3, [r7, #16] - 8012132: 889b ldrh r3, [r3, #4] - 8012134: b29b uxth r3, r3 - 8012136: 429a cmp r2, r3 - 8012138: d001 beq.n 801213e - /* There is a fragment missing between the current - * and the previous fragment */ - valid = 0; - 801213a: 2300 movs r3, #0 - 801213c: 623b str r3, [r7, #32] - } - } - } - q = iprh_tmp->next_pbuf; - 801213e: 693b ldr r3, [r7, #16] - 8012140: 681b ldr r3, [r3, #0] - 8012142: 627b str r3, [r7, #36] @ 0x24 - iprh_prev = iprh_tmp; - 8012144: 693b ldr r3, [r7, #16] - 8012146: 62bb str r3, [r7, #40] @ 0x28 - for (q = ipr->p; q != NULL;) { - 8012148: 6a7b ldr r3, [r7, #36] @ 0x24 - 801214a: 2b00 cmp r3, #0 - 801214c: d193 bne.n 8012076 - 801214e: e000 b.n 8012152 - break; - 8012150: bf00 nop - } - - /* If q is NULL, then we made it to the end of the list. Determine what to do now */ - if (q == NULL) { - 8012152: 6a7b ldr r3, [r7, #36] @ 0x24 - 8012154: 2b00 cmp r3, #0 - 8012156: d12d bne.n 80121b4 - if (iprh_prev != NULL) { - 8012158: 6abb ldr r3, [r7, #40] @ 0x28 - 801215a: 2b00 cmp r3, #0 - 801215c: d01c beq.n 8012198 - /* this is (for now), the fragment with the highest offset: - * chain it to the last fragment */ -#if IP_REASS_CHECK_OVERLAP - LWIP_ASSERT("check fragments don't overlap", iprh_prev->end <= iprh->start); - 801215e: 6abb ldr r3, [r7, #40] @ 0x28 - 8012160: 88db ldrh r3, [r3, #6] - 8012162: b29a uxth r2, r3 - 8012164: 6afb ldr r3, [r7, #44] @ 0x2c - 8012166: 889b ldrh r3, [r3, #4] - 8012168: b29b uxth r3, r3 - 801216a: 429a cmp r2, r3 - 801216c: d906 bls.n 801217c - 801216e: 4b45 ldr r3, [pc, #276] @ (8012284 ) - 8012170: f44f 72db mov.w r2, #438 @ 0x1b6 - 8012174: 4944 ldr r1, [pc, #272] @ (8012288 ) - 8012176: 4845 ldr r0, [pc, #276] @ (801228c ) - 8012178: f000 fd7e bl 8012c78 -#endif /* IP_REASS_CHECK_OVERLAP */ - iprh_prev->next_pbuf = new_p; - 801217c: 6abb ldr r3, [r7, #40] @ 0x28 - 801217e: 68ba ldr r2, [r7, #8] - 8012180: 601a str r2, [r3, #0] - if (iprh_prev->end != iprh->start) { - 8012182: 6abb ldr r3, [r7, #40] @ 0x28 - 8012184: 88db ldrh r3, [r3, #6] - 8012186: b29a uxth r2, r3 - 8012188: 6afb ldr r3, [r7, #44] @ 0x2c - 801218a: 889b ldrh r3, [r3, #4] - 801218c: b29b uxth r3, r3 - 801218e: 429a cmp r2, r3 - 8012190: d010 beq.n 80121b4 - valid = 0; - 8012192: 2300 movs r3, #0 - 8012194: 623b str r3, [r7, #32] - 8012196: e00d b.n 80121b4 - } - } else { -#if IP_REASS_CHECK_OVERLAP - LWIP_ASSERT("no previous fragment, this must be the first fragment!", - 8012198: 68fb ldr r3, [r7, #12] - 801219a: 685b ldr r3, [r3, #4] - 801219c: 2b00 cmp r3, #0 - 801219e: d006 beq.n 80121ae - 80121a0: 4b38 ldr r3, [pc, #224] @ (8012284 ) - 80121a2: f44f 72df mov.w r2, #446 @ 0x1be - 80121a6: 493a ldr r1, [pc, #232] @ (8012290 ) - 80121a8: 4838 ldr r0, [pc, #224] @ (801228c ) - 80121aa: f000 fd65 bl 8012c78 - ipr->p == NULL); -#endif /* IP_REASS_CHECK_OVERLAP */ - /* this is the first fragment we ever received for this ip datagram */ - ipr->p = new_p; - 80121ae: 68fb ldr r3, [r7, #12] - 80121b0: 68ba ldr r2, [r7, #8] - 80121b2: 605a str r2, [r3, #4] - } - } - - /* At this point, the validation part begins: */ - /* If we already received the last fragment */ - if (is_last || ((ipr->flags & IP_REASS_FLAG_LASTFRAG) != 0)) { - 80121b4: 687b ldr r3, [r7, #4] - 80121b6: 2b00 cmp r3, #0 - 80121b8: d105 bne.n 80121c6 - 80121ba: 68fb ldr r3, [r7, #12] - 80121bc: 7f9b ldrb r3, [r3, #30] - 80121be: f003 0301 and.w r3, r3, #1 - 80121c2: 2b00 cmp r3, #0 - 80121c4: d059 beq.n 801227a - /* and had no holes so far */ - if (valid) { - 80121c6: 6a3b ldr r3, [r7, #32] - 80121c8: 2b00 cmp r3, #0 - 80121ca: d04f beq.n 801226c - /* then check if the rest of the fragments is here */ - /* Check if the queue starts with the first datagram */ - if ((ipr->p == NULL) || (((struct ip_reass_helper *)ipr->p->payload)->start != 0)) { - 80121cc: 68fb ldr r3, [r7, #12] - 80121ce: 685b ldr r3, [r3, #4] - 80121d0: 2b00 cmp r3, #0 - 80121d2: d006 beq.n 80121e2 - 80121d4: 68fb ldr r3, [r7, #12] - 80121d6: 685b ldr r3, [r3, #4] - 80121d8: 685b ldr r3, [r3, #4] - 80121da: 889b ldrh r3, [r3, #4] - 80121dc: b29b uxth r3, r3 - 80121de: 2b00 cmp r3, #0 - 80121e0: d002 beq.n 80121e8 - valid = 0; - 80121e2: 2300 movs r3, #0 - 80121e4: 623b str r3, [r7, #32] - 80121e6: e041 b.n 801226c - } else { - /* and check that there are no holes after this datagram */ - iprh_prev = iprh; - 80121e8: 6afb ldr r3, [r7, #44] @ 0x2c - 80121ea: 62bb str r3, [r7, #40] @ 0x28 - q = iprh->next_pbuf; - 80121ec: 6afb ldr r3, [r7, #44] @ 0x2c - 80121ee: 681b ldr r3, [r3, #0] - 80121f0: 627b str r3, [r7, #36] @ 0x24 - while (q != NULL) { - 80121f2: e012 b.n 801221a - iprh = (struct ip_reass_helper *)q->payload; - 80121f4: 6a7b ldr r3, [r7, #36] @ 0x24 - 80121f6: 685b ldr r3, [r3, #4] - 80121f8: 62fb str r3, [r7, #44] @ 0x2c - if (iprh_prev->end != iprh->start) { - 80121fa: 6abb ldr r3, [r7, #40] @ 0x28 - 80121fc: 88db ldrh r3, [r3, #6] - 80121fe: b29a uxth r2, r3 - 8012200: 6afb ldr r3, [r7, #44] @ 0x2c - 8012202: 889b ldrh r3, [r3, #4] - 8012204: b29b uxth r3, r3 - 8012206: 429a cmp r2, r3 - 8012208: d002 beq.n 8012210 - valid = 0; - 801220a: 2300 movs r3, #0 - 801220c: 623b str r3, [r7, #32] - break; - 801220e: e007 b.n 8012220 - } - iprh_prev = iprh; - 8012210: 6afb ldr r3, [r7, #44] @ 0x2c - 8012212: 62bb str r3, [r7, #40] @ 0x28 - q = iprh->next_pbuf; - 8012214: 6afb ldr r3, [r7, #44] @ 0x2c - 8012216: 681b ldr r3, [r3, #0] - 8012218: 627b str r3, [r7, #36] @ 0x24 - while (q != NULL) { - 801221a: 6a7b ldr r3, [r7, #36] @ 0x24 - 801221c: 2b00 cmp r3, #0 - 801221e: d1e9 bne.n 80121f4 - } - /* if still valid, all fragments are received - * (because to the MF==0 already arrived */ - if (valid) { - 8012220: 6a3b ldr r3, [r7, #32] - 8012222: 2b00 cmp r3, #0 - 8012224: d022 beq.n 801226c - LWIP_ASSERT("sanity check", ipr->p != NULL); - 8012226: 68fb ldr r3, [r7, #12] - 8012228: 685b ldr r3, [r3, #4] - 801222a: 2b00 cmp r3, #0 - 801222c: d106 bne.n 801223c - 801222e: 4b15 ldr r3, [pc, #84] @ (8012284 ) - 8012230: f240 12df movw r2, #479 @ 0x1df - 8012234: 4917 ldr r1, [pc, #92] @ (8012294 ) - 8012236: 4815 ldr r0, [pc, #84] @ (801228c ) - 8012238: f000 fd1e bl 8012c78 - LWIP_ASSERT("sanity check", - 801223c: 68fb ldr r3, [r7, #12] - 801223e: 685b ldr r3, [r3, #4] - 8012240: 685b ldr r3, [r3, #4] - 8012242: 6afa ldr r2, [r7, #44] @ 0x2c - 8012244: 429a cmp r2, r3 - 8012246: d106 bne.n 8012256 - 8012248: 4b0e ldr r3, [pc, #56] @ (8012284 ) - 801224a: f44f 72f0 mov.w r2, #480 @ 0x1e0 - 801224e: 4911 ldr r1, [pc, #68] @ (8012294 ) - 8012250: 480e ldr r0, [pc, #56] @ (801228c ) - 8012252: f000 fd11 bl 8012c78 - ((struct ip_reass_helper *)ipr->p->payload) != iprh); - LWIP_ASSERT("validate_datagram:next_pbuf!=NULL", - 8012256: 6afb ldr r3, [r7, #44] @ 0x2c - 8012258: 681b ldr r3, [r3, #0] - 801225a: 2b00 cmp r3, #0 - 801225c: d006 beq.n 801226c - 801225e: 4b09 ldr r3, [pc, #36] @ (8012284 ) - 8012260: f44f 72f1 mov.w r2, #482 @ 0x1e2 - 8012264: 490c ldr r1, [pc, #48] @ (8012298 ) - 8012266: 4809 ldr r0, [pc, #36] @ (801228c ) - 8012268: f000 fd06 bl 8012c78 - } - } - /* If valid is 0 here, there are some fragments missing in the middle - * (since MF == 0 has already arrived). Such datagrams simply time out if - * no more fragments are received... */ - return valid ? IP_REASS_VALIDATE_TELEGRAM_FINISHED : IP_REASS_VALIDATE_PBUF_QUEUED; - 801226c: 6a3b ldr r3, [r7, #32] - 801226e: 2b00 cmp r3, #0 - 8012270: bf14 ite ne - 8012272: 2301 movne r3, #1 - 8012274: 2300 moveq r3, #0 - 8012276: b2db uxtb r3, r3 - 8012278: e000 b.n 801227c - } - /* If we come here, not all fragments were received, yet! */ - return IP_REASS_VALIDATE_PBUF_QUEUED; /* not yet valid! */ - 801227a: 2300 movs r3, #0 -} - 801227c: 4618 mov r0, r3 - 801227e: 3730 adds r7, #48 @ 0x30 - 8012280: 46bd mov sp, r7 - 8012282: bd80 pop {r7, pc} - 8012284: 0801a22c .word 0x0801a22c - 8012288: 0801a310 .word 0x0801a310 - 801228c: 0801a274 .word 0x0801a274 - 8012290: 0801a330 .word 0x0801a330 - 8012294: 0801a368 .word 0x0801a368 - 8012298: 0801a378 .word 0x0801a378 - -0801229c : - * @param p points to a pbuf chain of the fragment - * @return NULL if reassembly is incomplete, ? otherwise - */ -struct pbuf * -ip4_reass(struct pbuf *p) -{ - 801229c: b580 push {r7, lr} - 801229e: b08e sub sp, #56 @ 0x38 - 80122a0: af00 add r7, sp, #0 - 80122a2: 6078 str r0, [r7, #4] - int is_last; - - IPFRAG_STATS_INC(ip_frag.recv); - MIB2_STATS_INC(mib2.ipreasmreqds); - - fraghdr = (struct ip_hdr *)p->payload; - 80122a4: 687b ldr r3, [r7, #4] - 80122a6: 685b ldr r3, [r3, #4] - 80122a8: 62bb str r3, [r7, #40] @ 0x28 - - if (IPH_HL_BYTES(fraghdr) != IP_HLEN) { - 80122aa: 6abb ldr r3, [r7, #40] @ 0x28 - 80122ac: 781b ldrb r3, [r3, #0] - 80122ae: f003 030f and.w r3, r3, #15 - 80122b2: b2db uxtb r3, r3 - 80122b4: 009b lsls r3, r3, #2 - 80122b6: b2db uxtb r3, r3 - 80122b8: 2b14 cmp r3, #20 - 80122ba: f040 8171 bne.w 80125a0 - LWIP_DEBUGF(IP_REASS_DEBUG, ("ip4_reass: IP options currently not supported!\n")); - IPFRAG_STATS_INC(ip_frag.err); - goto nullreturn; - } - - offset = IPH_OFFSET_BYTES(fraghdr); - 80122be: 6abb ldr r3, [r7, #40] @ 0x28 - 80122c0: 88db ldrh r3, [r3, #6] - 80122c2: b29b uxth r3, r3 - 80122c4: 4618 mov r0, r3 - 80122c6: f7f4 fb9f bl 8006a08 - 80122ca: 4603 mov r3, r0 - 80122cc: f3c3 030c ubfx r3, r3, #0, #13 - 80122d0: b29b uxth r3, r3 - 80122d2: 00db lsls r3, r3, #3 - 80122d4: 84fb strh r3, [r7, #38] @ 0x26 - len = lwip_ntohs(IPH_LEN(fraghdr)); - 80122d6: 6abb ldr r3, [r7, #40] @ 0x28 - 80122d8: 885b ldrh r3, [r3, #2] - 80122da: b29b uxth r3, r3 - 80122dc: 4618 mov r0, r3 - 80122de: f7f4 fb93 bl 8006a08 - 80122e2: 4603 mov r3, r0 - 80122e4: 84bb strh r3, [r7, #36] @ 0x24 - hlen = IPH_HL_BYTES(fraghdr); - 80122e6: 6abb ldr r3, [r7, #40] @ 0x28 - 80122e8: 781b ldrb r3, [r3, #0] - 80122ea: f003 030f and.w r3, r3, #15 - 80122ee: b2db uxtb r3, r3 - 80122f0: 009b lsls r3, r3, #2 - 80122f2: f887 3023 strb.w r3, [r7, #35] @ 0x23 - if (hlen > len) { - 80122f6: f897 3023 ldrb.w r3, [r7, #35] @ 0x23 - 80122fa: b29b uxth r3, r3 - 80122fc: 8cba ldrh r2, [r7, #36] @ 0x24 - 80122fe: 429a cmp r2, r3 - 8012300: f0c0 8150 bcc.w 80125a4 - /* invalid datagram */ - goto nullreturn; - } - len = (u16_t)(len - hlen); - 8012304: f897 3023 ldrb.w r3, [r7, #35] @ 0x23 - 8012308: b29b uxth r3, r3 - 801230a: 8cba ldrh r2, [r7, #36] @ 0x24 - 801230c: 1ad3 subs r3, r2, r3 - 801230e: 84bb strh r3, [r7, #36] @ 0x24 - - /* Check if we are allowed to enqueue more datagrams. */ - clen = pbuf_clen(p); - 8012310: 6878 ldr r0, [r7, #4] - 8012312: f7f5 ff51 bl 80081b8 - 8012316: 4603 mov r3, r0 - 8012318: 843b strh r3, [r7, #32] - if ((ip_reass_pbufcount + clen) > IP_REASS_MAX_PBUFS) { - 801231a: 4b8c ldr r3, [pc, #560] @ (801254c ) - 801231c: 881b ldrh r3, [r3, #0] - 801231e: 461a mov r2, r3 - 8012320: 8c3b ldrh r3, [r7, #32] - 8012322: 4413 add r3, r2 - 8012324: 2b0a cmp r3, #10 - 8012326: dd10 ble.n 801234a -#if IP_REASS_FREE_OLDEST - if (!ip_reass_remove_oldest_datagram(fraghdr, clen) || - 8012328: 8c3b ldrh r3, [r7, #32] - 801232a: 4619 mov r1, r3 - 801232c: 6ab8 ldr r0, [r7, #40] @ 0x28 - 801232e: f7ff fd81 bl 8011e34 - 8012332: 4603 mov r3, r0 - 8012334: 2b00 cmp r3, #0 - 8012336: f000 8137 beq.w 80125a8 - ((ip_reass_pbufcount + clen) > IP_REASS_MAX_PBUFS)) - 801233a: 4b84 ldr r3, [pc, #528] @ (801254c ) - 801233c: 881b ldrh r3, [r3, #0] - 801233e: 461a mov r2, r3 - 8012340: 8c3b ldrh r3, [r7, #32] - 8012342: 4413 add r3, r2 - if (!ip_reass_remove_oldest_datagram(fraghdr, clen) || - 8012344: 2b0a cmp r3, #10 - 8012346: f300 812f bgt.w 80125a8 - } - } - - /* Look for the datagram the fragment belongs to in the current datagram queue, - * remembering the previous in the queue for later dequeueing. */ - for (ipr = reassdatagrams; ipr != NULL; ipr = ipr->next) { - 801234a: 4b81 ldr r3, [pc, #516] @ (8012550 ) - 801234c: 681b ldr r3, [r3, #0] - 801234e: 633b str r3, [r7, #48] @ 0x30 - 8012350: e015 b.n 801237e - /* Check if the incoming fragment matches the one currently present - in the reassembly buffer. If so, we proceed with copying the - fragment into the buffer. */ - if (IP_ADDRESSES_AND_ID_MATCH(&ipr->iphdr, fraghdr)) { - 8012352: 6b3b ldr r3, [r7, #48] @ 0x30 - 8012354: 695a ldr r2, [r3, #20] - 8012356: 6abb ldr r3, [r7, #40] @ 0x28 - 8012358: 68db ldr r3, [r3, #12] - 801235a: 429a cmp r2, r3 - 801235c: d10c bne.n 8012378 - 801235e: 6b3b ldr r3, [r7, #48] @ 0x30 - 8012360: 699a ldr r2, [r3, #24] - 8012362: 6abb ldr r3, [r7, #40] @ 0x28 - 8012364: 691b ldr r3, [r3, #16] - 8012366: 429a cmp r2, r3 - 8012368: d106 bne.n 8012378 - 801236a: 6b3b ldr r3, [r7, #48] @ 0x30 - 801236c: 899a ldrh r2, [r3, #12] - 801236e: 6abb ldr r3, [r7, #40] @ 0x28 - 8012370: 889b ldrh r3, [r3, #4] - 8012372: b29b uxth r3, r3 - 8012374: 429a cmp r2, r3 - 8012376: d006 beq.n 8012386 - for (ipr = reassdatagrams; ipr != NULL; ipr = ipr->next) { - 8012378: 6b3b ldr r3, [r7, #48] @ 0x30 - 801237a: 681b ldr r3, [r3, #0] - 801237c: 633b str r3, [r7, #48] @ 0x30 - 801237e: 6b3b ldr r3, [r7, #48] @ 0x30 - 8012380: 2b00 cmp r3, #0 - 8012382: d1e6 bne.n 8012352 - 8012384: e000 b.n 8012388 - LWIP_DEBUGF(IP_REASS_DEBUG, ("ip4_reass: matching previous fragment ID=%"X16_F"\n", - lwip_ntohs(IPH_ID(fraghdr)))); - IPFRAG_STATS_INC(ip_frag.cachehit); - break; - 8012386: bf00 nop - } - } - - if (ipr == NULL) { - 8012388: 6b3b ldr r3, [r7, #48] @ 0x30 - 801238a: 2b00 cmp r3, #0 - 801238c: d109 bne.n 80123a2 - /* Enqueue a new datagram into the datagram queue */ - ipr = ip_reass_enqueue_new_datagram(fraghdr, clen); - 801238e: 8c3b ldrh r3, [r7, #32] - 8012390: 4619 mov r1, r3 - 8012392: 6ab8 ldr r0, [r7, #40] @ 0x28 - 8012394: f7ff fdb0 bl 8011ef8 - 8012398: 6338 str r0, [r7, #48] @ 0x30 - /* Bail if unable to enqueue */ - if (ipr == NULL) { - 801239a: 6b3b ldr r3, [r7, #48] @ 0x30 - 801239c: 2b00 cmp r3, #0 - 801239e: d11c bne.n 80123da - goto nullreturn; - 80123a0: e105 b.n 80125ae - } - } else { - if (((lwip_ntohs(IPH_OFFSET(fraghdr)) & IP_OFFMASK) == 0) && - 80123a2: 6abb ldr r3, [r7, #40] @ 0x28 - 80123a4: 88db ldrh r3, [r3, #6] - 80123a6: b29b uxth r3, r3 - 80123a8: 4618 mov r0, r3 - 80123aa: f7f4 fb2d bl 8006a08 - 80123ae: 4603 mov r3, r0 - 80123b0: f3c3 030c ubfx r3, r3, #0, #13 - 80123b4: 2b00 cmp r3, #0 - 80123b6: d110 bne.n 80123da - ((lwip_ntohs(IPH_OFFSET(&ipr->iphdr)) & IP_OFFMASK) != 0)) { - 80123b8: 6b3b ldr r3, [r7, #48] @ 0x30 - 80123ba: 89db ldrh r3, [r3, #14] - 80123bc: 4618 mov r0, r3 - 80123be: f7f4 fb23 bl 8006a08 - 80123c2: 4603 mov r3, r0 - 80123c4: f3c3 030c ubfx r3, r3, #0, #13 - if (((lwip_ntohs(IPH_OFFSET(fraghdr)) & IP_OFFMASK) == 0) && - 80123c8: 2b00 cmp r3, #0 - 80123ca: d006 beq.n 80123da - /* ipr->iphdr is not the header from the first fragment, but fraghdr is - * -> copy fraghdr into ipr->iphdr since we want to have the header - * of the first fragment (for ICMP time exceeded and later, for copying - * all options, if supported)*/ - SMEMCPY(&ipr->iphdr, fraghdr, IP_HLEN); - 80123cc: 6b3b ldr r3, [r7, #48] @ 0x30 - 80123ce: 3308 adds r3, #8 - 80123d0: 2214 movs r2, #20 - 80123d2: 6ab9 ldr r1, [r7, #40] @ 0x28 - 80123d4: 4618 mov r0, r3 - 80123d6: f000 fd4b bl 8012e70 - - /* At this point, we have either created a new entry or pointing - * to an existing one */ - - /* check for 'no more fragments', and update queue entry*/ - is_last = (IPH_OFFSET(fraghdr) & PP_NTOHS(IP_MF)) == 0; - 80123da: 6abb ldr r3, [r7, #40] @ 0x28 - 80123dc: 88db ldrh r3, [r3, #6] - 80123de: b29b uxth r3, r3 - 80123e0: f003 0320 and.w r3, r3, #32 - 80123e4: 2b00 cmp r3, #0 - 80123e6: bf0c ite eq - 80123e8: 2301 moveq r3, #1 - 80123ea: 2300 movne r3, #0 - 80123ec: b2db uxtb r3, r3 - 80123ee: 61fb str r3, [r7, #28] - if (is_last) { - 80123f0: 69fb ldr r3, [r7, #28] - 80123f2: 2b00 cmp r3, #0 - 80123f4: d00e beq.n 8012414 - u16_t datagram_len = (u16_t)(offset + len); - 80123f6: 8cfa ldrh r2, [r7, #38] @ 0x26 - 80123f8: 8cbb ldrh r3, [r7, #36] @ 0x24 - 80123fa: 4413 add r3, r2 - 80123fc: 837b strh r3, [r7, #26] - if ((datagram_len < offset) || (datagram_len > (0xFFFF - IP_HLEN))) { - 80123fe: 8b7a ldrh r2, [r7, #26] - 8012400: 8cfb ldrh r3, [r7, #38] @ 0x26 - 8012402: 429a cmp r2, r3 - 8012404: f0c0 80a0 bcc.w 8012548 - 8012408: 8b7b ldrh r3, [r7, #26] - 801240a: f64f 72eb movw r2, #65515 @ 0xffeb - 801240e: 4293 cmp r3, r2 - 8012410: f200 809a bhi.w 8012548 - goto nullreturn_ipr; - } - } - /* find the right place to insert this pbuf */ - /* @todo: trim pbufs if fragments are overlapping */ - valid = ip_reass_chain_frag_into_datagram_and_validate(ipr, p, is_last); - 8012414: 69fa ldr r2, [r7, #28] - 8012416: 6879 ldr r1, [r7, #4] - 8012418: 6b38 ldr r0, [r7, #48] @ 0x30 - 801241a: f7ff fdd5 bl 8011fc8 - 801241e: 6178 str r0, [r7, #20] - if (valid == IP_REASS_VALIDATE_PBUF_DROPPED) { - 8012420: 697b ldr r3, [r7, #20] - 8012422: f1b3 3fff cmp.w r3, #4294967295 - 8012426: f000 809b beq.w 8012560 - /* if we come here, the pbuf has been enqueued */ - - /* Track the current number of pbufs current 'in-flight', in order to limit - the number of fragments that may be enqueued at any one time - (overflow checked by testing against IP_REASS_MAX_PBUFS) */ - ip_reass_pbufcount = (u16_t)(ip_reass_pbufcount + clen); - 801242a: 4b48 ldr r3, [pc, #288] @ (801254c ) - 801242c: 881a ldrh r2, [r3, #0] - 801242e: 8c3b ldrh r3, [r7, #32] - 8012430: 4413 add r3, r2 - 8012432: b29a uxth r2, r3 - 8012434: 4b45 ldr r3, [pc, #276] @ (801254c ) - 8012436: 801a strh r2, [r3, #0] - if (is_last) { - 8012438: 69fb ldr r3, [r7, #28] - 801243a: 2b00 cmp r3, #0 - 801243c: d00d beq.n 801245a - u16_t datagram_len = (u16_t)(offset + len); - 801243e: 8cfa ldrh r2, [r7, #38] @ 0x26 - 8012440: 8cbb ldrh r3, [r7, #36] @ 0x24 - 8012442: 4413 add r3, r2 - 8012444: 827b strh r3, [r7, #18] - ipr->datagram_len = datagram_len; - 8012446: 6b3b ldr r3, [r7, #48] @ 0x30 - 8012448: 8a7a ldrh r2, [r7, #18] - 801244a: 839a strh r2, [r3, #28] - ipr->flags |= IP_REASS_FLAG_LASTFRAG; - 801244c: 6b3b ldr r3, [r7, #48] @ 0x30 - 801244e: 7f9b ldrb r3, [r3, #30] - 8012450: f043 0301 orr.w r3, r3, #1 - 8012454: b2da uxtb r2, r3 - 8012456: 6b3b ldr r3, [r7, #48] @ 0x30 - 8012458: 779a strb r2, [r3, #30] - LWIP_DEBUGF(IP_REASS_DEBUG, - ("ip4_reass: last fragment seen, total len %"S16_F"\n", - ipr->datagram_len)); - } - - if (valid == IP_REASS_VALIDATE_TELEGRAM_FINISHED) { - 801245a: 697b ldr r3, [r7, #20] - 801245c: 2b01 cmp r3, #1 - 801245e: d171 bne.n 8012544 - struct ip_reassdata *ipr_prev; - /* the totally last fragment (flag more fragments = 0) was received at least - * once AND all fragments are received */ - u16_t datagram_len = (u16_t)(ipr->datagram_len + IP_HLEN); - 8012460: 6b3b ldr r3, [r7, #48] @ 0x30 - 8012462: 8b9b ldrh r3, [r3, #28] - 8012464: 3314 adds r3, #20 - 8012466: 823b strh r3, [r7, #16] - - /* save the second pbuf before copying the header over the pointer */ - r = ((struct ip_reass_helper *)ipr->p->payload)->next_pbuf; - 8012468: 6b3b ldr r3, [r7, #48] @ 0x30 - 801246a: 685b ldr r3, [r3, #4] - 801246c: 685b ldr r3, [r3, #4] - 801246e: 681b ldr r3, [r3, #0] - 8012470: 637b str r3, [r7, #52] @ 0x34 - - /* copy the original ip header back to the first pbuf */ - fraghdr = (struct ip_hdr *)(ipr->p->payload); - 8012472: 6b3b ldr r3, [r7, #48] @ 0x30 - 8012474: 685b ldr r3, [r3, #4] - 8012476: 685b ldr r3, [r3, #4] - 8012478: 62bb str r3, [r7, #40] @ 0x28 - SMEMCPY(fraghdr, &ipr->iphdr, IP_HLEN); - 801247a: 6b3b ldr r3, [r7, #48] @ 0x30 - 801247c: 3308 adds r3, #8 - 801247e: 2214 movs r2, #20 - 8012480: 4619 mov r1, r3 - 8012482: 6ab8 ldr r0, [r7, #40] @ 0x28 - 8012484: f000 fcf4 bl 8012e70 - IPH_LEN_SET(fraghdr, lwip_htons(datagram_len)); - 8012488: 8a3b ldrh r3, [r7, #16] - 801248a: 4618 mov r0, r3 - 801248c: f7f4 fabc bl 8006a08 - 8012490: 4603 mov r3, r0 - 8012492: 461a mov r2, r3 - 8012494: 6abb ldr r3, [r7, #40] @ 0x28 - 8012496: 805a strh r2, [r3, #2] - IPH_OFFSET_SET(fraghdr, 0); - 8012498: 6abb ldr r3, [r7, #40] @ 0x28 - 801249a: 2200 movs r2, #0 - 801249c: 719a strb r2, [r3, #6] - 801249e: 2200 movs r2, #0 - 80124a0: 71da strb r2, [r3, #7] - IPH_CHKSUM_SET(fraghdr, 0); - 80124a2: 6abb ldr r3, [r7, #40] @ 0x28 - 80124a4: 2200 movs r2, #0 - 80124a6: 729a strb r2, [r3, #10] - 80124a8: 2200 movs r2, #0 - 80124aa: 72da strb r2, [r3, #11] - IF__NETIF_CHECKSUM_ENABLED(ip_current_input_netif(), NETIF_CHECKSUM_GEN_IP) { - IPH_CHKSUM_SET(fraghdr, inet_chksum(fraghdr, IP_HLEN)); - } -#endif /* CHECKSUM_GEN_IP */ - - p = ipr->p; - 80124ac: 6b3b ldr r3, [r7, #48] @ 0x30 - 80124ae: 685b ldr r3, [r3, #4] - 80124b0: 607b str r3, [r7, #4] - - /* chain together the pbufs contained within the reass_data list. */ - while (r != NULL) { - 80124b2: e00d b.n 80124d0 - iprh = (struct ip_reass_helper *)r->payload; - 80124b4: 6b7b ldr r3, [r7, #52] @ 0x34 - 80124b6: 685b ldr r3, [r3, #4] - 80124b8: 60fb str r3, [r7, #12] - - /* hide the ip header for every succeeding fragment */ - pbuf_remove_header(r, IP_HLEN); - 80124ba: 2114 movs r1, #20 - 80124bc: 6b78 ldr r0, [r7, #52] @ 0x34 - 80124be: f7f5 fd6d bl 8007f9c - pbuf_cat(p, r); - 80124c2: 6b79 ldr r1, [r7, #52] @ 0x34 - 80124c4: 6878 ldr r0, [r7, #4] - 80124c6: f7f5 feb1 bl 800822c - r = iprh->next_pbuf; - 80124ca: 68fb ldr r3, [r7, #12] - 80124cc: 681b ldr r3, [r3, #0] - 80124ce: 637b str r3, [r7, #52] @ 0x34 - while (r != NULL) { - 80124d0: 6b7b ldr r3, [r7, #52] @ 0x34 - 80124d2: 2b00 cmp r3, #0 - 80124d4: d1ee bne.n 80124b4 - } - - /* find the previous entry in the linked list */ - if (ipr == reassdatagrams) { - 80124d6: 4b1e ldr r3, [pc, #120] @ (8012550 ) - 80124d8: 681b ldr r3, [r3, #0] - 80124da: 6b3a ldr r2, [r7, #48] @ 0x30 - 80124dc: 429a cmp r2, r3 - 80124de: d102 bne.n 80124e6 - ipr_prev = NULL; - 80124e0: 2300 movs r3, #0 - 80124e2: 62fb str r3, [r7, #44] @ 0x2c - 80124e4: e010 b.n 8012508 - } else { - for (ipr_prev = reassdatagrams; ipr_prev != NULL; ipr_prev = ipr_prev->next) { - 80124e6: 4b1a ldr r3, [pc, #104] @ (8012550 ) - 80124e8: 681b ldr r3, [r3, #0] - 80124ea: 62fb str r3, [r7, #44] @ 0x2c - 80124ec: e007 b.n 80124fe - if (ipr_prev->next == ipr) { - 80124ee: 6afb ldr r3, [r7, #44] @ 0x2c - 80124f0: 681b ldr r3, [r3, #0] - 80124f2: 6b3a ldr r2, [r7, #48] @ 0x30 - 80124f4: 429a cmp r2, r3 - 80124f6: d006 beq.n 8012506 - for (ipr_prev = reassdatagrams; ipr_prev != NULL; ipr_prev = ipr_prev->next) { - 80124f8: 6afb ldr r3, [r7, #44] @ 0x2c - 80124fa: 681b ldr r3, [r3, #0] - 80124fc: 62fb str r3, [r7, #44] @ 0x2c - 80124fe: 6afb ldr r3, [r7, #44] @ 0x2c - 8012500: 2b00 cmp r3, #0 - 8012502: d1f4 bne.n 80124ee - 8012504: e000 b.n 8012508 - break; - 8012506: bf00 nop - } - } - } - - /* release the sources allocate for the fragment queue entry */ - ip_reass_dequeue_datagram(ipr, ipr_prev); - 8012508: 6af9 ldr r1, [r7, #44] @ 0x2c - 801250a: 6b38 ldr r0, [r7, #48] @ 0x30 - 801250c: f7ff fd2e bl 8011f6c - - /* and adjust the number of pbufs currently queued for reassembly. */ - clen = pbuf_clen(p); - 8012510: 6878 ldr r0, [r7, #4] - 8012512: f7f5 fe51 bl 80081b8 - 8012516: 4603 mov r3, r0 - 8012518: 843b strh r3, [r7, #32] - LWIP_ASSERT("ip_reass_pbufcount >= clen", ip_reass_pbufcount >= clen); - 801251a: 4b0c ldr r3, [pc, #48] @ (801254c ) - 801251c: 881b ldrh r3, [r3, #0] - 801251e: 8c3a ldrh r2, [r7, #32] - 8012520: 429a cmp r2, r3 - 8012522: d906 bls.n 8012532 - 8012524: 4b0b ldr r3, [pc, #44] @ (8012554 ) - 8012526: f240 229b movw r2, #667 @ 0x29b - 801252a: 490b ldr r1, [pc, #44] @ (8012558 ) - 801252c: 480b ldr r0, [pc, #44] @ (801255c ) - 801252e: f000 fba3 bl 8012c78 - ip_reass_pbufcount = (u16_t)(ip_reass_pbufcount - clen); - 8012532: 4b06 ldr r3, [pc, #24] @ (801254c ) - 8012534: 881a ldrh r2, [r3, #0] - 8012536: 8c3b ldrh r3, [r7, #32] - 8012538: 1ad3 subs r3, r2, r3 - 801253a: b29a uxth r2, r3 - 801253c: 4b03 ldr r3, [pc, #12] @ (801254c ) - 801253e: 801a strh r2, [r3, #0] - - MIB2_STATS_INC(mib2.ipreasmoks); - - /* Return the pbuf chain */ - return p; - 8012540: 687b ldr r3, [r7, #4] - 8012542: e038 b.n 80125b6 - } - /* the datagram is not (yet?) reassembled completely */ - LWIP_DEBUGF(IP_REASS_DEBUG, ("ip_reass_pbufcount: %d out\n", ip_reass_pbufcount)); - return NULL; - 8012544: 2300 movs r3, #0 - 8012546: e036 b.n 80125b6 - goto nullreturn_ipr; - 8012548: bf00 nop - 801254a: e00a b.n 8012562 - 801254c: 20019278 .word 0x20019278 - 8012550: 20019274 .word 0x20019274 - 8012554: 0801a22c .word 0x0801a22c - 8012558: 0801a39c .word 0x0801a39c - 801255c: 0801a274 .word 0x0801a274 - goto nullreturn_ipr; - 8012560: bf00 nop - -nullreturn_ipr: - LWIP_ASSERT("ipr != NULL", ipr != NULL); - 8012562: 6b3b ldr r3, [r7, #48] @ 0x30 - 8012564: 2b00 cmp r3, #0 - 8012566: d106 bne.n 8012576 - 8012568: 4b15 ldr r3, [pc, #84] @ (80125c0 ) - 801256a: f44f 722a mov.w r2, #680 @ 0x2a8 - 801256e: 4915 ldr r1, [pc, #84] @ (80125c4 ) - 8012570: 4815 ldr r0, [pc, #84] @ (80125c8 ) - 8012572: f000 fb81 bl 8012c78 - if (ipr->p == NULL) { - 8012576: 6b3b ldr r3, [r7, #48] @ 0x30 - 8012578: 685b ldr r3, [r3, #4] - 801257a: 2b00 cmp r3, #0 - 801257c: d116 bne.n 80125ac - /* dropped pbuf after creating a new datagram entry: remove the entry, too */ - LWIP_ASSERT("not firstalthough just enqueued", ipr == reassdatagrams); - 801257e: 4b13 ldr r3, [pc, #76] @ (80125cc ) - 8012580: 681b ldr r3, [r3, #0] - 8012582: 6b3a ldr r2, [r7, #48] @ 0x30 - 8012584: 429a cmp r2, r3 - 8012586: d006 beq.n 8012596 - 8012588: 4b0d ldr r3, [pc, #52] @ (80125c0 ) - 801258a: f240 22ab movw r2, #683 @ 0x2ab - 801258e: 4910 ldr r1, [pc, #64] @ (80125d0 ) - 8012590: 480d ldr r0, [pc, #52] @ (80125c8 ) - 8012592: f000 fb71 bl 8012c78 - ip_reass_dequeue_datagram(ipr, NULL); - 8012596: 2100 movs r1, #0 - 8012598: 6b38 ldr r0, [r7, #48] @ 0x30 - 801259a: f7ff fce7 bl 8011f6c - 801259e: e006 b.n 80125ae - goto nullreturn; - 80125a0: bf00 nop - 80125a2: e004 b.n 80125ae - goto nullreturn; - 80125a4: bf00 nop - 80125a6: e002 b.n 80125ae - goto nullreturn; - 80125a8: bf00 nop - 80125aa: e000 b.n 80125ae - } - -nullreturn: - 80125ac: bf00 nop - LWIP_DEBUGF(IP_REASS_DEBUG, ("ip4_reass: nullreturn\n")); - IPFRAG_STATS_INC(ip_frag.drop); - pbuf_free(p); - 80125ae: 6878 ldr r0, [r7, #4] - 80125b0: f7f5 fd7a bl 80080a8 - return NULL; - 80125b4: 2300 movs r3, #0 -} - 80125b6: 4618 mov r0, r3 - 80125b8: 3738 adds r7, #56 @ 0x38 - 80125ba: 46bd mov sp, r7 - 80125bc: bd80 pop {r7, pc} - 80125be: bf00 nop - 80125c0: 0801a22c .word 0x0801a22c - 80125c4: 0801a3b8 .word 0x0801a3b8 - 80125c8: 0801a274 .word 0x0801a274 - 80125cc: 20019274 .word 0x20019274 - 80125d0: 0801a3c4 .word 0x0801a3c4 - -080125d4 : -#if IP_FRAG -#if !LWIP_NETIF_TX_SINGLE_PBUF -/** Allocate a new struct pbuf_custom_ref */ -static struct pbuf_custom_ref * -ip_frag_alloc_pbuf_custom_ref(void) -{ - 80125d4: b580 push {r7, lr} - 80125d6: af00 add r7, sp, #0 - return (struct pbuf_custom_ref *)memp_malloc(MEMP_FRAG_PBUF); - 80125d8: 2005 movs r0, #5 - 80125da: f7f4 fe75 bl 80072c8 - 80125de: 4603 mov r3, r0 -} - 80125e0: 4618 mov r0, r3 - 80125e2: bd80 pop {r7, pc} - -080125e4 : - -/** Free a struct pbuf_custom_ref */ -static void -ip_frag_free_pbuf_custom_ref(struct pbuf_custom_ref *p) -{ - 80125e4: b580 push {r7, lr} - 80125e6: b082 sub sp, #8 - 80125e8: af00 add r7, sp, #0 - 80125ea: 6078 str r0, [r7, #4] - LWIP_ASSERT("p != NULL", p != NULL); - 80125ec: 687b ldr r3, [r7, #4] - 80125ee: 2b00 cmp r3, #0 - 80125f0: d106 bne.n 8012600 - 80125f2: 4b07 ldr r3, [pc, #28] @ (8012610 ) - 80125f4: f44f 7231 mov.w r2, #708 @ 0x2c4 - 80125f8: 4906 ldr r1, [pc, #24] @ (8012614 ) - 80125fa: 4807 ldr r0, [pc, #28] @ (8012618 ) - 80125fc: f000 fb3c bl 8012c78 - memp_free(MEMP_FRAG_PBUF, p); - 8012600: 6879 ldr r1, [r7, #4] - 8012602: 2005 movs r0, #5 - 8012604: f7f4 fed0 bl 80073a8 -} - 8012608: bf00 nop - 801260a: 3708 adds r7, #8 - 801260c: 46bd mov sp, r7 - 801260e: bd80 pop {r7, pc} - 8012610: 0801a22c .word 0x0801a22c - 8012614: 0801a3e4 .word 0x0801a3e4 - 8012618: 0801a274 .word 0x0801a274 - -0801261c : - -/** Free-callback function to free a 'struct pbuf_custom_ref', called by - * pbuf_free. */ -static void -ipfrag_free_pbuf_custom(struct pbuf *p) -{ - 801261c: b580 push {r7, lr} - 801261e: b084 sub sp, #16 - 8012620: af00 add r7, sp, #0 - 8012622: 6078 str r0, [r7, #4] - struct pbuf_custom_ref *pcr = (struct pbuf_custom_ref *)p; - 8012624: 687b ldr r3, [r7, #4] - 8012626: 60fb str r3, [r7, #12] - LWIP_ASSERT("pcr != NULL", pcr != NULL); - 8012628: 68fb ldr r3, [r7, #12] - 801262a: 2b00 cmp r3, #0 - 801262c: d106 bne.n 801263c - 801262e: 4b11 ldr r3, [pc, #68] @ (8012674 ) - 8012630: f240 22ce movw r2, #718 @ 0x2ce - 8012634: 4910 ldr r1, [pc, #64] @ (8012678 ) - 8012636: 4811 ldr r0, [pc, #68] @ (801267c ) - 8012638: f000 fb1e bl 8012c78 - LWIP_ASSERT("pcr == p", (void *)pcr == (void *)p); - 801263c: 68fa ldr r2, [r7, #12] - 801263e: 687b ldr r3, [r7, #4] - 8012640: 429a cmp r2, r3 - 8012642: d006 beq.n 8012652 - 8012644: 4b0b ldr r3, [pc, #44] @ (8012674 ) - 8012646: f240 22cf movw r2, #719 @ 0x2cf - 801264a: 490d ldr r1, [pc, #52] @ (8012680 ) - 801264c: 480b ldr r0, [pc, #44] @ (801267c ) - 801264e: f000 fb13 bl 8012c78 - if (pcr->original != NULL) { - 8012652: 68fb ldr r3, [r7, #12] - 8012654: 695b ldr r3, [r3, #20] - 8012656: 2b00 cmp r3, #0 - 8012658: d004 beq.n 8012664 - pbuf_free(pcr->original); - 801265a: 68fb ldr r3, [r7, #12] - 801265c: 695b ldr r3, [r3, #20] - 801265e: 4618 mov r0, r3 - 8012660: f7f5 fd22 bl 80080a8 - } - ip_frag_free_pbuf_custom_ref(pcr); - 8012664: 68f8 ldr r0, [r7, #12] - 8012666: f7ff ffbd bl 80125e4 -} - 801266a: bf00 nop - 801266c: 3710 adds r7, #16 - 801266e: 46bd mov sp, r7 - 8012670: bd80 pop {r7, pc} - 8012672: bf00 nop - 8012674: 0801a22c .word 0x0801a22c - 8012678: 0801a3f0 .word 0x0801a3f0 - 801267c: 0801a274 .word 0x0801a274 - 8012680: 0801a3fc .word 0x0801a3fc - -08012684 : - * - * @return ERR_OK if sent successfully, err_t otherwise - */ -err_t -ip4_frag(struct pbuf *p, struct netif *netif, const ip4_addr_t *dest) -{ - 8012684: b580 push {r7, lr} - 8012686: b094 sub sp, #80 @ 0x50 - 8012688: af02 add r7, sp, #8 - 801268a: 60f8 str r0, [r7, #12] - 801268c: 60b9 str r1, [r7, #8] - 801268e: 607a str r2, [r7, #4] - struct pbuf *rambuf; -#if !LWIP_NETIF_TX_SINGLE_PBUF - struct pbuf *newpbuf; - u16_t newpbuflen = 0; - 8012690: 2300 movs r3, #0 - 8012692: f8a7 3046 strh.w r3, [r7, #70] @ 0x46 - u16_t left_to_copy; -#endif - struct ip_hdr *original_iphdr; - struct ip_hdr *iphdr; - const u16_t nfb = (u16_t)((netif->mtu - IP_HLEN) / 8); - 8012696: 68bb ldr r3, [r7, #8] - 8012698: 8d1b ldrh r3, [r3, #40] @ 0x28 - 801269a: 3b14 subs r3, #20 - 801269c: 2b00 cmp r3, #0 - 801269e: da00 bge.n 80126a2 - 80126a0: 3307 adds r3, #7 - 80126a2: 10db asrs r3, r3, #3 - 80126a4: 877b strh r3, [r7, #58] @ 0x3a - u16_t left, fragsize; - u16_t ofo; - int last; - u16_t poff = IP_HLEN; - 80126a6: 2314 movs r3, #20 - 80126a8: 87fb strh r3, [r7, #62] @ 0x3e - u16_t tmp; - int mf_set; - - original_iphdr = (struct ip_hdr *)p->payload; - 80126aa: 68fb ldr r3, [r7, #12] - 80126ac: 685b ldr r3, [r3, #4] - 80126ae: 637b str r3, [r7, #52] @ 0x34 - iphdr = original_iphdr; - 80126b0: 6b7b ldr r3, [r7, #52] @ 0x34 - 80126b2: 633b str r3, [r7, #48] @ 0x30 - if (IPH_HL_BYTES(iphdr) != IP_HLEN) { - 80126b4: 6b3b ldr r3, [r7, #48] @ 0x30 - 80126b6: 781b ldrb r3, [r3, #0] - 80126b8: f003 030f and.w r3, r3, #15 - 80126bc: b2db uxtb r3, r3 - 80126be: 009b lsls r3, r3, #2 - 80126c0: b2db uxtb r3, r3 - 80126c2: 2b14 cmp r3, #20 - 80126c4: d002 beq.n 80126cc - /* ip4_frag() does not support IP options */ - return ERR_VAL; - 80126c6: f06f 0305 mvn.w r3, #5 - 80126ca: e110 b.n 80128ee - } - LWIP_ERROR("ip4_frag(): pbuf too short", p->len >= IP_HLEN, return ERR_VAL); - 80126cc: 68fb ldr r3, [r7, #12] - 80126ce: 895b ldrh r3, [r3, #10] - 80126d0: 2b13 cmp r3, #19 - 80126d2: d809 bhi.n 80126e8 - 80126d4: 4b88 ldr r3, [pc, #544] @ (80128f8 ) - 80126d6: f44f 723f mov.w r2, #764 @ 0x2fc - 80126da: 4988 ldr r1, [pc, #544] @ (80128fc ) - 80126dc: 4888 ldr r0, [pc, #544] @ (8012900 ) - 80126de: f000 facb bl 8012c78 - 80126e2: f06f 0305 mvn.w r3, #5 - 80126e6: e102 b.n 80128ee - - /* Save original offset */ - tmp = lwip_ntohs(IPH_OFFSET(iphdr)); - 80126e8: 6b3b ldr r3, [r7, #48] @ 0x30 - 80126ea: 88db ldrh r3, [r3, #6] - 80126ec: b29b uxth r3, r3 - 80126ee: 4618 mov r0, r3 - 80126f0: f7f4 f98a bl 8006a08 - 80126f4: 4603 mov r3, r0 - 80126f6: 87bb strh r3, [r7, #60] @ 0x3c - ofo = tmp & IP_OFFMASK; - 80126f8: 8fbb ldrh r3, [r7, #60] @ 0x3c - 80126fa: f3c3 030c ubfx r3, r3, #0, #13 - 80126fe: f8a7 3040 strh.w r3, [r7, #64] @ 0x40 - /* already fragmented? if so, the last fragment we create must have MF, too */ - mf_set = tmp & IP_MF; - 8012702: 8fbb ldrh r3, [r7, #60] @ 0x3c - 8012704: f403 5300 and.w r3, r3, #8192 @ 0x2000 - 8012708: 62fb str r3, [r7, #44] @ 0x2c - - left = (u16_t)(p->tot_len - IP_HLEN); - 801270a: 68fb ldr r3, [r7, #12] - 801270c: 891b ldrh r3, [r3, #8] - 801270e: 3b14 subs r3, #20 - 8012710: f8a7 3042 strh.w r3, [r7, #66] @ 0x42 - - while (left) { - 8012714: e0e1 b.n 80128da - /* Fill this fragment */ - fragsize = LWIP_MIN(left, (u16_t)(nfb * 8)); - 8012716: 8f7b ldrh r3, [r7, #58] @ 0x3a - 8012718: 00db lsls r3, r3, #3 - 801271a: b29b uxth r3, r3 - 801271c: f8b7 2042 ldrh.w r2, [r7, #66] @ 0x42 - 8012720: 4293 cmp r3, r2 - 8012722: bf28 it cs - 8012724: 4613 movcs r3, r2 - 8012726: 857b strh r3, [r7, #42] @ 0x2a - /* When not using a static buffer, create a chain of pbufs. - * The first will be a PBUF_RAM holding the link and IP header. - * The rest will be PBUF_REFs mirroring the pbuf chain to be fragged, - * but limited to the size of an mtu. - */ - rambuf = pbuf_alloc(PBUF_LINK, IP_HLEN, PBUF_RAM); - 8012728: f44f 7220 mov.w r2, #640 @ 0x280 - 801272c: 2114 movs r1, #20 - 801272e: 200e movs r0, #14 - 8012730: f7f5 f9d8 bl 8007ae4 - 8012734: 6278 str r0, [r7, #36] @ 0x24 - if (rambuf == NULL) { - 8012736: 6a7b ldr r3, [r7, #36] @ 0x24 - 8012738: 2b00 cmp r3, #0 - 801273a: f000 80d5 beq.w 80128e8 - goto memerr; - } - LWIP_ASSERT("this needs a pbuf in one piece!", - 801273e: 6a7b ldr r3, [r7, #36] @ 0x24 - 8012740: 895b ldrh r3, [r3, #10] - 8012742: 2b13 cmp r3, #19 - 8012744: d806 bhi.n 8012754 - 8012746: 4b6c ldr r3, [pc, #432] @ (80128f8 ) - 8012748: f44f 7249 mov.w r2, #804 @ 0x324 - 801274c: 496d ldr r1, [pc, #436] @ (8012904 ) - 801274e: 486c ldr r0, [pc, #432] @ (8012900 ) - 8012750: f000 fa92 bl 8012c78 - (rambuf->len >= (IP_HLEN))); - SMEMCPY(rambuf->payload, original_iphdr, IP_HLEN); - 8012754: 6a7b ldr r3, [r7, #36] @ 0x24 - 8012756: 685b ldr r3, [r3, #4] - 8012758: 2214 movs r2, #20 - 801275a: 6b79 ldr r1, [r7, #52] @ 0x34 - 801275c: 4618 mov r0, r3 - 801275e: f000 fb87 bl 8012e70 - iphdr = (struct ip_hdr *)rambuf->payload; - 8012762: 6a7b ldr r3, [r7, #36] @ 0x24 - 8012764: 685b ldr r3, [r3, #4] - 8012766: 633b str r3, [r7, #48] @ 0x30 - - left_to_copy = fragsize; - 8012768: 8d7b ldrh r3, [r7, #42] @ 0x2a - 801276a: f8a7 3044 strh.w r3, [r7, #68] @ 0x44 - while (left_to_copy) { - 801276e: e064 b.n 801283a - struct pbuf_custom_ref *pcr; - u16_t plen = (u16_t)(p->len - poff); - 8012770: 68fb ldr r3, [r7, #12] - 8012772: 895a ldrh r2, [r3, #10] - 8012774: 8ffb ldrh r3, [r7, #62] @ 0x3e - 8012776: 1ad3 subs r3, r2, r3 - 8012778: 83fb strh r3, [r7, #30] - LWIP_ASSERT("p->len >= poff", p->len >= poff); - 801277a: 68fb ldr r3, [r7, #12] - 801277c: 895b ldrh r3, [r3, #10] - 801277e: 8ffa ldrh r2, [r7, #62] @ 0x3e - 8012780: 429a cmp r2, r3 - 8012782: d906 bls.n 8012792 - 8012784: 4b5c ldr r3, [pc, #368] @ (80128f8 ) - 8012786: f240 322d movw r2, #813 @ 0x32d - 801278a: 495f ldr r1, [pc, #380] @ (8012908 ) - 801278c: 485c ldr r0, [pc, #368] @ (8012900 ) - 801278e: f000 fa73 bl 8012c78 - newpbuflen = LWIP_MIN(left_to_copy, plen); - 8012792: 8bfa ldrh r2, [r7, #30] - 8012794: f8b7 3044 ldrh.w r3, [r7, #68] @ 0x44 - 8012798: 4293 cmp r3, r2 - 801279a: bf28 it cs - 801279c: 4613 movcs r3, r2 - 801279e: f8a7 3046 strh.w r3, [r7, #70] @ 0x46 - /* Is this pbuf already empty? */ - if (!newpbuflen) { - 80127a2: f8b7 3046 ldrh.w r3, [r7, #70] @ 0x46 - 80127a6: 2b00 cmp r3, #0 - 80127a8: d105 bne.n 80127b6 - poff = 0; - 80127aa: 2300 movs r3, #0 - 80127ac: 87fb strh r3, [r7, #62] @ 0x3e - p = p->next; - 80127ae: 68fb ldr r3, [r7, #12] - 80127b0: 681b ldr r3, [r3, #0] - 80127b2: 60fb str r3, [r7, #12] - continue; - 80127b4: e041 b.n 801283a - } - pcr = ip_frag_alloc_pbuf_custom_ref(); - 80127b6: f7ff ff0d bl 80125d4 - 80127ba: 61b8 str r0, [r7, #24] - if (pcr == NULL) { - 80127bc: 69bb ldr r3, [r7, #24] - 80127be: 2b00 cmp r3, #0 - 80127c0: d103 bne.n 80127ca - pbuf_free(rambuf); - 80127c2: 6a78 ldr r0, [r7, #36] @ 0x24 - 80127c4: f7f5 fc70 bl 80080a8 - goto memerr; - 80127c8: e08f b.n 80128ea - } - /* Mirror this pbuf, although we might not need all of it. */ - newpbuf = pbuf_alloced_custom(PBUF_RAW, newpbuflen, PBUF_REF, &pcr->pc, - 80127ca: 69b8 ldr r0, [r7, #24] - (u8_t *)p->payload + poff, newpbuflen); - 80127cc: 68fb ldr r3, [r7, #12] - 80127ce: 685a ldr r2, [r3, #4] - newpbuf = pbuf_alloced_custom(PBUF_RAW, newpbuflen, PBUF_REF, &pcr->pc, - 80127d0: 8ffb ldrh r3, [r7, #62] @ 0x3e - 80127d2: 4413 add r3, r2 - 80127d4: f8b7 1046 ldrh.w r1, [r7, #70] @ 0x46 - 80127d8: f8b7 2046 ldrh.w r2, [r7, #70] @ 0x46 - 80127dc: 9201 str r2, [sp, #4] - 80127de: 9300 str r3, [sp, #0] - 80127e0: 4603 mov r3, r0 - 80127e2: 2241 movs r2, #65 @ 0x41 - 80127e4: 2000 movs r0, #0 - 80127e6: f7f5 faa7 bl 8007d38 - 80127ea: 6178 str r0, [r7, #20] - if (newpbuf == NULL) { - 80127ec: 697b ldr r3, [r7, #20] - 80127ee: 2b00 cmp r3, #0 - 80127f0: d106 bne.n 8012800 - ip_frag_free_pbuf_custom_ref(pcr); - 80127f2: 69b8 ldr r0, [r7, #24] - 80127f4: f7ff fef6 bl 80125e4 - pbuf_free(rambuf); - 80127f8: 6a78 ldr r0, [r7, #36] @ 0x24 - 80127fa: f7f5 fc55 bl 80080a8 - goto memerr; - 80127fe: e074 b.n 80128ea - } - pbuf_ref(p); - 8012800: 68f8 ldr r0, [r7, #12] - 8012802: f7f5 fcf1 bl 80081e8 - pcr->original = p; - 8012806: 69bb ldr r3, [r7, #24] - 8012808: 68fa ldr r2, [r7, #12] - 801280a: 615a str r2, [r3, #20] - pcr->pc.custom_free_function = ipfrag_free_pbuf_custom; - 801280c: 69bb ldr r3, [r7, #24] - 801280e: 4a3f ldr r2, [pc, #252] @ (801290c ) - 8012810: 611a str r2, [r3, #16] - - /* Add it to end of rambuf's chain, but using pbuf_cat, not pbuf_chain - * so that it is removed when pbuf_dechain is later called on rambuf. - */ - pbuf_cat(rambuf, newpbuf); - 8012812: 6979 ldr r1, [r7, #20] - 8012814: 6a78 ldr r0, [r7, #36] @ 0x24 - 8012816: f7f5 fd09 bl 800822c - left_to_copy = (u16_t)(left_to_copy - newpbuflen); - 801281a: f8b7 2044 ldrh.w r2, [r7, #68] @ 0x44 - 801281e: f8b7 3046 ldrh.w r3, [r7, #70] @ 0x46 - 8012822: 1ad3 subs r3, r2, r3 - 8012824: f8a7 3044 strh.w r3, [r7, #68] @ 0x44 - if (left_to_copy) { - 8012828: f8b7 3044 ldrh.w r3, [r7, #68] @ 0x44 - 801282c: 2b00 cmp r3, #0 - 801282e: d004 beq.n 801283a - poff = 0; - 8012830: 2300 movs r3, #0 - 8012832: 87fb strh r3, [r7, #62] @ 0x3e - p = p->next; - 8012834: 68fb ldr r3, [r7, #12] - 8012836: 681b ldr r3, [r3, #0] - 8012838: 60fb str r3, [r7, #12] - while (left_to_copy) { - 801283a: f8b7 3044 ldrh.w r3, [r7, #68] @ 0x44 - 801283e: 2b00 cmp r3, #0 - 8012840: d196 bne.n 8012770 - } - } - poff = (u16_t)(poff + newpbuflen); - 8012842: 8ffa ldrh r2, [r7, #62] @ 0x3e - 8012844: f8b7 3046 ldrh.w r3, [r7, #70] @ 0x46 - 8012848: 4413 add r3, r2 - 801284a: 87fb strh r3, [r7, #62] @ 0x3e -#endif /* LWIP_NETIF_TX_SINGLE_PBUF */ - - /* Correct header */ - last = (left <= netif->mtu - IP_HLEN); - 801284c: 68bb ldr r3, [r7, #8] - 801284e: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8012850: f1a3 0213 sub.w r2, r3, #19 - 8012854: f8b7 3042 ldrh.w r3, [r7, #66] @ 0x42 - 8012858: 429a cmp r2, r3 - 801285a: bfcc ite gt - 801285c: 2301 movgt r3, #1 - 801285e: 2300 movle r3, #0 - 8012860: b2db uxtb r3, r3 - 8012862: 623b str r3, [r7, #32] - - /* Set new offset and MF flag */ - tmp = (IP_OFFMASK & (ofo)); - 8012864: f8b7 3040 ldrh.w r3, [r7, #64] @ 0x40 - 8012868: f3c3 030c ubfx r3, r3, #0, #13 - 801286c: 87bb strh r3, [r7, #60] @ 0x3c - if (!last || mf_set) { - 801286e: 6a3b ldr r3, [r7, #32] - 8012870: 2b00 cmp r3, #0 - 8012872: d002 beq.n 801287a - 8012874: 6afb ldr r3, [r7, #44] @ 0x2c - 8012876: 2b00 cmp r3, #0 - 8012878: d003 beq.n 8012882 - /* the last fragment has MF set if the input frame had it */ - tmp = tmp | IP_MF; - 801287a: 8fbb ldrh r3, [r7, #60] @ 0x3c - 801287c: f443 5300 orr.w r3, r3, #8192 @ 0x2000 - 8012880: 87bb strh r3, [r7, #60] @ 0x3c - } - IPH_OFFSET_SET(iphdr, lwip_htons(tmp)); - 8012882: 8fbb ldrh r3, [r7, #60] @ 0x3c - 8012884: 4618 mov r0, r3 - 8012886: f7f4 f8bf bl 8006a08 - 801288a: 4603 mov r3, r0 - 801288c: 461a mov r2, r3 - 801288e: 6b3b ldr r3, [r7, #48] @ 0x30 - 8012890: 80da strh r2, [r3, #6] - IPH_LEN_SET(iphdr, lwip_htons((u16_t)(fragsize + IP_HLEN))); - 8012892: 8d7b ldrh r3, [r7, #42] @ 0x2a - 8012894: 3314 adds r3, #20 - 8012896: b29b uxth r3, r3 - 8012898: 4618 mov r0, r3 - 801289a: f7f4 f8b5 bl 8006a08 - 801289e: 4603 mov r3, r0 - 80128a0: 461a mov r2, r3 - 80128a2: 6b3b ldr r3, [r7, #48] @ 0x30 - 80128a4: 805a strh r2, [r3, #2] - IPH_CHKSUM_SET(iphdr, 0); - 80128a6: 6b3b ldr r3, [r7, #48] @ 0x30 - 80128a8: 2200 movs r2, #0 - 80128aa: 729a strb r2, [r3, #10] - 80128ac: 2200 movs r2, #0 - 80128ae: 72da strb r2, [r3, #11] -#endif /* CHECKSUM_GEN_IP */ - - /* No need for separate header pbuf - we allowed room for it in rambuf - * when allocated. - */ - netif->output(netif, rambuf, dest); - 80128b0: 68bb ldr r3, [r7, #8] - 80128b2: 695b ldr r3, [r3, #20] - 80128b4: 687a ldr r2, [r7, #4] - 80128b6: 6a79 ldr r1, [r7, #36] @ 0x24 - 80128b8: 68b8 ldr r0, [r7, #8] - 80128ba: 4798 blx r3 - * recreate it next time round the loop. If we're lucky the hardware - * will have already sent the packet, the free will really free, and - * there will be zero memory penalty. - */ - - pbuf_free(rambuf); - 80128bc: 6a78 ldr r0, [r7, #36] @ 0x24 - 80128be: f7f5 fbf3 bl 80080a8 - left = (u16_t)(left - fragsize); - 80128c2: f8b7 2042 ldrh.w r2, [r7, #66] @ 0x42 - 80128c6: 8d7b ldrh r3, [r7, #42] @ 0x2a - 80128c8: 1ad3 subs r3, r2, r3 - 80128ca: f8a7 3042 strh.w r3, [r7, #66] @ 0x42 - ofo = (u16_t)(ofo + nfb); - 80128ce: f8b7 2040 ldrh.w r2, [r7, #64] @ 0x40 - 80128d2: 8f7b ldrh r3, [r7, #58] @ 0x3a - 80128d4: 4413 add r3, r2 - 80128d6: f8a7 3040 strh.w r3, [r7, #64] @ 0x40 - while (left) { - 80128da: f8b7 3042 ldrh.w r3, [r7, #66] @ 0x42 - 80128de: 2b00 cmp r3, #0 - 80128e0: f47f af19 bne.w 8012716 - } - MIB2_STATS_INC(mib2.ipfragoks); - return ERR_OK; - 80128e4: 2300 movs r3, #0 - 80128e6: e002 b.n 80128ee - goto memerr; - 80128e8: bf00 nop -memerr: - MIB2_STATS_INC(mib2.ipfragfails); - return ERR_MEM; - 80128ea: f04f 33ff mov.w r3, #4294967295 -} - 80128ee: 4618 mov r0, r3 - 80128f0: 3748 adds r7, #72 @ 0x48 - 80128f2: 46bd mov sp, r7 - 80128f4: bd80 pop {r7, pc} - 80128f6: bf00 nop - 80128f8: 0801a22c .word 0x0801a22c - 80128fc: 0801a408 .word 0x0801a408 - 8012900: 0801a274 .word 0x0801a274 - 8012904: 0801a424 .word 0x0801a424 - 8012908: 0801a444 .word 0x0801a444 - 801290c: 0801261d .word 0x0801261d - -08012910 : - * @see ETHARP_SUPPORT_VLAN - * @see LWIP_HOOK_VLAN_CHECK - */ -err_t -ethernet_input(struct pbuf *p, struct netif *netif) -{ - 8012910: b580 push {r7, lr} - 8012912: b086 sub sp, #24 - 8012914: af00 add r7, sp, #0 - 8012916: 6078 str r0, [r7, #4] - 8012918: 6039 str r1, [r7, #0] - struct eth_hdr *ethhdr; - u16_t type; -#if LWIP_ARP || ETHARP_SUPPORT_VLAN || LWIP_IPV6 - u16_t next_hdr_offset = SIZEOF_ETH_HDR; - 801291a: 230e movs r3, #14 - 801291c: 82fb strh r3, [r7, #22] -#endif /* LWIP_ARP || ETHARP_SUPPORT_VLAN */ - - LWIP_ASSERT_CORE_LOCKED(); - - if (p->len <= SIZEOF_ETH_HDR) { - 801291e: 687b ldr r3, [r7, #4] - 8012920: 895b ldrh r3, [r3, #10] - 8012922: 2b0e cmp r3, #14 - 8012924: d96e bls.n 8012a04 - ETHARP_STATS_INC(etharp.drop); - MIB2_STATS_NETIF_INC(netif, ifinerrors); - goto free_and_return; - } - - if (p->if_idx == NETIF_NO_INDEX) { - 8012926: 687b ldr r3, [r7, #4] - 8012928: 7bdb ldrb r3, [r3, #15] - 801292a: 2b00 cmp r3, #0 - 801292c: d106 bne.n 801293c - p->if_idx = netif_get_index(netif); - 801292e: 683b ldr r3, [r7, #0] - 8012930: f893 3034 ldrb.w r3, [r3, #52] @ 0x34 - 8012934: 3301 adds r3, #1 - 8012936: b2da uxtb r2, r3 - 8012938: 687b ldr r3, [r7, #4] - 801293a: 73da strb r2, [r3, #15] - } - - /* points to packet payload, which starts with an Ethernet header */ - ethhdr = (struct eth_hdr *)p->payload; - 801293c: 687b ldr r3, [r7, #4] - 801293e: 685b ldr r3, [r3, #4] - 8012940: 613b str r3, [r7, #16] - (unsigned char)ethhdr->dest.addr[3], (unsigned char)ethhdr->dest.addr[4], (unsigned char)ethhdr->dest.addr[5], - (unsigned char)ethhdr->src.addr[0], (unsigned char)ethhdr->src.addr[1], (unsigned char)ethhdr->src.addr[2], - (unsigned char)ethhdr->src.addr[3], (unsigned char)ethhdr->src.addr[4], (unsigned char)ethhdr->src.addr[5], - lwip_htons(ethhdr->type))); - - type = ethhdr->type; - 8012942: 693b ldr r3, [r7, #16] - 8012944: 7b1a ldrb r2, [r3, #12] - 8012946: 7b5b ldrb r3, [r3, #13] - 8012948: 021b lsls r3, r3, #8 - 801294a: 4313 orrs r3, r2 - 801294c: 81fb strh r3, [r7, #14] - -#if LWIP_ARP_FILTER_NETIF - netif = LWIP_ARP_FILTER_NETIF_FN(p, netif, lwip_htons(type)); -#endif /* LWIP_ARP_FILTER_NETIF*/ - - if (ethhdr->dest.addr[0] & 1) { - 801294e: 693b ldr r3, [r7, #16] - 8012950: 781b ldrb r3, [r3, #0] - 8012952: f003 0301 and.w r3, r3, #1 - 8012956: 2b00 cmp r3, #0 - 8012958: d023 beq.n 80129a2 - /* this might be a multicast or broadcast packet */ - if (ethhdr->dest.addr[0] == LL_IP4_MULTICAST_ADDR_0) { - 801295a: 693b ldr r3, [r7, #16] - 801295c: 781b ldrb r3, [r3, #0] - 801295e: 2b01 cmp r3, #1 - 8012960: d10f bne.n 8012982 -#if LWIP_IPV4 - if ((ethhdr->dest.addr[1] == LL_IP4_MULTICAST_ADDR_1) && - 8012962: 693b ldr r3, [r7, #16] - 8012964: 785b ldrb r3, [r3, #1] - 8012966: 2b00 cmp r3, #0 - 8012968: d11b bne.n 80129a2 - (ethhdr->dest.addr[2] == LL_IP4_MULTICAST_ADDR_2)) { - 801296a: 693b ldr r3, [r7, #16] - 801296c: 789b ldrb r3, [r3, #2] - if ((ethhdr->dest.addr[1] == LL_IP4_MULTICAST_ADDR_1) && - 801296e: 2b5e cmp r3, #94 @ 0x5e - 8012970: d117 bne.n 80129a2 - /* mark the pbuf as link-layer multicast */ - p->flags |= PBUF_FLAG_LLMCAST; - 8012972: 687b ldr r3, [r7, #4] - 8012974: 7b5b ldrb r3, [r3, #13] - 8012976: f043 0310 orr.w r3, r3, #16 - 801297a: b2da uxtb r2, r3 - 801297c: 687b ldr r3, [r7, #4] - 801297e: 735a strb r2, [r3, #13] - 8012980: e00f b.n 80129a2 - (ethhdr->dest.addr[1] == LL_IP6_MULTICAST_ADDR_1)) { - /* mark the pbuf as link-layer multicast */ - p->flags |= PBUF_FLAG_LLMCAST; - } -#endif /* LWIP_IPV6 */ - else if (eth_addr_cmp(ðhdr->dest, ðbroadcast)) { - 8012982: 693b ldr r3, [r7, #16] - 8012984: 2206 movs r2, #6 - 8012986: 4928 ldr r1, [pc, #160] @ (8012a28 ) - 8012988: 4618 mov r0, r3 - 801298a: f000 f9ca bl 8012d22 - 801298e: 4603 mov r3, r0 - 8012990: 2b00 cmp r3, #0 - 8012992: d106 bne.n 80129a2 - /* mark the pbuf as link-layer broadcast */ - p->flags |= PBUF_FLAG_LLBCAST; - 8012994: 687b ldr r3, [r7, #4] - 8012996: 7b5b ldrb r3, [r3, #13] - 8012998: f043 0308 orr.w r3, r3, #8 - 801299c: b2da uxtb r2, r3 - 801299e: 687b ldr r3, [r7, #4] - 80129a0: 735a strb r2, [r3, #13] - } - } - - switch (type) { - 80129a2: 89fb ldrh r3, [r7, #14] - 80129a4: 2b08 cmp r3, #8 - 80129a6: d003 beq.n 80129b0 - 80129a8: f5b3 6fc1 cmp.w r3, #1544 @ 0x608 - 80129ac: d014 beq.n 80129d8 - } -#endif - ETHARP_STATS_INC(etharp.proterr); - ETHARP_STATS_INC(etharp.drop); - MIB2_STATS_NETIF_INC(netif, ifinunknownprotos); - goto free_and_return; - 80129ae: e032 b.n 8012a16 - if (!(netif->flags & NETIF_FLAG_ETHARP)) { - 80129b0: 683b ldr r3, [r7, #0] - 80129b2: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 - 80129b6: f003 0308 and.w r3, r3, #8 - 80129ba: 2b00 cmp r3, #0 - 80129bc: d024 beq.n 8012a08 - if (pbuf_remove_header(p, next_hdr_offset)) { - 80129be: 8afb ldrh r3, [r7, #22] - 80129c0: 4619 mov r1, r3 - 80129c2: 6878 ldr r0, [r7, #4] - 80129c4: f7f5 faea bl 8007f9c - 80129c8: 4603 mov r3, r0 - 80129ca: 2b00 cmp r3, #0 - 80129cc: d11e bne.n 8012a0c - ip4_input(p, netif); - 80129ce: 6839 ldr r1, [r7, #0] - 80129d0: 6878 ldr r0, [r7, #4] - 80129d2: f7fe fdc5 bl 8011560 - break; - 80129d6: e013 b.n 8012a00 - if (!(netif->flags & NETIF_FLAG_ETHARP)) { - 80129d8: 683b ldr r3, [r7, #0] - 80129da: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 - 80129de: f003 0308 and.w r3, r3, #8 - 80129e2: 2b00 cmp r3, #0 - 80129e4: d014 beq.n 8012a10 - if (pbuf_remove_header(p, next_hdr_offset)) { - 80129e6: 8afb ldrh r3, [r7, #22] - 80129e8: 4619 mov r1, r3 - 80129ea: 6878 ldr r0, [r7, #4] - 80129ec: f7f5 fad6 bl 8007f9c - 80129f0: 4603 mov r3, r0 - 80129f2: 2b00 cmp r3, #0 - 80129f4: d10e bne.n 8012a14 - etharp_input(p, netif); - 80129f6: 6839 ldr r1, [r7, #0] - 80129f8: 6878 ldr r0, [r7, #4] - 80129fa: f7fd ff61 bl 80108c0 - break; - 80129fe: bf00 nop - } - - /* This means the pbuf is freed or consumed, - so the caller doesn't have to free it again */ - return ERR_OK; - 8012a00: 2300 movs r3, #0 - 8012a02: e00c b.n 8012a1e - goto free_and_return; - 8012a04: bf00 nop - 8012a06: e006 b.n 8012a16 - goto free_and_return; - 8012a08: bf00 nop - 8012a0a: e004 b.n 8012a16 - goto free_and_return; - 8012a0c: bf00 nop - 8012a0e: e002 b.n 8012a16 - goto free_and_return; - 8012a10: bf00 nop - 8012a12: e000 b.n 8012a16 - goto free_and_return; - 8012a14: bf00 nop - -free_and_return: - pbuf_free(p); - 8012a16: 6878 ldr r0, [r7, #4] - 8012a18: f7f5 fb46 bl 80080a8 - return ERR_OK; - 8012a1c: 2300 movs r3, #0 -} - 8012a1e: 4618 mov r0, r3 - 8012a20: 3718 adds r7, #24 - 8012a22: 46bd mov sp, r7 - 8012a24: bd80 pop {r7, pc} - 8012a26: bf00 nop - 8012a28: 0801a5ec .word 0x0801a5ec - -08012a2c : - * @return ERR_OK if the packet was sent, any other err_t on failure - */ -err_t -ethernet_output(struct netif * netif, struct pbuf * p, - const struct eth_addr * src, const struct eth_addr * dst, - u16_t eth_type) { - 8012a2c: b580 push {r7, lr} - 8012a2e: b086 sub sp, #24 - 8012a30: af00 add r7, sp, #0 - 8012a32: 60f8 str r0, [r7, #12] - 8012a34: 60b9 str r1, [r7, #8] - 8012a36: 607a str r2, [r7, #4] - 8012a38: 603b str r3, [r7, #0] - struct eth_hdr *ethhdr; - u16_t eth_type_be = lwip_htons(eth_type); - 8012a3a: 8c3b ldrh r3, [r7, #32] - 8012a3c: 4618 mov r0, r3 - 8012a3e: f7f3 ffe3 bl 8006a08 - 8012a42: 4603 mov r3, r0 - 8012a44: 82fb strh r3, [r7, #22] - - eth_type_be = PP_HTONS(ETHTYPE_VLAN); - } else -#endif /* ETHARP_SUPPORT_VLAN && defined(LWIP_HOOK_VLAN_SET) */ - { - if (pbuf_add_header(p, SIZEOF_ETH_HDR) != 0) { - 8012a46: 210e movs r1, #14 - 8012a48: 68b8 ldr r0, [r7, #8] - 8012a4a: f7f5 fa97 bl 8007f7c - 8012a4e: 4603 mov r3, r0 - 8012a50: 2b00 cmp r3, #0 - 8012a52: d125 bne.n 8012aa0 - } - } - - LWIP_ASSERT_CORE_LOCKED(); - - ethhdr = (struct eth_hdr *)p->payload; - 8012a54: 68bb ldr r3, [r7, #8] - 8012a56: 685b ldr r3, [r3, #4] - 8012a58: 613b str r3, [r7, #16] - ethhdr->type = eth_type_be; - 8012a5a: 693b ldr r3, [r7, #16] - 8012a5c: 8afa ldrh r2, [r7, #22] - 8012a5e: 819a strh r2, [r3, #12] - SMEMCPY(ðhdr->dest, dst, ETH_HWADDR_LEN); - 8012a60: 693b ldr r3, [r7, #16] - 8012a62: 2206 movs r2, #6 - 8012a64: 6839 ldr r1, [r7, #0] - 8012a66: 4618 mov r0, r3 - 8012a68: f000 fa02 bl 8012e70 - SMEMCPY(ðhdr->src, src, ETH_HWADDR_LEN); - 8012a6c: 693b ldr r3, [r7, #16] - 8012a6e: 3306 adds r3, #6 - 8012a70: 2206 movs r2, #6 - 8012a72: 6879 ldr r1, [r7, #4] - 8012a74: 4618 mov r0, r3 - 8012a76: f000 f9fb bl 8012e70 - - LWIP_ASSERT("netif->hwaddr_len must be 6 for ethernet_output!", - 8012a7a: 68fb ldr r3, [r7, #12] - 8012a7c: f893 3030 ldrb.w r3, [r3, #48] @ 0x30 - 8012a80: 2b06 cmp r3, #6 - 8012a82: d006 beq.n 8012a92 - 8012a84: 4b0a ldr r3, [pc, #40] @ (8012ab0 ) - 8012a86: f44f 7299 mov.w r2, #306 @ 0x132 - 8012a8a: 490a ldr r1, [pc, #40] @ (8012ab4 ) - 8012a8c: 480a ldr r0, [pc, #40] @ (8012ab8 ) - 8012a8e: f000 f8f3 bl 8012c78 - (netif->hwaddr_len == ETH_HWADDR_LEN)); - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, - ("ethernet_output: sending packet %p\n", (void *)p)); - - /* send the packet */ - return netif->linkoutput(netif, p); - 8012a92: 68fb ldr r3, [r7, #12] - 8012a94: 699b ldr r3, [r3, #24] - 8012a96: 68b9 ldr r1, [r7, #8] - 8012a98: 68f8 ldr r0, [r7, #12] - 8012a9a: 4798 blx r3 - 8012a9c: 4603 mov r3, r0 - 8012a9e: e002 b.n 8012aa6 - goto pbuf_header_failed; - 8012aa0: bf00 nop - -pbuf_header_failed: - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, - ("ethernet_output: could not allocate room for header.\n")); - LINK_STATS_INC(link.lenerr); - return ERR_BUF; - 8012aa2: f06f 0301 mvn.w r3, #1 -} - 8012aa6: 4618 mov r0, r3 - 8012aa8: 3718 adds r7, #24 - 8012aaa: 46bd mov sp, r7 - 8012aac: bd80 pop {r7, pc} - 8012aae: bf00 nop - 8012ab0: 0801a454 .word 0x0801a454 - 8012ab4: 0801a48c .word 0x0801a48c - 8012ab8: 0801a4c0 .word 0x0801a4c0 - -08012abc : - 8012abc: 4b0a ldr r3, [pc, #40] @ (8012ae8 ) - 8012abe: 480b ldr r0, [pc, #44] @ (8012aec ) - 8012ac0: 6819 ldr r1, [r3, #0] - 8012ac2: 4a0b ldr r2, [pc, #44] @ (8012af0 ) - 8012ac4: f8d1 3098 ldr.w r3, [r1, #152] @ 0x98 - 8012ac8: b510 push {r4, lr} - 8012aca: f8d1 409c ldr.w r4, [r1, #156] @ 0x9c - 8012ace: 4358 muls r0, r3 - 8012ad0: fb02 0004 mla r0, r2, r4, r0 - 8012ad4: fba3 3202 umull r3, r2, r3, r2 - 8012ad8: 3301 adds r3, #1 - 8012ada: eb40 0002 adc.w r0, r0, r2 - 8012ade: e9c1 3026 strd r3, r0, [r1, #152] @ 0x98 - 8012ae2: f020 4000 bic.w r0, r0, #2147483648 @ 0x80000000 - 8012ae6: bd10 pop {r4, pc} - 8012ae8: 2000003c .word 0x2000003c - 8012aec: 5851f42d .word 0x5851f42d - 8012af0: 4c957f2d .word 0x4c957f2d - -08012af4 : - 8012af4: 2300 movs r3, #0 - 8012af6: b510 push {r4, lr} - 8012af8: 4604 mov r4, r0 - 8012afa: e9c0 3300 strd r3, r3, [r0] - 8012afe: e9c0 3304 strd r3, r3, [r0, #16] - 8012b02: 6083 str r3, [r0, #8] - 8012b04: 8181 strh r1, [r0, #12] - 8012b06: 6643 str r3, [r0, #100] @ 0x64 - 8012b08: 81c2 strh r2, [r0, #14] - 8012b0a: 6183 str r3, [r0, #24] - 8012b0c: 4619 mov r1, r3 - 8012b0e: 2208 movs r2, #8 - 8012b10: 305c adds r0, #92 @ 0x5c - 8012b12: f000 f930 bl 8012d76 - 8012b16: 4b0d ldr r3, [pc, #52] @ (8012b4c ) - 8012b18: 6223 str r3, [r4, #32] - 8012b1a: 4b0d ldr r3, [pc, #52] @ (8012b50 ) - 8012b1c: 6263 str r3, [r4, #36] @ 0x24 - 8012b1e: 4b0d ldr r3, [pc, #52] @ (8012b54 ) - 8012b20: 62a3 str r3, [r4, #40] @ 0x28 - 8012b22: 4b0d ldr r3, [pc, #52] @ (8012b58 ) - 8012b24: 62e3 str r3, [r4, #44] @ 0x2c - 8012b26: 4b0d ldr r3, [pc, #52] @ (8012b5c ) - 8012b28: 61e4 str r4, [r4, #28] - 8012b2a: 429c cmp r4, r3 - 8012b2c: d006 beq.n 8012b3c - 8012b2e: f103 0268 add.w r2, r3, #104 @ 0x68 - 8012b32: 4294 cmp r4, r2 - 8012b34: d002 beq.n 8012b3c - 8012b36: 33d0 adds r3, #208 @ 0xd0 - 8012b38: 429c cmp r4, r3 - 8012b3a: d105 bne.n 8012b48 - 8012b3c: f104 0058 add.w r0, r4, #88 @ 0x58 - 8012b40: e8bd 4010 ldmia.w sp!, {r4, lr} - 8012b44: f000 b990 b.w 8012e68 <__retarget_lock_init_recursive> - 8012b48: bd10 pop {r4, pc} - 8012b4a: bf00 nop - 8012b4c: 08012c9d .word 0x08012c9d - 8012b50: 08012cbf .word 0x08012cbf - 8012b54: 08012cf7 .word 0x08012cf7 - 8012b58: 08012d1b .word 0x08012d1b - 8012b5c: 2001927c .word 0x2001927c - -08012b60 : - 8012b60: 4a02 ldr r2, [pc, #8] @ (8012b6c ) - 8012b62: 4903 ldr r1, [pc, #12] @ (8012b70 ) - 8012b64: 4803 ldr r0, [pc, #12] @ (8012b74 ) - 8012b66: f000 b869 b.w 8012c3c <_fwalk_sglue> - 8012b6a: bf00 nop - 8012b6c: 20000030 .word 0x20000030 - 8012b70: 08015435 .word 0x08015435 - 8012b74: 20000040 .word 0x20000040 - -08012b78 : - 8012b78: 6841 ldr r1, [r0, #4] - 8012b7a: 4b0c ldr r3, [pc, #48] @ (8012bac ) - 8012b7c: 4299 cmp r1, r3 - 8012b7e: b510 push {r4, lr} - 8012b80: 4604 mov r4, r0 - 8012b82: d001 beq.n 8012b88 - 8012b84: f002 fc56 bl 8015434 <_fclose_r> - 8012b88: 68a1 ldr r1, [r4, #8] - 8012b8a: 4b09 ldr r3, [pc, #36] @ (8012bb0 ) - 8012b8c: 4299 cmp r1, r3 - 8012b8e: d002 beq.n 8012b96 - 8012b90: 4620 mov r0, r4 - 8012b92: f002 fc4f bl 8015434 <_fclose_r> - 8012b96: 68e1 ldr r1, [r4, #12] - 8012b98: 4b06 ldr r3, [pc, #24] @ (8012bb4 ) - 8012b9a: 4299 cmp r1, r3 - 8012b9c: d004 beq.n 8012ba8 - 8012b9e: 4620 mov r0, r4 - 8012ba0: e8bd 4010 ldmia.w sp!, {r4, lr} - 8012ba4: f002 bc46 b.w 8015434 <_fclose_r> - 8012ba8: bd10 pop {r4, pc} - 8012baa: bf00 nop - 8012bac: 2001927c .word 0x2001927c - 8012bb0: 200192e4 .word 0x200192e4 - 8012bb4: 2001934c .word 0x2001934c - -08012bb8 : - 8012bb8: b510 push {r4, lr} - 8012bba: 4b0b ldr r3, [pc, #44] @ (8012be8 ) - 8012bbc: 4c0b ldr r4, [pc, #44] @ (8012bec ) - 8012bbe: 4a0c ldr r2, [pc, #48] @ (8012bf0 ) - 8012bc0: 601a str r2, [r3, #0] - 8012bc2: 4620 mov r0, r4 - 8012bc4: 2200 movs r2, #0 - 8012bc6: 2104 movs r1, #4 - 8012bc8: f7ff ff94 bl 8012af4 - 8012bcc: f104 0068 add.w r0, r4, #104 @ 0x68 - 8012bd0: 2201 movs r2, #1 - 8012bd2: 2109 movs r1, #9 - 8012bd4: f7ff ff8e bl 8012af4 - 8012bd8: f104 00d0 add.w r0, r4, #208 @ 0xd0 - 8012bdc: 2202 movs r2, #2 - 8012bde: e8bd 4010 ldmia.w sp!, {r4, lr} - 8012be2: 2112 movs r1, #18 - 8012be4: f7ff bf86 b.w 8012af4 - 8012be8: 200193b4 .word 0x200193b4 - 8012bec: 2001927c .word 0x2001927c - 8012bf0: 08012b61 .word 0x08012b61 - -08012bf4 <__sfp_lock_acquire>: - 8012bf4: 4801 ldr r0, [pc, #4] @ (8012bfc <__sfp_lock_acquire+0x8>) - 8012bf6: f000 b939 b.w 8012e6c <__retarget_lock_acquire_recursive> - 8012bfa: bf00 nop - 8012bfc: 200193be .word 0x200193be - -08012c00 <__sfp_lock_release>: - 8012c00: 4801 ldr r0, [pc, #4] @ (8012c08 <__sfp_lock_release+0x8>) - 8012c02: f000 b934 b.w 8012e6e <__retarget_lock_release_recursive> - 8012c06: bf00 nop - 8012c08: 200193be .word 0x200193be - -08012c0c <__sinit>: - 8012c0c: b510 push {r4, lr} - 8012c0e: 4604 mov r4, r0 - 8012c10: f7ff fff0 bl 8012bf4 <__sfp_lock_acquire> - 8012c14: 6b63 ldr r3, [r4, #52] @ 0x34 - 8012c16: b11b cbz r3, 8012c20 <__sinit+0x14> - 8012c18: e8bd 4010 ldmia.w sp!, {r4, lr} - 8012c1c: f7ff bff0 b.w 8012c00 <__sfp_lock_release> - 8012c20: 4b04 ldr r3, [pc, #16] @ (8012c34 <__sinit+0x28>) - 8012c22: 6363 str r3, [r4, #52] @ 0x34 - 8012c24: 4b04 ldr r3, [pc, #16] @ (8012c38 <__sinit+0x2c>) - 8012c26: 681b ldr r3, [r3, #0] - 8012c28: 2b00 cmp r3, #0 - 8012c2a: d1f5 bne.n 8012c18 <__sinit+0xc> - 8012c2c: f7ff ffc4 bl 8012bb8 - 8012c30: e7f2 b.n 8012c18 <__sinit+0xc> - 8012c32: bf00 nop - 8012c34: 08012b79 .word 0x08012b79 - 8012c38: 200193b4 .word 0x200193b4 - -08012c3c <_fwalk_sglue>: - 8012c3c: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - 8012c40: 4607 mov r7, r0 - 8012c42: 4688 mov r8, r1 - 8012c44: 4614 mov r4, r2 - 8012c46: 2600 movs r6, #0 - 8012c48: e9d4 9501 ldrd r9, r5, [r4, #4] - 8012c4c: f1b9 0901 subs.w r9, r9, #1 - 8012c50: d505 bpl.n 8012c5e <_fwalk_sglue+0x22> - 8012c52: 6824 ldr r4, [r4, #0] - 8012c54: 2c00 cmp r4, #0 - 8012c56: d1f7 bne.n 8012c48 <_fwalk_sglue+0xc> - 8012c58: 4630 mov r0, r6 - 8012c5a: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} - 8012c5e: 89ab ldrh r3, [r5, #12] - 8012c60: 2b01 cmp r3, #1 - 8012c62: d907 bls.n 8012c74 <_fwalk_sglue+0x38> - 8012c64: f9b5 300e ldrsh.w r3, [r5, #14] - 8012c68: 3301 adds r3, #1 - 8012c6a: d003 beq.n 8012c74 <_fwalk_sglue+0x38> - 8012c6c: 4629 mov r1, r5 - 8012c6e: 4638 mov r0, r7 - 8012c70: 47c0 blx r8 - 8012c72: 4306 orrs r6, r0 - 8012c74: 3568 adds r5, #104 @ 0x68 - 8012c76: e7e9 b.n 8012c4c <_fwalk_sglue+0x10> - -08012c78 : - 8012c78: b40f push {r0, r1, r2, r3} - 8012c7a: b507 push {r0, r1, r2, lr} - 8012c7c: 4906 ldr r1, [pc, #24] @ (8012c98 ) - 8012c7e: ab04 add r3, sp, #16 - 8012c80: 6808 ldr r0, [r1, #0] - 8012c82: f853 2b04 ldr.w r2, [r3], #4 - 8012c86: 6881 ldr r1, [r0, #8] - 8012c88: 9301 str r3, [sp, #4] - 8012c8a: f000 fc6d bl 8013568 <_vfprintf_r> - 8012c8e: b003 add sp, #12 - 8012c90: f85d eb04 ldr.w lr, [sp], #4 - 8012c94: b004 add sp, #16 - 8012c96: 4770 bx lr - 8012c98: 2000003c .word 0x2000003c - -08012c9c <__sread>: - 8012c9c: b510 push {r4, lr} - 8012c9e: 460c mov r4, r1 - 8012ca0: f9b1 100e ldrsh.w r1, [r1, #14] - 8012ca4: f000 f892 bl 8012dcc <_read_r> - 8012ca8: 2800 cmp r0, #0 - 8012caa: bfab itete ge - 8012cac: 6d23 ldrge r3, [r4, #80] @ 0x50 - 8012cae: 89a3 ldrhlt r3, [r4, #12] - 8012cb0: 181b addge r3, r3, r0 - 8012cb2: f423 5380 biclt.w r3, r3, #4096 @ 0x1000 - 8012cb6: bfac ite ge - 8012cb8: 6523 strge r3, [r4, #80] @ 0x50 - 8012cba: 81a3 strhlt r3, [r4, #12] - 8012cbc: bd10 pop {r4, pc} - -08012cbe <__swrite>: - 8012cbe: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 8012cc2: 461f mov r7, r3 - 8012cc4: 898b ldrh r3, [r1, #12] - 8012cc6: 05db lsls r3, r3, #23 - 8012cc8: 4605 mov r5, r0 - 8012cca: 460c mov r4, r1 - 8012ccc: 4616 mov r6, r2 - 8012cce: d505 bpl.n 8012cdc <__swrite+0x1e> - 8012cd0: f9b1 100e ldrsh.w r1, [r1, #14] - 8012cd4: 2302 movs r3, #2 - 8012cd6: 2200 movs r2, #0 - 8012cd8: f000 f866 bl 8012da8 <_lseek_r> - 8012cdc: 89a3 ldrh r3, [r4, #12] - 8012cde: f9b4 100e ldrsh.w r1, [r4, #14] - 8012ce2: f423 5380 bic.w r3, r3, #4096 @ 0x1000 - 8012ce6: 81a3 strh r3, [r4, #12] - 8012ce8: 4632 mov r2, r6 - 8012cea: 463b mov r3, r7 - 8012cec: 4628 mov r0, r5 - 8012cee: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} - 8012cf2: f000 b87d b.w 8012df0 <_write_r> - -08012cf6 <__sseek>: - 8012cf6: b510 push {r4, lr} - 8012cf8: 460c mov r4, r1 - 8012cfa: f9b1 100e ldrsh.w r1, [r1, #14] - 8012cfe: f000 f853 bl 8012da8 <_lseek_r> - 8012d02: 1c43 adds r3, r0, #1 - 8012d04: 89a3 ldrh r3, [r4, #12] - 8012d06: bf15 itete ne - 8012d08: 6520 strne r0, [r4, #80] @ 0x50 - 8012d0a: f423 5380 biceq.w r3, r3, #4096 @ 0x1000 - 8012d0e: f443 5380 orrne.w r3, r3, #4096 @ 0x1000 - 8012d12: 81a3 strheq r3, [r4, #12] - 8012d14: bf18 it ne - 8012d16: 81a3 strhne r3, [r4, #12] - 8012d18: bd10 pop {r4, pc} - -08012d1a <__sclose>: - 8012d1a: f9b1 100e ldrsh.w r1, [r1, #14] - 8012d1e: f000 b833 b.w 8012d88 <_close_r> - -08012d22 : - 8012d22: b510 push {r4, lr} - 8012d24: 3901 subs r1, #1 - 8012d26: 4402 add r2, r0 - 8012d28: 4290 cmp r0, r2 - 8012d2a: d101 bne.n 8012d30 - 8012d2c: 2000 movs r0, #0 - 8012d2e: e005 b.n 8012d3c - 8012d30: 7803 ldrb r3, [r0, #0] - 8012d32: f811 4f01 ldrb.w r4, [r1, #1]! - 8012d36: 42a3 cmp r3, r4 - 8012d38: d001 beq.n 8012d3e - 8012d3a: 1b18 subs r0, r3, r4 - 8012d3c: bd10 pop {r4, pc} - 8012d3e: 3001 adds r0, #1 - 8012d40: e7f2 b.n 8012d28 - -08012d42 : - 8012d42: 4288 cmp r0, r1 - 8012d44: b510 push {r4, lr} - 8012d46: eb01 0402 add.w r4, r1, r2 - 8012d4a: d902 bls.n 8012d52 - 8012d4c: 4284 cmp r4, r0 - 8012d4e: 4623 mov r3, r4 - 8012d50: d807 bhi.n 8012d62 - 8012d52: 1e43 subs r3, r0, #1 - 8012d54: 42a1 cmp r1, r4 - 8012d56: d008 beq.n 8012d6a - 8012d58: f811 2b01 ldrb.w r2, [r1], #1 - 8012d5c: f803 2f01 strb.w r2, [r3, #1]! - 8012d60: e7f8 b.n 8012d54 - 8012d62: 4402 add r2, r0 - 8012d64: 4601 mov r1, r0 - 8012d66: 428a cmp r2, r1 - 8012d68: d100 bne.n 8012d6c - 8012d6a: bd10 pop {r4, pc} - 8012d6c: f813 4d01 ldrb.w r4, [r3, #-1]! - 8012d70: f802 4d01 strb.w r4, [r2, #-1]! - 8012d74: e7f7 b.n 8012d66 - -08012d76 : - 8012d76: 4402 add r2, r0 - 8012d78: 4603 mov r3, r0 - 8012d7a: 4293 cmp r3, r2 - 8012d7c: d100 bne.n 8012d80 - 8012d7e: 4770 bx lr - 8012d80: f803 1b01 strb.w r1, [r3], #1 - 8012d84: e7f9 b.n 8012d7a - ... - -08012d88 <_close_r>: - 8012d88: b538 push {r3, r4, r5, lr} - 8012d8a: 4d06 ldr r5, [pc, #24] @ (8012da4 <_close_r+0x1c>) - 8012d8c: 2300 movs r3, #0 - 8012d8e: 4604 mov r4, r0 - 8012d90: 4608 mov r0, r1 - 8012d92: 602b str r3, [r5, #0] - 8012d94: f004 fbec bl 8017570 <_close> - 8012d98: 1c43 adds r3, r0, #1 - 8012d9a: d102 bne.n 8012da2 <_close_r+0x1a> - 8012d9c: 682b ldr r3, [r5, #0] - 8012d9e: b103 cbz r3, 8012da2 <_close_r+0x1a> - 8012da0: 6023 str r3, [r4, #0] - 8012da2: bd38 pop {r3, r4, r5, pc} - 8012da4: 200193b8 .word 0x200193b8 - -08012da8 <_lseek_r>: - 8012da8: b538 push {r3, r4, r5, lr} - 8012daa: 4d07 ldr r5, [pc, #28] @ (8012dc8 <_lseek_r+0x20>) - 8012dac: 4604 mov r4, r0 - 8012dae: 4608 mov r0, r1 - 8012db0: 4611 mov r1, r2 - 8012db2: 2200 movs r2, #0 - 8012db4: 602a str r2, [r5, #0] - 8012db6: 461a mov r2, r3 - 8012db8: f004 fc02 bl 80175c0 <_lseek> - 8012dbc: 1c43 adds r3, r0, #1 - 8012dbe: d102 bne.n 8012dc6 <_lseek_r+0x1e> - 8012dc0: 682b ldr r3, [r5, #0] - 8012dc2: b103 cbz r3, 8012dc6 <_lseek_r+0x1e> - 8012dc4: 6023 str r3, [r4, #0] - 8012dc6: bd38 pop {r3, r4, r5, pc} - 8012dc8: 200193b8 .word 0x200193b8 - -08012dcc <_read_r>: - 8012dcc: b538 push {r3, r4, r5, lr} - 8012dce: 4d07 ldr r5, [pc, #28] @ (8012dec <_read_r+0x20>) - 8012dd0: 4604 mov r4, r0 - 8012dd2: 4608 mov r0, r1 - 8012dd4: 4611 mov r1, r2 - 8012dd6: 2200 movs r2, #0 - 8012dd8: 602a str r2, [r5, #0] - 8012dda: 461a mov r2, r3 - 8012ddc: f004 fbf8 bl 80175d0 <_read> - 8012de0: 1c43 adds r3, r0, #1 - 8012de2: d102 bne.n 8012dea <_read_r+0x1e> - 8012de4: 682b ldr r3, [r5, #0] - 8012de6: b103 cbz r3, 8012dea <_read_r+0x1e> - 8012de8: 6023 str r3, [r4, #0] - 8012dea: bd38 pop {r3, r4, r5, pc} - 8012dec: 200193b8 .word 0x200193b8 - -08012df0 <_write_r>: - 8012df0: b538 push {r3, r4, r5, lr} - 8012df2: 4d07 ldr r5, [pc, #28] @ (8012e10 <_write_r+0x20>) - 8012df4: 4604 mov r4, r0 - 8012df6: 4608 mov r0, r1 - 8012df8: 4611 mov r1, r2 - 8012dfa: 2200 movs r2, #0 - 8012dfc: 602a str r2, [r5, #0] - 8012dfe: 461a mov r2, r3 - 8012e00: f004 fbfc bl 80175fc <_write> - 8012e04: 1c43 adds r3, r0, #1 - 8012e06: d102 bne.n 8012e0e <_write_r+0x1e> - 8012e08: 682b ldr r3, [r5, #0] - 8012e0a: b103 cbz r3, 8012e0e <_write_r+0x1e> - 8012e0c: 6023 str r3, [r4, #0] - 8012e0e: bd38 pop {r3, r4, r5, pc} - 8012e10: 200193b8 .word 0x200193b8 - -08012e14 <__errno>: - 8012e14: 4b01 ldr r3, [pc, #4] @ (8012e1c <__errno+0x8>) - 8012e16: 6818 ldr r0, [r3, #0] - 8012e18: 4770 bx lr - 8012e1a: bf00 nop - 8012e1c: 2000003c .word 0x2000003c - -08012e20 <__libc_init_array>: - 8012e20: b570 push {r4, r5, r6, lr} - 8012e22: 4d0d ldr r5, [pc, #52] @ (8012e58 <__libc_init_array+0x38>) - 8012e24: 4c0d ldr r4, [pc, #52] @ (8012e5c <__libc_init_array+0x3c>) - 8012e26: 1b64 subs r4, r4, r5 - 8012e28: 10a4 asrs r4, r4, #2 - 8012e2a: 2600 movs r6, #0 - 8012e2c: 42a6 cmp r6, r4 - 8012e2e: d109 bne.n 8012e44 <__libc_init_array+0x24> - 8012e30: 4d0b ldr r5, [pc, #44] @ (8012e60 <__libc_init_array+0x40>) - 8012e32: 4c0c ldr r4, [pc, #48] @ (8012e64 <__libc_init_array+0x44>) - 8012e34: f004 fbec bl 8017610 <_init> - 8012e38: 1b64 subs r4, r4, r5 - 8012e3a: 10a4 asrs r4, r4, #2 - 8012e3c: 2600 movs r6, #0 - 8012e3e: 42a6 cmp r6, r4 - 8012e40: d105 bne.n 8012e4e <__libc_init_array+0x2e> - 8012e42: bd70 pop {r4, r5, r6, pc} - 8012e44: f855 3b04 ldr.w r3, [r5], #4 - 8012e48: 4798 blx r3 - 8012e4a: 3601 adds r6, #1 - 8012e4c: e7ee b.n 8012e2c <__libc_init_array+0xc> - 8012e4e: f855 3b04 ldr.w r3, [r5], #4 - 8012e52: 4798 blx r3 - 8012e54: 3601 adds r6, #1 - 8012e56: e7f2 b.n 8012e3e <__libc_init_array+0x1e> - 8012e58: 0801a98c .word 0x0801a98c - 8012e5c: 0801a98c .word 0x0801a98c - 8012e60: 0801a98c .word 0x0801a98c - 8012e64: 0801a994 .word 0x0801a994 - -08012e68 <__retarget_lock_init_recursive>: - 8012e68: 4770 bx lr - -08012e6a <__retarget_lock_close_recursive>: - 8012e6a: 4770 bx lr - -08012e6c <__retarget_lock_acquire_recursive>: - 8012e6c: 4770 bx lr - -08012e6e <__retarget_lock_release_recursive>: - 8012e6e: 4770 bx lr - -08012e70 : - 8012e70: 440a add r2, r1 - 8012e72: 4291 cmp r1, r2 - 8012e74: f100 33ff add.w r3, r0, #4294967295 - 8012e78: d100 bne.n 8012e7c - 8012e7a: 4770 bx lr - 8012e7c: b510 push {r4, lr} - 8012e7e: f811 4b01 ldrb.w r4, [r1], #1 - 8012e82: f803 4f01 strb.w r4, [r3, #1]! - 8012e86: 4291 cmp r1, r2 - 8012e88: d1f9 bne.n 8012e7e - 8012e8a: bd10 pop {r4, pc} - -08012e8c : - 8012e8c: 4b02 ldr r3, [pc, #8] @ (8012e98 ) - 8012e8e: b113 cbz r3, 8012e96 - 8012e90: 4802 ldr r0, [pc, #8] @ (8012e9c ) - 8012e92: f000 b805 b.w 8012ea0 - 8012e96: 4770 bx lr - 8012e98: 00000000 .word 0x00000000 - 8012e9c: 08015ab1 .word 0x08015ab1 - -08012ea0 : - 8012ea0: 2300 movs r3, #0 - 8012ea2: 4601 mov r1, r0 - 8012ea4: 461a mov r2, r3 - 8012ea6: 4618 mov r0, r3 - 8012ea8: f002 be58 b.w 8015b5c <__register_exitproc> - -08012eac <_malloc_trim_r>: - 8012eac: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - 8012eb0: 4606 mov r6, r0 - 8012eb2: 2008 movs r0, #8 - 8012eb4: 4689 mov r9, r1 - 8012eb6: f002 fe0f bl 8015ad8 - 8012eba: 4f24 ldr r7, [pc, #144] @ (8012f4c <_malloc_trim_r+0xa0>) - 8012ebc: 4680 mov r8, r0 - 8012ebe: 4630 mov r0, r6 - 8012ec0: f000 fb44 bl 801354c <__malloc_lock> - 8012ec4: 68bb ldr r3, [r7, #8] - 8012ec6: 685d ldr r5, [r3, #4] - 8012ec8: f025 0503 bic.w r5, r5, #3 - 8012ecc: f1a5 0411 sub.w r4, r5, #17 - 8012ed0: eba4 0409 sub.w r4, r4, r9 - 8012ed4: 4444 add r4, r8 - 8012ed6: fbb4 f4f8 udiv r4, r4, r8 - 8012eda: 3c01 subs r4, #1 - 8012edc: fb08 f404 mul.w r4, r8, r4 - 8012ee0: 45a0 cmp r8, r4 - 8012ee2: dd05 ble.n 8012ef0 <_malloc_trim_r+0x44> - 8012ee4: 4630 mov r0, r6 - 8012ee6: f000 fb37 bl 8013558 <__malloc_unlock> - 8012eea: 2000 movs r0, #0 - 8012eec: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} - 8012ef0: 2100 movs r1, #0 - 8012ef2: 4630 mov r0, r6 - 8012ef4: f002 fdcc bl 8015a90 <_sbrk_r> - 8012ef8: 68bb ldr r3, [r7, #8] - 8012efa: 442b add r3, r5 - 8012efc: 4298 cmp r0, r3 - 8012efe: d1f1 bne.n 8012ee4 <_malloc_trim_r+0x38> - 8012f00: 4261 negs r1, r4 - 8012f02: 4630 mov r0, r6 - 8012f04: f002 fdc4 bl 8015a90 <_sbrk_r> - 8012f08: 3001 adds r0, #1 - 8012f0a: d110 bne.n 8012f2e <_malloc_trim_r+0x82> - 8012f0c: 2100 movs r1, #0 - 8012f0e: 4630 mov r0, r6 - 8012f10: f002 fdbe bl 8015a90 <_sbrk_r> - 8012f14: 68ba ldr r2, [r7, #8] - 8012f16: 1a83 subs r3, r0, r2 - 8012f18: 2b0f cmp r3, #15 - 8012f1a: dde3 ble.n 8012ee4 <_malloc_trim_r+0x38> - 8012f1c: 490c ldr r1, [pc, #48] @ (8012f50 <_malloc_trim_r+0xa4>) - 8012f1e: 6809 ldr r1, [r1, #0] - 8012f20: 1a40 subs r0, r0, r1 - 8012f22: 490c ldr r1, [pc, #48] @ (8012f54 <_malloc_trim_r+0xa8>) - 8012f24: f043 0301 orr.w r3, r3, #1 - 8012f28: 6008 str r0, [r1, #0] - 8012f2a: 6053 str r3, [r2, #4] - 8012f2c: e7da b.n 8012ee4 <_malloc_trim_r+0x38> - 8012f2e: 68bb ldr r3, [r7, #8] - 8012f30: 4a08 ldr r2, [pc, #32] @ (8012f54 <_malloc_trim_r+0xa8>) - 8012f32: 1b2d subs r5, r5, r4 - 8012f34: f045 0501 orr.w r5, r5, #1 - 8012f38: 605d str r5, [r3, #4] - 8012f3a: 6813 ldr r3, [r2, #0] - 8012f3c: 4630 mov r0, r6 - 8012f3e: 1b1b subs r3, r3, r4 - 8012f40: 6013 str r3, [r2, #0] - 8012f42: f000 fb09 bl 8013558 <__malloc_unlock> - 8012f46: 2001 movs r0, #1 - 8012f48: e7d0 b.n 8012eec <_malloc_trim_r+0x40> - 8012f4a: bf00 nop - 8012f4c: 2000016c .word 0x2000016c - 8012f50: 20000164 .word 0x20000164 - 8012f54: 200193c4 .word 0x200193c4 - -08012f58 <_free_r>: - 8012f58: b5f8 push {r3, r4, r5, r6, r7, lr} - 8012f5a: 4604 mov r4, r0 - 8012f5c: 460f mov r7, r1 - 8012f5e: 2900 cmp r1, #0 - 8012f60: f000 80b1 beq.w 80130c6 <_free_r+0x16e> - 8012f64: f000 faf2 bl 801354c <__malloc_lock> - 8012f68: f857 2c04 ldr.w r2, [r7, #-4] - 8012f6c: 4d56 ldr r5, [pc, #344] @ (80130c8 <_free_r+0x170>) - 8012f6e: f022 0001 bic.w r0, r2, #1 - 8012f72: f1a7 0308 sub.w r3, r7, #8 - 8012f76: eb03 0c00 add.w ip, r3, r0 - 8012f7a: 68a9 ldr r1, [r5, #8] - 8012f7c: f8dc 6004 ldr.w r6, [ip, #4] - 8012f80: 4561 cmp r1, ip - 8012f82: f026 0603 bic.w r6, r6, #3 - 8012f86: f002 0201 and.w r2, r2, #1 - 8012f8a: d11b bne.n 8012fc4 <_free_r+0x6c> - 8012f8c: 4406 add r6, r0 - 8012f8e: b93a cbnz r2, 8012fa0 <_free_r+0x48> - 8012f90: f857 2c08 ldr.w r2, [r7, #-8] - 8012f94: 1a9b subs r3, r3, r2 - 8012f96: 4416 add r6, r2 - 8012f98: e9d3 1202 ldrd r1, r2, [r3, #8] - 8012f9c: 60ca str r2, [r1, #12] - 8012f9e: 6091 str r1, [r2, #8] - 8012fa0: f046 0201 orr.w r2, r6, #1 - 8012fa4: 605a str r2, [r3, #4] - 8012fa6: 60ab str r3, [r5, #8] - 8012fa8: 4b48 ldr r3, [pc, #288] @ (80130cc <_free_r+0x174>) - 8012faa: 681b ldr r3, [r3, #0] - 8012fac: 42b3 cmp r3, r6 - 8012fae: d804 bhi.n 8012fba <_free_r+0x62> - 8012fb0: 4b47 ldr r3, [pc, #284] @ (80130d0 <_free_r+0x178>) - 8012fb2: 4620 mov r0, r4 - 8012fb4: 6819 ldr r1, [r3, #0] - 8012fb6: f7ff ff79 bl 8012eac <_malloc_trim_r> - 8012fba: 4620 mov r0, r4 - 8012fbc: e8bd 40f8 ldmia.w sp!, {r3, r4, r5, r6, r7, lr} - 8012fc0: f000 baca b.w 8013558 <__malloc_unlock> - 8012fc4: f8cc 6004 str.w r6, [ip, #4] - 8012fc8: 2a00 cmp r2, #0 - 8012fca: d138 bne.n 801303e <_free_r+0xe6> - 8012fcc: f857 1c08 ldr.w r1, [r7, #-8] - 8012fd0: 1a5b subs r3, r3, r1 - 8012fd2: 4408 add r0, r1 - 8012fd4: 6899 ldr r1, [r3, #8] - 8012fd6: f105 0708 add.w r7, r5, #8 - 8012fda: 42b9 cmp r1, r7 - 8012fdc: d031 beq.n 8013042 <_free_r+0xea> - 8012fde: 68df ldr r7, [r3, #12] - 8012fe0: 60cf str r7, [r1, #12] - 8012fe2: 60b9 str r1, [r7, #8] - 8012fe4: eb0c 0106 add.w r1, ip, r6 - 8012fe8: 6849 ldr r1, [r1, #4] - 8012fea: 07c9 lsls r1, r1, #31 - 8012fec: d40b bmi.n 8013006 <_free_r+0xae> - 8012fee: f8dc 1008 ldr.w r1, [ip, #8] - 8012ff2: 4430 add r0, r6 - 8012ff4: bb3a cbnz r2, 8013046 <_free_r+0xee> - 8012ff6: 4e37 ldr r6, [pc, #220] @ (80130d4 <_free_r+0x17c>) - 8012ff8: 42b1 cmp r1, r6 - 8012ffa: d124 bne.n 8013046 <_free_r+0xee> - 8012ffc: e9c5 3304 strd r3, r3, [r5, #16] - 8013000: e9c3 1102 strd r1, r1, [r3, #8] - 8013004: 2201 movs r2, #1 - 8013006: f040 0101 orr.w r1, r0, #1 - 801300a: 6059 str r1, [r3, #4] - 801300c: 5018 str r0, [r3, r0] - 801300e: 2a00 cmp r2, #0 - 8013010: d1d3 bne.n 8012fba <_free_r+0x62> - 8013012: f5b0 7f00 cmp.w r0, #512 @ 0x200 - 8013016: d21b bcs.n 8013050 <_free_r+0xf8> - 8013018: 08c2 lsrs r2, r0, #3 - 801301a: 2101 movs r1, #1 - 801301c: 0940 lsrs r0, r0, #5 - 801301e: 4081 lsls r1, r0 - 8013020: 6868 ldr r0, [r5, #4] - 8013022: 3201 adds r2, #1 - 8013024: 4301 orrs r1, r0 - 8013026: 6069 str r1, [r5, #4] - 8013028: f855 0032 ldr.w r0, [r5, r2, lsl #3] - 801302c: eb05 01c2 add.w r1, r5, r2, lsl #3 - 8013030: 3908 subs r1, #8 - 8013032: e9c3 0102 strd r0, r1, [r3, #8] - 8013036: f845 3032 str.w r3, [r5, r2, lsl #3] - 801303a: 60c3 str r3, [r0, #12] - 801303c: e7bd b.n 8012fba <_free_r+0x62> - 801303e: 2200 movs r2, #0 - 8013040: e7d0 b.n 8012fe4 <_free_r+0x8c> - 8013042: 2201 movs r2, #1 - 8013044: e7ce b.n 8012fe4 <_free_r+0x8c> - 8013046: f8dc 600c ldr.w r6, [ip, #12] - 801304a: 60ce str r6, [r1, #12] - 801304c: 60b1 str r1, [r6, #8] - 801304e: e7da b.n 8013006 <_free_r+0xae> - 8013050: f5b0 6f20 cmp.w r0, #2560 @ 0xa00 - 8013054: ea4f 2250 mov.w r2, r0, lsr #9 - 8013058: d214 bcs.n 8013084 <_free_r+0x12c> - 801305a: 0982 lsrs r2, r0, #6 - 801305c: 3238 adds r2, #56 @ 0x38 - 801305e: 1c51 adds r1, r2, #1 - 8013060: eb05 06c2 add.w r6, r5, r2, lsl #3 - 8013064: f855 1031 ldr.w r1, [r5, r1, lsl #3] - 8013068: 428e cmp r6, r1 - 801306a: d125 bne.n 80130b8 <_free_r+0x160> - 801306c: 2001 movs r0, #1 - 801306e: 1092 asrs r2, r2, #2 - 8013070: fa00 f202 lsl.w r2, r0, r2 - 8013074: 6868 ldr r0, [r5, #4] - 8013076: 4302 orrs r2, r0 - 8013078: 606a str r2, [r5, #4] - 801307a: e9c3 1602 strd r1, r6, [r3, #8] - 801307e: 60b3 str r3, [r6, #8] - 8013080: 60cb str r3, [r1, #12] - 8013082: e79a b.n 8012fba <_free_r+0x62> - 8013084: 2a14 cmp r2, #20 - 8013086: d801 bhi.n 801308c <_free_r+0x134> - 8013088: 325b adds r2, #91 @ 0x5b - 801308a: e7e8 b.n 801305e <_free_r+0x106> - 801308c: 2a54 cmp r2, #84 @ 0x54 - 801308e: d802 bhi.n 8013096 <_free_r+0x13e> - 8013090: 0b02 lsrs r2, r0, #12 - 8013092: 326e adds r2, #110 @ 0x6e - 8013094: e7e3 b.n 801305e <_free_r+0x106> - 8013096: f5b2 7faa cmp.w r2, #340 @ 0x154 - 801309a: d802 bhi.n 80130a2 <_free_r+0x14a> - 801309c: 0bc2 lsrs r2, r0, #15 - 801309e: 3277 adds r2, #119 @ 0x77 - 80130a0: e7dd b.n 801305e <_free_r+0x106> - 80130a2: f240 5154 movw r1, #1364 @ 0x554 - 80130a6: 428a cmp r2, r1 - 80130a8: bf9a itte ls - 80130aa: 0c82 lsrls r2, r0, #18 - 80130ac: 327c addls r2, #124 @ 0x7c - 80130ae: 227e movhi r2, #126 @ 0x7e - 80130b0: e7d5 b.n 801305e <_free_r+0x106> - 80130b2: 6889 ldr r1, [r1, #8] - 80130b4: 428e cmp r6, r1 - 80130b6: d004 beq.n 80130c2 <_free_r+0x16a> - 80130b8: 684a ldr r2, [r1, #4] - 80130ba: f022 0203 bic.w r2, r2, #3 - 80130be: 4282 cmp r2, r0 - 80130c0: d8f7 bhi.n 80130b2 <_free_r+0x15a> - 80130c2: 68ce ldr r6, [r1, #12] - 80130c4: e7d9 b.n 801307a <_free_r+0x122> - 80130c6: bdf8 pop {r3, r4, r5, r6, r7, pc} - 80130c8: 2000016c .word 0x2000016c - 80130cc: 20000168 .word 0x20000168 - 80130d0: 200193f4 .word 0x200193f4 - 80130d4: 20000174 .word 0x20000174 - -080130d8 <_malloc_r>: - 80130d8: f101 030b add.w r3, r1, #11 - 80130dc: 2b16 cmp r3, #22 - 80130de: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} - 80130e2: 4605 mov r5, r0 - 80130e4: d906 bls.n 80130f4 <_malloc_r+0x1c> - 80130e6: f033 0707 bics.w r7, r3, #7 - 80130ea: d504 bpl.n 80130f6 <_malloc_r+0x1e> - 80130ec: 230c movs r3, #12 - 80130ee: 602b str r3, [r5, #0] - 80130f0: 2400 movs r4, #0 - 80130f2: e1a3 b.n 801343c <_malloc_r+0x364> - 80130f4: 2710 movs r7, #16 - 80130f6: 42b9 cmp r1, r7 - 80130f8: d8f8 bhi.n 80130ec <_malloc_r+0x14> - 80130fa: 4628 mov r0, r5 - 80130fc: f000 fa26 bl 801354c <__malloc_lock> - 8013100: f5b7 7ffc cmp.w r7, #504 @ 0x1f8 - 8013104: 4eaf ldr r6, [pc, #700] @ (80133c4 <_malloc_r+0x2ec>) - 8013106: d237 bcs.n 8013178 <_malloc_r+0xa0> - 8013108: f107 0208 add.w r2, r7, #8 - 801310c: 4432 add r2, r6 - 801310e: f1a2 0108 sub.w r1, r2, #8 - 8013112: 6854 ldr r4, [r2, #4] - 8013114: 428c cmp r4, r1 - 8013116: ea4f 03d7 mov.w r3, r7, lsr #3 - 801311a: d102 bne.n 8013122 <_malloc_r+0x4a> - 801311c: 68d4 ldr r4, [r2, #12] - 801311e: 42a2 cmp r2, r4 - 8013120: d010 beq.n 8013144 <_malloc_r+0x6c> - 8013122: 6863 ldr r3, [r4, #4] - 8013124: e9d4 1202 ldrd r1, r2, [r4, #8] - 8013128: f023 0303 bic.w r3, r3, #3 - 801312c: 60ca str r2, [r1, #12] - 801312e: 4423 add r3, r4 - 8013130: 6091 str r1, [r2, #8] - 8013132: 685a ldr r2, [r3, #4] - 8013134: f042 0201 orr.w r2, r2, #1 - 8013138: 605a str r2, [r3, #4] - 801313a: 4628 mov r0, r5 - 801313c: f000 fa0c bl 8013558 <__malloc_unlock> - 8013140: 3408 adds r4, #8 - 8013142: e17b b.n 801343c <_malloc_r+0x364> - 8013144: 3302 adds r3, #2 - 8013146: 6934 ldr r4, [r6, #16] - 8013148: 499f ldr r1, [pc, #636] @ (80133c8 <_malloc_r+0x2f0>) - 801314a: 428c cmp r4, r1 - 801314c: d077 beq.n 801323e <_malloc_r+0x166> - 801314e: 6862 ldr r2, [r4, #4] - 8013150: f022 0c03 bic.w ip, r2, #3 - 8013154: ebac 0007 sub.w r0, ip, r7 - 8013158: 280f cmp r0, #15 - 801315a: dd48 ble.n 80131ee <_malloc_r+0x116> - 801315c: 19e2 adds r2, r4, r7 - 801315e: f040 0301 orr.w r3, r0, #1 - 8013162: f047 0701 orr.w r7, r7, #1 - 8013166: 6067 str r7, [r4, #4] - 8013168: e9c6 2204 strd r2, r2, [r6, #16] - 801316c: e9c2 1102 strd r1, r1, [r2, #8] - 8013170: 6053 str r3, [r2, #4] - 8013172: f844 000c str.w r0, [r4, ip] - 8013176: e7e0 b.n 801313a <_malloc_r+0x62> - 8013178: 0a7b lsrs r3, r7, #9 - 801317a: d02a beq.n 80131d2 <_malloc_r+0xfa> - 801317c: 2b04 cmp r3, #4 - 801317e: d812 bhi.n 80131a6 <_malloc_r+0xce> - 8013180: 09bb lsrs r3, r7, #6 - 8013182: 3338 adds r3, #56 @ 0x38 - 8013184: 1c5a adds r2, r3, #1 - 8013186: eb06 02c2 add.w r2, r6, r2, lsl #3 - 801318a: f1a2 0c08 sub.w ip, r2, #8 - 801318e: 6854 ldr r4, [r2, #4] - 8013190: 4564 cmp r4, ip - 8013192: d006 beq.n 80131a2 <_malloc_r+0xca> - 8013194: 6862 ldr r2, [r4, #4] - 8013196: f022 0203 bic.w r2, r2, #3 - 801319a: 1bd0 subs r0, r2, r7 - 801319c: 280f cmp r0, #15 - 801319e: dd1c ble.n 80131da <_malloc_r+0x102> - 80131a0: 3b01 subs r3, #1 - 80131a2: 3301 adds r3, #1 - 80131a4: e7cf b.n 8013146 <_malloc_r+0x6e> - 80131a6: 2b14 cmp r3, #20 - 80131a8: d801 bhi.n 80131ae <_malloc_r+0xd6> - 80131aa: 335b adds r3, #91 @ 0x5b - 80131ac: e7ea b.n 8013184 <_malloc_r+0xac> - 80131ae: 2b54 cmp r3, #84 @ 0x54 - 80131b0: d802 bhi.n 80131b8 <_malloc_r+0xe0> - 80131b2: 0b3b lsrs r3, r7, #12 - 80131b4: 336e adds r3, #110 @ 0x6e - 80131b6: e7e5 b.n 8013184 <_malloc_r+0xac> - 80131b8: f5b3 7faa cmp.w r3, #340 @ 0x154 - 80131bc: d802 bhi.n 80131c4 <_malloc_r+0xec> - 80131be: 0bfb lsrs r3, r7, #15 - 80131c0: 3377 adds r3, #119 @ 0x77 - 80131c2: e7df b.n 8013184 <_malloc_r+0xac> - 80131c4: f240 5254 movw r2, #1364 @ 0x554 - 80131c8: 4293 cmp r3, r2 - 80131ca: d804 bhi.n 80131d6 <_malloc_r+0xfe> - 80131cc: 0cbb lsrs r3, r7, #18 - 80131ce: 337c adds r3, #124 @ 0x7c - 80131d0: e7d8 b.n 8013184 <_malloc_r+0xac> - 80131d2: 233f movs r3, #63 @ 0x3f - 80131d4: e7d6 b.n 8013184 <_malloc_r+0xac> - 80131d6: 237e movs r3, #126 @ 0x7e - 80131d8: e7d4 b.n 8013184 <_malloc_r+0xac> - 80131da: 2800 cmp r0, #0 - 80131dc: 68e1 ldr r1, [r4, #12] - 80131de: db04 blt.n 80131ea <_malloc_r+0x112> - 80131e0: 68a3 ldr r3, [r4, #8] - 80131e2: 60d9 str r1, [r3, #12] - 80131e4: 608b str r3, [r1, #8] - 80131e6: 18a3 adds r3, r4, r2 - 80131e8: e7a3 b.n 8013132 <_malloc_r+0x5a> - 80131ea: 460c mov r4, r1 - 80131ec: e7d0 b.n 8013190 <_malloc_r+0xb8> - 80131ee: 2800 cmp r0, #0 - 80131f0: e9c6 1104 strd r1, r1, [r6, #16] - 80131f4: db07 blt.n 8013206 <_malloc_r+0x12e> - 80131f6: 44a4 add ip, r4 - 80131f8: f8dc 3004 ldr.w r3, [ip, #4] - 80131fc: f043 0301 orr.w r3, r3, #1 - 8013200: f8cc 3004 str.w r3, [ip, #4] - 8013204: e799 b.n 801313a <_malloc_r+0x62> - 8013206: f5bc 7f00 cmp.w ip, #512 @ 0x200 - 801320a: 6870 ldr r0, [r6, #4] - 801320c: f080 8095 bcs.w 801333a <_malloc_r+0x262> - 8013210: ea4f 02dc mov.w r2, ip, lsr #3 - 8013214: ea4f 1e5c mov.w lr, ip, lsr #5 - 8013218: f04f 0c01 mov.w ip, #1 - 801321c: 3201 adds r2, #1 - 801321e: fa0c fc0e lsl.w ip, ip, lr - 8013222: ea4c 0000 orr.w r0, ip, r0 - 8013226: 6070 str r0, [r6, #4] - 8013228: f856 c032 ldr.w ip, [r6, r2, lsl #3] - 801322c: eb06 00c2 add.w r0, r6, r2, lsl #3 - 8013230: 3808 subs r0, #8 - 8013232: e9c4 c002 strd ip, r0, [r4, #8] - 8013236: f846 4032 str.w r4, [r6, r2, lsl #3] - 801323a: f8cc 400c str.w r4, [ip, #12] - 801323e: 1098 asrs r0, r3, #2 - 8013240: 2201 movs r2, #1 - 8013242: 4082 lsls r2, r0 - 8013244: 6870 ldr r0, [r6, #4] - 8013246: 4290 cmp r0, r2 - 8013248: d326 bcc.n 8013298 <_malloc_r+0x1c0> - 801324a: 4210 tst r0, r2 - 801324c: d106 bne.n 801325c <_malloc_r+0x184> - 801324e: f023 0303 bic.w r3, r3, #3 - 8013252: 0052 lsls r2, r2, #1 - 8013254: 4210 tst r0, r2 - 8013256: f103 0304 add.w r3, r3, #4 - 801325a: d0fa beq.n 8013252 <_malloc_r+0x17a> - 801325c: eb06 08c3 add.w r8, r6, r3, lsl #3 - 8013260: 46c1 mov r9, r8 - 8013262: 469e mov lr, r3 - 8013264: f8d9 400c ldr.w r4, [r9, #12] - 8013268: 454c cmp r4, r9 - 801326a: f040 80b9 bne.w 80133e0 <_malloc_r+0x308> - 801326e: f10e 0e01 add.w lr, lr, #1 - 8013272: f01e 0f03 tst.w lr, #3 - 8013276: f109 0908 add.w r9, r9, #8 - 801327a: d1f3 bne.n 8013264 <_malloc_r+0x18c> - 801327c: 0798 lsls r0, r3, #30 - 801327e: f040 80e3 bne.w 8013448 <_malloc_r+0x370> - 8013282: 6873 ldr r3, [r6, #4] - 8013284: ea23 0302 bic.w r3, r3, r2 - 8013288: 6073 str r3, [r6, #4] - 801328a: 6870 ldr r0, [r6, #4] - 801328c: 0052 lsls r2, r2, #1 - 801328e: 4290 cmp r0, r2 - 8013290: d302 bcc.n 8013298 <_malloc_r+0x1c0> - 8013292: 2a00 cmp r2, #0 - 8013294: f040 80e5 bne.w 8013462 <_malloc_r+0x38a> - 8013298: f8d6 a008 ldr.w sl, [r6, #8] - 801329c: f8da 3004 ldr.w r3, [sl, #4] - 80132a0: f023 0903 bic.w r9, r3, #3 - 80132a4: 45b9 cmp r9, r7 - 80132a6: d304 bcc.n 80132b2 <_malloc_r+0x1da> - 80132a8: eba9 0207 sub.w r2, r9, r7 - 80132ac: 2a0f cmp r2, #15 - 80132ae: f300 8141 bgt.w 8013534 <_malloc_r+0x45c> - 80132b2: 4b46 ldr r3, [pc, #280] @ (80133cc <_malloc_r+0x2f4>) - 80132b4: 6819 ldr r1, [r3, #0] - 80132b6: 3110 adds r1, #16 - 80132b8: 4439 add r1, r7 - 80132ba: 2008 movs r0, #8 - 80132bc: 9101 str r1, [sp, #4] - 80132be: f002 fc0b bl 8015ad8 - 80132c2: 4a43 ldr r2, [pc, #268] @ (80133d0 <_malloc_r+0x2f8>) - 80132c4: 9901 ldr r1, [sp, #4] - 80132c6: 6813 ldr r3, [r2, #0] - 80132c8: 3301 adds r3, #1 - 80132ca: bf1f itttt ne - 80132cc: f101 31ff addne.w r1, r1, #4294967295 - 80132d0: 1809 addne r1, r1, r0 - 80132d2: 4243 negne r3, r0 - 80132d4: 4019 andne r1, r3 - 80132d6: 4680 mov r8, r0 - 80132d8: 4628 mov r0, r5 - 80132da: 9101 str r1, [sp, #4] - 80132dc: f002 fbd8 bl 8015a90 <_sbrk_r> - 80132e0: 1c42 adds r2, r0, #1 - 80132e2: eb0a 0b09 add.w fp, sl, r9 - 80132e6: 4604 mov r4, r0 - 80132e8: f000 80f7 beq.w 80134da <_malloc_r+0x402> - 80132ec: 4583 cmp fp, r0 - 80132ee: 9901 ldr r1, [sp, #4] - 80132f0: 4a37 ldr r2, [pc, #220] @ (80133d0 <_malloc_r+0x2f8>) - 80132f2: d902 bls.n 80132fa <_malloc_r+0x222> - 80132f4: 45b2 cmp sl, r6 - 80132f6: f040 80f0 bne.w 80134da <_malloc_r+0x402> - 80132fa: 4b36 ldr r3, [pc, #216] @ (80133d4 <_malloc_r+0x2fc>) - 80132fc: 6818 ldr r0, [r3, #0] - 80132fe: 45a3 cmp fp, r4 - 8013300: eb00 0e01 add.w lr, r0, r1 - 8013304: f8c3 e000 str.w lr, [r3] - 8013308: f108 3cff add.w ip, r8, #4294967295 - 801330c: f040 80ab bne.w 8013466 <_malloc_r+0x38e> - 8013310: ea1b 0f0c tst.w fp, ip - 8013314: f040 80a7 bne.w 8013466 <_malloc_r+0x38e> - 8013318: 68b2 ldr r2, [r6, #8] - 801331a: 4449 add r1, r9 - 801331c: f041 0101 orr.w r1, r1, #1 - 8013320: 6051 str r1, [r2, #4] - 8013322: 4a2d ldr r2, [pc, #180] @ (80133d8 <_malloc_r+0x300>) - 8013324: 681b ldr r3, [r3, #0] - 8013326: 6811 ldr r1, [r2, #0] - 8013328: 428b cmp r3, r1 - 801332a: bf88 it hi - 801332c: 6013 strhi r3, [r2, #0] - 801332e: 4a2b ldr r2, [pc, #172] @ (80133dc <_malloc_r+0x304>) - 8013330: 6811 ldr r1, [r2, #0] - 8013332: 428b cmp r3, r1 - 8013334: bf88 it hi - 8013336: 6013 strhi r3, [r2, #0] - 8013338: e0cf b.n 80134da <_malloc_r+0x402> - 801333a: f5bc 6f20 cmp.w ip, #2560 @ 0xa00 - 801333e: ea4f 225c mov.w r2, ip, lsr #9 - 8013342: d218 bcs.n 8013376 <_malloc_r+0x29e> - 8013344: ea4f 129c mov.w r2, ip, lsr #6 - 8013348: 3238 adds r2, #56 @ 0x38 - 801334a: f102 0e01 add.w lr, r2, #1 - 801334e: eb06 08c2 add.w r8, r6, r2, lsl #3 - 8013352: f856 e03e ldr.w lr, [r6, lr, lsl #3] - 8013356: 45f0 cmp r8, lr - 8013358: d12b bne.n 80133b2 <_malloc_r+0x2da> - 801335a: 1092 asrs r2, r2, #2 - 801335c: f04f 0c01 mov.w ip, #1 - 8013360: fa0c f202 lsl.w r2, ip, r2 - 8013364: 4302 orrs r2, r0 - 8013366: 6072 str r2, [r6, #4] - 8013368: e9c4 e802 strd lr, r8, [r4, #8] - 801336c: f8c8 4008 str.w r4, [r8, #8] - 8013370: f8ce 400c str.w r4, [lr, #12] - 8013374: e763 b.n 801323e <_malloc_r+0x166> - 8013376: 2a14 cmp r2, #20 - 8013378: d801 bhi.n 801337e <_malloc_r+0x2a6> - 801337a: 325b adds r2, #91 @ 0x5b - 801337c: e7e5 b.n 801334a <_malloc_r+0x272> - 801337e: 2a54 cmp r2, #84 @ 0x54 - 8013380: d803 bhi.n 801338a <_malloc_r+0x2b2> - 8013382: ea4f 321c mov.w r2, ip, lsr #12 - 8013386: 326e adds r2, #110 @ 0x6e - 8013388: e7df b.n 801334a <_malloc_r+0x272> - 801338a: f5b2 7faa cmp.w r2, #340 @ 0x154 - 801338e: d803 bhi.n 8013398 <_malloc_r+0x2c0> - 8013390: ea4f 32dc mov.w r2, ip, lsr #15 - 8013394: 3277 adds r2, #119 @ 0x77 - 8013396: e7d8 b.n 801334a <_malloc_r+0x272> - 8013398: f240 5e54 movw lr, #1364 @ 0x554 - 801339c: 4572 cmp r2, lr - 801339e: bf9a itte ls - 80133a0: ea4f 429c movls.w r2, ip, lsr #18 - 80133a4: 327c addls r2, #124 @ 0x7c - 80133a6: 227e movhi r2, #126 @ 0x7e - 80133a8: e7cf b.n 801334a <_malloc_r+0x272> - 80133aa: f8de e008 ldr.w lr, [lr, #8] - 80133ae: 45f0 cmp r8, lr - 80133b0: d005 beq.n 80133be <_malloc_r+0x2e6> - 80133b2: f8de 2004 ldr.w r2, [lr, #4] - 80133b6: f022 0203 bic.w r2, r2, #3 - 80133ba: 4562 cmp r2, ip - 80133bc: d8f5 bhi.n 80133aa <_malloc_r+0x2d2> - 80133be: f8de 800c ldr.w r8, [lr, #12] - 80133c2: e7d1 b.n 8013368 <_malloc_r+0x290> - 80133c4: 2000016c .word 0x2000016c - 80133c8: 20000174 .word 0x20000174 - 80133cc: 200193f4 .word 0x200193f4 - 80133d0: 20000164 .word 0x20000164 - 80133d4: 200193c4 .word 0x200193c4 - 80133d8: 200193f0 .word 0x200193f0 - 80133dc: 200193ec .word 0x200193ec - 80133e0: 6860 ldr r0, [r4, #4] - 80133e2: f8d4 c00c ldr.w ip, [r4, #12] - 80133e6: f020 0003 bic.w r0, r0, #3 - 80133ea: eba0 0a07 sub.w sl, r0, r7 - 80133ee: f1ba 0f0f cmp.w sl, #15 - 80133f2: dd12 ble.n 801341a <_malloc_r+0x342> - 80133f4: 68a3 ldr r3, [r4, #8] - 80133f6: 19e2 adds r2, r4, r7 - 80133f8: f047 0701 orr.w r7, r7, #1 - 80133fc: 6067 str r7, [r4, #4] - 80133fe: f8c3 c00c str.w ip, [r3, #12] - 8013402: f8cc 3008 str.w r3, [ip, #8] - 8013406: f04a 0301 orr.w r3, sl, #1 - 801340a: e9c6 2204 strd r2, r2, [r6, #16] - 801340e: e9c2 1102 strd r1, r1, [r2, #8] - 8013412: 6053 str r3, [r2, #4] - 8013414: f844 a000 str.w sl, [r4, r0] - 8013418: e68f b.n 801313a <_malloc_r+0x62> - 801341a: f1ba 0f00 cmp.w sl, #0 - 801341e: db11 blt.n 8013444 <_malloc_r+0x36c> - 8013420: 4420 add r0, r4 - 8013422: 6843 ldr r3, [r0, #4] - 8013424: f043 0301 orr.w r3, r3, #1 - 8013428: 6043 str r3, [r0, #4] - 801342a: f854 3f08 ldr.w r3, [r4, #8]! - 801342e: 4628 mov r0, r5 - 8013430: f8c3 c00c str.w ip, [r3, #12] - 8013434: f8cc 3008 str.w r3, [ip, #8] - 8013438: f000 f88e bl 8013558 <__malloc_unlock> - 801343c: 4620 mov r0, r4 - 801343e: b003 add sp, #12 - 8013440: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 8013444: 4664 mov r4, ip - 8013446: e70f b.n 8013268 <_malloc_r+0x190> - 8013448: f858 0908 ldr.w r0, [r8], #-8 - 801344c: 4540 cmp r0, r8 - 801344e: f103 33ff add.w r3, r3, #4294967295 - 8013452: f43f af13 beq.w 801327c <_malloc_r+0x1a4> - 8013456: e718 b.n 801328a <_malloc_r+0x1b2> - 8013458: 3304 adds r3, #4 - 801345a: 0052 lsls r2, r2, #1 - 801345c: 4210 tst r0, r2 - 801345e: d0fb beq.n 8013458 <_malloc_r+0x380> - 8013460: e6fc b.n 801325c <_malloc_r+0x184> - 8013462: 4673 mov r3, lr - 8013464: e7fa b.n 801345c <_malloc_r+0x384> - 8013466: 6810 ldr r0, [r2, #0] - 8013468: 3001 adds r0, #1 - 801346a: bf1b ittet ne - 801346c: eba4 0b0b subne.w fp, r4, fp - 8013470: eb0b 020e addne.w r2, fp, lr - 8013474: 6014 streq r4, [r2, #0] - 8013476: 601a strne r2, [r3, #0] - 8013478: f014 0b07 ands.w fp, r4, #7 - 801347c: bf1a itte ne - 801347e: f1cb 0008 rsbne r0, fp, #8 - 8013482: 1824 addne r4, r4, r0 - 8013484: 4658 moveq r0, fp - 8013486: 1862 adds r2, r4, r1 - 8013488: ea02 010c and.w r1, r2, ip - 801348c: 4480 add r8, r0 - 801348e: eba8 0801 sub.w r8, r8, r1 - 8013492: ea08 080c and.w r8, r8, ip - 8013496: 4641 mov r1, r8 - 8013498: 4628 mov r0, r5 - 801349a: 9201 str r2, [sp, #4] - 801349c: f002 faf8 bl 8015a90 <_sbrk_r> - 80134a0: 1c43 adds r3, r0, #1 - 80134a2: 9a01 ldr r2, [sp, #4] - 80134a4: 4b28 ldr r3, [pc, #160] @ (8013548 <_malloc_r+0x470>) - 80134a6: d107 bne.n 80134b8 <_malloc_r+0x3e0> - 80134a8: f1bb 0f00 cmp.w fp, #0 - 80134ac: d023 beq.n 80134f6 <_malloc_r+0x41e> - 80134ae: f1ab 0008 sub.w r0, fp, #8 - 80134b2: 4410 add r0, r2 - 80134b4: f04f 0800 mov.w r8, #0 - 80134b8: 681a ldr r2, [r3, #0] - 80134ba: 60b4 str r4, [r6, #8] - 80134bc: 1b00 subs r0, r0, r4 - 80134be: 4440 add r0, r8 - 80134c0: 4442 add r2, r8 - 80134c2: f040 0001 orr.w r0, r0, #1 - 80134c6: 45b2 cmp sl, r6 - 80134c8: 601a str r2, [r3, #0] - 80134ca: 6060 str r0, [r4, #4] - 80134cc: f43f af29 beq.w 8013322 <_malloc_r+0x24a> - 80134d0: f1b9 0f0f cmp.w r9, #15 - 80134d4: d812 bhi.n 80134fc <_malloc_r+0x424> - 80134d6: 2301 movs r3, #1 - 80134d8: 6063 str r3, [r4, #4] - 80134da: 68b3 ldr r3, [r6, #8] - 80134dc: 685b ldr r3, [r3, #4] - 80134de: f023 0303 bic.w r3, r3, #3 - 80134e2: 42bb cmp r3, r7 - 80134e4: eba3 0207 sub.w r2, r3, r7 - 80134e8: d301 bcc.n 80134ee <_malloc_r+0x416> - 80134ea: 2a0f cmp r2, #15 - 80134ec: dc22 bgt.n 8013534 <_malloc_r+0x45c> - 80134ee: 4628 mov r0, r5 - 80134f0: f000 f832 bl 8013558 <__malloc_unlock> - 80134f4: e5fc b.n 80130f0 <_malloc_r+0x18> - 80134f6: 4610 mov r0, r2 - 80134f8: 46d8 mov r8, fp - 80134fa: e7dd b.n 80134b8 <_malloc_r+0x3e0> - 80134fc: f8da 2004 ldr.w r2, [sl, #4] - 8013500: f1a9 090c sub.w r9, r9, #12 - 8013504: f029 0907 bic.w r9, r9, #7 - 8013508: f002 0201 and.w r2, r2, #1 - 801350c: ea42 0209 orr.w r2, r2, r9 - 8013510: f8ca 2004 str.w r2, [sl, #4] - 8013514: 2105 movs r1, #5 - 8013516: eb0a 0209 add.w r2, sl, r9 - 801351a: f1b9 0f0f cmp.w r9, #15 - 801351e: e9c2 1101 strd r1, r1, [r2, #4] - 8013522: f67f aefe bls.w 8013322 <_malloc_r+0x24a> - 8013526: f10a 0108 add.w r1, sl, #8 - 801352a: 4628 mov r0, r5 - 801352c: f7ff fd14 bl 8012f58 <_free_r> - 8013530: 4b05 ldr r3, [pc, #20] @ (8013548 <_malloc_r+0x470>) - 8013532: e6f6 b.n 8013322 <_malloc_r+0x24a> - 8013534: 68b4 ldr r4, [r6, #8] - 8013536: f047 0301 orr.w r3, r7, #1 - 801353a: 4427 add r7, r4 - 801353c: f042 0201 orr.w r2, r2, #1 - 8013540: 6063 str r3, [r4, #4] - 8013542: 60b7 str r7, [r6, #8] - 8013544: 607a str r2, [r7, #4] - 8013546: e5f8 b.n 801313a <_malloc_r+0x62> - 8013548: 200193c4 .word 0x200193c4 - -0801354c <__malloc_lock>: - 801354c: 4801 ldr r0, [pc, #4] @ (8013554 <__malloc_lock+0x8>) - 801354e: f7ff bc8d b.w 8012e6c <__retarget_lock_acquire_recursive> - 8013552: bf00 nop - 8013554: 200193bc .word 0x200193bc - -08013558 <__malloc_unlock>: - 8013558: 4801 ldr r0, [pc, #4] @ (8013560 <__malloc_unlock+0x8>) - 801355a: f7ff bc88 b.w 8012e6e <__retarget_lock_release_recursive> - 801355e: bf00 nop - 8013560: 200193bc .word 0x200193bc - 8013564: 00000000 .word 0x00000000 - -08013568 <_vfprintf_r>: - 8013568: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 801356c: b0d3 sub sp, #332 @ 0x14c - 801356e: 468b mov fp, r1 - 8013570: 4690 mov r8, r2 - 8013572: 461c mov r4, r3 - 8013574: 461e mov r6, r3 - 8013576: 9003 str r0, [sp, #12] - 8013578: f002 fa86 bl 8015a88 <_localeconv_r> - 801357c: 6803 ldr r3, [r0, #0] - 801357e: 9316 str r3, [sp, #88] @ 0x58 - 8013580: 4618 mov r0, r3 - 8013582: f7ec fe35 bl 80001f0 - 8013586: 9b03 ldr r3, [sp, #12] - 8013588: 900d str r0, [sp, #52] @ 0x34 - 801358a: b123 cbz r3, 8013596 <_vfprintf_r+0x2e> - 801358c: 6b5b ldr r3, [r3, #52] @ 0x34 - 801358e: b913 cbnz r3, 8013596 <_vfprintf_r+0x2e> - 8013590: 9803 ldr r0, [sp, #12] - 8013592: f7ff fb3b bl 8012c0c <__sinit> - 8013596: f8db 3064 ldr.w r3, [fp, #100] @ 0x64 - 801359a: 07da lsls r2, r3, #31 - 801359c: d407 bmi.n 80135ae <_vfprintf_r+0x46> - 801359e: f8bb 300c ldrh.w r3, [fp, #12] - 80135a2: 059b lsls r3, r3, #22 - 80135a4: d403 bmi.n 80135ae <_vfprintf_r+0x46> - 80135a6: f8db 0058 ldr.w r0, [fp, #88] @ 0x58 - 80135aa: f7ff fc5f bl 8012e6c <__retarget_lock_acquire_recursive> - 80135ae: f9bb 300c ldrsh.w r3, [fp, #12] - 80135b2: 049f lsls r7, r3, #18 - 80135b4: d409 bmi.n 80135ca <_vfprintf_r+0x62> - 80135b6: f443 5300 orr.w r3, r3, #8192 @ 0x2000 - 80135ba: f8ab 300c strh.w r3, [fp, #12] - 80135be: f8db 3064 ldr.w r3, [fp, #100] @ 0x64 - 80135c2: f423 5300 bic.w r3, r3, #8192 @ 0x2000 - 80135c6: f8cb 3064 str.w r3, [fp, #100] @ 0x64 - 80135ca: f8bb 300c ldrh.w r3, [fp, #12] - 80135ce: 071d lsls r5, r3, #28 - 80135d0: d502 bpl.n 80135d8 <_vfprintf_r+0x70> - 80135d2: f8db 3010 ldr.w r3, [fp, #16] - 80135d6: b9c3 cbnz r3, 801360a <_vfprintf_r+0xa2> - 80135d8: 9803 ldr r0, [sp, #12] - 80135da: 4659 mov r1, fp - 80135dc: f002 f97a bl 80158d4 <__swsetup_r> - 80135e0: b198 cbz r0, 801360a <_vfprintf_r+0xa2> - 80135e2: f8db 3064 ldr.w r3, [fp, #100] @ 0x64 - 80135e6: 07d8 lsls r0, r3, #31 - 80135e8: d506 bpl.n 80135f8 <_vfprintf_r+0x90> - 80135ea: f04f 33ff mov.w r3, #4294967295 - 80135ee: 930f str r3, [sp, #60] @ 0x3c - 80135f0: 980f ldr r0, [sp, #60] @ 0x3c - 80135f2: b053 add sp, #332 @ 0x14c - 80135f4: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 80135f8: f8bb 300c ldrh.w r3, [fp, #12] - 80135fc: 0599 lsls r1, r3, #22 - 80135fe: d4f4 bmi.n 80135ea <_vfprintf_r+0x82> - 8013600: f8db 0058 ldr.w r0, [fp, #88] @ 0x58 - 8013604: f7ff fc33 bl 8012e6e <__retarget_lock_release_recursive> - 8013608: e7ef b.n 80135ea <_vfprintf_r+0x82> - 801360a: f9bb 300c ldrsh.w r3, [fp, #12] - 801360e: f003 021a and.w r2, r3, #26 - 8013612: 2a0a cmp r2, #10 - 8013614: d116 bne.n 8013644 <_vfprintf_r+0xdc> - 8013616: f9bb 200e ldrsh.w r2, [fp, #14] - 801361a: 2a00 cmp r2, #0 - 801361c: db12 blt.n 8013644 <_vfprintf_r+0xdc> - 801361e: f8db 2064 ldr.w r2, [fp, #100] @ 0x64 - 8013622: 07d2 lsls r2, r2, #31 - 8013624: d405 bmi.n 8013632 <_vfprintf_r+0xca> - 8013626: 059b lsls r3, r3, #22 - 8013628: d403 bmi.n 8013632 <_vfprintf_r+0xca> - 801362a: f8db 0058 ldr.w r0, [fp, #88] @ 0x58 - 801362e: f7ff fc1e bl 8012e6e <__retarget_lock_release_recursive> - 8013632: 9803 ldr r0, [sp, #12] - 8013634: 4623 mov r3, r4 - 8013636: 4642 mov r2, r8 - 8013638: 4659 mov r1, fp - 801363a: b053 add sp, #332 @ 0x14c - 801363c: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8013640: f001 b9be b.w 80149c0 <__sbprintf> - 8013644: ed9f 7b92 vldr d7, [pc, #584] @ 8013890 <_vfprintf_r+0x328> - 8013648: 2300 movs r3, #0 - 801364a: e9cd 3327 strd r3, r3, [sp, #156] @ 0x9c - 801364e: ed8d 7b0a vstr d7, [sp, #40] @ 0x28 - 8013652: e9cd 3318 strd r3, r3, [sp, #96] @ 0x60 - 8013656: ac29 add r4, sp, #164 @ 0xa4 - 8013658: 9426 str r4, [sp, #152] @ 0x98 - 801365a: 9304 str r3, [sp, #16] - 801365c: 9309 str r3, [sp, #36] @ 0x24 - 801365e: 9312 str r3, [sp, #72] @ 0x48 - 8013660: 9317 str r3, [sp, #92] @ 0x5c - 8013662: 930f str r3, [sp, #60] @ 0x3c - 8013664: 4643 mov r3, r8 - 8013666: 461d mov r5, r3 - 8013668: f813 2b01 ldrb.w r2, [r3], #1 - 801366c: b10a cbz r2, 8013672 <_vfprintf_r+0x10a> - 801366e: 2a25 cmp r2, #37 @ 0x25 - 8013670: d1f9 bne.n 8013666 <_vfprintf_r+0xfe> - 8013672: ebb5 0708 subs.w r7, r5, r8 - 8013676: d00d beq.n 8013694 <_vfprintf_r+0x12c> - 8013678: 9b28 ldr r3, [sp, #160] @ 0xa0 - 801367a: 443b add r3, r7 - 801367c: 9328 str r3, [sp, #160] @ 0xa0 - 801367e: 9b27 ldr r3, [sp, #156] @ 0x9c - 8013680: 3301 adds r3, #1 - 8013682: 2b07 cmp r3, #7 - 8013684: e9c4 8700 strd r8, r7, [r4] - 8013688: 9327 str r3, [sp, #156] @ 0x9c - 801368a: dc75 bgt.n 8013778 <_vfprintf_r+0x210> - 801368c: 3408 adds r4, #8 - 801368e: 9b0f ldr r3, [sp, #60] @ 0x3c - 8013690: 443b add r3, r7 - 8013692: 930f str r3, [sp, #60] @ 0x3c - 8013694: 782b ldrb r3, [r5, #0] - 8013696: 2b00 cmp r3, #0 - 8013698: f001 814f beq.w 801493a <_vfprintf_r+0x13d2> - 801369c: 2200 movs r2, #0 - 801369e: 1c6b adds r3, r5, #1 - 80136a0: f88d 207b strb.w r2, [sp, #123] @ 0x7b - 80136a4: f04f 39ff mov.w r9, #4294967295 - 80136a8: 920e str r2, [sp, #56] @ 0x38 - 80136aa: 4615 mov r5, r2 - 80136ac: f813 2b01 ldrb.w r2, [r3], #1 - 80136b0: 9206 str r2, [sp, #24] - 80136b2: 930c str r3, [sp, #48] @ 0x30 - 80136b4: 9b06 ldr r3, [sp, #24] - 80136b6: 3b20 subs r3, #32 - 80136b8: 2b5a cmp r3, #90 @ 0x5a - 80136ba: f200 85aa bhi.w 8014212 <_vfprintf_r+0xcaa> - 80136be: e8df f013 tbh [pc, r3, lsl #1] - 80136c2: 009d .short 0x009d - 80136c4: 05a805a8 .word 0x05a805a8 - 80136c8: 05a800a5 .word 0x05a800a5 - 80136cc: 05a805a8 .word 0x05a805a8 - 80136d0: 05a80085 .word 0x05a80085 - 80136d4: 00a805a8 .word 0x00a805a8 - 80136d8: 05a800b2 .word 0x05a800b2 - 80136dc: 00b400af .word 0x00b400af - 80136e0: 00ce05a8 .word 0x00ce05a8 - 80136e4: 00d100d1 .word 0x00d100d1 - 80136e8: 00d100d1 .word 0x00d100d1 - 80136ec: 00d100d1 .word 0x00d100d1 - 80136f0: 00d100d1 .word 0x00d100d1 - 80136f4: 05a800d1 .word 0x05a800d1 - 80136f8: 05a805a8 .word 0x05a805a8 - 80136fc: 05a805a8 .word 0x05a805a8 - 8013700: 05a805a8 .word 0x05a805a8 - 8013704: 05a80146 .word 0x05a80146 - 8013708: 011a0107 .word 0x011a0107 - 801370c: 01460146 .word 0x01460146 - 8013710: 05a80146 .word 0x05a80146 - 8013714: 05a805a8 .word 0x05a805a8 - 8013718: 00e205a8 .word 0x00e205a8 - 801371c: 05a805a8 .word 0x05a805a8 - 8013720: 05a804a3 .word 0x05a804a3 - 8013724: 05a805a8 .word 0x05a805a8 - 8013728: 05a804ed .word 0x05a804ed - 801372c: 05a8050e .word 0x05a8050e - 8013730: 053005a8 .word 0x053005a8 - 8013734: 05a805a8 .word 0x05a805a8 - 8013738: 05a805a8 .word 0x05a805a8 - 801373c: 05a805a8 .word 0x05a805a8 - 8013740: 05a805a8 .word 0x05a805a8 - 8013744: 05a80146 .word 0x05a80146 - 8013748: 011c0107 .word 0x011c0107 - 801374c: 01460146 .word 0x01460146 - 8013750: 00ed0146 .word 0x00ed0146 - 8013754: 0101011c .word 0x0101011c - 8013758: 00fa05a8 .word 0x00fa05a8 - 801375c: 048705a8 .word 0x048705a8 - 8013760: 04dc04a5 .word 0x04dc04a5 - 8013764: 05a80101 .word 0x05a80101 - 8013768: 009b04ed .word 0x009b04ed - 801376c: 05a80510 .word 0x05a80510 - 8013770: 006505a8 .word 0x006505a8 - 8013774: 009b05a8 .word 0x009b05a8 - 8013778: 9803 ldr r0, [sp, #12] - 801377a: aa26 add r2, sp, #152 @ 0x98 - 801377c: 4659 mov r1, fp - 801377e: f001 f95f bl 8014a40 <__sprint_r> - 8013782: 2800 cmp r0, #0 - 8013784: f040 814d bne.w 8013a22 <_vfprintf_r+0x4ba> - 8013788: ac29 add r4, sp, #164 @ 0xa4 - 801378a: e780 b.n 801368e <_vfprintf_r+0x126> - 801378c: 4b42 ldr r3, [pc, #264] @ (8013898 <_vfprintf_r+0x330>) - 801378e: 9319 str r3, [sp, #100] @ 0x64 - 8013790: f015 0320 ands.w r3, r5, #32 - 8013794: f000 84c8 beq.w 8014128 <_vfprintf_r+0xbc0> - 8013798: 3607 adds r6, #7 - 801379a: f026 0307 bic.w r3, r6, #7 - 801379e: 461a mov r2, r3 - 80137a0: 685f ldr r7, [r3, #4] - 80137a2: f852 6b08 ldr.w r6, [r2], #8 - 80137a6: 9207 str r2, [sp, #28] - 80137a8: 07eb lsls r3, r5, #31 - 80137aa: d50a bpl.n 80137c2 <_vfprintf_r+0x25a> - 80137ac: ea56 0307 orrs.w r3, r6, r7 - 80137b0: d007 beq.n 80137c2 <_vfprintf_r+0x25a> - 80137b2: 2330 movs r3, #48 @ 0x30 - 80137b4: f88d 307c strb.w r3, [sp, #124] @ 0x7c - 80137b8: 9b06 ldr r3, [sp, #24] - 80137ba: f88d 307d strb.w r3, [sp, #125] @ 0x7d - 80137be: f045 0502 orr.w r5, r5, #2 - 80137c2: f425 6580 bic.w r5, r5, #1024 @ 0x400 - 80137c6: 2302 movs r3, #2 - 80137c8: f000 bc2e b.w 8014028 <_vfprintf_r+0xac0> - 80137cc: 9803 ldr r0, [sp, #12] - 80137ce: f002 f95b bl 8015a88 <_localeconv_r> - 80137d2: 6843 ldr r3, [r0, #4] - 80137d4: 9317 str r3, [sp, #92] @ 0x5c - 80137d6: 4618 mov r0, r3 - 80137d8: f7ec fd0a bl 80001f0 - 80137dc: 9012 str r0, [sp, #72] @ 0x48 - 80137de: 9803 ldr r0, [sp, #12] - 80137e0: f002 f952 bl 8015a88 <_localeconv_r> - 80137e4: 6883 ldr r3, [r0, #8] - 80137e6: 9309 str r3, [sp, #36] @ 0x24 - 80137e8: 9b12 ldr r3, [sp, #72] @ 0x48 - 80137ea: b12b cbz r3, 80137f8 <_vfprintf_r+0x290> - 80137ec: 9b09 ldr r3, [sp, #36] @ 0x24 - 80137ee: b11b cbz r3, 80137f8 <_vfprintf_r+0x290> - 80137f0: 781b ldrb r3, [r3, #0] - 80137f2: b10b cbz r3, 80137f8 <_vfprintf_r+0x290> - 80137f4: f445 6580 orr.w r5, r5, #1024 @ 0x400 - 80137f8: 9b0c ldr r3, [sp, #48] @ 0x30 - 80137fa: e757 b.n 80136ac <_vfprintf_r+0x144> - 80137fc: f89d 307b ldrb.w r3, [sp, #123] @ 0x7b - 8013800: 2b00 cmp r3, #0 - 8013802: d1f9 bne.n 80137f8 <_vfprintf_r+0x290> - 8013804: 2320 movs r3, #32 - 8013806: f88d 307b strb.w r3, [sp, #123] @ 0x7b - 801380a: e7f5 b.n 80137f8 <_vfprintf_r+0x290> - 801380c: f045 0501 orr.w r5, r5, #1 - 8013810: e7f2 b.n 80137f8 <_vfprintf_r+0x290> - 8013812: f856 3b04 ldr.w r3, [r6], #4 - 8013816: 930e str r3, [sp, #56] @ 0x38 - 8013818: 2b00 cmp r3, #0 - 801381a: daed bge.n 80137f8 <_vfprintf_r+0x290> - 801381c: 425b negs r3, r3 - 801381e: 930e str r3, [sp, #56] @ 0x38 - 8013820: f045 0504 orr.w r5, r5, #4 - 8013824: e7e8 b.n 80137f8 <_vfprintf_r+0x290> - 8013826: 232b movs r3, #43 @ 0x2b - 8013828: e7ed b.n 8013806 <_vfprintf_r+0x29e> - 801382a: 9b0c ldr r3, [sp, #48] @ 0x30 - 801382c: f813 2b01 ldrb.w r2, [r3], #1 - 8013830: 9206 str r2, [sp, #24] - 8013832: 2a2a cmp r2, #42 @ 0x2a - 8013834: d10f bne.n 8013856 <_vfprintf_r+0x2ee> - 8013836: f856 2b04 ldr.w r2, [r6], #4 - 801383a: 930c str r3, [sp, #48] @ 0x30 - 801383c: ea42 79e2 orr.w r9, r2, r2, asr #31 - 8013840: e7da b.n 80137f8 <_vfprintf_r+0x290> - 8013842: fb01 2909 mla r9, r1, r9, r2 - 8013846: f813 2b01 ldrb.w r2, [r3], #1 - 801384a: 9206 str r2, [sp, #24] - 801384c: 9a06 ldr r2, [sp, #24] - 801384e: 3a30 subs r2, #48 @ 0x30 - 8013850: 2a09 cmp r2, #9 - 8013852: d9f6 bls.n 8013842 <_vfprintf_r+0x2da> - 8013854: e72d b.n 80136b2 <_vfprintf_r+0x14a> - 8013856: f04f 0900 mov.w r9, #0 - 801385a: 210a movs r1, #10 - 801385c: e7f6 b.n 801384c <_vfprintf_r+0x2e4> - 801385e: f045 0580 orr.w r5, r5, #128 @ 0x80 - 8013862: e7c9 b.n 80137f8 <_vfprintf_r+0x290> - 8013864: 2200 movs r2, #0 - 8013866: 9b0c ldr r3, [sp, #48] @ 0x30 - 8013868: 920e str r2, [sp, #56] @ 0x38 - 801386a: 210a movs r1, #10 - 801386c: 9a06 ldr r2, [sp, #24] - 801386e: 980e ldr r0, [sp, #56] @ 0x38 - 8013870: 3a30 subs r2, #48 @ 0x30 - 8013872: fb01 2200 mla r2, r1, r0, r2 - 8013876: 920e str r2, [sp, #56] @ 0x38 - 8013878: f813 2b01 ldrb.w r2, [r3], #1 - 801387c: 9206 str r2, [sp, #24] - 801387e: 3a30 subs r2, #48 @ 0x30 - 8013880: 2a09 cmp r2, #9 - 8013882: d9f3 bls.n 801386c <_vfprintf_r+0x304> - 8013884: e715 b.n 80136b2 <_vfprintf_r+0x14a> - 8013886: f045 0508 orr.w r5, r5, #8 - 801388a: e7b5 b.n 80137f8 <_vfprintf_r+0x290> - 801388c: f3af 8000 nop.w - ... - 8013898: 0801a70b .word 0x0801a70b - 801389c: 9b0c ldr r3, [sp, #48] @ 0x30 - 801389e: 781b ldrb r3, [r3, #0] - 80138a0: 2b68 cmp r3, #104 @ 0x68 - 80138a2: bf01 itttt eq - 80138a4: 9b0c ldreq r3, [sp, #48] @ 0x30 - 80138a6: 3301 addeq r3, #1 - 80138a8: 930c streq r3, [sp, #48] @ 0x30 - 80138aa: f445 7500 orreq.w r5, r5, #512 @ 0x200 - 80138ae: bf18 it ne - 80138b0: f045 0540 orrne.w r5, r5, #64 @ 0x40 - 80138b4: e7a0 b.n 80137f8 <_vfprintf_r+0x290> - 80138b6: 9b0c ldr r3, [sp, #48] @ 0x30 - 80138b8: 781b ldrb r3, [r3, #0] - 80138ba: 2b6c cmp r3, #108 @ 0x6c - 80138bc: d105 bne.n 80138ca <_vfprintf_r+0x362> - 80138be: 9b0c ldr r3, [sp, #48] @ 0x30 - 80138c0: 3301 adds r3, #1 - 80138c2: 930c str r3, [sp, #48] @ 0x30 - 80138c4: f045 0520 orr.w r5, r5, #32 - 80138c8: e796 b.n 80137f8 <_vfprintf_r+0x290> - 80138ca: f045 0510 orr.w r5, r5, #16 - 80138ce: e793 b.n 80137f8 <_vfprintf_r+0x290> - 80138d0: 4632 mov r2, r6 - 80138d2: f852 3b04 ldr.w r3, [r2], #4 - 80138d6: f88d 30e4 strb.w r3, [sp, #228] @ 0xe4 - 80138da: 2300 movs r3, #0 - 80138dc: 9207 str r2, [sp, #28] - 80138de: f88d 307b strb.w r3, [sp, #123] @ 0x7b - 80138e2: 469a mov sl, r3 - 80138e4: f04f 0901 mov.w r9, #1 - 80138e8: 9310 str r3, [sp, #64] @ 0x40 - 80138ea: 461f mov r7, r3 - 80138ec: 9308 str r3, [sp, #32] - 80138ee: 461e mov r6, r3 - 80138f0: f10d 08e4 add.w r8, sp, #228 @ 0xe4 - 80138f4: e1da b.n 8013cac <_vfprintf_r+0x744> - 80138f6: f045 0510 orr.w r5, r5, #16 - 80138fa: 06af lsls r7, r5, #26 - 80138fc: d512 bpl.n 8013924 <_vfprintf_r+0x3bc> - 80138fe: 3607 adds r6, #7 - 8013900: f026 0307 bic.w r3, r6, #7 - 8013904: 461a mov r2, r3 - 8013906: 685f ldr r7, [r3, #4] - 8013908: f852 6b08 ldr.w r6, [r2], #8 - 801390c: 9207 str r2, [sp, #28] - 801390e: 2f00 cmp r7, #0 - 8013910: da06 bge.n 8013920 <_vfprintf_r+0x3b8> - 8013912: 4276 negs r6, r6 - 8013914: f04f 032d mov.w r3, #45 @ 0x2d - 8013918: eb67 0747 sbc.w r7, r7, r7, lsl #1 - 801391c: f88d 307b strb.w r3, [sp, #123] @ 0x7b - 8013920: 2301 movs r3, #1 - 8013922: e384 b.n 801402e <_vfprintf_r+0xac6> - 8013924: 4633 mov r3, r6 - 8013926: 06ee lsls r6, r5, #27 - 8013928: f853 7b04 ldr.w r7, [r3], #4 - 801392c: 9307 str r3, [sp, #28] - 801392e: d502 bpl.n 8013936 <_vfprintf_r+0x3ce> - 8013930: 463e mov r6, r7 - 8013932: 17ff asrs r7, r7, #31 - 8013934: e7eb b.n 801390e <_vfprintf_r+0x3a6> - 8013936: 0668 lsls r0, r5, #25 - 8013938: d503 bpl.n 8013942 <_vfprintf_r+0x3da> - 801393a: b23e sxth r6, r7 - 801393c: f347 37c0 sbfx r7, r7, #15, #1 - 8013940: e7e5 b.n 801390e <_vfprintf_r+0x3a6> - 8013942: 05a9 lsls r1, r5, #22 - 8013944: d5f4 bpl.n 8013930 <_vfprintf_r+0x3c8> - 8013946: b27e sxtb r6, r7 - 8013948: f347 17c0 sbfx r7, r7, #7, #1 - 801394c: e7df b.n 801390e <_vfprintf_r+0x3a6> - 801394e: 3607 adds r6, #7 - 8013950: f026 0307 bic.w r3, r6, #7 - 8013954: ecb3 7b02 vldmia r3!, {d7} - 8013958: ed8d 7b0a vstr d7, [sp, #40] @ 0x28 - 801395c: 9307 str r3, [sp, #28] - 801395e: 9b0a ldr r3, [sp, #40] @ 0x28 - 8013960: 931a str r3, [sp, #104] @ 0x68 - 8013962: 9b0b ldr r3, [sp, #44] @ 0x2c - 8013964: f023 4300 bic.w r3, r3, #2147483648 @ 0x80000000 - 8013968: 931b str r3, [sp, #108] @ 0x6c - 801396a: e9dd 011a ldrd r0, r1, [sp, #104] @ 0x68 - 801396e: 4b85 ldr r3, [pc, #532] @ (8013b84 <_vfprintf_r+0x61c>) - 8013970: f04f 32ff mov.w r2, #4294967295 - 8013974: f7ed f8ea bl 8000b4c <__aeabi_dcmpun> - 8013978: bb10 cbnz r0, 80139c0 <_vfprintf_r+0x458> - 801397a: e9dd 011a ldrd r0, r1, [sp, #104] @ 0x68 - 801397e: 4b81 ldr r3, [pc, #516] @ (8013b84 <_vfprintf_r+0x61c>) - 8013980: f04f 32ff mov.w r2, #4294967295 - 8013984: f7ed f8c4 bl 8000b10 <__aeabi_dcmple> - 8013988: b9d0 cbnz r0, 80139c0 <_vfprintf_r+0x458> - 801398a: e9dd 010a ldrd r0, r1, [sp, #40] @ 0x28 - 801398e: 2200 movs r2, #0 - 8013990: 2300 movs r3, #0 - 8013992: f7ed f8b3 bl 8000afc <__aeabi_dcmplt> - 8013996: b110 cbz r0, 801399e <_vfprintf_r+0x436> - 8013998: 232d movs r3, #45 @ 0x2d - 801399a: f88d 307b strb.w r3, [sp, #123] @ 0x7b - 801399e: 4a7a ldr r2, [pc, #488] @ (8013b88 <_vfprintf_r+0x620>) - 80139a0: 4b7a ldr r3, [pc, #488] @ (8013b8c <_vfprintf_r+0x624>) - 80139a2: 9906 ldr r1, [sp, #24] - 80139a4: f025 0580 bic.w r5, r5, #128 @ 0x80 - 80139a8: 2947 cmp r1, #71 @ 0x47 - 80139aa: bfd4 ite le - 80139ac: 4690 movle r8, r2 - 80139ae: 4698 movgt r8, r3 - 80139b0: f04f 0a00 mov.w sl, #0 - 80139b4: f04f 0903 mov.w r9, #3 - 80139b8: f8cd a040 str.w sl, [sp, #64] @ 0x40 - 80139bc: f000 bff8 b.w 80149b0 <_vfprintf_r+0x1448> - 80139c0: e9dd 230a ldrd r2, r3, [sp, #40] @ 0x28 - 80139c4: 4610 mov r0, r2 - 80139c6: 4619 mov r1, r3 - 80139c8: f7ed f8c0 bl 8000b4c <__aeabi_dcmpun> - 80139cc: 4682 mov sl, r0 - 80139ce: b140 cbz r0, 80139e2 <_vfprintf_r+0x47a> - 80139d0: 9b0b ldr r3, [sp, #44] @ 0x2c - 80139d2: 4a6f ldr r2, [pc, #444] @ (8013b90 <_vfprintf_r+0x628>) - 80139d4: 2b00 cmp r3, #0 - 80139d6: bfbc itt lt - 80139d8: 232d movlt r3, #45 @ 0x2d - 80139da: f88d 307b strblt.w r3, [sp, #123] @ 0x7b - 80139de: 4b6d ldr r3, [pc, #436] @ (8013b94 <_vfprintf_r+0x62c>) - 80139e0: e7df b.n 80139a2 <_vfprintf_r+0x43a> - 80139e2: 9b06 ldr r3, [sp, #24] - 80139e4: 2b61 cmp r3, #97 @ 0x61 - 80139e6: d02e beq.n 8013a46 <_vfprintf_r+0x4de> - 80139e8: 2b41 cmp r3, #65 @ 0x41 - 80139ea: d12e bne.n 8013a4a <_vfprintf_r+0x4e2> - 80139ec: 2358 movs r3, #88 @ 0x58 - 80139ee: 2230 movs r2, #48 @ 0x30 - 80139f0: f1b9 0f63 cmp.w r9, #99 @ 0x63 - 80139f4: f88d 207c strb.w r2, [sp, #124] @ 0x7c - 80139f8: f88d 307d strb.w r3, [sp, #125] @ 0x7d - 80139fc: f045 0502 orr.w r5, r5, #2 - 8013a00: f340 80ae ble.w 8013b60 <_vfprintf_r+0x5f8> - 8013a04: 9803 ldr r0, [sp, #12] - 8013a06: f109 0101 add.w r1, r9, #1 - 8013a0a: f7ff fb65 bl 80130d8 <_malloc_r> - 8013a0e: 4680 mov r8, r0 - 8013a10: 2800 cmp r0, #0 - 8013a12: f040 80aa bne.w 8013b6a <_vfprintf_r+0x602> - 8013a16: f8bb 300c ldrh.w r3, [fp, #12] - 8013a1a: f043 0340 orr.w r3, r3, #64 @ 0x40 - 8013a1e: f8ab 300c strh.w r3, [fp, #12] - 8013a22: f8db 3064 ldr.w r3, [fp, #100] @ 0x64 - 8013a26: 07d9 lsls r1, r3, #31 - 8013a28: d407 bmi.n 8013a3a <_vfprintf_r+0x4d2> - 8013a2a: f8bb 300c ldrh.w r3, [fp, #12] - 8013a2e: 059a lsls r2, r3, #22 - 8013a30: d403 bmi.n 8013a3a <_vfprintf_r+0x4d2> - 8013a32: f8db 0058 ldr.w r0, [fp, #88] @ 0x58 - 8013a36: f7ff fa1a bl 8012e6e <__retarget_lock_release_recursive> - 8013a3a: f8bb 300c ldrh.w r3, [fp, #12] - 8013a3e: 065b lsls r3, r3, #25 - 8013a40: f57f add6 bpl.w 80135f0 <_vfprintf_r+0x88> - 8013a44: e5d1 b.n 80135ea <_vfprintf_r+0x82> - 8013a46: 2378 movs r3, #120 @ 0x78 - 8013a48: e7d1 b.n 80139ee <_vfprintf_r+0x486> - 8013a4a: f1b9 3fff cmp.w r9, #4294967295 - 8013a4e: f000 808e beq.w 8013b6e <_vfprintf_r+0x606> - 8013a52: 9b06 ldr r3, [sp, #24] - 8013a54: f023 0320 bic.w r3, r3, #32 - 8013a58: 2b47 cmp r3, #71 @ 0x47 - 8013a5a: d105 bne.n 8013a68 <_vfprintf_r+0x500> - 8013a5c: f1b9 0f00 cmp.w r9, #0 - 8013a60: d102 bne.n 8013a68 <_vfprintf_r+0x500> - 8013a62: 46ca mov sl, r9 - 8013a64: f04f 0901 mov.w r9, #1 - 8013a68: f445 7380 orr.w r3, r5, #256 @ 0x100 - 8013a6c: 9311 str r3, [sp, #68] @ 0x44 - 8013a6e: 9b0b ldr r3, [sp, #44] @ 0x2c - 8013a70: 2b00 cmp r3, #0 - 8013a72: da7f bge.n 8013b74 <_vfprintf_r+0x60c> - 8013a74: 9b0a ldr r3, [sp, #40] @ 0x28 - 8013a76: 9314 str r3, [sp, #80] @ 0x50 - 8013a78: 9b0b ldr r3, [sp, #44] @ 0x2c - 8013a7a: f103 4300 add.w r3, r3, #2147483648 @ 0x80000000 - 8013a7e: 9315 str r3, [sp, #84] @ 0x54 - 8013a80: 232d movs r3, #45 @ 0x2d - 8013a82: 931c str r3, [sp, #112] @ 0x70 - 8013a84: 9b06 ldr r3, [sp, #24] - 8013a86: f023 0320 bic.w r3, r3, #32 - 8013a8a: 2b41 cmp r3, #65 @ 0x41 - 8013a8c: 9308 str r3, [sp, #32] - 8013a8e: f040 81e7 bne.w 8013e60 <_vfprintf_r+0x8f8> - 8013a92: a820 add r0, sp, #128 @ 0x80 - 8013a94: ed9d 0b14 vldr d0, [sp, #80] @ 0x50 - 8013a98: f002 f82a bl 8015af0 - 8013a9c: 2200 movs r2, #0 - 8013a9e: f04f 537f mov.w r3, #1069547520 @ 0x3fc00000 - 8013aa2: ec51 0b10 vmov r0, r1, d0 - 8013aa6: f7ec fdb7 bl 8000618 <__aeabi_dmul> - 8013aaa: 4602 mov r2, r0 - 8013aac: 460b mov r3, r1 - 8013aae: e9cd 2304 strd r2, r3, [sp, #16] - 8013ab2: 2200 movs r2, #0 - 8013ab4: 2300 movs r3, #0 - 8013ab6: f7ed f817 bl 8000ae8 <__aeabi_dcmpeq> - 8013aba: b108 cbz r0, 8013ac0 <_vfprintf_r+0x558> - 8013abc: 2301 movs r3, #1 - 8013abe: 9320 str r3, [sp, #128] @ 0x80 - 8013ac0: 4a35 ldr r2, [pc, #212] @ (8013b98 <_vfprintf_r+0x630>) - 8013ac2: 4b36 ldr r3, [pc, #216] @ (8013b9c <_vfprintf_r+0x634>) - 8013ac4: 9906 ldr r1, [sp, #24] - 8013ac6: 2961 cmp r1, #97 @ 0x61 - 8013ac8: bf18 it ne - 8013aca: 461a movne r2, r3 - 8013acc: 9210 str r2, [sp, #64] @ 0x40 - 8013ace: f109 37ff add.w r7, r9, #4294967295 - 8013ad2: 4646 mov r6, r8 - 8013ad4: e9dd 0104 ldrd r0, r1, [sp, #16] - 8013ad8: 4b31 ldr r3, [pc, #196] @ (8013ba0 <_vfprintf_r+0x638>) - 8013ada: 2200 movs r2, #0 - 8013adc: f7ec fd9c bl 8000618 <__aeabi_dmul> - 8013ae0: 4602 mov r2, r0 - 8013ae2: 460b mov r3, r1 - 8013ae4: e9cd 2304 strd r2, r3, [sp, #16] - 8013ae8: f7ed f846 bl 8000b78 <__aeabi_d2iz> - 8013aec: 9013 str r0, [sp, #76] @ 0x4c - 8013aee: f7ec fd29 bl 8000544 <__aeabi_i2d> - 8013af2: 4602 mov r2, r0 - 8013af4: 460b mov r3, r1 - 8013af6: e9dd 0104 ldrd r0, r1, [sp, #16] - 8013afa: f7ec fbd5 bl 80002a8 <__aeabi_dsub> - 8013afe: 4602 mov r2, r0 - 8013b00: 460b mov r3, r1 - 8013b02: e9cd 2304 strd r2, r3, [sp, #16] - 8013b06: 9a13 ldr r2, [sp, #76] @ 0x4c - 8013b08: 9b10 ldr r3, [sp, #64] @ 0x40 - 8013b0a: 5c9b ldrb r3, [r3, r2] - 8013b0c: f806 3b01 strb.w r3, [r6], #1 - 8013b10: 1c7a adds r2, r7, #1 - 8013b12: d006 beq.n 8013b22 <_vfprintf_r+0x5ba> - 8013b14: 1e7b subs r3, r7, #1 - 8013b16: 931d str r3, [sp, #116] @ 0x74 - 8013b18: 2200 movs r2, #0 - 8013b1a: 2300 movs r3, #0 - 8013b1c: f7ec ffe4 bl 8000ae8 <__aeabi_dcmpeq> - 8013b20: b370 cbz r0, 8013b80 <_vfprintf_r+0x618> - 8013b22: e9dd 0104 ldrd r0, r1, [sp, #16] - 8013b26: 4b1f ldr r3, [pc, #124] @ (8013ba4 <_vfprintf_r+0x63c>) - 8013b28: 2200 movs r2, #0 - 8013b2a: f7ed f805 bl 8000b38 <__aeabi_dcmpgt> - 8013b2e: 2800 cmp r0, #0 - 8013b30: d13a bne.n 8013ba8 <_vfprintf_r+0x640> - 8013b32: e9dd 0104 ldrd r0, r1, [sp, #16] - 8013b36: 4b1b ldr r3, [pc, #108] @ (8013ba4 <_vfprintf_r+0x63c>) - 8013b38: 2200 movs r2, #0 - 8013b3a: f7ec ffd5 bl 8000ae8 <__aeabi_dcmpeq> - 8013b3e: b110 cbz r0, 8013b46 <_vfprintf_r+0x5de> - 8013b40: 9b13 ldr r3, [sp, #76] @ 0x4c - 8013b42: 07db lsls r3, r3, #31 - 8013b44: d430 bmi.n 8013ba8 <_vfprintf_r+0x640> - 8013b46: 4633 mov r3, r6 - 8013b48: 19f1 adds r1, r6, r7 - 8013b4a: 2030 movs r0, #48 @ 0x30 - 8013b4c: 1aca subs r2, r1, r3 - 8013b4e: 2a00 cmp r2, #0 - 8013b50: f280 8183 bge.w 8013e5a <_vfprintf_r+0x8f2> - 8013b54: 1c7b adds r3, r7, #1 - 8013b56: 3701 adds r7, #1 - 8013b58: bfb8 it lt - 8013b5a: 2300 movlt r3, #0 - 8013b5c: 441e add r6, r3 - 8013b5e: e037 b.n 8013bd0 <_vfprintf_r+0x668> - 8013b60: f04f 0a00 mov.w sl, #0 - 8013b64: f10d 08e4 add.w r8, sp, #228 @ 0xe4 - 8013b68: e77e b.n 8013a68 <_vfprintf_r+0x500> - 8013b6a: 4682 mov sl, r0 - 8013b6c: e77c b.n 8013a68 <_vfprintf_r+0x500> - 8013b6e: f04f 0906 mov.w r9, #6 - 8013b72: e779 b.n 8013a68 <_vfprintf_r+0x500> - 8013b74: ed9d 7b0a vldr d7, [sp, #40] @ 0x28 - 8013b78: 2300 movs r3, #0 - 8013b7a: ed8d 7b14 vstr d7, [sp, #80] @ 0x50 - 8013b7e: e780 b.n 8013a82 <_vfprintf_r+0x51a> - 8013b80: 9f1d ldr r7, [sp, #116] @ 0x74 - 8013b82: e7a7 b.n 8013ad4 <_vfprintf_r+0x56c> - 8013b84: 7fefffff .word 0x7fefffff - 8013b88: 0801a6fb .word 0x0801a6fb - 8013b8c: 0801a6ff .word 0x0801a6ff - 8013b90: 0801a703 .word 0x0801a703 - 8013b94: 0801a707 .word 0x0801a707 - 8013b98: 0801a70b .word 0x0801a70b - 8013b9c: 0801a71c .word 0x0801a71c - 8013ba0: 40300000 .word 0x40300000 - 8013ba4: 3fe00000 .word 0x3fe00000 - 8013ba8: 9b10 ldr r3, [sp, #64] @ 0x40 - 8013baa: 9624 str r6, [sp, #144] @ 0x90 - 8013bac: 7bd9 ldrb r1, [r3, #15] - 8013bae: 2030 movs r0, #48 @ 0x30 - 8013bb0: 9a24 ldr r2, [sp, #144] @ 0x90 - 8013bb2: 1e53 subs r3, r2, #1 - 8013bb4: 9324 str r3, [sp, #144] @ 0x90 - 8013bb6: f812 3c01 ldrb.w r3, [r2, #-1] - 8013bba: 428b cmp r3, r1 - 8013bbc: f000 814a beq.w 8013e54 <_vfprintf_r+0x8ec> - 8013bc0: 2b39 cmp r3, #57 @ 0x39 - 8013bc2: bf0b itete eq - 8013bc4: 9b10 ldreq r3, [sp, #64] @ 0x40 - 8013bc6: 3301 addne r3, #1 - 8013bc8: 7a9b ldrbeq r3, [r3, #10] - 8013bca: b2db uxtbne r3, r3 - 8013bcc: f802 3c01 strb.w r3, [r2, #-1] - 8013bd0: eba6 0308 sub.w r3, r6, r8 - 8013bd4: 9304 str r3, [sp, #16] - 8013bd6: 9b08 ldr r3, [sp, #32] - 8013bd8: 9e20 ldr r6, [sp, #128] @ 0x80 - 8013bda: 2b47 cmp r3, #71 @ 0x47 - 8013bdc: f040 8189 bne.w 8013ef2 <_vfprintf_r+0x98a> - 8013be0: 1cf1 adds r1, r6, #3 - 8013be2: db02 blt.n 8013bea <_vfprintf_r+0x682> - 8013be4: 45b1 cmp r9, r6 - 8013be6: f280 81a7 bge.w 8013f38 <_vfprintf_r+0x9d0> - 8013bea: 9b06 ldr r3, [sp, #24] - 8013bec: 3b02 subs r3, #2 - 8013bee: 9306 str r3, [sp, #24] - 8013bf0: 9906 ldr r1, [sp, #24] - 8013bf2: f89d 2018 ldrb.w r2, [sp, #24] - 8013bf6: f021 0120 bic.w r1, r1, #32 - 8013bfa: 2941 cmp r1, #65 @ 0x41 - 8013bfc: bf08 it eq - 8013bfe: 320f addeq r2, #15 - 8013c00: f106 33ff add.w r3, r6, #4294967295 - 8013c04: bf06 itte eq - 8013c06: b2d2 uxtbeq r2, r2 - 8013c08: 2101 moveq r1, #1 - 8013c0a: 2100 movne r1, #0 - 8013c0c: 2b00 cmp r3, #0 - 8013c0e: 9320 str r3, [sp, #128] @ 0x80 - 8013c10: bfb8 it lt - 8013c12: f1c6 0301 rsblt r3, r6, #1 - 8013c16: f88d 2088 strb.w r2, [sp, #136] @ 0x88 - 8013c1a: bfb4 ite lt - 8013c1c: 222d movlt r2, #45 @ 0x2d - 8013c1e: 222b movge r2, #43 @ 0x2b - 8013c20: 2b09 cmp r3, #9 - 8013c22: f88d 2089 strb.w r2, [sp, #137] @ 0x89 - 8013c26: f340 817a ble.w 8013f1e <_vfprintf_r+0x9b6> - 8013c2a: f10d 0097 add.w r0, sp, #151 @ 0x97 - 8013c2e: 270a movs r7, #10 - 8013c30: 4602 mov r2, r0 - 8013c32: fbb3 f6f7 udiv r6, r3, r7 - 8013c36: fb07 3116 mls r1, r7, r6, r3 - 8013c3a: 3130 adds r1, #48 @ 0x30 - 8013c3c: f802 1c01 strb.w r1, [r2, #-1] - 8013c40: 4619 mov r1, r3 - 8013c42: 2963 cmp r1, #99 @ 0x63 - 8013c44: f100 30ff add.w r0, r0, #4294967295 - 8013c48: 4633 mov r3, r6 - 8013c4a: dcf1 bgt.n 8013c30 <_vfprintf_r+0x6c8> - 8013c4c: 3330 adds r3, #48 @ 0x30 - 8013c4e: 1e91 subs r1, r2, #2 - 8013c50: f800 3c01 strb.w r3, [r0, #-1] - 8013c54: f10d 0689 add.w r6, sp, #137 @ 0x89 - 8013c58: 460b mov r3, r1 - 8013c5a: f10d 0097 add.w r0, sp, #151 @ 0x97 - 8013c5e: 4283 cmp r3, r0 - 8013c60: f0c0 8158 bcc.w 8013f14 <_vfprintf_r+0x9ac> - 8013c64: f10d 0399 add.w r3, sp, #153 @ 0x99 - 8013c68: 1a9b subs r3, r3, r2 - 8013c6a: 4281 cmp r1, r0 - 8013c6c: bf88 it hi - 8013c6e: 2300 movhi r3, #0 - 8013c70: f10d 028a add.w r2, sp, #138 @ 0x8a - 8013c74: 441a add r2, r3 - 8013c76: ab22 add r3, sp, #136 @ 0x88 - 8013c78: 1ad3 subs r3, r2, r3 - 8013c7a: 9a04 ldr r2, [sp, #16] - 8013c7c: 9318 str r3, [sp, #96] @ 0x60 - 8013c7e: 2a01 cmp r2, #1 - 8013c80: eb03 0902 add.w r9, r3, r2 - 8013c84: dc01 bgt.n 8013c8a <_vfprintf_r+0x722> - 8013c86: 07ea lsls r2, r5, #31 - 8013c88: d501 bpl.n 8013c8e <_vfprintf_r+0x726> - 8013c8a: 9b0d ldr r3, [sp, #52] @ 0x34 - 8013c8c: 4499 add r9, r3 - 8013c8e: f425 6580 bic.w r5, r5, #1024 @ 0x400 - 8013c92: 2700 movs r7, #0 - 8013c94: f445 7380 orr.w r3, r5, #256 @ 0x100 - 8013c98: 9311 str r3, [sp, #68] @ 0x44 - 8013c9a: 9708 str r7, [sp, #32] - 8013c9c: 463e mov r6, r7 - 8013c9e: 9b1c ldr r3, [sp, #112] @ 0x70 - 8013ca0: 2b00 cmp r3, #0 - 8013ca2: f040 8191 bne.w 8013fc8 <_vfprintf_r+0xa60> - 8013ca6: 2300 movs r3, #0 - 8013ca8: 9d11 ldr r5, [sp, #68] @ 0x44 - 8013caa: 9310 str r3, [sp, #64] @ 0x40 - 8013cac: 9b10 ldr r3, [sp, #64] @ 0x40 - 8013cae: 454b cmp r3, r9 - 8013cb0: bfb8 it lt - 8013cb2: 464b movlt r3, r9 - 8013cb4: 9311 str r3, [sp, #68] @ 0x44 - 8013cb6: f89d 307b ldrb.w r3, [sp, #123] @ 0x7b - 8013cba: b113 cbz r3, 8013cc2 <_vfprintf_r+0x75a> - 8013cbc: 9b11 ldr r3, [sp, #68] @ 0x44 - 8013cbe: 3301 adds r3, #1 - 8013cc0: 9311 str r3, [sp, #68] @ 0x44 - 8013cc2: f015 0302 ands.w r3, r5, #2 - 8013cc6: 931c str r3, [sp, #112] @ 0x70 - 8013cc8: bf1e ittt ne - 8013cca: 9b11 ldrne r3, [sp, #68] @ 0x44 - 8013ccc: 3302 addne r3, #2 - 8013cce: 9311 strne r3, [sp, #68] @ 0x44 - 8013cd0: f015 0384 ands.w r3, r5, #132 @ 0x84 - 8013cd4: 931d str r3, [sp, #116] @ 0x74 - 8013cd6: d122 bne.n 8013d1e <_vfprintf_r+0x7b6> - 8013cd8: 9b0e ldr r3, [sp, #56] @ 0x38 - 8013cda: 9a11 ldr r2, [sp, #68] @ 0x44 - 8013cdc: 1a9b subs r3, r3, r2 - 8013cde: 2b00 cmp r3, #0 - 8013ce0: 9313 str r3, [sp, #76] @ 0x4c - 8013ce2: dd1c ble.n 8013d1e <_vfprintf_r+0x7b6> - 8013ce4: 9813 ldr r0, [sp, #76] @ 0x4c - 8013ce6: e9dd 2327 ldrd r2, r3, [sp, #156] @ 0x9c - 8013cea: 2810 cmp r0, #16 - 8013cec: 489f ldr r0, [pc, #636] @ (8013f6c <_vfprintf_r+0xa04>) - 8013cee: 6020 str r0, [r4, #0] - 8013cf0: f102 0201 add.w r2, r2, #1 - 8013cf4: f104 0108 add.w r1, r4, #8 - 8013cf8: f300 8297 bgt.w 801422a <_vfprintf_r+0xcc2> - 8013cfc: 9813 ldr r0, [sp, #76] @ 0x4c - 8013cfe: 6060 str r0, [r4, #4] - 8013d00: 4403 add r3, r0 - 8013d02: 2a07 cmp r2, #7 - 8013d04: e9cd 2327 strd r2, r3, [sp, #156] @ 0x9c - 8013d08: f340 82a4 ble.w 8014254 <_vfprintf_r+0xcec> - 8013d0c: 9803 ldr r0, [sp, #12] - 8013d0e: aa26 add r2, sp, #152 @ 0x98 - 8013d10: 4659 mov r1, fp - 8013d12: f000 fe95 bl 8014a40 <__sprint_r> - 8013d16: 2800 cmp r0, #0 - 8013d18: f040 85ed bne.w 80148f6 <_vfprintf_r+0x138e> - 8013d1c: ac29 add r4, sp, #164 @ 0xa4 - 8013d1e: f89d 207b ldrb.w r2, [sp, #123] @ 0x7b - 8013d22: 9b28 ldr r3, [sp, #160] @ 0xa0 - 8013d24: b16a cbz r2, 8013d42 <_vfprintf_r+0x7da> - 8013d26: f10d 027b add.w r2, sp, #123 @ 0x7b - 8013d2a: 6022 str r2, [r4, #0] - 8013d2c: 2201 movs r2, #1 - 8013d2e: 4413 add r3, r2 - 8013d30: 9328 str r3, [sp, #160] @ 0xa0 - 8013d32: 9b27 ldr r3, [sp, #156] @ 0x9c - 8013d34: 6062 str r2, [r4, #4] - 8013d36: 4413 add r3, r2 - 8013d38: 2b07 cmp r3, #7 - 8013d3a: 9327 str r3, [sp, #156] @ 0x9c - 8013d3c: f300 828c bgt.w 8014258 <_vfprintf_r+0xcf0> - 8013d40: 3408 adds r4, #8 - 8013d42: 9a1c ldr r2, [sp, #112] @ 0x70 - 8013d44: 9b28 ldr r3, [sp, #160] @ 0xa0 - 8013d46: b162 cbz r2, 8013d62 <_vfprintf_r+0x7fa> - 8013d48: aa1f add r2, sp, #124 @ 0x7c - 8013d4a: 6022 str r2, [r4, #0] - 8013d4c: 2202 movs r2, #2 - 8013d4e: 4413 add r3, r2 - 8013d50: 9328 str r3, [sp, #160] @ 0xa0 - 8013d52: 9b27 ldr r3, [sp, #156] @ 0x9c - 8013d54: 6062 str r2, [r4, #4] - 8013d56: 3301 adds r3, #1 - 8013d58: 2b07 cmp r3, #7 - 8013d5a: 9327 str r3, [sp, #156] @ 0x9c - 8013d5c: f300 8286 bgt.w 801426c <_vfprintf_r+0xd04> - 8013d60: 3408 adds r4, #8 - 8013d62: 9b1d ldr r3, [sp, #116] @ 0x74 - 8013d64: 2b80 cmp r3, #128 @ 0x80 - 8013d66: d122 bne.n 8013dae <_vfprintf_r+0x846> - 8013d68: 9b0e ldr r3, [sp, #56] @ 0x38 - 8013d6a: 9a11 ldr r2, [sp, #68] @ 0x44 - 8013d6c: 1a9b subs r3, r3, r2 - 8013d6e: 2b00 cmp r3, #0 - 8013d70: 9313 str r3, [sp, #76] @ 0x4c - 8013d72: dd1c ble.n 8013dae <_vfprintf_r+0x846> - 8013d74: 9813 ldr r0, [sp, #76] @ 0x4c - 8013d76: e9dd 2327 ldrd r2, r3, [sp, #156] @ 0x9c - 8013d7a: 2810 cmp r0, #16 - 8013d7c: 487c ldr r0, [pc, #496] @ (8013f70 <_vfprintf_r+0xa08>) - 8013d7e: 6020 str r0, [r4, #0] - 8013d80: f102 0201 add.w r2, r2, #1 - 8013d84: f104 0108 add.w r1, r4, #8 - 8013d88: f300 827a bgt.w 8014280 <_vfprintf_r+0xd18> - 8013d8c: 9813 ldr r0, [sp, #76] @ 0x4c - 8013d8e: 6060 str r0, [r4, #4] - 8013d90: 4403 add r3, r0 - 8013d92: 2a07 cmp r2, #7 - 8013d94: e9cd 2327 strd r2, r3, [sp, #156] @ 0x9c - 8013d98: f340 8287 ble.w 80142aa <_vfprintf_r+0xd42> - 8013d9c: 9803 ldr r0, [sp, #12] - 8013d9e: aa26 add r2, sp, #152 @ 0x98 - 8013da0: 4659 mov r1, fp - 8013da2: f000 fe4d bl 8014a40 <__sprint_r> - 8013da6: 2800 cmp r0, #0 - 8013da8: f040 85a5 bne.w 80148f6 <_vfprintf_r+0x138e> - 8013dac: ac29 add r4, sp, #164 @ 0xa4 - 8013dae: 9b10 ldr r3, [sp, #64] @ 0x40 - 8013db0: eba3 0309 sub.w r3, r3, r9 - 8013db4: 2b00 cmp r3, #0 - 8013db6: 9310 str r3, [sp, #64] @ 0x40 - 8013db8: dd1c ble.n 8013df4 <_vfprintf_r+0x88c> - 8013dba: 9810 ldr r0, [sp, #64] @ 0x40 - 8013dbc: e9dd 2327 ldrd r2, r3, [sp, #156] @ 0x9c - 8013dc0: 2810 cmp r0, #16 - 8013dc2: 486b ldr r0, [pc, #428] @ (8013f70 <_vfprintf_r+0xa08>) - 8013dc4: 6020 str r0, [r4, #0] - 8013dc6: f102 0201 add.w r2, r2, #1 - 8013dca: f104 0108 add.w r1, r4, #8 - 8013dce: f300 826e bgt.w 80142ae <_vfprintf_r+0xd46> - 8013dd2: 9810 ldr r0, [sp, #64] @ 0x40 - 8013dd4: 6060 str r0, [r4, #4] - 8013dd6: 4403 add r3, r0 - 8013dd8: 2a07 cmp r2, #7 - 8013dda: e9cd 2327 strd r2, r3, [sp, #156] @ 0x9c - 8013dde: f340 827b ble.w 80142d8 <_vfprintf_r+0xd70> - 8013de2: 9803 ldr r0, [sp, #12] - 8013de4: aa26 add r2, sp, #152 @ 0x98 - 8013de6: 4659 mov r1, fp - 8013de8: f000 fe2a bl 8014a40 <__sprint_r> - 8013dec: 2800 cmp r0, #0 - 8013dee: f040 8582 bne.w 80148f6 <_vfprintf_r+0x138e> - 8013df2: ac29 add r4, sp, #164 @ 0xa4 - 8013df4: 9b28 ldr r3, [sp, #160] @ 0xa0 - 8013df6: 9310 str r3, [sp, #64] @ 0x40 - 8013df8: 05e8 lsls r0, r5, #23 - 8013dfa: f100 8273 bmi.w 80142e4 <_vfprintf_r+0xd7c> - 8013dfe: 444b add r3, r9 - 8013e00: 9328 str r3, [sp, #160] @ 0xa0 - 8013e02: 9b27 ldr r3, [sp, #156] @ 0x9c - 8013e04: 3301 adds r3, #1 - 8013e06: 2b07 cmp r3, #7 - 8013e08: e9c4 8900 strd r8, r9, [r4] - 8013e0c: 9327 str r3, [sp, #156] @ 0x9c - 8013e0e: f300 82af bgt.w 8014370 <_vfprintf_r+0xe08> - 8013e12: 3408 adds r4, #8 - 8013e14: 0768 lsls r0, r5, #29 - 8013e16: f100 8550 bmi.w 80148ba <_vfprintf_r+0x1352> - 8013e1a: e9dd 230e ldrd r2, r3, [sp, #56] @ 0x38 - 8013e1e: 9911 ldr r1, [sp, #68] @ 0x44 - 8013e20: 428a cmp r2, r1 - 8013e22: bfac ite ge - 8013e24: 189b addge r3, r3, r2 - 8013e26: 185b addlt r3, r3, r1 - 8013e28: 930f str r3, [sp, #60] @ 0x3c - 8013e2a: 9b28 ldr r3, [sp, #160] @ 0xa0 - 8013e2c: b13b cbz r3, 8013e3e <_vfprintf_r+0x8d6> - 8013e2e: 9803 ldr r0, [sp, #12] - 8013e30: aa26 add r2, sp, #152 @ 0x98 - 8013e32: 4659 mov r1, fp - 8013e34: f000 fe04 bl 8014a40 <__sprint_r> - 8013e38: 2800 cmp r0, #0 - 8013e3a: f040 855c bne.w 80148f6 <_vfprintf_r+0x138e> - 8013e3e: 2300 movs r3, #0 - 8013e40: 9327 str r3, [sp, #156] @ 0x9c - 8013e42: f1ba 0f00 cmp.w sl, #0 - 8013e46: f040 8572 bne.w 801492e <_vfprintf_r+0x13c6> - 8013e4a: 9e07 ldr r6, [sp, #28] - 8013e4c: ac29 add r4, sp, #164 @ 0xa4 - 8013e4e: f8dd 8030 ldr.w r8, [sp, #48] @ 0x30 - 8013e52: e407 b.n 8013664 <_vfprintf_r+0xfc> - 8013e54: f802 0c01 strb.w r0, [r2, #-1] - 8013e58: e6aa b.n 8013bb0 <_vfprintf_r+0x648> - 8013e5a: f803 0b01 strb.w r0, [r3], #1 - 8013e5e: e675 b.n 8013b4c <_vfprintf_r+0x5e4> - 8013e60: 9b08 ldr r3, [sp, #32] - 8013e62: 2b46 cmp r3, #70 @ 0x46 - 8013e64: d005 beq.n 8013e72 <_vfprintf_r+0x90a> - 8013e66: 2b45 cmp r3, #69 @ 0x45 - 8013e68: d11a bne.n 8013ea0 <_vfprintf_r+0x938> - 8013e6a: f109 0601 add.w r6, r9, #1 - 8013e6e: 2102 movs r1, #2 - 8013e70: e001 b.n 8013e76 <_vfprintf_r+0x90e> - 8013e72: 464e mov r6, r9 - 8013e74: 2103 movs r1, #3 - 8013e76: ab24 add r3, sp, #144 @ 0x90 - 8013e78: 9301 str r3, [sp, #4] - 8013e7a: ab21 add r3, sp, #132 @ 0x84 - 8013e7c: 9300 str r3, [sp, #0] - 8013e7e: ed9d 0b14 vldr d0, [sp, #80] @ 0x50 - 8013e82: ab20 add r3, sp, #128 @ 0x80 - 8013e84: 9803 ldr r0, [sp, #12] - 8013e86: 4632 mov r2, r6 - 8013e88: f001 ff32 bl 8015cf0 <_dtoa_r> - 8013e8c: 9b08 ldr r3, [sp, #32] - 8013e8e: 2b47 cmp r3, #71 @ 0x47 - 8013e90: 4680 mov r8, r0 - 8013e92: d119 bne.n 8013ec8 <_vfprintf_r+0x960> - 8013e94: 07e8 lsls r0, r5, #31 - 8013e96: d405 bmi.n 8013ea4 <_vfprintf_r+0x93c> - 8013e98: 9b24 ldr r3, [sp, #144] @ 0x90 - 8013e9a: eba3 0308 sub.w r3, r3, r8 - 8013e9e: e699 b.n 8013bd4 <_vfprintf_r+0x66c> - 8013ea0: 464e mov r6, r9 - 8013ea2: e7e4 b.n 8013e6e <_vfprintf_r+0x906> - 8013ea4: eb08 0706 add.w r7, r8, r6 - 8013ea8: e9dd 0114 ldrd r0, r1, [sp, #80] @ 0x50 - 8013eac: 2200 movs r2, #0 - 8013eae: 2300 movs r3, #0 - 8013eb0: f7ec fe1a bl 8000ae8 <__aeabi_dcmpeq> - 8013eb4: b100 cbz r0, 8013eb8 <_vfprintf_r+0x950> - 8013eb6: 9724 str r7, [sp, #144] @ 0x90 - 8013eb8: 2230 movs r2, #48 @ 0x30 - 8013eba: 9b24 ldr r3, [sp, #144] @ 0x90 - 8013ebc: 429f cmp r7, r3 - 8013ebe: d9eb bls.n 8013e98 <_vfprintf_r+0x930> - 8013ec0: 1c59 adds r1, r3, #1 - 8013ec2: 9124 str r1, [sp, #144] @ 0x90 - 8013ec4: 701a strb r2, [r3, #0] - 8013ec6: e7f8 b.n 8013eba <_vfprintf_r+0x952> - 8013ec8: 9b08 ldr r3, [sp, #32] - 8013eca: 2b46 cmp r3, #70 @ 0x46 - 8013ecc: eb00 0706 add.w r7, r0, r6 - 8013ed0: d1ea bne.n 8013ea8 <_vfprintf_r+0x940> - 8013ed2: 7803 ldrb r3, [r0, #0] - 8013ed4: 2b30 cmp r3, #48 @ 0x30 - 8013ed6: d109 bne.n 8013eec <_vfprintf_r+0x984> - 8013ed8: e9dd 0114 ldrd r0, r1, [sp, #80] @ 0x50 - 8013edc: 2200 movs r2, #0 - 8013ede: 2300 movs r3, #0 - 8013ee0: f7ec fe02 bl 8000ae8 <__aeabi_dcmpeq> - 8013ee4: b910 cbnz r0, 8013eec <_vfprintf_r+0x984> - 8013ee6: f1c6 0601 rsb r6, r6, #1 - 8013eea: 9620 str r6, [sp, #128] @ 0x80 - 8013eec: 9b20 ldr r3, [sp, #128] @ 0x80 - 8013eee: 441f add r7, r3 - 8013ef0: e7da b.n 8013ea8 <_vfprintf_r+0x940> - 8013ef2: 9b08 ldr r3, [sp, #32] - 8013ef4: 2b46 cmp r3, #70 @ 0x46 - 8013ef6: f47f ae7b bne.w 8013bf0 <_vfprintf_r+0x688> - 8013efa: f005 0301 and.w r3, r5, #1 - 8013efe: 2e00 cmp r6, #0 - 8013f00: ea43 0309 orr.w r3, r3, r9 - 8013f04: dd25 ble.n 8013f52 <_vfprintf_r+0x9ea> - 8013f06: b37b cbz r3, 8013f68 <_vfprintf_r+0xa00> - 8013f08: 9b0d ldr r3, [sp, #52] @ 0x34 - 8013f0a: 18f3 adds r3, r6, r3 - 8013f0c: 4499 add r9, r3 - 8013f0e: 2366 movs r3, #102 @ 0x66 - 8013f10: 9306 str r3, [sp, #24] - 8013f12: e033 b.n 8013f7c <_vfprintf_r+0xa14> - 8013f14: f813 7b01 ldrb.w r7, [r3], #1 - 8013f18: f806 7f01 strb.w r7, [r6, #1]! - 8013f1c: e69f b.n 8013c5e <_vfprintf_r+0x6f6> - 8013f1e: b941 cbnz r1, 8013f32 <_vfprintf_r+0x9ca> - 8013f20: 2230 movs r2, #48 @ 0x30 - 8013f22: f88d 208a strb.w r2, [sp, #138] @ 0x8a - 8013f26: f10d 028b add.w r2, sp, #139 @ 0x8b - 8013f2a: 3330 adds r3, #48 @ 0x30 - 8013f2c: f802 3b01 strb.w r3, [r2], #1 - 8013f30: e6a1 b.n 8013c76 <_vfprintf_r+0x70e> - 8013f32: f10d 028a add.w r2, sp, #138 @ 0x8a - 8013f36: e7f8 b.n 8013f2a <_vfprintf_r+0x9c2> - 8013f38: 9b04 ldr r3, [sp, #16] - 8013f3a: 42b3 cmp r3, r6 - 8013f3c: dd0d ble.n 8013f5a <_vfprintf_r+0x9f2> - 8013f3e: 9b04 ldr r3, [sp, #16] - 8013f40: 9a0d ldr r2, [sp, #52] @ 0x34 - 8013f42: 2e00 cmp r6, #0 - 8013f44: eb03 0902 add.w r9, r3, r2 - 8013f48: dc0c bgt.n 8013f64 <_vfprintf_r+0x9fc> - 8013f4a: f1c6 0301 rsb r3, r6, #1 - 8013f4e: 4499 add r9, r3 - 8013f50: e008 b.n 8013f64 <_vfprintf_r+0x9fc> - 8013f52: b17b cbz r3, 8013f74 <_vfprintf_r+0xa0c> - 8013f54: 9b0d ldr r3, [sp, #52] @ 0x34 - 8013f56: 3301 adds r3, #1 - 8013f58: e7d8 b.n 8013f0c <_vfprintf_r+0x9a4> - 8013f5a: 07eb lsls r3, r5, #31 - 8013f5c: d521 bpl.n 8013fa2 <_vfprintf_r+0xa3a> - 8013f5e: 9b0d ldr r3, [sp, #52] @ 0x34 - 8013f60: eb06 0903 add.w r9, r6, r3 - 8013f64: 2367 movs r3, #103 @ 0x67 - 8013f66: e7d3 b.n 8013f10 <_vfprintf_r+0x9a8> - 8013f68: 46b1 mov r9, r6 - 8013f6a: e7d0 b.n 8013f0e <_vfprintf_r+0x9a6> - 8013f6c: 0801a73f .word 0x0801a73f - 8013f70: 0801a72f .word 0x0801a72f - 8013f74: 2366 movs r3, #102 @ 0x66 - 8013f76: 9306 str r3, [sp, #24] - 8013f78: f04f 0901 mov.w r9, #1 - 8013f7c: f415 6380 ands.w r3, r5, #1024 @ 0x400 - 8013f80: 9308 str r3, [sp, #32] - 8013f82: d01f beq.n 8013fc4 <_vfprintf_r+0xa5c> - 8013f84: 2700 movs r7, #0 - 8013f86: 2e00 cmp r6, #0 - 8013f88: 9708 str r7, [sp, #32] - 8013f8a: f77f ae88 ble.w 8013c9e <_vfprintf_r+0x736> - 8013f8e: 9b09 ldr r3, [sp, #36] @ 0x24 - 8013f90: 781b ldrb r3, [r3, #0] - 8013f92: 2bff cmp r3, #255 @ 0xff - 8013f94: d107 bne.n 8013fa6 <_vfprintf_r+0xa3e> - 8013f96: 9b08 ldr r3, [sp, #32] - 8013f98: 9a12 ldr r2, [sp, #72] @ 0x48 - 8013f9a: 443b add r3, r7 - 8013f9c: fb02 9903 mla r9, r2, r3, r9 - 8013fa0: e67d b.n 8013c9e <_vfprintf_r+0x736> - 8013fa2: 46b1 mov r9, r6 - 8013fa4: e7de b.n 8013f64 <_vfprintf_r+0x9fc> - 8013fa6: 42b3 cmp r3, r6 - 8013fa8: daf5 bge.n 8013f96 <_vfprintf_r+0xa2e> - 8013faa: 1af6 subs r6, r6, r3 - 8013fac: 9b09 ldr r3, [sp, #36] @ 0x24 - 8013fae: 785b ldrb r3, [r3, #1] - 8013fb0: b133 cbz r3, 8013fc0 <_vfprintf_r+0xa58> - 8013fb2: 9b08 ldr r3, [sp, #32] - 8013fb4: 3301 adds r3, #1 - 8013fb6: 9308 str r3, [sp, #32] - 8013fb8: 9b09 ldr r3, [sp, #36] @ 0x24 - 8013fba: 3301 adds r3, #1 - 8013fbc: 9309 str r3, [sp, #36] @ 0x24 - 8013fbe: e7e6 b.n 8013f8e <_vfprintf_r+0xa26> - 8013fc0: 3701 adds r7, #1 - 8013fc2: e7e4 b.n 8013f8e <_vfprintf_r+0xa26> - 8013fc4: 9f08 ldr r7, [sp, #32] - 8013fc6: e66a b.n 8013c9e <_vfprintf_r+0x736> - 8013fc8: 232d movs r3, #45 @ 0x2d - 8013fca: f88d 307b strb.w r3, [sp, #123] @ 0x7b - 8013fce: e66a b.n 8013ca6 <_vfprintf_r+0x73e> - 8013fd0: 06af lsls r7, r5, #26 - 8013fd2: d507 bpl.n 8013fe4 <_vfprintf_r+0xa7c> - 8013fd4: 9a0f ldr r2, [sp, #60] @ 0x3c - 8013fd6: 6833 ldr r3, [r6, #0] - 8013fd8: 990f ldr r1, [sp, #60] @ 0x3c - 8013fda: 17d2 asrs r2, r2, #31 - 8013fdc: e9c3 1200 strd r1, r2, [r3] - 8013fe0: 3604 adds r6, #4 - 8013fe2: e734 b.n 8013e4e <_vfprintf_r+0x8e6> - 8013fe4: 06e8 lsls r0, r5, #27 - 8013fe6: d503 bpl.n 8013ff0 <_vfprintf_r+0xa88> - 8013fe8: 6833 ldr r3, [r6, #0] - 8013fea: 9a0f ldr r2, [sp, #60] @ 0x3c - 8013fec: 601a str r2, [r3, #0] - 8013fee: e7f7 b.n 8013fe0 <_vfprintf_r+0xa78> - 8013ff0: 0669 lsls r1, r5, #25 - 8013ff2: d503 bpl.n 8013ffc <_vfprintf_r+0xa94> - 8013ff4: 6833 ldr r3, [r6, #0] - 8013ff6: 9a0f ldr r2, [sp, #60] @ 0x3c - 8013ff8: 801a strh r2, [r3, #0] - 8013ffa: e7f1 b.n 8013fe0 <_vfprintf_r+0xa78> - 8013ffc: 05aa lsls r2, r5, #22 - 8013ffe: d5f3 bpl.n 8013fe8 <_vfprintf_r+0xa80> - 8014000: 6833 ldr r3, [r6, #0] - 8014002: 9a0f ldr r2, [sp, #60] @ 0x3c - 8014004: 701a strb r2, [r3, #0] - 8014006: e7eb b.n 8013fe0 <_vfprintf_r+0xa78> - 8014008: f045 0510 orr.w r5, r5, #16 - 801400c: f015 0320 ands.w r3, r5, #32 - 8014010: d020 beq.n 8014054 <_vfprintf_r+0xaec> - 8014012: 3607 adds r6, #7 - 8014014: f026 0307 bic.w r3, r6, #7 - 8014018: 461a mov r2, r3 - 801401a: 685f ldr r7, [r3, #4] - 801401c: f852 6b08 ldr.w r6, [r2], #8 - 8014020: 9207 str r2, [sp, #28] - 8014022: f425 6580 bic.w r5, r5, #1024 @ 0x400 - 8014026: 2300 movs r3, #0 - 8014028: 2200 movs r2, #0 - 801402a: f88d 207b strb.w r2, [sp, #123] @ 0x7b - 801402e: f1b9 3fff cmp.w r9, #4294967295 - 8014032: f000 8491 beq.w 8014958 <_vfprintf_r+0x13f0> - 8014036: f025 0280 bic.w r2, r5, #128 @ 0x80 - 801403a: 9208 str r2, [sp, #32] - 801403c: ea56 0207 orrs.w r2, r6, r7 - 8014040: f040 848f bne.w 8014962 <_vfprintf_r+0x13fa> - 8014044: f1b9 0f00 cmp.w r9, #0 - 8014048: f000 80db beq.w 8014202 <_vfprintf_r+0xc9a> - 801404c: 2b01 cmp r3, #1 - 801404e: f040 848b bne.w 8014968 <_vfprintf_r+0x1400> - 8014052: e083 b.n 801415c <_vfprintf_r+0xbf4> - 8014054: 4632 mov r2, r6 - 8014056: f015 0710 ands.w r7, r5, #16 - 801405a: f852 6b04 ldr.w r6, [r2], #4 - 801405e: 9207 str r2, [sp, #28] - 8014060: d001 beq.n 8014066 <_vfprintf_r+0xafe> - 8014062: 461f mov r7, r3 - 8014064: e7dd b.n 8014022 <_vfprintf_r+0xaba> - 8014066: f015 0340 ands.w r3, r5, #64 @ 0x40 - 801406a: d001 beq.n 8014070 <_vfprintf_r+0xb08> - 801406c: b2b6 uxth r6, r6 - 801406e: e7d8 b.n 8014022 <_vfprintf_r+0xaba> - 8014070: f415 7700 ands.w r7, r5, #512 @ 0x200 - 8014074: d0d5 beq.n 8014022 <_vfprintf_r+0xaba> - 8014076: b2f6 uxtb r6, r6 - 8014078: e7f3 b.n 8014062 <_vfprintf_r+0xafa> - 801407a: 4633 mov r3, r6 - 801407c: 2278 movs r2, #120 @ 0x78 - 801407e: f853 6b04 ldr.w r6, [r3], #4 - 8014082: 9307 str r3, [sp, #28] - 8014084: f647 0330 movw r3, #30768 @ 0x7830 - 8014088: f8ad 307c strh.w r3, [sp, #124] @ 0x7c - 801408c: 4b93 ldr r3, [pc, #588] @ (80142dc <_vfprintf_r+0xd74>) - 801408e: 9319 str r3, [sp, #100] @ 0x64 - 8014090: 2700 movs r7, #0 - 8014092: f045 0502 orr.w r5, r5, #2 - 8014096: 2302 movs r3, #2 - 8014098: 9206 str r2, [sp, #24] - 801409a: e7c5 b.n 8014028 <_vfprintf_r+0xac0> - 801409c: 4633 mov r3, r6 - 801409e: f1b9 3fff cmp.w r9, #4294967295 - 80140a2: f853 8b04 ldr.w r8, [r3], #4 - 80140a6: 9307 str r3, [sp, #28] - 80140a8: f04f 0600 mov.w r6, #0 - 80140ac: f88d 607b strb.w r6, [sp, #123] @ 0x7b - 80140b0: d00f beq.n 80140d2 <_vfprintf_r+0xb6a> - 80140b2: 464a mov r2, r9 - 80140b4: 4631 mov r1, r6 - 80140b6: 4640 mov r0, r8 - 80140b8: f7ec f8a2 bl 8000200 - 80140bc: 4682 mov sl, r0 - 80140be: 2800 cmp r0, #0 - 80140c0: f43f ac7a beq.w 80139b8 <_vfprintf_r+0x450> - 80140c4: eba0 0908 sub.w r9, r0, r8 - 80140c8: 46b2 mov sl, r6 - 80140ca: 9610 str r6, [sp, #64] @ 0x40 - 80140cc: 4637 mov r7, r6 - 80140ce: 9608 str r6, [sp, #32] - 80140d0: e5ec b.n 8013cac <_vfprintf_r+0x744> - 80140d2: 4640 mov r0, r8 - 80140d4: f7ec f88c bl 80001f0 - 80140d8: 46b2 mov sl, r6 - 80140da: 4681 mov r9, r0 - 80140dc: e46c b.n 80139b8 <_vfprintf_r+0x450> - 80140de: f045 0510 orr.w r5, r5, #16 - 80140e2: f015 0320 ands.w r3, r5, #32 - 80140e6: d009 beq.n 80140fc <_vfprintf_r+0xb94> - 80140e8: 3607 adds r6, #7 - 80140ea: f026 0307 bic.w r3, r6, #7 - 80140ee: 461a mov r2, r3 - 80140f0: 685f ldr r7, [r3, #4] - 80140f2: f852 6b08 ldr.w r6, [r2], #8 - 80140f6: 9207 str r2, [sp, #28] - 80140f8: 2301 movs r3, #1 - 80140fa: e795 b.n 8014028 <_vfprintf_r+0xac0> - 80140fc: 4632 mov r2, r6 - 80140fe: f015 0710 ands.w r7, r5, #16 - 8014102: f852 6b04 ldr.w r6, [r2], #4 - 8014106: 9207 str r2, [sp, #28] - 8014108: d001 beq.n 801410e <_vfprintf_r+0xba6> - 801410a: 461f mov r7, r3 - 801410c: e7f4 b.n 80140f8 <_vfprintf_r+0xb90> - 801410e: f015 0340 ands.w r3, r5, #64 @ 0x40 - 8014112: d001 beq.n 8014118 <_vfprintf_r+0xbb0> - 8014114: b2b6 uxth r6, r6 - 8014116: e7ef b.n 80140f8 <_vfprintf_r+0xb90> - 8014118: f415 7700 ands.w r7, r5, #512 @ 0x200 - 801411c: d0ec beq.n 80140f8 <_vfprintf_r+0xb90> - 801411e: b2f6 uxtb r6, r6 - 8014120: e7f3 b.n 801410a <_vfprintf_r+0xba2> - 8014122: 4b6f ldr r3, [pc, #444] @ (80142e0 <_vfprintf_r+0xd78>) - 8014124: f7ff bb33 b.w 801378e <_vfprintf_r+0x226> - 8014128: 4632 mov r2, r6 - 801412a: f015 0710 ands.w r7, r5, #16 - 801412e: f852 6b04 ldr.w r6, [r2], #4 - 8014132: 9207 str r2, [sp, #28] - 8014134: d002 beq.n 801413c <_vfprintf_r+0xbd4> - 8014136: 461f mov r7, r3 - 8014138: f7ff bb36 b.w 80137a8 <_vfprintf_r+0x240> - 801413c: f015 0340 ands.w r3, r5, #64 @ 0x40 - 8014140: d002 beq.n 8014148 <_vfprintf_r+0xbe0> - 8014142: b2b6 uxth r6, r6 - 8014144: f7ff bb30 b.w 80137a8 <_vfprintf_r+0x240> - 8014148: f415 7700 ands.w r7, r5, #512 @ 0x200 - 801414c: f43f ab2c beq.w 80137a8 <_vfprintf_r+0x240> - 8014150: b2f6 uxtb r6, r6 - 8014152: e7f0 b.n 8014136 <_vfprintf_r+0xbce> - 8014154: 2e0a cmp r6, #10 - 8014156: f177 0300 sbcs.w r3, r7, #0 - 801415a: d207 bcs.n 801416c <_vfprintf_r+0xc04> - 801415c: 3630 adds r6, #48 @ 0x30 - 801415e: b2f6 uxtb r6, r6 - 8014160: f88d 6147 strb.w r6, [sp, #327] @ 0x147 - 8014164: f20d 1847 addw r8, sp, #327 @ 0x147 - 8014168: f000 bc1a b.w 80149a0 <_vfprintf_r+0x1438> - 801416c: 2300 movs r3, #0 - 801416e: 9304 str r3, [sp, #16] - 8014170: 9b08 ldr r3, [sp, #32] - 8014172: f403 6380 and.w r3, r3, #1024 @ 0x400 - 8014176: ad52 add r5, sp, #328 @ 0x148 - 8014178: 9310 str r3, [sp, #64] @ 0x40 - 801417a: 220a movs r2, #10 - 801417c: 2300 movs r3, #0 - 801417e: 4630 mov r0, r6 - 8014180: 4639 mov r1, r7 - 8014182: f7ec fd21 bl 8000bc8 <__aeabi_uldivmod> - 8014186: 9b04 ldr r3, [sp, #16] - 8014188: 9011 str r0, [sp, #68] @ 0x44 - 801418a: 3301 adds r3, #1 - 801418c: 9304 str r3, [sp, #16] - 801418e: 9b10 ldr r3, [sp, #64] @ 0x40 - 8014190: 3230 adds r2, #48 @ 0x30 - 8014192: 468a mov sl, r1 - 8014194: f105 38ff add.w r8, r5, #4294967295 - 8014198: f805 2c01 strb.w r2, [r5, #-1] - 801419c: b1d3 cbz r3, 80141d4 <_vfprintf_r+0xc6c> - 801419e: 9b09 ldr r3, [sp, #36] @ 0x24 - 80141a0: 9a04 ldr r2, [sp, #16] - 80141a2: 781b ldrb r3, [r3, #0] - 80141a4: 429a cmp r2, r3 - 80141a6: d115 bne.n 80141d4 <_vfprintf_r+0xc6c> - 80141a8: 2aff cmp r2, #255 @ 0xff - 80141aa: d013 beq.n 80141d4 <_vfprintf_r+0xc6c> - 80141ac: 2e0a cmp r6, #10 - 80141ae: f177 0300 sbcs.w r3, r7, #0 - 80141b2: d30f bcc.n 80141d4 <_vfprintf_r+0xc6c> - 80141b4: 9b12 ldr r3, [sp, #72] @ 0x48 - 80141b6: 9917 ldr r1, [sp, #92] @ 0x5c - 80141b8: eba8 0803 sub.w r8, r8, r3 - 80141bc: 461a mov r2, r3 - 80141be: 4640 mov r0, r8 - 80141c0: f001 fc48 bl 8015a54 - 80141c4: 9b09 ldr r3, [sp, #36] @ 0x24 - 80141c6: 785b ldrb r3, [r3, #1] - 80141c8: b11b cbz r3, 80141d2 <_vfprintf_r+0xc6a> - 80141ca: 9b09 ldr r3, [sp, #36] @ 0x24 - 80141cc: 3301 adds r3, #1 - 80141ce: 9309 str r3, [sp, #36] @ 0x24 - 80141d0: 2300 movs r3, #0 - 80141d2: 9304 str r3, [sp, #16] - 80141d4: 2e0a cmp r6, #10 - 80141d6: f177 0700 sbcs.w r7, r7, #0 - 80141da: f0c0 83e1 bcc.w 80149a0 <_vfprintf_r+0x1438> - 80141de: 9e11 ldr r6, [sp, #68] @ 0x44 - 80141e0: 4657 mov r7, sl - 80141e2: 4645 mov r5, r8 - 80141e4: e7c9 b.n 801417a <_vfprintf_r+0xc12> - 80141e6: f006 030f and.w r3, r6, #15 - 80141ea: 9a19 ldr r2, [sp, #100] @ 0x64 - 80141ec: 0936 lsrs r6, r6, #4 - 80141ee: 5cd3 ldrb r3, [r2, r3] - 80141f0: f808 3d01 strb.w r3, [r8, #-1]! - 80141f4: ea46 7607 orr.w r6, r6, r7, lsl #28 - 80141f8: 093f lsrs r7, r7, #4 - 80141fa: ea56 0307 orrs.w r3, r6, r7 - 80141fe: d1f2 bne.n 80141e6 <_vfprintf_r+0xc7e> - 8014200: e3ce b.n 80149a0 <_vfprintf_r+0x1438> - 8014202: b91b cbnz r3, 801420c <_vfprintf_r+0xca4> - 8014204: 07ed lsls r5, r5, #31 - 8014206: d501 bpl.n 801420c <_vfprintf_r+0xca4> - 8014208: 2630 movs r6, #48 @ 0x30 - 801420a: e7a9 b.n 8014160 <_vfprintf_r+0xbf8> - 801420c: f50d 78a4 add.w r8, sp, #328 @ 0x148 - 8014210: e3c6 b.n 80149a0 <_vfprintf_r+0x1438> - 8014212: 9b06 ldr r3, [sp, #24] - 8014214: 2b00 cmp r3, #0 - 8014216: f000 8390 beq.w 801493a <_vfprintf_r+0x13d2> - 801421a: f88d 30e4 strb.w r3, [sp, #228] @ 0xe4 - 801421e: 2300 movs r3, #0 - 8014220: f88d 307b strb.w r3, [sp, #123] @ 0x7b - 8014224: 9607 str r6, [sp, #28] - 8014226: f7ff bb5c b.w 80138e2 <_vfprintf_r+0x37a> - 801422a: 2010 movs r0, #16 - 801422c: 4403 add r3, r0 - 801422e: 2a07 cmp r2, #7 - 8014230: e9cd 2327 strd r2, r3, [sp, #156] @ 0x9c - 8014234: 6060 str r0, [r4, #4] - 8014236: dd08 ble.n 801424a <_vfprintf_r+0xce2> - 8014238: 9803 ldr r0, [sp, #12] - 801423a: aa26 add r2, sp, #152 @ 0x98 - 801423c: 4659 mov r1, fp - 801423e: f000 fbff bl 8014a40 <__sprint_r> - 8014242: 2800 cmp r0, #0 - 8014244: f040 8357 bne.w 80148f6 <_vfprintf_r+0x138e> - 8014248: a929 add r1, sp, #164 @ 0xa4 - 801424a: 9b13 ldr r3, [sp, #76] @ 0x4c - 801424c: 3b10 subs r3, #16 - 801424e: 9313 str r3, [sp, #76] @ 0x4c - 8014250: 460c mov r4, r1 - 8014252: e547 b.n 8013ce4 <_vfprintf_r+0x77c> - 8014254: 460c mov r4, r1 - 8014256: e562 b.n 8013d1e <_vfprintf_r+0x7b6> - 8014258: 9803 ldr r0, [sp, #12] - 801425a: aa26 add r2, sp, #152 @ 0x98 - 801425c: 4659 mov r1, fp - 801425e: f000 fbef bl 8014a40 <__sprint_r> - 8014262: 2800 cmp r0, #0 - 8014264: f040 8347 bne.w 80148f6 <_vfprintf_r+0x138e> - 8014268: ac29 add r4, sp, #164 @ 0xa4 - 801426a: e56a b.n 8013d42 <_vfprintf_r+0x7da> - 801426c: 9803 ldr r0, [sp, #12] - 801426e: aa26 add r2, sp, #152 @ 0x98 - 8014270: 4659 mov r1, fp - 8014272: f000 fbe5 bl 8014a40 <__sprint_r> - 8014276: 2800 cmp r0, #0 - 8014278: f040 833d bne.w 80148f6 <_vfprintf_r+0x138e> - 801427c: ac29 add r4, sp, #164 @ 0xa4 - 801427e: e570 b.n 8013d62 <_vfprintf_r+0x7fa> - 8014280: 2010 movs r0, #16 - 8014282: 4403 add r3, r0 - 8014284: 2a07 cmp r2, #7 - 8014286: e9cd 2327 strd r2, r3, [sp, #156] @ 0x9c - 801428a: 6060 str r0, [r4, #4] - 801428c: dd08 ble.n 80142a0 <_vfprintf_r+0xd38> - 801428e: 9803 ldr r0, [sp, #12] - 8014290: aa26 add r2, sp, #152 @ 0x98 - 8014292: 4659 mov r1, fp - 8014294: f000 fbd4 bl 8014a40 <__sprint_r> - 8014298: 2800 cmp r0, #0 - 801429a: f040 832c bne.w 80148f6 <_vfprintf_r+0x138e> - 801429e: a929 add r1, sp, #164 @ 0xa4 - 80142a0: 9b13 ldr r3, [sp, #76] @ 0x4c - 80142a2: 3b10 subs r3, #16 - 80142a4: 9313 str r3, [sp, #76] @ 0x4c - 80142a6: 460c mov r4, r1 - 80142a8: e564 b.n 8013d74 <_vfprintf_r+0x80c> - 80142aa: 460c mov r4, r1 - 80142ac: e57f b.n 8013dae <_vfprintf_r+0x846> - 80142ae: 2010 movs r0, #16 - 80142b0: 4403 add r3, r0 - 80142b2: 2a07 cmp r2, #7 - 80142b4: e9cd 2327 strd r2, r3, [sp, #156] @ 0x9c - 80142b8: 6060 str r0, [r4, #4] - 80142ba: dd08 ble.n 80142ce <_vfprintf_r+0xd66> - 80142bc: 9803 ldr r0, [sp, #12] - 80142be: aa26 add r2, sp, #152 @ 0x98 - 80142c0: 4659 mov r1, fp - 80142c2: f000 fbbd bl 8014a40 <__sprint_r> - 80142c6: 2800 cmp r0, #0 - 80142c8: f040 8315 bne.w 80148f6 <_vfprintf_r+0x138e> - 80142cc: a929 add r1, sp, #164 @ 0xa4 - 80142ce: 9b10 ldr r3, [sp, #64] @ 0x40 - 80142d0: 3b10 subs r3, #16 - 80142d2: 9310 str r3, [sp, #64] @ 0x40 - 80142d4: 460c mov r4, r1 - 80142d6: e570 b.n 8013dba <_vfprintf_r+0x852> - 80142d8: 460c mov r4, r1 - 80142da: e58b b.n 8013df4 <_vfprintf_r+0x88c> - 80142dc: 0801a70b .word 0x0801a70b - 80142e0: 0801a71c .word 0x0801a71c - 80142e4: 9b06 ldr r3, [sp, #24] - 80142e6: 2b65 cmp r3, #101 @ 0x65 - 80142e8: f340 8245 ble.w 8014776 <_vfprintf_r+0x120e> - 80142ec: e9dd 010a ldrd r0, r1, [sp, #40] @ 0x28 - 80142f0: 2200 movs r2, #0 - 80142f2: 2300 movs r3, #0 - 80142f4: f7ec fbf8 bl 8000ae8 <__aeabi_dcmpeq> - 80142f8: 2800 cmp r0, #0 - 80142fa: d06a beq.n 80143d2 <_vfprintf_r+0xe6a> - 80142fc: 4b73 ldr r3, [pc, #460] @ (80144cc <_vfprintf_r+0xf64>) - 80142fe: 6023 str r3, [r4, #0] - 8014300: 2301 movs r3, #1 - 8014302: 6063 str r3, [r4, #4] - 8014304: 9b10 ldr r3, [sp, #64] @ 0x40 - 8014306: 3301 adds r3, #1 - 8014308: 9328 str r3, [sp, #160] @ 0xa0 - 801430a: 9b27 ldr r3, [sp, #156] @ 0x9c - 801430c: 3301 adds r3, #1 - 801430e: 2b07 cmp r3, #7 - 8014310: 9327 str r3, [sp, #156] @ 0x9c - 8014312: dc37 bgt.n 8014384 <_vfprintf_r+0xe1c> - 8014314: 3408 adds r4, #8 - 8014316: 9b20 ldr r3, [sp, #128] @ 0x80 - 8014318: 9a04 ldr r2, [sp, #16] - 801431a: 4293 cmp r3, r2 - 801431c: db02 blt.n 8014324 <_vfprintf_r+0xdbc> - 801431e: 07e9 lsls r1, r5, #31 - 8014320: f57f ad78 bpl.w 8013e14 <_vfprintf_r+0x8ac> - 8014324: 9b16 ldr r3, [sp, #88] @ 0x58 - 8014326: 6023 str r3, [r4, #0] - 8014328: 9b0d ldr r3, [sp, #52] @ 0x34 - 801432a: 9a0d ldr r2, [sp, #52] @ 0x34 - 801432c: 6063 str r3, [r4, #4] - 801432e: 9b28 ldr r3, [sp, #160] @ 0xa0 - 8014330: 4413 add r3, r2 - 8014332: 9328 str r3, [sp, #160] @ 0xa0 - 8014334: 9b27 ldr r3, [sp, #156] @ 0x9c - 8014336: 3301 adds r3, #1 - 8014338: 2b07 cmp r3, #7 - 801433a: 9327 str r3, [sp, #156] @ 0x9c - 801433c: dc2c bgt.n 8014398 <_vfprintf_r+0xe30> - 801433e: 3408 adds r4, #8 - 8014340: 9b04 ldr r3, [sp, #16] - 8014342: 1e5e subs r6, r3, #1 - 8014344: 2e00 cmp r6, #0 - 8014346: f77f ad65 ble.w 8013e14 <_vfprintf_r+0x8ac> - 801434a: 4f61 ldr r7, [pc, #388] @ (80144d0 <_vfprintf_r+0xf68>) - 801434c: f04f 0810 mov.w r8, #16 - 8014350: e9dd 3227 ldrd r3, r2, [sp, #156] @ 0x9c - 8014354: 2e10 cmp r6, #16 - 8014356: f103 0301 add.w r3, r3, #1 - 801435a: f104 0108 add.w r1, r4, #8 - 801435e: 6027 str r7, [r4, #0] - 8014360: dc24 bgt.n 80143ac <_vfprintf_r+0xe44> - 8014362: 6066 str r6, [r4, #4] - 8014364: 2b07 cmp r3, #7 - 8014366: 4416 add r6, r2 - 8014368: e9cd 3627 strd r3, r6, [sp, #156] @ 0x9c - 801436c: f340 82a2 ble.w 80148b4 <_vfprintf_r+0x134c> - 8014370: 9803 ldr r0, [sp, #12] - 8014372: aa26 add r2, sp, #152 @ 0x98 - 8014374: 4659 mov r1, fp - 8014376: f000 fb63 bl 8014a40 <__sprint_r> - 801437a: 2800 cmp r0, #0 - 801437c: f040 82bb bne.w 80148f6 <_vfprintf_r+0x138e> - 8014380: ac29 add r4, sp, #164 @ 0xa4 - 8014382: e547 b.n 8013e14 <_vfprintf_r+0x8ac> - 8014384: 9803 ldr r0, [sp, #12] - 8014386: aa26 add r2, sp, #152 @ 0x98 - 8014388: 4659 mov r1, fp - 801438a: f000 fb59 bl 8014a40 <__sprint_r> - 801438e: 2800 cmp r0, #0 - 8014390: f040 82b1 bne.w 80148f6 <_vfprintf_r+0x138e> - 8014394: ac29 add r4, sp, #164 @ 0xa4 - 8014396: e7be b.n 8014316 <_vfprintf_r+0xdae> - 8014398: 9803 ldr r0, [sp, #12] - 801439a: aa26 add r2, sp, #152 @ 0x98 - 801439c: 4659 mov r1, fp - 801439e: f000 fb4f bl 8014a40 <__sprint_r> - 80143a2: 2800 cmp r0, #0 - 80143a4: f040 82a7 bne.w 80148f6 <_vfprintf_r+0x138e> - 80143a8: ac29 add r4, sp, #164 @ 0xa4 - 80143aa: e7c9 b.n 8014340 <_vfprintf_r+0xdd8> - 80143ac: 3210 adds r2, #16 - 80143ae: 2b07 cmp r3, #7 - 80143b0: e9cd 3227 strd r3, r2, [sp, #156] @ 0x9c - 80143b4: f8c4 8004 str.w r8, [r4, #4] - 80143b8: dd08 ble.n 80143cc <_vfprintf_r+0xe64> - 80143ba: 9803 ldr r0, [sp, #12] - 80143bc: aa26 add r2, sp, #152 @ 0x98 - 80143be: 4659 mov r1, fp - 80143c0: f000 fb3e bl 8014a40 <__sprint_r> - 80143c4: 2800 cmp r0, #0 - 80143c6: f040 8296 bne.w 80148f6 <_vfprintf_r+0x138e> - 80143ca: a929 add r1, sp, #164 @ 0xa4 - 80143cc: 3e10 subs r6, #16 - 80143ce: 460c mov r4, r1 - 80143d0: e7be b.n 8014350 <_vfprintf_r+0xde8> - 80143d2: 9b20 ldr r3, [sp, #128] @ 0x80 - 80143d4: 2b00 cmp r3, #0 - 80143d6: dc7d bgt.n 80144d4 <_vfprintf_r+0xf6c> - 80143d8: 4b3c ldr r3, [pc, #240] @ (80144cc <_vfprintf_r+0xf64>) - 80143da: 6023 str r3, [r4, #0] - 80143dc: 2301 movs r3, #1 - 80143de: 6063 str r3, [r4, #4] - 80143e0: 9b10 ldr r3, [sp, #64] @ 0x40 - 80143e2: 3301 adds r3, #1 - 80143e4: 9328 str r3, [sp, #160] @ 0xa0 - 80143e6: 9b27 ldr r3, [sp, #156] @ 0x9c - 80143e8: 3301 adds r3, #1 - 80143ea: 2b07 cmp r3, #7 - 80143ec: 9327 str r3, [sp, #156] @ 0x9c - 80143ee: dc46 bgt.n 801447e <_vfprintf_r+0xf16> - 80143f0: 3408 adds r4, #8 - 80143f2: 9904 ldr r1, [sp, #16] - 80143f4: 9b20 ldr r3, [sp, #128] @ 0x80 - 80143f6: 9a28 ldr r2, [sp, #160] @ 0xa0 - 80143f8: 430b orrs r3, r1 - 80143fa: f005 0101 and.w r1, r5, #1 - 80143fe: 430b orrs r3, r1 - 8014400: f43f ad08 beq.w 8013e14 <_vfprintf_r+0x8ac> - 8014404: 9b16 ldr r3, [sp, #88] @ 0x58 - 8014406: 6023 str r3, [r4, #0] - 8014408: 9b0d ldr r3, [sp, #52] @ 0x34 - 801440a: 6063 str r3, [r4, #4] - 801440c: 441a add r2, r3 - 801440e: 9b27 ldr r3, [sp, #156] @ 0x9c - 8014410: 9228 str r2, [sp, #160] @ 0xa0 - 8014412: 3301 adds r3, #1 - 8014414: 2b07 cmp r3, #7 - 8014416: 9327 str r3, [sp, #156] @ 0x9c - 8014418: dc3b bgt.n 8014492 <_vfprintf_r+0xf2a> - 801441a: f104 0308 add.w r3, r4, #8 - 801441e: 9e20 ldr r6, [sp, #128] @ 0x80 - 8014420: 2e00 cmp r6, #0 - 8014422: da1b bge.n 801445c <_vfprintf_r+0xef4> - 8014424: 4f2a ldr r7, [pc, #168] @ (80144d0 <_vfprintf_r+0xf68>) - 8014426: 4276 negs r6, r6 - 8014428: 461a mov r2, r3 - 801442a: 2410 movs r4, #16 - 801442c: e9dd 1027 ldrd r1, r0, [sp, #156] @ 0x9c - 8014430: 2e10 cmp r6, #16 - 8014432: f101 0101 add.w r1, r1, #1 - 8014436: f103 0308 add.w r3, r3, #8 - 801443a: 6017 str r7, [r2, #0] - 801443c: dc33 bgt.n 80144a6 <_vfprintf_r+0xf3e> - 801443e: 6056 str r6, [r2, #4] - 8014440: 2907 cmp r1, #7 - 8014442: 4406 add r6, r0 - 8014444: e9cd 1627 strd r1, r6, [sp, #156] @ 0x9c - 8014448: dd08 ble.n 801445c <_vfprintf_r+0xef4> - 801444a: 9803 ldr r0, [sp, #12] - 801444c: aa26 add r2, sp, #152 @ 0x98 - 801444e: 4659 mov r1, fp - 8014450: f000 faf6 bl 8014a40 <__sprint_r> - 8014454: 2800 cmp r0, #0 - 8014456: f040 824e bne.w 80148f6 <_vfprintf_r+0x138e> - 801445a: ab29 add r3, sp, #164 @ 0xa4 - 801445c: 9a04 ldr r2, [sp, #16] - 801445e: 9904 ldr r1, [sp, #16] - 8014460: 605a str r2, [r3, #4] - 8014462: 9a28 ldr r2, [sp, #160] @ 0xa0 - 8014464: f8c3 8000 str.w r8, [r3] - 8014468: 440a add r2, r1 - 801446a: 9228 str r2, [sp, #160] @ 0xa0 - 801446c: 9a27 ldr r2, [sp, #156] @ 0x9c - 801446e: 3201 adds r2, #1 - 8014470: 2a07 cmp r2, #7 - 8014472: 9227 str r2, [sp, #156] @ 0x9c - 8014474: f73f af7c bgt.w 8014370 <_vfprintf_r+0xe08> - 8014478: f103 0408 add.w r4, r3, #8 - 801447c: e4ca b.n 8013e14 <_vfprintf_r+0x8ac> - 801447e: 9803 ldr r0, [sp, #12] - 8014480: aa26 add r2, sp, #152 @ 0x98 - 8014482: 4659 mov r1, fp - 8014484: f000 fadc bl 8014a40 <__sprint_r> - 8014488: 2800 cmp r0, #0 - 801448a: f040 8234 bne.w 80148f6 <_vfprintf_r+0x138e> - 801448e: ac29 add r4, sp, #164 @ 0xa4 - 8014490: e7af b.n 80143f2 <_vfprintf_r+0xe8a> - 8014492: 9803 ldr r0, [sp, #12] - 8014494: aa26 add r2, sp, #152 @ 0x98 - 8014496: 4659 mov r1, fp - 8014498: f000 fad2 bl 8014a40 <__sprint_r> - 801449c: 2800 cmp r0, #0 - 801449e: f040 822a bne.w 80148f6 <_vfprintf_r+0x138e> - 80144a2: ab29 add r3, sp, #164 @ 0xa4 - 80144a4: e7bb b.n 801441e <_vfprintf_r+0xeb6> - 80144a6: 3010 adds r0, #16 - 80144a8: 2907 cmp r1, #7 - 80144aa: e9cd 1027 strd r1, r0, [sp, #156] @ 0x9c - 80144ae: 6054 str r4, [r2, #4] - 80144b0: dd08 ble.n 80144c4 <_vfprintf_r+0xf5c> - 80144b2: 9803 ldr r0, [sp, #12] - 80144b4: aa26 add r2, sp, #152 @ 0x98 - 80144b6: 4659 mov r1, fp - 80144b8: f000 fac2 bl 8014a40 <__sprint_r> - 80144bc: 2800 cmp r0, #0 - 80144be: f040 821a bne.w 80148f6 <_vfprintf_r+0x138e> - 80144c2: ab29 add r3, sp, #164 @ 0xa4 - 80144c4: 3e10 subs r6, #16 - 80144c6: 461a mov r2, r3 - 80144c8: e7b0 b.n 801442c <_vfprintf_r+0xec4> - 80144ca: bf00 nop - 80144cc: 0801a72d .word 0x0801a72d - 80144d0: 0801a72f .word 0x0801a72f - 80144d4: 9b04 ldr r3, [sp, #16] - 80144d6: 4443 add r3, r8 - 80144d8: 9313 str r3, [sp, #76] @ 0x4c - 80144da: 9b04 ldr r3, [sp, #16] - 80144dc: 42b3 cmp r3, r6 - 80144de: bfa8 it ge - 80144e0: 4633 movge r3, r6 - 80144e2: 2b00 cmp r3, #0 - 80144e4: 4699 mov r9, r3 - 80144e6: dd0b ble.n 8014500 <_vfprintf_r+0xf98> - 80144e8: e9c4 8300 strd r8, r3, [r4] - 80144ec: 9b10 ldr r3, [sp, #64] @ 0x40 - 80144ee: 444b add r3, r9 - 80144f0: 9328 str r3, [sp, #160] @ 0xa0 - 80144f2: 9b27 ldr r3, [sp, #156] @ 0x9c - 80144f4: 3301 adds r3, #1 - 80144f6: 2b07 cmp r3, #7 - 80144f8: 9327 str r3, [sp, #156] @ 0x9c - 80144fa: f300 8089 bgt.w 8014610 <_vfprintf_r+0x10a8> - 80144fe: 3408 adds r4, #8 - 8014500: f1b9 0f00 cmp.w r9, #0 - 8014504: bfac ite ge - 8014506: eba6 0309 subge.w r3, r6, r9 - 801450a: 4633 movlt r3, r6 - 801450c: 2b00 cmp r3, #0 - 801450e: 9306 str r3, [sp, #24] - 8014510: dd1c ble.n 801454c <_vfprintf_r+0xfe4> - 8014512: f8df 9364 ldr.w r9, [pc, #868] @ 8014878 <_vfprintf_r+0x1310> - 8014516: 9806 ldr r0, [sp, #24] - 8014518: f8c4 9000 str.w r9, [r4] - 801451c: e9dd 2327 ldrd r2, r3, [sp, #156] @ 0x9c - 8014520: 2810 cmp r0, #16 - 8014522: f102 0201 add.w r2, r2, #1 - 8014526: f104 0108 add.w r1, r4, #8 - 801452a: dc7b bgt.n 8014624 <_vfprintf_r+0x10bc> - 801452c: 4403 add r3, r0 - 801452e: 2a07 cmp r2, #7 - 8014530: e9cd 2327 strd r2, r3, [sp, #156] @ 0x9c - 8014534: 6060 str r0, [r4, #4] - 8014536: f340 808a ble.w 801464e <_vfprintf_r+0x10e6> - 801453a: 9803 ldr r0, [sp, #12] - 801453c: aa26 add r2, sp, #152 @ 0x98 - 801453e: 4659 mov r1, fp - 8014540: f000 fa7e bl 8014a40 <__sprint_r> - 8014544: 2800 cmp r0, #0 - 8014546: f040 81d6 bne.w 80148f6 <_vfprintf_r+0x138e> - 801454a: ac29 add r4, sp, #164 @ 0xa4 - 801454c: 056a lsls r2, r5, #21 - 801454e: 44b0 add r8, r6 - 8014550: d508 bpl.n 8014564 <_vfprintf_r+0xffc> - 8014552: 9b08 ldr r3, [sp, #32] - 8014554: 2b00 cmp r3, #0 - 8014556: d17c bne.n 8014652 <_vfprintf_r+0x10ea> - 8014558: 2f00 cmp r7, #0 - 801455a: d17c bne.n 8014656 <_vfprintf_r+0x10ee> - 801455c: 9b13 ldr r3, [sp, #76] @ 0x4c - 801455e: 4598 cmp r8, r3 - 8014560: bf28 it cs - 8014562: 4698 movcs r8, r3 - 8014564: 9b20 ldr r3, [sp, #128] @ 0x80 - 8014566: 9a04 ldr r2, [sp, #16] - 8014568: 4293 cmp r3, r2 - 801456a: db01 blt.n 8014570 <_vfprintf_r+0x1008> - 801456c: 07eb lsls r3, r5, #31 - 801456e: d50e bpl.n 801458e <_vfprintf_r+0x1026> - 8014570: 9b16 ldr r3, [sp, #88] @ 0x58 - 8014572: 6023 str r3, [r4, #0] - 8014574: 9b0d ldr r3, [sp, #52] @ 0x34 - 8014576: 9a0d ldr r2, [sp, #52] @ 0x34 - 8014578: 6063 str r3, [r4, #4] - 801457a: 9b28 ldr r3, [sp, #160] @ 0xa0 - 801457c: 4413 add r3, r2 - 801457e: 9328 str r3, [sp, #160] @ 0xa0 - 8014580: 9b27 ldr r3, [sp, #156] @ 0x9c - 8014582: 3301 adds r3, #1 - 8014584: 2b07 cmp r3, #7 - 8014586: 9327 str r3, [sp, #156] @ 0x9c - 8014588: f300 80e1 bgt.w 801474e <_vfprintf_r+0x11e6> - 801458c: 3408 adds r4, #8 - 801458e: 9b04 ldr r3, [sp, #16] - 8014590: 9f20 ldr r7, [sp, #128] @ 0x80 - 8014592: 1bdf subs r7, r3, r7 - 8014594: 9b13 ldr r3, [sp, #76] @ 0x4c - 8014596: eba3 0308 sub.w r3, r3, r8 - 801459a: 429f cmp r7, r3 - 801459c: bfa8 it ge - 801459e: 461f movge r7, r3 - 80145a0: 2f00 cmp r7, #0 - 80145a2: 9b28 ldr r3, [sp, #160] @ 0xa0 - 80145a4: dd0a ble.n 80145bc <_vfprintf_r+0x1054> - 80145a6: 443b add r3, r7 - 80145a8: 9328 str r3, [sp, #160] @ 0xa0 - 80145aa: 9b27 ldr r3, [sp, #156] @ 0x9c - 80145ac: 3301 adds r3, #1 - 80145ae: 2b07 cmp r3, #7 - 80145b0: e9c4 8700 strd r8, r7, [r4] - 80145b4: 9327 str r3, [sp, #156] @ 0x9c - 80145b6: f300 80d4 bgt.w 8014762 <_vfprintf_r+0x11fa> - 80145ba: 3408 adds r4, #8 - 80145bc: 9e20 ldr r6, [sp, #128] @ 0x80 - 80145be: 9b04 ldr r3, [sp, #16] - 80145c0: 2f00 cmp r7, #0 - 80145c2: eba3 0606 sub.w r6, r3, r6 - 80145c6: bfa8 it ge - 80145c8: 1bf6 subge r6, r6, r7 - 80145ca: 2e00 cmp r6, #0 - 80145cc: f77f ac22 ble.w 8013e14 <_vfprintf_r+0x8ac> - 80145d0: 4fa9 ldr r7, [pc, #676] @ (8014878 <_vfprintf_r+0x1310>) - 80145d2: f04f 0810 mov.w r8, #16 - 80145d6: e9dd 3227 ldrd r3, r2, [sp, #156] @ 0x9c - 80145da: 2e10 cmp r6, #16 - 80145dc: f103 0301 add.w r3, r3, #1 - 80145e0: f104 0108 add.w r1, r4, #8 - 80145e4: 6027 str r7, [r4, #0] - 80145e6: f77f aebc ble.w 8014362 <_vfprintf_r+0xdfa> - 80145ea: 3210 adds r2, #16 - 80145ec: 2b07 cmp r3, #7 - 80145ee: e9cd 3227 strd r3, r2, [sp, #156] @ 0x9c - 80145f2: f8c4 8004 str.w r8, [r4, #4] - 80145f6: dd08 ble.n 801460a <_vfprintf_r+0x10a2> - 80145f8: 9803 ldr r0, [sp, #12] - 80145fa: aa26 add r2, sp, #152 @ 0x98 - 80145fc: 4659 mov r1, fp - 80145fe: f000 fa1f bl 8014a40 <__sprint_r> - 8014602: 2800 cmp r0, #0 - 8014604: f040 8177 bne.w 80148f6 <_vfprintf_r+0x138e> - 8014608: a929 add r1, sp, #164 @ 0xa4 - 801460a: 3e10 subs r6, #16 - 801460c: 460c mov r4, r1 - 801460e: e7e2 b.n 80145d6 <_vfprintf_r+0x106e> - 8014610: 9803 ldr r0, [sp, #12] - 8014612: aa26 add r2, sp, #152 @ 0x98 - 8014614: 4659 mov r1, fp - 8014616: f000 fa13 bl 8014a40 <__sprint_r> - 801461a: 2800 cmp r0, #0 - 801461c: f040 816b bne.w 80148f6 <_vfprintf_r+0x138e> - 8014620: ac29 add r4, sp, #164 @ 0xa4 - 8014622: e76d b.n 8014500 <_vfprintf_r+0xf98> - 8014624: 2010 movs r0, #16 - 8014626: 4403 add r3, r0 - 8014628: 2a07 cmp r2, #7 - 801462a: e9cd 2327 strd r2, r3, [sp, #156] @ 0x9c - 801462e: 6060 str r0, [r4, #4] - 8014630: dd08 ble.n 8014644 <_vfprintf_r+0x10dc> - 8014632: 9803 ldr r0, [sp, #12] - 8014634: aa26 add r2, sp, #152 @ 0x98 - 8014636: 4659 mov r1, fp - 8014638: f000 fa02 bl 8014a40 <__sprint_r> - 801463c: 2800 cmp r0, #0 - 801463e: f040 815a bne.w 80148f6 <_vfprintf_r+0x138e> - 8014642: a929 add r1, sp, #164 @ 0xa4 - 8014644: 9b06 ldr r3, [sp, #24] - 8014646: 3b10 subs r3, #16 - 8014648: 9306 str r3, [sp, #24] - 801464a: 460c mov r4, r1 - 801464c: e763 b.n 8014516 <_vfprintf_r+0xfae> - 801464e: 460c mov r4, r1 - 8014650: e77c b.n 801454c <_vfprintf_r+0xfe4> - 8014652: 2f00 cmp r7, #0 - 8014654: d04b beq.n 80146ee <_vfprintf_r+0x1186> - 8014656: 3f01 subs r7, #1 - 8014658: 9b17 ldr r3, [sp, #92] @ 0x5c - 801465a: 6023 str r3, [r4, #0] - 801465c: 9b12 ldr r3, [sp, #72] @ 0x48 - 801465e: 9a12 ldr r2, [sp, #72] @ 0x48 - 8014660: 6063 str r3, [r4, #4] - 8014662: 9b28 ldr r3, [sp, #160] @ 0xa0 - 8014664: 4413 add r3, r2 - 8014666: 9328 str r3, [sp, #160] @ 0xa0 - 8014668: 9b27 ldr r3, [sp, #156] @ 0x9c - 801466a: 3301 adds r3, #1 - 801466c: 2b07 cmp r3, #7 - 801466e: 9327 str r3, [sp, #156] @ 0x9c - 8014670: dc44 bgt.n 80146fc <_vfprintf_r+0x1194> - 8014672: 3408 adds r4, #8 - 8014674: 9b09 ldr r3, [sp, #36] @ 0x24 - 8014676: f893 9000 ldrb.w r9, [r3] - 801467a: 9b13 ldr r3, [sp, #76] @ 0x4c - 801467c: eba3 0308 sub.w r3, r3, r8 - 8014680: 4599 cmp r9, r3 - 8014682: bfa8 it ge - 8014684: 4699 movge r9, r3 - 8014686: f1b9 0f00 cmp.w r9, #0 - 801468a: 9b28 ldr r3, [sp, #160] @ 0xa0 - 801468c: dd09 ble.n 80146a2 <_vfprintf_r+0x113a> - 801468e: 444b add r3, r9 - 8014690: 9328 str r3, [sp, #160] @ 0xa0 - 8014692: 9b27 ldr r3, [sp, #156] @ 0x9c - 8014694: 3301 adds r3, #1 - 8014696: 2b07 cmp r3, #7 - 8014698: e9c4 8900 strd r8, r9, [r4] - 801469c: 9327 str r3, [sp, #156] @ 0x9c - 801469e: dc37 bgt.n 8014710 <_vfprintf_r+0x11a8> - 80146a0: 3408 adds r4, #8 - 80146a2: 9b09 ldr r3, [sp, #36] @ 0x24 - 80146a4: 781e ldrb r6, [r3, #0] - 80146a6: f1b9 0f00 cmp.w r9, #0 - 80146aa: bfa8 it ge - 80146ac: eba6 0609 subge.w r6, r6, r9 - 80146b0: 2e00 cmp r6, #0 - 80146b2: dd18 ble.n 80146e6 <_vfprintf_r+0x117e> - 80146b4: e9dd 3227 ldrd r3, r2, [sp, #156] @ 0x9c - 80146b8: 486f ldr r0, [pc, #444] @ (8014878 <_vfprintf_r+0x1310>) - 80146ba: 6020 str r0, [r4, #0] - 80146bc: 2e10 cmp r6, #16 - 80146be: f103 0301 add.w r3, r3, #1 - 80146c2: f104 0108 add.w r1, r4, #8 - 80146c6: dc2d bgt.n 8014724 <_vfprintf_r+0x11bc> - 80146c8: 6066 str r6, [r4, #4] - 80146ca: 2b07 cmp r3, #7 - 80146cc: 4416 add r6, r2 - 80146ce: e9cd 3627 strd r3, r6, [sp, #156] @ 0x9c - 80146d2: dd3a ble.n 801474a <_vfprintf_r+0x11e2> - 80146d4: 9803 ldr r0, [sp, #12] - 80146d6: aa26 add r2, sp, #152 @ 0x98 - 80146d8: 4659 mov r1, fp - 80146da: f000 f9b1 bl 8014a40 <__sprint_r> - 80146de: 2800 cmp r0, #0 - 80146e0: f040 8109 bne.w 80148f6 <_vfprintf_r+0x138e> - 80146e4: ac29 add r4, sp, #164 @ 0xa4 - 80146e6: 9b09 ldr r3, [sp, #36] @ 0x24 - 80146e8: 781b ldrb r3, [r3, #0] - 80146ea: 4498 add r8, r3 - 80146ec: e731 b.n 8014552 <_vfprintf_r+0xfea> - 80146ee: 9b09 ldr r3, [sp, #36] @ 0x24 - 80146f0: 3b01 subs r3, #1 - 80146f2: 9309 str r3, [sp, #36] @ 0x24 - 80146f4: 9b08 ldr r3, [sp, #32] - 80146f6: 3b01 subs r3, #1 - 80146f8: 9308 str r3, [sp, #32] - 80146fa: e7ad b.n 8014658 <_vfprintf_r+0x10f0> - 80146fc: 9803 ldr r0, [sp, #12] - 80146fe: aa26 add r2, sp, #152 @ 0x98 - 8014700: 4659 mov r1, fp - 8014702: f000 f99d bl 8014a40 <__sprint_r> - 8014706: 2800 cmp r0, #0 - 8014708: f040 80f5 bne.w 80148f6 <_vfprintf_r+0x138e> - 801470c: ac29 add r4, sp, #164 @ 0xa4 - 801470e: e7b1 b.n 8014674 <_vfprintf_r+0x110c> - 8014710: 9803 ldr r0, [sp, #12] - 8014712: aa26 add r2, sp, #152 @ 0x98 - 8014714: 4659 mov r1, fp - 8014716: f000 f993 bl 8014a40 <__sprint_r> - 801471a: 2800 cmp r0, #0 - 801471c: f040 80eb bne.w 80148f6 <_vfprintf_r+0x138e> - 8014720: ac29 add r4, sp, #164 @ 0xa4 - 8014722: e7be b.n 80146a2 <_vfprintf_r+0x113a> - 8014724: 2010 movs r0, #16 - 8014726: 4402 add r2, r0 - 8014728: 2b07 cmp r3, #7 - 801472a: e9cd 3227 strd r3, r2, [sp, #156] @ 0x9c - 801472e: 6060 str r0, [r4, #4] - 8014730: dd08 ble.n 8014744 <_vfprintf_r+0x11dc> - 8014732: 9803 ldr r0, [sp, #12] - 8014734: aa26 add r2, sp, #152 @ 0x98 - 8014736: 4659 mov r1, fp - 8014738: f000 f982 bl 8014a40 <__sprint_r> - 801473c: 2800 cmp r0, #0 - 801473e: f040 80da bne.w 80148f6 <_vfprintf_r+0x138e> - 8014742: a929 add r1, sp, #164 @ 0xa4 - 8014744: 3e10 subs r6, #16 - 8014746: 460c mov r4, r1 - 8014748: e7b4 b.n 80146b4 <_vfprintf_r+0x114c> - 801474a: 460c mov r4, r1 - 801474c: e7cb b.n 80146e6 <_vfprintf_r+0x117e> - 801474e: 9803 ldr r0, [sp, #12] - 8014750: aa26 add r2, sp, #152 @ 0x98 - 8014752: 4659 mov r1, fp - 8014754: f000 f974 bl 8014a40 <__sprint_r> - 8014758: 2800 cmp r0, #0 - 801475a: f040 80cc bne.w 80148f6 <_vfprintf_r+0x138e> - 801475e: ac29 add r4, sp, #164 @ 0xa4 - 8014760: e715 b.n 801458e <_vfprintf_r+0x1026> - 8014762: 9803 ldr r0, [sp, #12] - 8014764: aa26 add r2, sp, #152 @ 0x98 - 8014766: 4659 mov r1, fp - 8014768: f000 f96a bl 8014a40 <__sprint_r> - 801476c: 2800 cmp r0, #0 - 801476e: f040 80c2 bne.w 80148f6 <_vfprintf_r+0x138e> - 8014772: ac29 add r4, sp, #164 @ 0xa4 - 8014774: e722 b.n 80145bc <_vfprintf_r+0x1054> - 8014776: 9904 ldr r1, [sp, #16] - 8014778: 9b10 ldr r3, [sp, #64] @ 0x40 - 801477a: 9a27 ldr r2, [sp, #156] @ 0x9c - 801477c: 2901 cmp r1, #1 - 801477e: f103 0301 add.w r3, r3, #1 - 8014782: f102 0201 add.w r2, r2, #1 - 8014786: f104 0608 add.w r6, r4, #8 - 801478a: dc02 bgt.n 8014792 <_vfprintf_r+0x122a> - 801478c: 07ef lsls r7, r5, #31 - 801478e: f140 8086 bpl.w 801489e <_vfprintf_r+0x1336> - 8014792: 2101 movs r1, #1 - 8014794: 2a07 cmp r2, #7 - 8014796: e9cd 2327 strd r2, r3, [sp, #156] @ 0x9c - 801479a: f8c4 8000 str.w r8, [r4] - 801479e: 6061 str r1, [r4, #4] - 80147a0: dd08 ble.n 80147b4 <_vfprintf_r+0x124c> - 80147a2: 9803 ldr r0, [sp, #12] - 80147a4: aa26 add r2, sp, #152 @ 0x98 - 80147a6: 4659 mov r1, fp - 80147a8: f000 f94a bl 8014a40 <__sprint_r> - 80147ac: 2800 cmp r0, #0 - 80147ae: f040 80a2 bne.w 80148f6 <_vfprintf_r+0x138e> - 80147b2: ae29 add r6, sp, #164 @ 0xa4 - 80147b4: 9b16 ldr r3, [sp, #88] @ 0x58 - 80147b6: 6033 str r3, [r6, #0] - 80147b8: 9b0d ldr r3, [sp, #52] @ 0x34 - 80147ba: 9a0d ldr r2, [sp, #52] @ 0x34 - 80147bc: 6073 str r3, [r6, #4] - 80147be: 9b28 ldr r3, [sp, #160] @ 0xa0 - 80147c0: 4413 add r3, r2 - 80147c2: 9328 str r3, [sp, #160] @ 0xa0 - 80147c4: 9b27 ldr r3, [sp, #156] @ 0x9c - 80147c6: 3301 adds r3, #1 - 80147c8: 2b07 cmp r3, #7 - 80147ca: 9327 str r3, [sp, #156] @ 0x9c - 80147cc: dc33 bgt.n 8014836 <_vfprintf_r+0x12ce> - 80147ce: 3608 adds r6, #8 - 80147d0: 9b04 ldr r3, [sp, #16] - 80147d2: e9dd 010a ldrd r0, r1, [sp, #40] @ 0x28 - 80147d6: 1e5c subs r4, r3, #1 - 80147d8: 2200 movs r2, #0 - 80147da: 2300 movs r3, #0 - 80147dc: e9dd 9727 ldrd r9, r7, [sp, #156] @ 0x9c - 80147e0: f7ec f982 bl 8000ae8 <__aeabi_dcmpeq> - 80147e4: 2800 cmp r0, #0 - 80147e6: d12f bne.n 8014848 <_vfprintf_r+0x12e0> - 80147e8: f108 0201 add.w r2, r8, #1 - 80147ec: e9c6 2400 strd r2, r4, [r6] - 80147f0: 9a04 ldr r2, [sp, #16] - 80147f2: f109 0301 add.w r3, r9, #1 - 80147f6: 3f01 subs r7, #1 - 80147f8: 4417 add r7, r2 - 80147fa: 2b07 cmp r3, #7 - 80147fc: e9cd 3727 strd r3, r7, [sp, #156] @ 0x9c - 8014800: dd56 ble.n 80148b0 <_vfprintf_r+0x1348> - 8014802: 9803 ldr r0, [sp, #12] - 8014804: aa26 add r2, sp, #152 @ 0x98 - 8014806: 4659 mov r1, fp - 8014808: f000 f91a bl 8014a40 <__sprint_r> - 801480c: 2800 cmp r0, #0 - 801480e: d172 bne.n 80148f6 <_vfprintf_r+0x138e> - 8014810: ae29 add r6, sp, #164 @ 0xa4 - 8014812: ab22 add r3, sp, #136 @ 0x88 - 8014814: 6033 str r3, [r6, #0] - 8014816: 9b18 ldr r3, [sp, #96] @ 0x60 - 8014818: 9a18 ldr r2, [sp, #96] @ 0x60 - 801481a: 6073 str r3, [r6, #4] - 801481c: 9b28 ldr r3, [sp, #160] @ 0xa0 - 801481e: 4413 add r3, r2 - 8014820: 9328 str r3, [sp, #160] @ 0xa0 - 8014822: 9b27 ldr r3, [sp, #156] @ 0x9c - 8014824: 3301 adds r3, #1 - 8014826: 2b07 cmp r3, #7 - 8014828: 9327 str r3, [sp, #156] @ 0x9c - 801482a: f73f ada1 bgt.w 8014370 <_vfprintf_r+0xe08> - 801482e: f106 0408 add.w r4, r6, #8 - 8014832: f7ff baef b.w 8013e14 <_vfprintf_r+0x8ac> - 8014836: 9803 ldr r0, [sp, #12] - 8014838: aa26 add r2, sp, #152 @ 0x98 - 801483a: 4659 mov r1, fp - 801483c: f000 f900 bl 8014a40 <__sprint_r> - 8014840: 2800 cmp r0, #0 - 8014842: d158 bne.n 80148f6 <_vfprintf_r+0x138e> - 8014844: ae29 add r6, sp, #164 @ 0xa4 - 8014846: e7c3 b.n 80147d0 <_vfprintf_r+0x1268> - 8014848: 9b04 ldr r3, [sp, #16] - 801484a: 2b01 cmp r3, #1 - 801484c: dde1 ble.n 8014812 <_vfprintf_r+0x12aa> - 801484e: 4f0a ldr r7, [pc, #40] @ (8014878 <_vfprintf_r+0x1310>) - 8014850: f04f 0810 mov.w r8, #16 - 8014854: e9dd 3227 ldrd r3, r2, [sp, #156] @ 0x9c - 8014858: 2c10 cmp r4, #16 - 801485a: f103 0301 add.w r3, r3, #1 - 801485e: f106 0108 add.w r1, r6, #8 - 8014862: 6037 str r7, [r6, #0] - 8014864: dc0a bgt.n 801487c <_vfprintf_r+0x1314> - 8014866: 6074 str r4, [r6, #4] - 8014868: 2b07 cmp r3, #7 - 801486a: 4414 add r4, r2 - 801486c: e9cd 3427 strd r3, r4, [sp, #156] @ 0x9c - 8014870: dcc7 bgt.n 8014802 <_vfprintf_r+0x129a> - 8014872: 460e mov r6, r1 - 8014874: e7cd b.n 8014812 <_vfprintf_r+0x12aa> - 8014876: bf00 nop - 8014878: 0801a72f .word 0x0801a72f - 801487c: 3210 adds r2, #16 - 801487e: 2b07 cmp r3, #7 - 8014880: e9cd 3227 strd r3, r2, [sp, #156] @ 0x9c - 8014884: f8c6 8004 str.w r8, [r6, #4] - 8014888: dd06 ble.n 8014898 <_vfprintf_r+0x1330> - 801488a: 9803 ldr r0, [sp, #12] - 801488c: aa26 add r2, sp, #152 @ 0x98 - 801488e: 4659 mov r1, fp - 8014890: f000 f8d6 bl 8014a40 <__sprint_r> - 8014894: bb78 cbnz r0, 80148f6 <_vfprintf_r+0x138e> - 8014896: a929 add r1, sp, #164 @ 0xa4 - 8014898: 3c10 subs r4, #16 - 801489a: 460e mov r6, r1 - 801489c: e7da b.n 8014854 <_vfprintf_r+0x12ec> - 801489e: 2101 movs r1, #1 - 80148a0: 2a07 cmp r2, #7 - 80148a2: e9cd 2327 strd r2, r3, [sp, #156] @ 0x9c - 80148a6: f8c4 8000 str.w r8, [r4] - 80148aa: 6061 str r1, [r4, #4] - 80148ac: ddb1 ble.n 8014812 <_vfprintf_r+0x12aa> - 80148ae: e7a8 b.n 8014802 <_vfprintf_r+0x129a> - 80148b0: 3608 adds r6, #8 - 80148b2: e7ae b.n 8014812 <_vfprintf_r+0x12aa> - 80148b4: 460c mov r4, r1 - 80148b6: f7ff baad b.w 8013e14 <_vfprintf_r+0x8ac> - 80148ba: 9b0e ldr r3, [sp, #56] @ 0x38 - 80148bc: 9a11 ldr r2, [sp, #68] @ 0x44 - 80148be: 1a9d subs r5, r3, r2 - 80148c0: 2d00 cmp r5, #0 - 80148c2: f77f aaaa ble.w 8013e1a <_vfprintf_r+0x8b2> - 80148c6: 4e3d ldr r6, [pc, #244] @ (80149bc <_vfprintf_r+0x1454>) - 80148c8: 2710 movs r7, #16 - 80148ca: e9dd 3227 ldrd r3, r2, [sp, #156] @ 0x9c - 80148ce: 2d10 cmp r5, #16 - 80148d0: f103 0301 add.w r3, r3, #1 - 80148d4: 6026 str r6, [r4, #0] - 80148d6: dc18 bgt.n 801490a <_vfprintf_r+0x13a2> - 80148d8: 6065 str r5, [r4, #4] - 80148da: 2b07 cmp r3, #7 - 80148dc: 4415 add r5, r2 - 80148de: e9cd 3527 strd r3, r5, [sp, #156] @ 0x9c - 80148e2: f77f aa9a ble.w 8013e1a <_vfprintf_r+0x8b2> - 80148e6: 9803 ldr r0, [sp, #12] - 80148e8: aa26 add r2, sp, #152 @ 0x98 - 80148ea: 4659 mov r1, fp - 80148ec: f000 f8a8 bl 8014a40 <__sprint_r> - 80148f0: 2800 cmp r0, #0 - 80148f2: f43f aa92 beq.w 8013e1a <_vfprintf_r+0x8b2> - 80148f6: f1ba 0f00 cmp.w sl, #0 - 80148fa: f43f a892 beq.w 8013a22 <_vfprintf_r+0x4ba> - 80148fe: 9803 ldr r0, [sp, #12] - 8014900: 4651 mov r1, sl - 8014902: f7fe fb29 bl 8012f58 <_free_r> - 8014906: f7ff b88c b.w 8013a22 <_vfprintf_r+0x4ba> - 801490a: 3210 adds r2, #16 - 801490c: 2b07 cmp r3, #7 - 801490e: e9cd 3227 strd r3, r2, [sp, #156] @ 0x9c - 8014912: 6067 str r7, [r4, #4] - 8014914: dc02 bgt.n 801491c <_vfprintf_r+0x13b4> - 8014916: 3408 adds r4, #8 - 8014918: 3d10 subs r5, #16 - 801491a: e7d6 b.n 80148ca <_vfprintf_r+0x1362> - 801491c: 9803 ldr r0, [sp, #12] - 801491e: aa26 add r2, sp, #152 @ 0x98 - 8014920: 4659 mov r1, fp - 8014922: f000 f88d bl 8014a40 <__sprint_r> - 8014926: 2800 cmp r0, #0 - 8014928: d1e5 bne.n 80148f6 <_vfprintf_r+0x138e> - 801492a: ac29 add r4, sp, #164 @ 0xa4 - 801492c: e7f4 b.n 8014918 <_vfprintf_r+0x13b0> - 801492e: 9803 ldr r0, [sp, #12] - 8014930: 4651 mov r1, sl - 8014932: f7fe fb11 bl 8012f58 <_free_r> - 8014936: f7ff ba88 b.w 8013e4a <_vfprintf_r+0x8e2> - 801493a: 9b28 ldr r3, [sp, #160] @ 0xa0 - 801493c: b91b cbnz r3, 8014946 <_vfprintf_r+0x13de> - 801493e: 2300 movs r3, #0 - 8014940: 9327 str r3, [sp, #156] @ 0x9c - 8014942: f7ff b86e b.w 8013a22 <_vfprintf_r+0x4ba> - 8014946: 9803 ldr r0, [sp, #12] - 8014948: aa26 add r2, sp, #152 @ 0x98 - 801494a: 4659 mov r1, fp - 801494c: f000 f878 bl 8014a40 <__sprint_r> - 8014950: 2800 cmp r0, #0 - 8014952: d0f4 beq.n 801493e <_vfprintf_r+0x13d6> - 8014954: f7ff b865 b.w 8013a22 <_vfprintf_r+0x4ba> - 8014958: ea56 0207 orrs.w r2, r6, r7 - 801495c: 9508 str r5, [sp, #32] - 801495e: f43f ab75 beq.w 801404c <_vfprintf_r+0xae4> - 8014962: 2b01 cmp r3, #1 - 8014964: f43f abf6 beq.w 8014154 <_vfprintf_r+0xbec> - 8014968: 2b02 cmp r3, #2 - 801496a: f50d 78a4 add.w r8, sp, #328 @ 0x148 - 801496e: f43f ac3a beq.w 80141e6 <_vfprintf_r+0xc7e> - 8014972: f006 0307 and.w r3, r6, #7 - 8014976: 08f6 lsrs r6, r6, #3 - 8014978: ea46 7647 orr.w r6, r6, r7, lsl #29 - 801497c: 08ff lsrs r7, r7, #3 - 801497e: 3330 adds r3, #48 @ 0x30 - 8014980: ea56 0107 orrs.w r1, r6, r7 - 8014984: 4642 mov r2, r8 - 8014986: f808 3d01 strb.w r3, [r8, #-1]! - 801498a: d1f2 bne.n 8014972 <_vfprintf_r+0x140a> - 801498c: 9908 ldr r1, [sp, #32] - 801498e: 07ce lsls r6, r1, #31 - 8014990: d506 bpl.n 80149a0 <_vfprintf_r+0x1438> - 8014992: 2b30 cmp r3, #48 @ 0x30 - 8014994: d004 beq.n 80149a0 <_vfprintf_r+0x1438> - 8014996: 2330 movs r3, #48 @ 0x30 - 8014998: f808 3c01 strb.w r3, [r8, #-1] - 801499c: f1a2 0802 sub.w r8, r2, #2 - 80149a0: ab52 add r3, sp, #328 @ 0x148 - 80149a2: 9d08 ldr r5, [sp, #32] - 80149a4: f8cd 9040 str.w r9, [sp, #64] @ 0x40 - 80149a8: f04f 0a00 mov.w sl, #0 - 80149ac: eba3 0908 sub.w r9, r3, r8 - 80149b0: 4657 mov r7, sl - 80149b2: f8cd a020 str.w sl, [sp, #32] - 80149b6: 4656 mov r6, sl - 80149b8: f7ff b978 b.w 8013cac <_vfprintf_r+0x744> - 80149bc: 0801a73f .word 0x0801a73f - -080149c0 <__sbprintf>: - 80149c0: b5f0 push {r4, r5, r6, r7, lr} - 80149c2: 461f mov r7, r3 - 80149c4: 898b ldrh r3, [r1, #12] - 80149c6: f2ad 4d6c subw sp, sp, #1132 @ 0x46c - 80149ca: f023 0302 bic.w r3, r3, #2 - 80149ce: f8ad 300c strh.w r3, [sp, #12] - 80149d2: 6e4b ldr r3, [r1, #100] @ 0x64 - 80149d4: 9319 str r3, [sp, #100] @ 0x64 - 80149d6: 89cb ldrh r3, [r1, #14] - 80149d8: f8ad 300e strh.w r3, [sp, #14] - 80149dc: 69cb ldr r3, [r1, #28] - 80149de: 9307 str r3, [sp, #28] - 80149e0: 6a4b ldr r3, [r1, #36] @ 0x24 - 80149e2: 9309 str r3, [sp, #36] @ 0x24 - 80149e4: ab1a add r3, sp, #104 @ 0x68 - 80149e6: 9300 str r3, [sp, #0] - 80149e8: 9304 str r3, [sp, #16] - 80149ea: f44f 6380 mov.w r3, #1024 @ 0x400 - 80149ee: 4615 mov r5, r2 - 80149f0: 4606 mov r6, r0 - 80149f2: 9302 str r3, [sp, #8] - 80149f4: 9305 str r3, [sp, #20] - 80149f6: a816 add r0, sp, #88 @ 0x58 - 80149f8: 2300 movs r3, #0 - 80149fa: 460c mov r4, r1 - 80149fc: 9306 str r3, [sp, #24] - 80149fe: f7fe fa33 bl 8012e68 <__retarget_lock_init_recursive> - 8014a02: 462a mov r2, r5 - 8014a04: 463b mov r3, r7 - 8014a06: 4669 mov r1, sp - 8014a08: 4630 mov r0, r6 - 8014a0a: f7fe fdad bl 8013568 <_vfprintf_r> - 8014a0e: 1e05 subs r5, r0, #0 - 8014a10: db07 blt.n 8014a22 <__sbprintf+0x62> - 8014a12: 4669 mov r1, sp - 8014a14: 4630 mov r0, r6 - 8014a16: f000 fdeb bl 80155f0 <_fflush_r> - 8014a1a: 2800 cmp r0, #0 - 8014a1c: bf18 it ne - 8014a1e: f04f 35ff movne.w r5, #4294967295 - 8014a22: f8bd 300c ldrh.w r3, [sp, #12] - 8014a26: 9816 ldr r0, [sp, #88] @ 0x58 - 8014a28: 065b lsls r3, r3, #25 - 8014a2a: bf42 ittt mi - 8014a2c: 89a3 ldrhmi r3, [r4, #12] - 8014a2e: f043 0340 orrmi.w r3, r3, #64 @ 0x40 - 8014a32: 81a3 strhmi r3, [r4, #12] - 8014a34: f7fe fa19 bl 8012e6a <__retarget_lock_close_recursive> - 8014a38: 4628 mov r0, r5 - 8014a3a: f20d 4d6c addw sp, sp, #1132 @ 0x46c - 8014a3e: bdf0 pop {r4, r5, r6, r7, pc} - -08014a40 <__sprint_r>: - 8014a40: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8014a44: 6893 ldr r3, [r2, #8] - 8014a46: 4680 mov r8, r0 - 8014a48: 460e mov r6, r1 - 8014a4a: 4614 mov r4, r2 - 8014a4c: b343 cbz r3, 8014aa0 <__sprint_r+0x60> - 8014a4e: 6e4b ldr r3, [r1, #100] @ 0x64 - 8014a50: 049d lsls r5, r3, #18 - 8014a52: d522 bpl.n 8014a9a <__sprint_r+0x5a> - 8014a54: 6815 ldr r5, [r2, #0] - 8014a56: 68a0 ldr r0, [r4, #8] - 8014a58: 3508 adds r5, #8 - 8014a5a: b928 cbnz r0, 8014a68 <__sprint_r+0x28> - 8014a5c: 2300 movs r3, #0 - 8014a5e: 60a3 str r3, [r4, #8] - 8014a60: 2300 movs r3, #0 - 8014a62: 6063 str r3, [r4, #4] - 8014a64: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} - 8014a68: e955 b702 ldrd fp, r7, [r5, #-8] - 8014a6c: f04f 0900 mov.w r9, #0 - 8014a70: ea4f 0a97 mov.w sl, r7, lsr #2 - 8014a74: 45ca cmp sl, r9 - 8014a76: dc05 bgt.n 8014a84 <__sprint_r+0x44> - 8014a78: 68a3 ldr r3, [r4, #8] - 8014a7a: f027 0703 bic.w r7, r7, #3 - 8014a7e: 1bdb subs r3, r3, r7 - 8014a80: 60a3 str r3, [r4, #8] - 8014a82: e7e8 b.n 8014a56 <__sprint_r+0x16> - 8014a84: f85b 1029 ldr.w r1, [fp, r9, lsl #2] - 8014a88: 4632 mov r2, r6 - 8014a8a: 4640 mov r0, r8 - 8014a8c: f000 ffb9 bl 8015a02 <_fputwc_r> - 8014a90: 1c43 adds r3, r0, #1 - 8014a92: d0e3 beq.n 8014a5c <__sprint_r+0x1c> - 8014a94: f109 0901 add.w r9, r9, #1 - 8014a98: e7ec b.n 8014a74 <__sprint_r+0x34> - 8014a9a: f000 fdcf bl 801563c <__sfvwrite_r> - 8014a9e: e7dd b.n 8014a5c <__sprint_r+0x1c> - 8014aa0: 4618 mov r0, r3 - 8014aa2: e7dd b.n 8014a60 <__sprint_r+0x20> - -08014aa4 <_vfiprintf_r>: - 8014aa4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8014aa8: b0bb sub sp, #236 @ 0xec - 8014aaa: 460f mov r7, r1 - 8014aac: 4693 mov fp, r2 - 8014aae: 461c mov r4, r3 - 8014ab0: 461d mov r5, r3 - 8014ab2: 9000 str r0, [sp, #0] - 8014ab4: b118 cbz r0, 8014abe <_vfiprintf_r+0x1a> - 8014ab6: 6b43 ldr r3, [r0, #52] @ 0x34 - 8014ab8: b90b cbnz r3, 8014abe <_vfiprintf_r+0x1a> - 8014aba: f7fe f8a7 bl 8012c0c <__sinit> - 8014abe: 6e7b ldr r3, [r7, #100] @ 0x64 - 8014ac0: 07db lsls r3, r3, #31 - 8014ac2: d405 bmi.n 8014ad0 <_vfiprintf_r+0x2c> - 8014ac4: 89bb ldrh r3, [r7, #12] - 8014ac6: 059e lsls r6, r3, #22 - 8014ac8: d402 bmi.n 8014ad0 <_vfiprintf_r+0x2c> - 8014aca: 6db8 ldr r0, [r7, #88] @ 0x58 - 8014acc: f7fe f9ce bl 8012e6c <__retarget_lock_acquire_recursive> - 8014ad0: f9b7 300c ldrsh.w r3, [r7, #12] - 8014ad4: 0498 lsls r0, r3, #18 - 8014ad6: d406 bmi.n 8014ae6 <_vfiprintf_r+0x42> - 8014ad8: f443 5300 orr.w r3, r3, #8192 @ 0x2000 - 8014adc: 81bb strh r3, [r7, #12] - 8014ade: 6e7b ldr r3, [r7, #100] @ 0x64 - 8014ae0: f423 5300 bic.w r3, r3, #8192 @ 0x2000 - 8014ae4: 667b str r3, [r7, #100] @ 0x64 - 8014ae6: 89bb ldrh r3, [r7, #12] - 8014ae8: 0719 lsls r1, r3, #28 - 8014aea: d501 bpl.n 8014af0 <_vfiprintf_r+0x4c> - 8014aec: 693b ldr r3, [r7, #16] - 8014aee: b9ab cbnz r3, 8014b1c <_vfiprintf_r+0x78> - 8014af0: 9800 ldr r0, [sp, #0] - 8014af2: 4639 mov r1, r7 - 8014af4: f000 feee bl 80158d4 <__swsetup_r> - 8014af8: b180 cbz r0, 8014b1c <_vfiprintf_r+0x78> - 8014afa: 6e7b ldr r3, [r7, #100] @ 0x64 - 8014afc: 07da lsls r2, r3, #31 - 8014afe: d506 bpl.n 8014b0e <_vfiprintf_r+0x6a> - 8014b00: f04f 33ff mov.w r3, #4294967295 - 8014b04: 9303 str r3, [sp, #12] - 8014b06: 9803 ldr r0, [sp, #12] - 8014b08: b03b add sp, #236 @ 0xec - 8014b0a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 8014b0e: 89bb ldrh r3, [r7, #12] - 8014b10: 059b lsls r3, r3, #22 - 8014b12: d4f5 bmi.n 8014b00 <_vfiprintf_r+0x5c> - 8014b14: 6db8 ldr r0, [r7, #88] @ 0x58 - 8014b16: f7fe f9aa bl 8012e6e <__retarget_lock_release_recursive> - 8014b1a: e7f1 b.n 8014b00 <_vfiprintf_r+0x5c> - 8014b1c: f9b7 300c ldrsh.w r3, [r7, #12] - 8014b20: f003 021a and.w r2, r3, #26 - 8014b24: 2a0a cmp r2, #10 - 8014b26: d114 bne.n 8014b52 <_vfiprintf_r+0xae> - 8014b28: f9b7 200e ldrsh.w r2, [r7, #14] - 8014b2c: 2a00 cmp r2, #0 - 8014b2e: db10 blt.n 8014b52 <_vfiprintf_r+0xae> - 8014b30: 6e7a ldr r2, [r7, #100] @ 0x64 - 8014b32: 07d6 lsls r6, r2, #31 - 8014b34: d404 bmi.n 8014b40 <_vfiprintf_r+0x9c> - 8014b36: 059d lsls r5, r3, #22 - 8014b38: d402 bmi.n 8014b40 <_vfiprintf_r+0x9c> - 8014b3a: 6db8 ldr r0, [r7, #88] @ 0x58 - 8014b3c: f7fe f997 bl 8012e6e <__retarget_lock_release_recursive> - 8014b40: 9800 ldr r0, [sp, #0] - 8014b42: 4623 mov r3, r4 - 8014b44: 465a mov r2, fp - 8014b46: 4639 mov r1, r7 - 8014b48: b03b add sp, #236 @ 0xec - 8014b4a: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8014b4e: f000 bc31 b.w 80153b4 <__sbprintf> - 8014b52: 2300 movs r3, #0 - 8014b54: e9cd 330f strd r3, r3, [sp, #60] @ 0x3c - 8014b58: e9cd 3305 strd r3, r3, [sp, #20] - 8014b5c: ae11 add r6, sp, #68 @ 0x44 - 8014b5e: 960e str r6, [sp, #56] @ 0x38 - 8014b60: 9307 str r3, [sp, #28] - 8014b62: 9309 str r3, [sp, #36] @ 0x24 - 8014b64: 9303 str r3, [sp, #12] - 8014b66: 465b mov r3, fp - 8014b68: 461c mov r4, r3 - 8014b6a: f813 2b01 ldrb.w r2, [r3], #1 - 8014b6e: b10a cbz r2, 8014b74 <_vfiprintf_r+0xd0> - 8014b70: 2a25 cmp r2, #37 @ 0x25 - 8014b72: d1f9 bne.n 8014b68 <_vfiprintf_r+0xc4> - 8014b74: ebb4 080b subs.w r8, r4, fp - 8014b78: d00d beq.n 8014b96 <_vfiprintf_r+0xf2> - 8014b7a: 9b10 ldr r3, [sp, #64] @ 0x40 - 8014b7c: 4443 add r3, r8 - 8014b7e: 9310 str r3, [sp, #64] @ 0x40 - 8014b80: 9b0f ldr r3, [sp, #60] @ 0x3c - 8014b82: 3301 adds r3, #1 - 8014b84: 2b07 cmp r3, #7 - 8014b86: e9c6 b800 strd fp, r8, [r6] - 8014b8a: 930f str r3, [sp, #60] @ 0x3c - 8014b8c: dc75 bgt.n 8014c7a <_vfiprintf_r+0x1d6> - 8014b8e: 3608 adds r6, #8 - 8014b90: 9b03 ldr r3, [sp, #12] - 8014b92: 4443 add r3, r8 - 8014b94: 9303 str r3, [sp, #12] - 8014b96: 7823 ldrb r3, [r4, #0] - 8014b98: 2b00 cmp r3, #0 - 8014b9a: f000 83cd beq.w 8015338 <_vfiprintf_r+0x894> - 8014b9e: 2300 movs r3, #0 - 8014ba0: f04f 32ff mov.w r2, #4294967295 - 8014ba4: e9cd 2301 strd r2, r3, [sp, #4] - 8014ba8: 3401 adds r4, #1 - 8014baa: f88d 3033 strb.w r3, [sp, #51] @ 0x33 - 8014bae: 469a mov sl, r3 - 8014bb0: 46a3 mov fp, r4 - 8014bb2: f81b 3b01 ldrb.w r3, [fp], #1 - 8014bb6: f1a3 0220 sub.w r2, r3, #32 - 8014bba: 2a5a cmp r2, #90 @ 0x5a - 8014bbc: f200 8316 bhi.w 80151ec <_vfiprintf_r+0x748> - 8014bc0: e8df f012 tbh [pc, r2, lsl #1] - 8014bc4: 0314009a .word 0x0314009a - 8014bc8: 00a20314 .word 0x00a20314 - 8014bcc: 03140314 .word 0x03140314 - 8014bd0: 00820314 .word 0x00820314 - 8014bd4: 03140314 .word 0x03140314 - 8014bd8: 00af00a5 .word 0x00af00a5 - 8014bdc: 00ac0314 .word 0x00ac0314 - 8014be0: 031400b1 .word 0x031400b1 - 8014be4: 00d000cd .word 0x00d000cd - 8014be8: 00d000d0 .word 0x00d000d0 - 8014bec: 00d000d0 .word 0x00d000d0 - 8014bf0: 00d000d0 .word 0x00d000d0 - 8014bf4: 00d000d0 .word 0x00d000d0 - 8014bf8: 03140314 .word 0x03140314 - 8014bfc: 03140314 .word 0x03140314 - 8014c00: 03140314 .word 0x03140314 - 8014c04: 03140314 .word 0x03140314 - 8014c08: 00f70314 .word 0x00f70314 - 8014c0c: 03140104 .word 0x03140104 - 8014c10: 03140314 .word 0x03140314 - 8014c14: 03140314 .word 0x03140314 - 8014c18: 03140314 .word 0x03140314 - 8014c1c: 03140314 .word 0x03140314 - 8014c20: 01520314 .word 0x01520314 - 8014c24: 03140314 .word 0x03140314 - 8014c28: 019a0314 .word 0x019a0314 - 8014c2c: 027a0314 .word 0x027a0314 - 8014c30: 03140314 .word 0x03140314 - 8014c34: 0314029a .word 0x0314029a - 8014c38: 03140314 .word 0x03140314 - 8014c3c: 03140314 .word 0x03140314 - 8014c40: 03140314 .word 0x03140314 - 8014c44: 03140314 .word 0x03140314 - 8014c48: 00f70314 .word 0x00f70314 - 8014c4c: 03140106 .word 0x03140106 - 8014c50: 03140314 .word 0x03140314 - 8014c54: 010600e0 .word 0x010600e0 - 8014c58: 031400f1 .word 0x031400f1 - 8014c5c: 031400eb .word 0x031400eb - 8014c60: 01540132 .word 0x01540132 - 8014c64: 00f10189 .word 0x00f10189 - 8014c68: 019a0314 .word 0x019a0314 - 8014c6c: 027c0098 .word 0x027c0098 - 8014c70: 03140314 .word 0x03140314 - 8014c74: 03140065 .word 0x03140065 - 8014c78: 0098 .short 0x0098 - 8014c7a: 9800 ldr r0, [sp, #0] - 8014c7c: aa0e add r2, sp, #56 @ 0x38 - 8014c7e: 4639 mov r1, r7 - 8014c80: f7ff fede bl 8014a40 <__sprint_r> - 8014c84: 2800 cmp r0, #0 - 8014c86: f040 8336 bne.w 80152f6 <_vfiprintf_r+0x852> - 8014c8a: ae11 add r6, sp, #68 @ 0x44 - 8014c8c: e780 b.n 8014b90 <_vfiprintf_r+0xec> - 8014c8e: 4a99 ldr r2, [pc, #612] @ (8014ef4 <_vfiprintf_r+0x450>) - 8014c90: 9205 str r2, [sp, #20] - 8014c92: f01a 0220 ands.w r2, sl, #32 - 8014c96: f000 8231 beq.w 80150fc <_vfiprintf_r+0x658> - 8014c9a: 3507 adds r5, #7 - 8014c9c: f025 0507 bic.w r5, r5, #7 - 8014ca0: 46a8 mov r8, r5 - 8014ca2: 686d ldr r5, [r5, #4] - 8014ca4: f858 4b08 ldr.w r4, [r8], #8 - 8014ca8: f01a 0f01 tst.w sl, #1 - 8014cac: d009 beq.n 8014cc2 <_vfiprintf_r+0x21e> - 8014cae: ea54 0205 orrs.w r2, r4, r5 - 8014cb2: bf1f itttt ne - 8014cb4: 2230 movne r2, #48 @ 0x30 - 8014cb6: f88d 2034 strbne.w r2, [sp, #52] @ 0x34 - 8014cba: f88d 3035 strbne.w r3, [sp, #53] @ 0x35 - 8014cbe: f04a 0a02 orrne.w sl, sl, #2 - 8014cc2: f42a 6a80 bic.w sl, sl, #1024 @ 0x400 - 8014cc6: e112 b.n 8014eee <_vfiprintf_r+0x44a> - 8014cc8: 9800 ldr r0, [sp, #0] - 8014cca: f000 fedd bl 8015a88 <_localeconv_r> - 8014cce: 6843 ldr r3, [r0, #4] - 8014cd0: 9309 str r3, [sp, #36] @ 0x24 - 8014cd2: 4618 mov r0, r3 - 8014cd4: f7eb fa8c bl 80001f0 - 8014cd8: 9007 str r0, [sp, #28] - 8014cda: 9800 ldr r0, [sp, #0] - 8014cdc: f000 fed4 bl 8015a88 <_localeconv_r> - 8014ce0: 6883 ldr r3, [r0, #8] - 8014ce2: 9306 str r3, [sp, #24] - 8014ce4: 9b07 ldr r3, [sp, #28] - 8014ce6: b12b cbz r3, 8014cf4 <_vfiprintf_r+0x250> - 8014ce8: 9b06 ldr r3, [sp, #24] - 8014cea: b11b cbz r3, 8014cf4 <_vfiprintf_r+0x250> - 8014cec: 781b ldrb r3, [r3, #0] - 8014cee: b10b cbz r3, 8014cf4 <_vfiprintf_r+0x250> - 8014cf0: f44a 6a80 orr.w sl, sl, #1024 @ 0x400 - 8014cf4: 465c mov r4, fp - 8014cf6: e75b b.n 8014bb0 <_vfiprintf_r+0x10c> - 8014cf8: f89d 3033 ldrb.w r3, [sp, #51] @ 0x33 - 8014cfc: 2b00 cmp r3, #0 - 8014cfe: d1f9 bne.n 8014cf4 <_vfiprintf_r+0x250> - 8014d00: 2320 movs r3, #32 - 8014d02: f88d 3033 strb.w r3, [sp, #51] @ 0x33 - 8014d06: e7f5 b.n 8014cf4 <_vfiprintf_r+0x250> - 8014d08: f04a 0a01 orr.w sl, sl, #1 - 8014d0c: e7f2 b.n 8014cf4 <_vfiprintf_r+0x250> - 8014d0e: f855 3b04 ldr.w r3, [r5], #4 - 8014d12: 9302 str r3, [sp, #8] - 8014d14: 2b00 cmp r3, #0 - 8014d16: daed bge.n 8014cf4 <_vfiprintf_r+0x250> - 8014d18: 425b negs r3, r3 - 8014d1a: 9302 str r3, [sp, #8] - 8014d1c: f04a 0a04 orr.w sl, sl, #4 - 8014d20: e7e8 b.n 8014cf4 <_vfiprintf_r+0x250> - 8014d22: 232b movs r3, #43 @ 0x2b - 8014d24: e7ed b.n 8014d02 <_vfiprintf_r+0x25e> - 8014d26: 465a mov r2, fp - 8014d28: f812 3b01 ldrb.w r3, [r2], #1 - 8014d2c: 2b2a cmp r3, #42 @ 0x2a - 8014d2e: d112 bne.n 8014d56 <_vfiprintf_r+0x2b2> - 8014d30: f855 3b04 ldr.w r3, [r5], #4 - 8014d34: ea43 73e3 orr.w r3, r3, r3, asr #31 - 8014d38: 9301 str r3, [sp, #4] - 8014d3a: 4693 mov fp, r2 - 8014d3c: e7da b.n 8014cf4 <_vfiprintf_r+0x250> - 8014d3e: 9b01 ldr r3, [sp, #4] - 8014d40: fb00 1303 mla r3, r0, r3, r1 - 8014d44: 9301 str r3, [sp, #4] - 8014d46: f812 3b01 ldrb.w r3, [r2], #1 - 8014d4a: f1a3 0130 sub.w r1, r3, #48 @ 0x30 - 8014d4e: 2909 cmp r1, #9 - 8014d50: d9f5 bls.n 8014d3e <_vfiprintf_r+0x29a> - 8014d52: 4693 mov fp, r2 - 8014d54: e72f b.n 8014bb6 <_vfiprintf_r+0x112> - 8014d56: 2100 movs r1, #0 - 8014d58: 9101 str r1, [sp, #4] - 8014d5a: 200a movs r0, #10 - 8014d5c: e7f5 b.n 8014d4a <_vfiprintf_r+0x2a6> - 8014d5e: f04a 0a80 orr.w sl, sl, #128 @ 0x80 - 8014d62: e7c7 b.n 8014cf4 <_vfiprintf_r+0x250> - 8014d64: 2100 movs r1, #0 - 8014d66: 465a mov r2, fp - 8014d68: 9102 str r1, [sp, #8] - 8014d6a: 200a movs r0, #10 - 8014d6c: 9902 ldr r1, [sp, #8] - 8014d6e: 3b30 subs r3, #48 @ 0x30 - 8014d70: fb00 3301 mla r3, r0, r1, r3 - 8014d74: 9302 str r3, [sp, #8] - 8014d76: f812 3b01 ldrb.w r3, [r2], #1 - 8014d7a: f1a3 0130 sub.w r1, r3, #48 @ 0x30 - 8014d7e: 2909 cmp r1, #9 - 8014d80: d9f4 bls.n 8014d6c <_vfiprintf_r+0x2c8> - 8014d82: e7e6 b.n 8014d52 <_vfiprintf_r+0x2ae> - 8014d84: f89b 3000 ldrb.w r3, [fp] - 8014d88: 2b68 cmp r3, #104 @ 0x68 - 8014d8a: bf06 itte eq - 8014d8c: f10b 0b01 addeq.w fp, fp, #1 - 8014d90: f44a 7a00 orreq.w sl, sl, #512 @ 0x200 - 8014d94: f04a 0a40 orrne.w sl, sl, #64 @ 0x40 - 8014d98: e7ac b.n 8014cf4 <_vfiprintf_r+0x250> - 8014d9a: f89b 3000 ldrb.w r3, [fp] - 8014d9e: 2b6c cmp r3, #108 @ 0x6c - 8014da0: d104 bne.n 8014dac <_vfiprintf_r+0x308> - 8014da2: f10b 0b01 add.w fp, fp, #1 - 8014da6: f04a 0a20 orr.w sl, sl, #32 - 8014daa: e7a3 b.n 8014cf4 <_vfiprintf_r+0x250> - 8014dac: f04a 0a10 orr.w sl, sl, #16 - 8014db0: e7a0 b.n 8014cf4 <_vfiprintf_r+0x250> - 8014db2: 46a8 mov r8, r5 - 8014db4: 2400 movs r4, #0 - 8014db6: f858 3b04 ldr.w r3, [r8], #4 - 8014dba: f88d 3084 strb.w r3, [sp, #132] @ 0x84 - 8014dbe: f88d 4033 strb.w r4, [sp, #51] @ 0x33 - 8014dc2: 2301 movs r3, #1 - 8014dc4: 9301 str r3, [sp, #4] - 8014dc6: f10d 0984 add.w r9, sp, #132 @ 0x84 - 8014dca: e0ab b.n 8014f24 <_vfiprintf_r+0x480> - 8014dcc: f04a 0a10 orr.w sl, sl, #16 - 8014dd0: f01a 0f20 tst.w sl, #32 - 8014dd4: d011 beq.n 8014dfa <_vfiprintf_r+0x356> - 8014dd6: 3507 adds r5, #7 - 8014dd8: f025 0507 bic.w r5, r5, #7 - 8014ddc: 46a8 mov r8, r5 - 8014dde: 686d ldr r5, [r5, #4] - 8014de0: f858 4b08 ldr.w r4, [r8], #8 - 8014de4: 2d00 cmp r5, #0 - 8014de6: da06 bge.n 8014df6 <_vfiprintf_r+0x352> - 8014de8: 4264 negs r4, r4 - 8014dea: f04f 032d mov.w r3, #45 @ 0x2d - 8014dee: eb65 0545 sbc.w r5, r5, r5, lsl #1 - 8014df2: f88d 3033 strb.w r3, [sp, #51] @ 0x33 - 8014df6: 2301 movs r3, #1 - 8014df8: e048 b.n 8014e8c <_vfiprintf_r+0x3e8> - 8014dfa: 46a8 mov r8, r5 - 8014dfc: f01a 0f10 tst.w sl, #16 - 8014e00: f858 5b04 ldr.w r5, [r8], #4 - 8014e04: d002 beq.n 8014e0c <_vfiprintf_r+0x368> - 8014e06: 462c mov r4, r5 - 8014e08: 17ed asrs r5, r5, #31 - 8014e0a: e7eb b.n 8014de4 <_vfiprintf_r+0x340> - 8014e0c: f01a 0f40 tst.w sl, #64 @ 0x40 - 8014e10: d003 beq.n 8014e1a <_vfiprintf_r+0x376> - 8014e12: b22c sxth r4, r5 - 8014e14: f345 35c0 sbfx r5, r5, #15, #1 - 8014e18: e7e4 b.n 8014de4 <_vfiprintf_r+0x340> - 8014e1a: f41a 7f00 tst.w sl, #512 @ 0x200 - 8014e1e: d0f2 beq.n 8014e06 <_vfiprintf_r+0x362> - 8014e20: b26c sxtb r4, r5 - 8014e22: f345 15c0 sbfx r5, r5, #7, #1 - 8014e26: e7dd b.n 8014de4 <_vfiprintf_r+0x340> - 8014e28: f01a 0f20 tst.w sl, #32 - 8014e2c: d007 beq.n 8014e3e <_vfiprintf_r+0x39a> - 8014e2e: 9a03 ldr r2, [sp, #12] - 8014e30: 682b ldr r3, [r5, #0] - 8014e32: 9903 ldr r1, [sp, #12] - 8014e34: 17d2 asrs r2, r2, #31 - 8014e36: e9c3 1200 strd r1, r2, [r3] - 8014e3a: 3504 adds r5, #4 - 8014e3c: e693 b.n 8014b66 <_vfiprintf_r+0xc2> - 8014e3e: f01a 0f10 tst.w sl, #16 - 8014e42: d003 beq.n 8014e4c <_vfiprintf_r+0x3a8> - 8014e44: 682b ldr r3, [r5, #0] - 8014e46: 9a03 ldr r2, [sp, #12] - 8014e48: 601a str r2, [r3, #0] - 8014e4a: e7f6 b.n 8014e3a <_vfiprintf_r+0x396> - 8014e4c: f01a 0f40 tst.w sl, #64 @ 0x40 - 8014e50: d003 beq.n 8014e5a <_vfiprintf_r+0x3b6> - 8014e52: 682b ldr r3, [r5, #0] - 8014e54: 9a03 ldr r2, [sp, #12] - 8014e56: 801a strh r2, [r3, #0] - 8014e58: e7ef b.n 8014e3a <_vfiprintf_r+0x396> - 8014e5a: f41a 7f00 tst.w sl, #512 @ 0x200 - 8014e5e: d0f1 beq.n 8014e44 <_vfiprintf_r+0x3a0> - 8014e60: 682b ldr r3, [r5, #0] - 8014e62: 9a03 ldr r2, [sp, #12] - 8014e64: 701a strb r2, [r3, #0] - 8014e66: e7e8 b.n 8014e3a <_vfiprintf_r+0x396> - 8014e68: f04a 0a10 orr.w sl, sl, #16 - 8014e6c: f01a 0320 ands.w r3, sl, #32 - 8014e70: d01f beq.n 8014eb2 <_vfiprintf_r+0x40e> - 8014e72: 3507 adds r5, #7 - 8014e74: f025 0507 bic.w r5, r5, #7 - 8014e78: 46a8 mov r8, r5 - 8014e7a: 686d ldr r5, [r5, #4] - 8014e7c: f858 4b08 ldr.w r4, [r8], #8 - 8014e80: f42a 6a80 bic.w sl, sl, #1024 @ 0x400 - 8014e84: 2300 movs r3, #0 - 8014e86: 2200 movs r2, #0 - 8014e88: f88d 2033 strb.w r2, [sp, #51] @ 0x33 - 8014e8c: 9a01 ldr r2, [sp, #4] - 8014e8e: 3201 adds r2, #1 - 8014e90: f000 825f beq.w 8015352 <_vfiprintf_r+0x8ae> - 8014e94: f02a 0280 bic.w r2, sl, #128 @ 0x80 - 8014e98: 9204 str r2, [sp, #16] - 8014e9a: ea54 0205 orrs.w r2, r4, r5 - 8014e9e: f040 825e bne.w 801535e <_vfiprintf_r+0x8ba> - 8014ea2: 9a01 ldr r2, [sp, #4] - 8014ea4: 2a00 cmp r2, #0 - 8014ea6: f000 8198 beq.w 80151da <_vfiprintf_r+0x736> - 8014eaa: 2b01 cmp r3, #1 - 8014eac: f040 825a bne.w 8015364 <_vfiprintf_r+0x8c0> - 8014eb0: e13b b.n 801512a <_vfiprintf_r+0x686> - 8014eb2: 46a8 mov r8, r5 - 8014eb4: f01a 0510 ands.w r5, sl, #16 - 8014eb8: f858 4b04 ldr.w r4, [r8], #4 - 8014ebc: d001 beq.n 8014ec2 <_vfiprintf_r+0x41e> - 8014ebe: 461d mov r5, r3 - 8014ec0: e7de b.n 8014e80 <_vfiprintf_r+0x3dc> - 8014ec2: f01a 0340 ands.w r3, sl, #64 @ 0x40 - 8014ec6: d001 beq.n 8014ecc <_vfiprintf_r+0x428> - 8014ec8: b2a4 uxth r4, r4 - 8014eca: e7d9 b.n 8014e80 <_vfiprintf_r+0x3dc> - 8014ecc: f41a 7500 ands.w r5, sl, #512 @ 0x200 - 8014ed0: d0d6 beq.n 8014e80 <_vfiprintf_r+0x3dc> - 8014ed2: b2e4 uxtb r4, r4 - 8014ed4: e7f3 b.n 8014ebe <_vfiprintf_r+0x41a> - 8014ed6: 46a8 mov r8, r5 - 8014ed8: f647 0330 movw r3, #30768 @ 0x7830 - 8014edc: f8ad 3034 strh.w r3, [sp, #52] @ 0x34 - 8014ee0: f858 4b04 ldr.w r4, [r8], #4 - 8014ee4: 4b03 ldr r3, [pc, #12] @ (8014ef4 <_vfiprintf_r+0x450>) - 8014ee6: 9305 str r3, [sp, #20] - 8014ee8: 2500 movs r5, #0 - 8014eea: f04a 0a02 orr.w sl, sl, #2 - 8014eee: 2302 movs r3, #2 - 8014ef0: e7c9 b.n 8014e86 <_vfiprintf_r+0x3e2> - 8014ef2: bf00 nop - 8014ef4: 0801a70b .word 0x0801a70b - 8014ef8: 9b01 ldr r3, [sp, #4] - 8014efa: 46a8 mov r8, r5 - 8014efc: 1c5c adds r4, r3, #1 - 8014efe: f04f 0500 mov.w r5, #0 - 8014f02: f858 9b04 ldr.w r9, [r8], #4 - 8014f06: f88d 5033 strb.w r5, [sp, #51] @ 0x33 - 8014f0a: f000 80d0 beq.w 80150ae <_vfiprintf_r+0x60a> - 8014f0e: 461a mov r2, r3 - 8014f10: 4629 mov r1, r5 - 8014f12: 4648 mov r0, r9 - 8014f14: f7eb f974 bl 8000200 - 8014f18: 4604 mov r4, r0 - 8014f1a: b118 cbz r0, 8014f24 <_vfiprintf_r+0x480> - 8014f1c: eba0 0309 sub.w r3, r0, r9 - 8014f20: 9301 str r3, [sp, #4] - 8014f22: 462c mov r4, r5 - 8014f24: 9b01 ldr r3, [sp, #4] - 8014f26: 42a3 cmp r3, r4 - 8014f28: bfb8 it lt - 8014f2a: 4623 movlt r3, r4 - 8014f2c: 9304 str r3, [sp, #16] - 8014f2e: f89d 3033 ldrb.w r3, [sp, #51] @ 0x33 - 8014f32: b113 cbz r3, 8014f3a <_vfiprintf_r+0x496> - 8014f34: 9b04 ldr r3, [sp, #16] - 8014f36: 3301 adds r3, #1 - 8014f38: 9304 str r3, [sp, #16] - 8014f3a: f01a 0302 ands.w r3, sl, #2 - 8014f3e: 9308 str r3, [sp, #32] - 8014f40: bf1e ittt ne - 8014f42: 9b04 ldrne r3, [sp, #16] - 8014f44: 3302 addne r3, #2 - 8014f46: 9304 strne r3, [sp, #16] - 8014f48: f01a 0384 ands.w r3, sl, #132 @ 0x84 - 8014f4c: 930a str r3, [sp, #40] @ 0x28 - 8014f4e: d11f bne.n 8014f90 <_vfiprintf_r+0x4ec> - 8014f50: 9b02 ldr r3, [sp, #8] - 8014f52: 9a04 ldr r2, [sp, #16] - 8014f54: 1a9d subs r5, r3, r2 - 8014f56: 2d00 cmp r5, #0 - 8014f58: dd1a ble.n 8014f90 <_vfiprintf_r+0x4ec> - 8014f5a: 4ba9 ldr r3, [pc, #676] @ (8015200 <_vfiprintf_r+0x75c>) - 8014f5c: 6033 str r3, [r6, #0] - 8014f5e: e9dd 2c0f ldrd r2, ip, [sp, #60] @ 0x3c - 8014f62: 2d10 cmp r5, #16 - 8014f64: f102 0201 add.w r2, r2, #1 - 8014f68: f106 0008 add.w r0, r6, #8 - 8014f6c: f300 814e bgt.w 801520c <_vfiprintf_r+0x768> - 8014f70: 6075 str r5, [r6, #4] - 8014f72: 2a07 cmp r2, #7 - 8014f74: 4465 add r5, ip - 8014f76: e9cd 250f strd r2, r5, [sp, #60] @ 0x3c - 8014f7a: f340 815a ble.w 8015232 <_vfiprintf_r+0x78e> - 8014f7e: 9800 ldr r0, [sp, #0] - 8014f80: aa0e add r2, sp, #56 @ 0x38 - 8014f82: 4639 mov r1, r7 - 8014f84: f7ff fd5c bl 8014a40 <__sprint_r> - 8014f88: 2800 cmp r0, #0 - 8014f8a: f040 81b4 bne.w 80152f6 <_vfiprintf_r+0x852> - 8014f8e: ae11 add r6, sp, #68 @ 0x44 - 8014f90: f89d 1033 ldrb.w r1, [sp, #51] @ 0x33 - 8014f94: e9dd 320f ldrd r3, r2, [sp, #60] @ 0x3c - 8014f98: b161 cbz r1, 8014fb4 <_vfiprintf_r+0x510> - 8014f9a: f10d 0133 add.w r1, sp, #51 @ 0x33 - 8014f9e: 3301 adds r3, #1 - 8014fa0: 6031 str r1, [r6, #0] - 8014fa2: 2101 movs r1, #1 - 8014fa4: 440a add r2, r1 - 8014fa6: 2b07 cmp r3, #7 - 8014fa8: e9cd 320f strd r3, r2, [sp, #60] @ 0x3c - 8014fac: 6071 str r1, [r6, #4] - 8014fae: f300 8142 bgt.w 8015236 <_vfiprintf_r+0x792> - 8014fb2: 3608 adds r6, #8 - 8014fb4: 9908 ldr r1, [sp, #32] - 8014fb6: e9dd 320f ldrd r3, r2, [sp, #60] @ 0x3c - 8014fba: b159 cbz r1, 8014fd4 <_vfiprintf_r+0x530> - 8014fbc: a90d add r1, sp, #52 @ 0x34 - 8014fbe: 3301 adds r3, #1 - 8014fc0: 6031 str r1, [r6, #0] - 8014fc2: 2102 movs r1, #2 - 8014fc4: 440a add r2, r1 - 8014fc6: 2b07 cmp r3, #7 - 8014fc8: e9cd 320f strd r3, r2, [sp, #60] @ 0x3c - 8014fcc: 6071 str r1, [r6, #4] - 8014fce: f300 813b bgt.w 8015248 <_vfiprintf_r+0x7a4> - 8014fd2: 3608 adds r6, #8 - 8014fd4: 9b0a ldr r3, [sp, #40] @ 0x28 - 8014fd6: 2b80 cmp r3, #128 @ 0x80 - 8014fd8: d11f bne.n 801501a <_vfiprintf_r+0x576> - 8014fda: 9b02 ldr r3, [sp, #8] - 8014fdc: 9a04 ldr r2, [sp, #16] - 8014fde: 1a9d subs r5, r3, r2 - 8014fe0: 2d00 cmp r5, #0 - 8014fe2: dd1a ble.n 801501a <_vfiprintf_r+0x576> - 8014fe4: 4b87 ldr r3, [pc, #540] @ (8015204 <_vfiprintf_r+0x760>) - 8014fe6: 6033 str r3, [r6, #0] - 8014fe8: e9dd 2c0f ldrd r2, ip, [sp, #60] @ 0x3c - 8014fec: 2d10 cmp r5, #16 - 8014fee: f102 0201 add.w r2, r2, #1 - 8014ff2: f106 0008 add.w r0, r6, #8 - 8014ff6: f300 8130 bgt.w 801525a <_vfiprintf_r+0x7b6> - 8014ffa: 6075 str r5, [r6, #4] - 8014ffc: 2a07 cmp r2, #7 - 8014ffe: 4465 add r5, ip - 8015000: e9cd 250f strd r2, r5, [sp, #60] @ 0x3c - 8015004: f340 813c ble.w 8015280 <_vfiprintf_r+0x7dc> - 8015008: 9800 ldr r0, [sp, #0] - 801500a: aa0e add r2, sp, #56 @ 0x38 - 801500c: 4639 mov r1, r7 - 801500e: f7ff fd17 bl 8014a40 <__sprint_r> - 8015012: 2800 cmp r0, #0 - 8015014: f040 816f bne.w 80152f6 <_vfiprintf_r+0x852> - 8015018: ae11 add r6, sp, #68 @ 0x44 - 801501a: 9b01 ldr r3, [sp, #4] - 801501c: 1ae4 subs r4, r4, r3 - 801501e: 2c00 cmp r4, #0 - 8015020: dd1a ble.n 8015058 <_vfiprintf_r+0x5b4> - 8015022: e9dd 320f ldrd r3, r2, [sp, #60] @ 0x3c - 8015026: 4877 ldr r0, [pc, #476] @ (8015204 <_vfiprintf_r+0x760>) - 8015028: 6030 str r0, [r6, #0] - 801502a: 2c10 cmp r4, #16 - 801502c: f103 0301 add.w r3, r3, #1 - 8015030: f106 0108 add.w r1, r6, #8 - 8015034: f300 8126 bgt.w 8015284 <_vfiprintf_r+0x7e0> - 8015038: 6074 str r4, [r6, #4] - 801503a: 2b07 cmp r3, #7 - 801503c: 4414 add r4, r2 - 801503e: e9cd 340f strd r3, r4, [sp, #60] @ 0x3c - 8015042: f340 8130 ble.w 80152a6 <_vfiprintf_r+0x802> - 8015046: 9800 ldr r0, [sp, #0] - 8015048: aa0e add r2, sp, #56 @ 0x38 - 801504a: 4639 mov r1, r7 - 801504c: f7ff fcf8 bl 8014a40 <__sprint_r> - 8015050: 2800 cmp r0, #0 - 8015052: f040 8150 bne.w 80152f6 <_vfiprintf_r+0x852> - 8015056: ae11 add r6, sp, #68 @ 0x44 - 8015058: 9b01 ldr r3, [sp, #4] - 801505a: 9a01 ldr r2, [sp, #4] - 801505c: 6073 str r3, [r6, #4] - 801505e: 9b10 ldr r3, [sp, #64] @ 0x40 - 8015060: f8c6 9000 str.w r9, [r6] - 8015064: 4413 add r3, r2 - 8015066: 9310 str r3, [sp, #64] @ 0x40 - 8015068: 9b0f ldr r3, [sp, #60] @ 0x3c - 801506a: 3301 adds r3, #1 - 801506c: 2b07 cmp r3, #7 - 801506e: 930f str r3, [sp, #60] @ 0x3c - 8015070: f300 811b bgt.w 80152aa <_vfiprintf_r+0x806> - 8015074: f106 0308 add.w r3, r6, #8 - 8015078: f01a 0f04 tst.w sl, #4 - 801507c: f040 811d bne.w 80152ba <_vfiprintf_r+0x816> - 8015080: e9dd 2302 ldrd r2, r3, [sp, #8] - 8015084: 9904 ldr r1, [sp, #16] - 8015086: 428a cmp r2, r1 - 8015088: bfac ite ge - 801508a: 189b addge r3, r3, r2 - 801508c: 185b addlt r3, r3, r1 - 801508e: 9303 str r3, [sp, #12] - 8015090: 9b10 ldr r3, [sp, #64] @ 0x40 - 8015092: b13b cbz r3, 80150a4 <_vfiprintf_r+0x600> - 8015094: 9800 ldr r0, [sp, #0] - 8015096: aa0e add r2, sp, #56 @ 0x38 - 8015098: 4639 mov r1, r7 - 801509a: f7ff fcd1 bl 8014a40 <__sprint_r> - 801509e: 2800 cmp r0, #0 - 80150a0: f040 8129 bne.w 80152f6 <_vfiprintf_r+0x852> - 80150a4: 2300 movs r3, #0 - 80150a6: 930f str r3, [sp, #60] @ 0x3c - 80150a8: 4645 mov r5, r8 - 80150aa: ae11 add r6, sp, #68 @ 0x44 - 80150ac: e55b b.n 8014b66 <_vfiprintf_r+0xc2> - 80150ae: 4648 mov r0, r9 - 80150b0: f7eb f89e bl 80001f0 - 80150b4: 9001 str r0, [sp, #4] - 80150b6: e734 b.n 8014f22 <_vfiprintf_r+0x47e> - 80150b8: f04a 0a10 orr.w sl, sl, #16 - 80150bc: f01a 0320 ands.w r3, sl, #32 - 80150c0: d008 beq.n 80150d4 <_vfiprintf_r+0x630> - 80150c2: 3507 adds r5, #7 - 80150c4: f025 0507 bic.w r5, r5, #7 - 80150c8: 46a8 mov r8, r5 - 80150ca: 686d ldr r5, [r5, #4] - 80150cc: f858 4b08 ldr.w r4, [r8], #8 - 80150d0: 2301 movs r3, #1 - 80150d2: e6d8 b.n 8014e86 <_vfiprintf_r+0x3e2> - 80150d4: 46a8 mov r8, r5 - 80150d6: f01a 0510 ands.w r5, sl, #16 - 80150da: f858 4b04 ldr.w r4, [r8], #4 - 80150de: d001 beq.n 80150e4 <_vfiprintf_r+0x640> - 80150e0: 461d mov r5, r3 - 80150e2: e7f5 b.n 80150d0 <_vfiprintf_r+0x62c> - 80150e4: f01a 0340 ands.w r3, sl, #64 @ 0x40 - 80150e8: d001 beq.n 80150ee <_vfiprintf_r+0x64a> - 80150ea: b2a4 uxth r4, r4 - 80150ec: e7f0 b.n 80150d0 <_vfiprintf_r+0x62c> - 80150ee: f41a 7500 ands.w r5, sl, #512 @ 0x200 - 80150f2: d0ed beq.n 80150d0 <_vfiprintf_r+0x62c> - 80150f4: b2e4 uxtb r4, r4 - 80150f6: e7f3 b.n 80150e0 <_vfiprintf_r+0x63c> - 80150f8: 4a43 ldr r2, [pc, #268] @ (8015208 <_vfiprintf_r+0x764>) - 80150fa: e5c9 b.n 8014c90 <_vfiprintf_r+0x1ec> - 80150fc: 46a8 mov r8, r5 - 80150fe: f01a 0510 ands.w r5, sl, #16 - 8015102: f858 4b04 ldr.w r4, [r8], #4 - 8015106: d001 beq.n 801510c <_vfiprintf_r+0x668> - 8015108: 4615 mov r5, r2 - 801510a: e5cd b.n 8014ca8 <_vfiprintf_r+0x204> - 801510c: f01a 0240 ands.w r2, sl, #64 @ 0x40 - 8015110: d001 beq.n 8015116 <_vfiprintf_r+0x672> - 8015112: b2a4 uxth r4, r4 - 8015114: e5c8 b.n 8014ca8 <_vfiprintf_r+0x204> - 8015116: f41a 7500 ands.w r5, sl, #512 @ 0x200 - 801511a: f43f adc5 beq.w 8014ca8 <_vfiprintf_r+0x204> - 801511e: b2e4 uxtb r4, r4 - 8015120: e7f2 b.n 8015108 <_vfiprintf_r+0x664> - 8015122: 2c0a cmp r4, #10 - 8015124: f175 0300 sbcs.w r3, r5, #0 - 8015128: d206 bcs.n 8015138 <_vfiprintf_r+0x694> - 801512a: 3430 adds r4, #48 @ 0x30 - 801512c: b2e4 uxtb r4, r4 - 801512e: f88d 40e7 strb.w r4, [sp, #231] @ 0xe7 - 8015132: f10d 09e7 add.w r9, sp, #231 @ 0xe7 - 8015136: e131 b.n 801539c <_vfiprintf_r+0x8f8> - 8015138: ab3a add r3, sp, #232 @ 0xe8 - 801513a: 9308 str r3, [sp, #32] - 801513c: 9b04 ldr r3, [sp, #16] - 801513e: f403 6380 and.w r3, r3, #1024 @ 0x400 - 8015142: f04f 0a00 mov.w sl, #0 - 8015146: 930a str r3, [sp, #40] @ 0x28 - 8015148: 220a movs r2, #10 - 801514a: 2300 movs r3, #0 - 801514c: 4620 mov r0, r4 - 801514e: 4629 mov r1, r5 - 8015150: f7eb fd3a bl 8000bc8 <__aeabi_uldivmod> - 8015154: 460b mov r3, r1 - 8015156: 9908 ldr r1, [sp, #32] - 8015158: 900b str r0, [sp, #44] @ 0x2c - 801515a: 3230 adds r2, #48 @ 0x30 - 801515c: f801 2c01 strb.w r2, [r1, #-1] - 8015160: 9a0a ldr r2, [sp, #40] @ 0x28 - 8015162: f101 39ff add.w r9, r1, #4294967295 - 8015166: f10a 0a01 add.w sl, sl, #1 - 801516a: b1e2 cbz r2, 80151a6 <_vfiprintf_r+0x702> - 801516c: 9a06 ldr r2, [sp, #24] - 801516e: 7812 ldrb r2, [r2, #0] - 8015170: 4552 cmp r2, sl - 8015172: d118 bne.n 80151a6 <_vfiprintf_r+0x702> - 8015174: f1ba 0fff cmp.w sl, #255 @ 0xff - 8015178: d015 beq.n 80151a6 <_vfiprintf_r+0x702> - 801517a: 2c0a cmp r4, #10 - 801517c: f175 0200 sbcs.w r2, r5, #0 - 8015180: d311 bcc.n 80151a6 <_vfiprintf_r+0x702> - 8015182: 9308 str r3, [sp, #32] - 8015184: 9b07 ldr r3, [sp, #28] - 8015186: 9909 ldr r1, [sp, #36] @ 0x24 - 8015188: eba9 0903 sub.w r9, r9, r3 - 801518c: 461a mov r2, r3 - 801518e: 4648 mov r0, r9 - 8015190: f000 fc60 bl 8015a54 - 8015194: 9b06 ldr r3, [sp, #24] - 8015196: 785a ldrb r2, [r3, #1] - 8015198: 9b08 ldr r3, [sp, #32] - 801519a: b172 cbz r2, 80151ba <_vfiprintf_r+0x716> - 801519c: 9a06 ldr r2, [sp, #24] - 801519e: 3201 adds r2, #1 - 80151a0: 9206 str r2, [sp, #24] - 80151a2: f04f 0a00 mov.w sl, #0 - 80151a6: 2c0a cmp r4, #10 - 80151a8: f175 0500 sbcs.w r5, r5, #0 - 80151ac: f0c0 80f6 bcc.w 801539c <_vfiprintf_r+0x8f8> - 80151b0: 9c0b ldr r4, [sp, #44] @ 0x2c - 80151b2: f8cd 9020 str.w r9, [sp, #32] - 80151b6: 461d mov r5, r3 - 80151b8: e7c6 b.n 8015148 <_vfiprintf_r+0x6a4> - 80151ba: 4692 mov sl, r2 - 80151bc: e7f3 b.n 80151a6 <_vfiprintf_r+0x702> - 80151be: f004 030f and.w r3, r4, #15 - 80151c2: 9a05 ldr r2, [sp, #20] - 80151c4: 0924 lsrs r4, r4, #4 - 80151c6: 5cd3 ldrb r3, [r2, r3] - 80151c8: f809 3d01 strb.w r3, [r9, #-1]! - 80151cc: ea44 7405 orr.w r4, r4, r5, lsl #28 - 80151d0: 092d lsrs r5, r5, #4 - 80151d2: ea54 0305 orrs.w r3, r4, r5 - 80151d6: d1f2 bne.n 80151be <_vfiprintf_r+0x71a> - 80151d8: e0e0 b.n 801539c <_vfiprintf_r+0x8f8> - 80151da: b923 cbnz r3, 80151e6 <_vfiprintf_r+0x742> - 80151dc: f01a 0f01 tst.w sl, #1 - 80151e0: d001 beq.n 80151e6 <_vfiprintf_r+0x742> - 80151e2: 2430 movs r4, #48 @ 0x30 - 80151e4: e7a3 b.n 801512e <_vfiprintf_r+0x68a> - 80151e6: f10d 09e8 add.w r9, sp, #232 @ 0xe8 - 80151ea: e0d7 b.n 801539c <_vfiprintf_r+0x8f8> - 80151ec: 2b00 cmp r3, #0 - 80151ee: f000 80a3 beq.w 8015338 <_vfiprintf_r+0x894> - 80151f2: 2400 movs r4, #0 - 80151f4: f88d 3084 strb.w r3, [sp, #132] @ 0x84 - 80151f8: f88d 4033 strb.w r4, [sp, #51] @ 0x33 - 80151fc: 46a8 mov r8, r5 - 80151fe: e5e0 b.n 8014dc2 <_vfiprintf_r+0x31e> - 8015200: 0801a75f .word 0x0801a75f - 8015204: 0801a74f .word 0x0801a74f - 8015208: 0801a71c .word 0x0801a71c - 801520c: 2110 movs r1, #16 - 801520e: 6071 str r1, [r6, #4] - 8015210: 2a07 cmp r2, #7 - 8015212: 4461 add r1, ip - 8015214: e9cd 210f strd r2, r1, [sp, #60] @ 0x3c - 8015218: dd08 ble.n 801522c <_vfiprintf_r+0x788> - 801521a: 9800 ldr r0, [sp, #0] - 801521c: aa0e add r2, sp, #56 @ 0x38 - 801521e: 4639 mov r1, r7 - 8015220: f7ff fc0e bl 8014a40 <__sprint_r> - 8015224: 2800 cmp r0, #0 - 8015226: d166 bne.n 80152f6 <_vfiprintf_r+0x852> - 8015228: 4b60 ldr r3, [pc, #384] @ (80153ac <_vfiprintf_r+0x908>) - 801522a: a811 add r0, sp, #68 @ 0x44 - 801522c: 3d10 subs r5, #16 - 801522e: 4606 mov r6, r0 - 8015230: e694 b.n 8014f5c <_vfiprintf_r+0x4b8> - 8015232: 4606 mov r6, r0 - 8015234: e6ac b.n 8014f90 <_vfiprintf_r+0x4ec> - 8015236: 9800 ldr r0, [sp, #0] - 8015238: aa0e add r2, sp, #56 @ 0x38 - 801523a: 4639 mov r1, r7 - 801523c: f7ff fc00 bl 8014a40 <__sprint_r> - 8015240: 2800 cmp r0, #0 - 8015242: d158 bne.n 80152f6 <_vfiprintf_r+0x852> - 8015244: ae11 add r6, sp, #68 @ 0x44 - 8015246: e6b5 b.n 8014fb4 <_vfiprintf_r+0x510> - 8015248: 9800 ldr r0, [sp, #0] - 801524a: aa0e add r2, sp, #56 @ 0x38 - 801524c: 4639 mov r1, r7 - 801524e: f7ff fbf7 bl 8014a40 <__sprint_r> - 8015252: 2800 cmp r0, #0 - 8015254: d14f bne.n 80152f6 <_vfiprintf_r+0x852> - 8015256: ae11 add r6, sp, #68 @ 0x44 - 8015258: e6bc b.n 8014fd4 <_vfiprintf_r+0x530> - 801525a: 2110 movs r1, #16 - 801525c: 6071 str r1, [r6, #4] - 801525e: 2a07 cmp r2, #7 - 8015260: 4461 add r1, ip - 8015262: e9cd 210f strd r2, r1, [sp, #60] @ 0x3c - 8015266: dd08 ble.n 801527a <_vfiprintf_r+0x7d6> - 8015268: 9800 ldr r0, [sp, #0] - 801526a: aa0e add r2, sp, #56 @ 0x38 - 801526c: 4639 mov r1, r7 - 801526e: f7ff fbe7 bl 8014a40 <__sprint_r> - 8015272: 2800 cmp r0, #0 - 8015274: d13f bne.n 80152f6 <_vfiprintf_r+0x852> - 8015276: 4b4e ldr r3, [pc, #312] @ (80153b0 <_vfiprintf_r+0x90c>) - 8015278: a811 add r0, sp, #68 @ 0x44 - 801527a: 3d10 subs r5, #16 - 801527c: 4606 mov r6, r0 - 801527e: e6b2 b.n 8014fe6 <_vfiprintf_r+0x542> - 8015280: 4606 mov r6, r0 - 8015282: e6ca b.n 801501a <_vfiprintf_r+0x576> - 8015284: 2010 movs r0, #16 - 8015286: 4402 add r2, r0 - 8015288: 2b07 cmp r3, #7 - 801528a: e9cd 320f strd r3, r2, [sp, #60] @ 0x3c - 801528e: 6070 str r0, [r6, #4] - 8015290: dd06 ble.n 80152a0 <_vfiprintf_r+0x7fc> - 8015292: 9800 ldr r0, [sp, #0] - 8015294: aa0e add r2, sp, #56 @ 0x38 - 8015296: 4639 mov r1, r7 - 8015298: f7ff fbd2 bl 8014a40 <__sprint_r> - 801529c: bb58 cbnz r0, 80152f6 <_vfiprintf_r+0x852> - 801529e: a911 add r1, sp, #68 @ 0x44 - 80152a0: 3c10 subs r4, #16 - 80152a2: 460e mov r6, r1 - 80152a4: e6bd b.n 8015022 <_vfiprintf_r+0x57e> - 80152a6: 460e mov r6, r1 - 80152a8: e6d6 b.n 8015058 <_vfiprintf_r+0x5b4> - 80152aa: 9800 ldr r0, [sp, #0] - 80152ac: aa0e add r2, sp, #56 @ 0x38 - 80152ae: 4639 mov r1, r7 - 80152b0: f7ff fbc6 bl 8014a40 <__sprint_r> - 80152b4: b9f8 cbnz r0, 80152f6 <_vfiprintf_r+0x852> - 80152b6: ab11 add r3, sp, #68 @ 0x44 - 80152b8: e6de b.n 8015078 <_vfiprintf_r+0x5d4> - 80152ba: 9a02 ldr r2, [sp, #8] - 80152bc: 9904 ldr r1, [sp, #16] - 80152be: 1a54 subs r4, r2, r1 - 80152c0: 2c00 cmp r4, #0 - 80152c2: f77f aedd ble.w 8015080 <_vfiprintf_r+0x5dc> - 80152c6: 4d39 ldr r5, [pc, #228] @ (80153ac <_vfiprintf_r+0x908>) - 80152c8: 2610 movs r6, #16 - 80152ca: e9dd 210f ldrd r2, r1, [sp, #60] @ 0x3c - 80152ce: 2c10 cmp r4, #16 - 80152d0: f102 0201 add.w r2, r2, #1 - 80152d4: 601d str r5, [r3, #0] - 80152d6: dc1d bgt.n 8015314 <_vfiprintf_r+0x870> - 80152d8: 605c str r4, [r3, #4] - 80152da: 2a07 cmp r2, #7 - 80152dc: 440c add r4, r1 - 80152de: e9cd 240f strd r2, r4, [sp, #60] @ 0x3c - 80152e2: f77f aecd ble.w 8015080 <_vfiprintf_r+0x5dc> - 80152e6: 9800 ldr r0, [sp, #0] - 80152e8: aa0e add r2, sp, #56 @ 0x38 - 80152ea: 4639 mov r1, r7 - 80152ec: f7ff fba8 bl 8014a40 <__sprint_r> - 80152f0: 2800 cmp r0, #0 - 80152f2: f43f aec5 beq.w 8015080 <_vfiprintf_r+0x5dc> - 80152f6: 6e7b ldr r3, [r7, #100] @ 0x64 - 80152f8: 07d9 lsls r1, r3, #31 - 80152fa: d405 bmi.n 8015308 <_vfiprintf_r+0x864> - 80152fc: 89bb ldrh r3, [r7, #12] - 80152fe: 059a lsls r2, r3, #22 - 8015300: d402 bmi.n 8015308 <_vfiprintf_r+0x864> - 8015302: 6db8 ldr r0, [r7, #88] @ 0x58 - 8015304: f7fd fdb3 bl 8012e6e <__retarget_lock_release_recursive> - 8015308: 89bb ldrh r3, [r7, #12] - 801530a: 065b lsls r3, r3, #25 - 801530c: f57f abfb bpl.w 8014b06 <_vfiprintf_r+0x62> - 8015310: f7ff bbf6 b.w 8014b00 <_vfiprintf_r+0x5c> - 8015314: 3110 adds r1, #16 - 8015316: 2a07 cmp r2, #7 - 8015318: e9cd 210f strd r2, r1, [sp, #60] @ 0x3c - 801531c: 605e str r6, [r3, #4] - 801531e: dc02 bgt.n 8015326 <_vfiprintf_r+0x882> - 8015320: 3308 adds r3, #8 - 8015322: 3c10 subs r4, #16 - 8015324: e7d1 b.n 80152ca <_vfiprintf_r+0x826> - 8015326: 9800 ldr r0, [sp, #0] - 8015328: aa0e add r2, sp, #56 @ 0x38 - 801532a: 4639 mov r1, r7 - 801532c: f7ff fb88 bl 8014a40 <__sprint_r> - 8015330: 2800 cmp r0, #0 - 8015332: d1e0 bne.n 80152f6 <_vfiprintf_r+0x852> - 8015334: ab11 add r3, sp, #68 @ 0x44 - 8015336: e7f4 b.n 8015322 <_vfiprintf_r+0x87e> - 8015338: 9b10 ldr r3, [sp, #64] @ 0x40 - 801533a: b913 cbnz r3, 8015342 <_vfiprintf_r+0x89e> - 801533c: 2300 movs r3, #0 - 801533e: 930f str r3, [sp, #60] @ 0x3c - 8015340: e7d9 b.n 80152f6 <_vfiprintf_r+0x852> - 8015342: 9800 ldr r0, [sp, #0] - 8015344: aa0e add r2, sp, #56 @ 0x38 - 8015346: 4639 mov r1, r7 - 8015348: f7ff fb7a bl 8014a40 <__sprint_r> - 801534c: 2800 cmp r0, #0 - 801534e: d0f5 beq.n 801533c <_vfiprintf_r+0x898> - 8015350: e7d1 b.n 80152f6 <_vfiprintf_r+0x852> - 8015352: ea54 0205 orrs.w r2, r4, r5 - 8015356: f8cd a010 str.w sl, [sp, #16] - 801535a: f43f ada6 beq.w 8014eaa <_vfiprintf_r+0x406> - 801535e: 2b01 cmp r3, #1 - 8015360: f43f aedf beq.w 8015122 <_vfiprintf_r+0x67e> - 8015364: 2b02 cmp r3, #2 - 8015366: f10d 09e8 add.w r9, sp, #232 @ 0xe8 - 801536a: f43f af28 beq.w 80151be <_vfiprintf_r+0x71a> - 801536e: f004 0307 and.w r3, r4, #7 - 8015372: 08e4 lsrs r4, r4, #3 - 8015374: ea44 7445 orr.w r4, r4, r5, lsl #29 - 8015378: 08ed lsrs r5, r5, #3 - 801537a: 3330 adds r3, #48 @ 0x30 - 801537c: ea54 0105 orrs.w r1, r4, r5 - 8015380: 464a mov r2, r9 - 8015382: f809 3d01 strb.w r3, [r9, #-1]! - 8015386: d1f2 bne.n 801536e <_vfiprintf_r+0x8ca> - 8015388: 9904 ldr r1, [sp, #16] - 801538a: 07c8 lsls r0, r1, #31 - 801538c: d506 bpl.n 801539c <_vfiprintf_r+0x8f8> - 801538e: 2b30 cmp r3, #48 @ 0x30 - 8015390: d004 beq.n 801539c <_vfiprintf_r+0x8f8> - 8015392: 2330 movs r3, #48 @ 0x30 - 8015394: f809 3c01 strb.w r3, [r9, #-1] - 8015398: f1a2 0902 sub.w r9, r2, #2 - 801539c: ab3a add r3, sp, #232 @ 0xe8 - 801539e: eba3 0309 sub.w r3, r3, r9 - 80153a2: 9c01 ldr r4, [sp, #4] - 80153a4: f8dd a010 ldr.w sl, [sp, #16] - 80153a8: 9301 str r3, [sp, #4] - 80153aa: e5bb b.n 8014f24 <_vfiprintf_r+0x480> - 80153ac: 0801a75f .word 0x0801a75f - 80153b0: 0801a74f .word 0x0801a74f - -080153b4 <__sbprintf>: - 80153b4: b5f0 push {r4, r5, r6, r7, lr} - 80153b6: 461f mov r7, r3 - 80153b8: 898b ldrh r3, [r1, #12] - 80153ba: f2ad 4d6c subw sp, sp, #1132 @ 0x46c - 80153be: f023 0302 bic.w r3, r3, #2 - 80153c2: f8ad 300c strh.w r3, [sp, #12] - 80153c6: 6e4b ldr r3, [r1, #100] @ 0x64 - 80153c8: 9319 str r3, [sp, #100] @ 0x64 - 80153ca: 89cb ldrh r3, [r1, #14] - 80153cc: f8ad 300e strh.w r3, [sp, #14] - 80153d0: 69cb ldr r3, [r1, #28] - 80153d2: 9307 str r3, [sp, #28] - 80153d4: 6a4b ldr r3, [r1, #36] @ 0x24 - 80153d6: 9309 str r3, [sp, #36] @ 0x24 - 80153d8: ab1a add r3, sp, #104 @ 0x68 - 80153da: 9300 str r3, [sp, #0] - 80153dc: 9304 str r3, [sp, #16] - 80153de: f44f 6380 mov.w r3, #1024 @ 0x400 - 80153e2: 4615 mov r5, r2 - 80153e4: 4606 mov r6, r0 - 80153e6: 9302 str r3, [sp, #8] - 80153e8: 9305 str r3, [sp, #20] - 80153ea: a816 add r0, sp, #88 @ 0x58 - 80153ec: 2300 movs r3, #0 - 80153ee: 460c mov r4, r1 - 80153f0: 9306 str r3, [sp, #24] - 80153f2: f7fd fd39 bl 8012e68 <__retarget_lock_init_recursive> - 80153f6: 462a mov r2, r5 - 80153f8: 463b mov r3, r7 - 80153fa: 4669 mov r1, sp - 80153fc: 4630 mov r0, r6 - 80153fe: f7ff fb51 bl 8014aa4 <_vfiprintf_r> - 8015402: 1e05 subs r5, r0, #0 - 8015404: db07 blt.n 8015416 <__sbprintf+0x62> - 8015406: 4669 mov r1, sp - 8015408: 4630 mov r0, r6 - 801540a: f000 f8f1 bl 80155f0 <_fflush_r> - 801540e: 2800 cmp r0, #0 - 8015410: bf18 it ne - 8015412: f04f 35ff movne.w r5, #4294967295 - 8015416: f8bd 300c ldrh.w r3, [sp, #12] - 801541a: 9816 ldr r0, [sp, #88] @ 0x58 - 801541c: 065b lsls r3, r3, #25 - 801541e: bf42 ittt mi - 8015420: 89a3 ldrhmi r3, [r4, #12] - 8015422: f043 0340 orrmi.w r3, r3, #64 @ 0x40 - 8015426: 81a3 strhmi r3, [r4, #12] - 8015428: f7fd fd1f bl 8012e6a <__retarget_lock_close_recursive> - 801542c: 4628 mov r0, r5 - 801542e: f20d 4d6c addw sp, sp, #1132 @ 0x46c - 8015432: bdf0 pop {r4, r5, r6, r7, pc} - -08015434 <_fclose_r>: - 8015434: b570 push {r4, r5, r6, lr} - 8015436: 4605 mov r5, r0 - 8015438: 460c mov r4, r1 - 801543a: b1b1 cbz r1, 801546a <_fclose_r+0x36> - 801543c: b118 cbz r0, 8015446 <_fclose_r+0x12> - 801543e: 6b43 ldr r3, [r0, #52] @ 0x34 - 8015440: b90b cbnz r3, 8015446 <_fclose_r+0x12> - 8015442: f7fd fbe3 bl 8012c0c <__sinit> - 8015446: 6e63 ldr r3, [r4, #100] @ 0x64 - 8015448: 07de lsls r6, r3, #31 - 801544a: d405 bmi.n 8015458 <_fclose_r+0x24> - 801544c: 89a3 ldrh r3, [r4, #12] - 801544e: 0598 lsls r0, r3, #22 - 8015450: d402 bmi.n 8015458 <_fclose_r+0x24> - 8015452: 6da0 ldr r0, [r4, #88] @ 0x58 - 8015454: f7fd fd0a bl 8012e6c <__retarget_lock_acquire_recursive> - 8015458: f9b4 300c ldrsh.w r3, [r4, #12] - 801545c: b943 cbnz r3, 8015470 <_fclose_r+0x3c> - 801545e: 6e63 ldr r3, [r4, #100] @ 0x64 - 8015460: 07d9 lsls r1, r3, #31 - 8015462: d402 bmi.n 801546a <_fclose_r+0x36> - 8015464: 6da0 ldr r0, [r4, #88] @ 0x58 - 8015466: f7fd fd02 bl 8012e6e <__retarget_lock_release_recursive> - 801546a: 2600 movs r6, #0 - 801546c: 4630 mov r0, r6 - 801546e: bd70 pop {r4, r5, r6, pc} - 8015470: 4621 mov r1, r4 - 8015472: 4628 mov r0, r5 - 8015474: f000 f834 bl 80154e0 <__sflush_r> - 8015478: 6ae3 ldr r3, [r4, #44] @ 0x2c - 801547a: 4606 mov r6, r0 - 801547c: b133 cbz r3, 801548c <_fclose_r+0x58> - 801547e: 69e1 ldr r1, [r4, #28] - 8015480: 4628 mov r0, r5 - 8015482: 4798 blx r3 - 8015484: 2800 cmp r0, #0 - 8015486: bfb8 it lt - 8015488: f04f 36ff movlt.w r6, #4294967295 - 801548c: 89a3 ldrh r3, [r4, #12] - 801548e: 061a lsls r2, r3, #24 - 8015490: d503 bpl.n 801549a <_fclose_r+0x66> - 8015492: 6921 ldr r1, [r4, #16] - 8015494: 4628 mov r0, r5 - 8015496: f7fd fd5f bl 8012f58 <_free_r> - 801549a: 6b21 ldr r1, [r4, #48] @ 0x30 - 801549c: b141 cbz r1, 80154b0 <_fclose_r+0x7c> - 801549e: f104 0340 add.w r3, r4, #64 @ 0x40 - 80154a2: 4299 cmp r1, r3 - 80154a4: d002 beq.n 80154ac <_fclose_r+0x78> - 80154a6: 4628 mov r0, r5 - 80154a8: f7fd fd56 bl 8012f58 <_free_r> - 80154ac: 2300 movs r3, #0 - 80154ae: 6323 str r3, [r4, #48] @ 0x30 - 80154b0: 6c61 ldr r1, [r4, #68] @ 0x44 - 80154b2: b121 cbz r1, 80154be <_fclose_r+0x8a> - 80154b4: 4628 mov r0, r5 - 80154b6: f7fd fd4f bl 8012f58 <_free_r> - 80154ba: 2300 movs r3, #0 - 80154bc: 6463 str r3, [r4, #68] @ 0x44 - 80154be: f7fd fb99 bl 8012bf4 <__sfp_lock_acquire> - 80154c2: 2300 movs r3, #0 - 80154c4: 81a3 strh r3, [r4, #12] - 80154c6: 6e63 ldr r3, [r4, #100] @ 0x64 - 80154c8: 07db lsls r3, r3, #31 - 80154ca: d402 bmi.n 80154d2 <_fclose_r+0x9e> - 80154cc: 6da0 ldr r0, [r4, #88] @ 0x58 - 80154ce: f7fd fcce bl 8012e6e <__retarget_lock_release_recursive> - 80154d2: 6da0 ldr r0, [r4, #88] @ 0x58 - 80154d4: f7fd fcc9 bl 8012e6a <__retarget_lock_close_recursive> - 80154d8: f7fd fb92 bl 8012c00 <__sfp_lock_release> - 80154dc: e7c6 b.n 801546c <_fclose_r+0x38> - ... - -080154e0 <__sflush_r>: - 80154e0: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 80154e4: 4605 mov r5, r0 - 80154e6: f9b1 000c ldrsh.w r0, [r1, #12] - 80154ea: 0706 lsls r6, r0, #28 - 80154ec: 460c mov r4, r1 - 80154ee: d457 bmi.n 80155a0 <__sflush_r+0xc0> - 80154f0: f440 6300 orr.w r3, r0, #2048 @ 0x800 - 80154f4: 818b strh r3, [r1, #12] - 80154f6: 684b ldr r3, [r1, #4] - 80154f8: 2b00 cmp r3, #0 - 80154fa: dc02 bgt.n 8015502 <__sflush_r+0x22> - 80154fc: 6bcb ldr r3, [r1, #60] @ 0x3c - 80154fe: 2b00 cmp r3, #0 - 8015500: dd4c ble.n 801559c <__sflush_r+0xbc> - 8015502: 6aa6 ldr r6, [r4, #40] @ 0x28 - 8015504: 2e00 cmp r6, #0 - 8015506: d049 beq.n 801559c <__sflush_r+0xbc> - 8015508: 2300 movs r3, #0 - 801550a: f410 5280 ands.w r2, r0, #4096 @ 0x1000 - 801550e: 682f ldr r7, [r5, #0] - 8015510: 69e1 ldr r1, [r4, #28] - 8015512: 602b str r3, [r5, #0] - 8015514: d034 beq.n 8015580 <__sflush_r+0xa0> - 8015516: 6d22 ldr r2, [r4, #80] @ 0x50 - 8015518: 89a3 ldrh r3, [r4, #12] - 801551a: 0759 lsls r1, r3, #29 - 801551c: d505 bpl.n 801552a <__sflush_r+0x4a> - 801551e: 6863 ldr r3, [r4, #4] - 8015520: 1ad2 subs r2, r2, r3 - 8015522: 6b23 ldr r3, [r4, #48] @ 0x30 - 8015524: b10b cbz r3, 801552a <__sflush_r+0x4a> - 8015526: 6be3 ldr r3, [r4, #60] @ 0x3c - 8015528: 1ad2 subs r2, r2, r3 - 801552a: 2300 movs r3, #0 - 801552c: 6aa6 ldr r6, [r4, #40] @ 0x28 - 801552e: 69e1 ldr r1, [r4, #28] - 8015530: 4628 mov r0, r5 - 8015532: 47b0 blx r6 - 8015534: 1c43 adds r3, r0, #1 - 8015536: d106 bne.n 8015546 <__sflush_r+0x66> - 8015538: 682a ldr r2, [r5, #0] - 801553a: 2a1d cmp r2, #29 - 801553c: d848 bhi.n 80155d0 <__sflush_r+0xf0> - 801553e: 4b2b ldr r3, [pc, #172] @ (80155ec <__sflush_r+0x10c>) - 8015540: 4113 asrs r3, r2 - 8015542: 07de lsls r6, r3, #31 - 8015544: d444 bmi.n 80155d0 <__sflush_r+0xf0> - 8015546: f9b4 300c ldrsh.w r3, [r4, #12] - 801554a: f423 6200 bic.w r2, r3, #2048 @ 0x800 - 801554e: 81a2 strh r2, [r4, #12] - 8015550: 2200 movs r2, #0 - 8015552: 6062 str r2, [r4, #4] - 8015554: 04d9 lsls r1, r3, #19 - 8015556: 6922 ldr r2, [r4, #16] - 8015558: 6022 str r2, [r4, #0] - 801555a: d504 bpl.n 8015566 <__sflush_r+0x86> - 801555c: 1c42 adds r2, r0, #1 - 801555e: d101 bne.n 8015564 <__sflush_r+0x84> - 8015560: 682b ldr r3, [r5, #0] - 8015562: b903 cbnz r3, 8015566 <__sflush_r+0x86> - 8015564: 6520 str r0, [r4, #80] @ 0x50 - 8015566: 6b21 ldr r1, [r4, #48] @ 0x30 - 8015568: 602f str r7, [r5, #0] - 801556a: b1b9 cbz r1, 801559c <__sflush_r+0xbc> - 801556c: f104 0340 add.w r3, r4, #64 @ 0x40 - 8015570: 4299 cmp r1, r3 - 8015572: d002 beq.n 801557a <__sflush_r+0x9a> - 8015574: 4628 mov r0, r5 - 8015576: f7fd fcef bl 8012f58 <_free_r> - 801557a: 2300 movs r3, #0 - 801557c: 6323 str r3, [r4, #48] @ 0x30 - 801557e: e00d b.n 801559c <__sflush_r+0xbc> - 8015580: 2301 movs r3, #1 - 8015582: 4628 mov r0, r5 - 8015584: 47b0 blx r6 - 8015586: 4602 mov r2, r0 - 8015588: 1c50 adds r0, r2, #1 - 801558a: d1c5 bne.n 8015518 <__sflush_r+0x38> - 801558c: 682b ldr r3, [r5, #0] - 801558e: 2b00 cmp r3, #0 - 8015590: d0c2 beq.n 8015518 <__sflush_r+0x38> - 8015592: 2b1d cmp r3, #29 - 8015594: d001 beq.n 801559a <__sflush_r+0xba> - 8015596: 2b16 cmp r3, #22 - 8015598: d11a bne.n 80155d0 <__sflush_r+0xf0> - 801559a: 602f str r7, [r5, #0] - 801559c: 2000 movs r0, #0 - 801559e: e01e b.n 80155de <__sflush_r+0xfe> - 80155a0: 690f ldr r7, [r1, #16] - 80155a2: 2f00 cmp r7, #0 - 80155a4: d0fa beq.n 801559c <__sflush_r+0xbc> - 80155a6: 0783 lsls r3, r0, #30 - 80155a8: 680e ldr r6, [r1, #0] - 80155aa: bf08 it eq - 80155ac: 694b ldreq r3, [r1, #20] - 80155ae: 600f str r7, [r1, #0] - 80155b0: bf18 it ne - 80155b2: 2300 movne r3, #0 - 80155b4: eba6 0807 sub.w r8, r6, r7 - 80155b8: 608b str r3, [r1, #8] - 80155ba: f1b8 0f00 cmp.w r8, #0 - 80155be: dded ble.n 801559c <__sflush_r+0xbc> - 80155c0: 69e1 ldr r1, [r4, #28] - 80155c2: 6a66 ldr r6, [r4, #36] @ 0x24 - 80155c4: 4643 mov r3, r8 - 80155c6: 463a mov r2, r7 - 80155c8: 4628 mov r0, r5 - 80155ca: 47b0 blx r6 - 80155cc: 2800 cmp r0, #0 - 80155ce: dc08 bgt.n 80155e2 <__sflush_r+0x102> - 80155d0: f9b4 300c ldrsh.w r3, [r4, #12] - 80155d4: f043 0340 orr.w r3, r3, #64 @ 0x40 - 80155d8: 81a3 strh r3, [r4, #12] - 80155da: f04f 30ff mov.w r0, #4294967295 - 80155de: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 80155e2: 4407 add r7, r0 - 80155e4: eba8 0800 sub.w r8, r8, r0 - 80155e8: e7e7 b.n 80155ba <__sflush_r+0xda> - 80155ea: bf00 nop - 80155ec: dfbffffe .word 0xdfbffffe - -080155f0 <_fflush_r>: - 80155f0: b538 push {r3, r4, r5, lr} - 80155f2: 460c mov r4, r1 - 80155f4: 4605 mov r5, r0 - 80155f6: b118 cbz r0, 8015600 <_fflush_r+0x10> - 80155f8: 6b43 ldr r3, [r0, #52] @ 0x34 - 80155fa: b90b cbnz r3, 8015600 <_fflush_r+0x10> - 80155fc: f7fd fb06 bl 8012c0c <__sinit> - 8015600: f9b4 000c ldrsh.w r0, [r4, #12] - 8015604: b1b8 cbz r0, 8015636 <_fflush_r+0x46> - 8015606: 6e63 ldr r3, [r4, #100] @ 0x64 - 8015608: 07db lsls r3, r3, #31 - 801560a: d404 bmi.n 8015616 <_fflush_r+0x26> - 801560c: 0581 lsls r1, r0, #22 - 801560e: d402 bmi.n 8015616 <_fflush_r+0x26> - 8015610: 6da0 ldr r0, [r4, #88] @ 0x58 - 8015612: f7fd fc2b bl 8012e6c <__retarget_lock_acquire_recursive> - 8015616: 4628 mov r0, r5 - 8015618: 4621 mov r1, r4 - 801561a: f7ff ff61 bl 80154e0 <__sflush_r> - 801561e: 6e63 ldr r3, [r4, #100] @ 0x64 - 8015620: 07da lsls r2, r3, #31 - 8015622: 4605 mov r5, r0 - 8015624: d405 bmi.n 8015632 <_fflush_r+0x42> - 8015626: 89a3 ldrh r3, [r4, #12] - 8015628: 059b lsls r3, r3, #22 - 801562a: d402 bmi.n 8015632 <_fflush_r+0x42> - 801562c: 6da0 ldr r0, [r4, #88] @ 0x58 - 801562e: f7fd fc1e bl 8012e6e <__retarget_lock_release_recursive> - 8015632: 4628 mov r0, r5 - 8015634: bd38 pop {r3, r4, r5, pc} - 8015636: 4605 mov r5, r0 - 8015638: e7fb b.n 8015632 <_fflush_r+0x42> - ... - -0801563c <__sfvwrite_r>: - 801563c: 6893 ldr r3, [r2, #8] - 801563e: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8015642: 4606 mov r6, r0 - 8015644: 460c mov r4, r1 - 8015646: 4691 mov r9, r2 - 8015648: b91b cbnz r3, 8015652 <__sfvwrite_r+0x16> - 801564a: 2000 movs r0, #0 - 801564c: b003 add sp, #12 - 801564e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 8015652: 898b ldrh r3, [r1, #12] - 8015654: 0718 lsls r0, r3, #28 - 8015656: d550 bpl.n 80156fa <__sfvwrite_r+0xbe> - 8015658: 690b ldr r3, [r1, #16] - 801565a: 2b00 cmp r3, #0 - 801565c: d04d beq.n 80156fa <__sfvwrite_r+0xbe> - 801565e: f9b4 300c ldrsh.w r3, [r4, #12] - 8015662: f8d9 8000 ldr.w r8, [r9] - 8015666: f013 0702 ands.w r7, r3, #2 - 801566a: d16b bne.n 8015744 <__sfvwrite_r+0x108> - 801566c: f013 0301 ands.w r3, r3, #1 - 8015670: f000 809c beq.w 80157ac <__sfvwrite_r+0x170> - 8015674: 4638 mov r0, r7 - 8015676: 46ba mov sl, r7 - 8015678: 46bb mov fp, r7 - 801567a: f1bb 0f00 cmp.w fp, #0 - 801567e: f000 8103 beq.w 8015888 <__sfvwrite_r+0x24c> - 8015682: b950 cbnz r0, 801569a <__sfvwrite_r+0x5e> - 8015684: 465a mov r2, fp - 8015686: 210a movs r1, #10 - 8015688: 4650 mov r0, sl - 801568a: f7ea fdb9 bl 8000200 - 801568e: 2800 cmp r0, #0 - 8015690: f000 8100 beq.w 8015894 <__sfvwrite_r+0x258> - 8015694: 3001 adds r0, #1 - 8015696: eba0 070a sub.w r7, r0, sl - 801569a: 6820 ldr r0, [r4, #0] - 801569c: 6921 ldr r1, [r4, #16] - 801569e: 68a5 ldr r5, [r4, #8] - 80156a0: 6963 ldr r3, [r4, #20] - 80156a2: 455f cmp r7, fp - 80156a4: 463a mov r2, r7 - 80156a6: bf28 it cs - 80156a8: 465a movcs r2, fp - 80156aa: 4288 cmp r0, r1 - 80156ac: f240 80f5 bls.w 801589a <__sfvwrite_r+0x25e> - 80156b0: 441d add r5, r3 - 80156b2: 42aa cmp r2, r5 - 80156b4: f340 80f1 ble.w 801589a <__sfvwrite_r+0x25e> - 80156b8: 4651 mov r1, sl - 80156ba: 462a mov r2, r5 - 80156bc: f7fd fb41 bl 8012d42 - 80156c0: 6823 ldr r3, [r4, #0] - 80156c2: 442b add r3, r5 - 80156c4: 6023 str r3, [r4, #0] - 80156c6: 4621 mov r1, r4 - 80156c8: 4630 mov r0, r6 - 80156ca: f7ff ff91 bl 80155f0 <_fflush_r> - 80156ce: 2800 cmp r0, #0 - 80156d0: d167 bne.n 80157a2 <__sfvwrite_r+0x166> - 80156d2: 1b7f subs r7, r7, r5 - 80156d4: f040 80f9 bne.w 80158ca <__sfvwrite_r+0x28e> - 80156d8: 4621 mov r1, r4 - 80156da: 4630 mov r0, r6 - 80156dc: f7ff ff88 bl 80155f0 <_fflush_r> - 80156e0: 2800 cmp r0, #0 - 80156e2: d15e bne.n 80157a2 <__sfvwrite_r+0x166> - 80156e4: f8d9 3008 ldr.w r3, [r9, #8] - 80156e8: 1b5b subs r3, r3, r5 - 80156ea: 44aa add sl, r5 - 80156ec: ebab 0b05 sub.w fp, fp, r5 - 80156f0: f8c9 3008 str.w r3, [r9, #8] - 80156f4: 2b00 cmp r3, #0 - 80156f6: d1c0 bne.n 801567a <__sfvwrite_r+0x3e> - 80156f8: e7a7 b.n 801564a <__sfvwrite_r+0xe> - 80156fa: 4621 mov r1, r4 - 80156fc: 4630 mov r0, r6 - 80156fe: f000 f8e9 bl 80158d4 <__swsetup_r> - 8015702: 2800 cmp r0, #0 - 8015704: d0ab beq.n 801565e <__sfvwrite_r+0x22> - 8015706: f04f 30ff mov.w r0, #4294967295 - 801570a: e79f b.n 801564c <__sfvwrite_r+0x10> - 801570c: e9d8 a500 ldrd sl, r5, [r8] - 8015710: f108 0808 add.w r8, r8, #8 - 8015714: f8d4 b024 ldr.w fp, [r4, #36] @ 0x24 - 8015718: 69e1 ldr r1, [r4, #28] - 801571a: 2d00 cmp r5, #0 - 801571c: d0f6 beq.n 801570c <__sfvwrite_r+0xd0> - 801571e: 42bd cmp r5, r7 - 8015720: 462b mov r3, r5 - 8015722: 4652 mov r2, sl - 8015724: bf28 it cs - 8015726: 463b movcs r3, r7 - 8015728: 4630 mov r0, r6 - 801572a: 47d8 blx fp - 801572c: 2800 cmp r0, #0 - 801572e: dd38 ble.n 80157a2 <__sfvwrite_r+0x166> - 8015730: f8d9 3008 ldr.w r3, [r9, #8] - 8015734: 1a1b subs r3, r3, r0 - 8015736: 4482 add sl, r0 - 8015738: 1a2d subs r5, r5, r0 - 801573a: f8c9 3008 str.w r3, [r9, #8] - 801573e: 2b00 cmp r3, #0 - 8015740: d1e8 bne.n 8015714 <__sfvwrite_r+0xd8> - 8015742: e782 b.n 801564a <__sfvwrite_r+0xe> - 8015744: f04f 0a00 mov.w sl, #0 - 8015748: 4f61 ldr r7, [pc, #388] @ (80158d0 <__sfvwrite_r+0x294>) - 801574a: 4655 mov r5, sl - 801574c: e7e2 b.n 8015714 <__sfvwrite_r+0xd8> - 801574e: e9d8 7a00 ldrd r7, sl, [r8] - 8015752: f108 0808 add.w r8, r8, #8 - 8015756: f9b4 300c ldrsh.w r3, [r4, #12] - 801575a: 6820 ldr r0, [r4, #0] - 801575c: 68a2 ldr r2, [r4, #8] - 801575e: f1ba 0f00 cmp.w sl, #0 - 8015762: d0f4 beq.n 801574e <__sfvwrite_r+0x112> - 8015764: 0599 lsls r1, r3, #22 - 8015766: d563 bpl.n 8015830 <__sfvwrite_r+0x1f4> - 8015768: 4552 cmp r2, sl - 801576a: d836 bhi.n 80157da <__sfvwrite_r+0x19e> - 801576c: f413 6f90 tst.w r3, #1152 @ 0x480 - 8015770: d033 beq.n 80157da <__sfvwrite_r+0x19e> - 8015772: 6921 ldr r1, [r4, #16] - 8015774: 6965 ldr r5, [r4, #20] - 8015776: eba0 0b01 sub.w fp, r0, r1 - 801577a: eb05 0545 add.w r5, r5, r5, lsl #1 - 801577e: eb05 75d5 add.w r5, r5, r5, lsr #31 - 8015782: f10b 0201 add.w r2, fp, #1 - 8015786: 106d asrs r5, r5, #1 - 8015788: 4452 add r2, sl - 801578a: 4295 cmp r5, r2 - 801578c: bf38 it cc - 801578e: 4615 movcc r5, r2 - 8015790: 055b lsls r3, r3, #21 - 8015792: d53d bpl.n 8015810 <__sfvwrite_r+0x1d4> - 8015794: 4629 mov r1, r5 - 8015796: 4630 mov r0, r6 - 8015798: f7fd fc9e bl 80130d8 <_malloc_r> - 801579c: b948 cbnz r0, 80157b2 <__sfvwrite_r+0x176> - 801579e: 230c movs r3, #12 - 80157a0: 6033 str r3, [r6, #0] - 80157a2: 89a3 ldrh r3, [r4, #12] - 80157a4: f043 0340 orr.w r3, r3, #64 @ 0x40 - 80157a8: 81a3 strh r3, [r4, #12] - 80157aa: e7ac b.n 8015706 <__sfvwrite_r+0xca> - 80157ac: 461f mov r7, r3 - 80157ae: 469a mov sl, r3 - 80157b0: e7d1 b.n 8015756 <__sfvwrite_r+0x11a> - 80157b2: 465a mov r2, fp - 80157b4: 6921 ldr r1, [r4, #16] - 80157b6: 9001 str r0, [sp, #4] - 80157b8: f7fd fb5a bl 8012e70 - 80157bc: 89a2 ldrh r2, [r4, #12] - 80157be: 9b01 ldr r3, [sp, #4] - 80157c0: f422 6290 bic.w r2, r2, #1152 @ 0x480 - 80157c4: f042 0280 orr.w r2, r2, #128 @ 0x80 - 80157c8: 81a2 strh r2, [r4, #12] - 80157ca: 6123 str r3, [r4, #16] - 80157cc: 6165 str r5, [r4, #20] - 80157ce: 445b add r3, fp - 80157d0: eba5 050b sub.w r5, r5, fp - 80157d4: 6023 str r3, [r4, #0] - 80157d6: 4652 mov r2, sl - 80157d8: 60a5 str r5, [r4, #8] - 80157da: 4552 cmp r2, sl - 80157dc: bf28 it cs - 80157de: 4652 movcs r2, sl - 80157e0: 6820 ldr r0, [r4, #0] - 80157e2: 9201 str r2, [sp, #4] - 80157e4: 4639 mov r1, r7 - 80157e6: f7fd faac bl 8012d42 - 80157ea: 68a3 ldr r3, [r4, #8] - 80157ec: 9a01 ldr r2, [sp, #4] - 80157ee: 1a9b subs r3, r3, r2 - 80157f0: 60a3 str r3, [r4, #8] - 80157f2: 6823 ldr r3, [r4, #0] - 80157f4: 4413 add r3, r2 - 80157f6: 4655 mov r5, sl - 80157f8: 6023 str r3, [r4, #0] - 80157fa: f8d9 3008 ldr.w r3, [r9, #8] - 80157fe: 1b5b subs r3, r3, r5 - 8015800: 442f add r7, r5 - 8015802: ebaa 0a05 sub.w sl, sl, r5 - 8015806: f8c9 3008 str.w r3, [r9, #8] - 801580a: 2b00 cmp r3, #0 - 801580c: d1a3 bne.n 8015756 <__sfvwrite_r+0x11a> - 801580e: e71c b.n 801564a <__sfvwrite_r+0xe> - 8015810: 462a mov r2, r5 - 8015812: 4630 mov r0, r6 - 8015814: f001 fb5e bl 8016ed4 <_realloc_r> - 8015818: 4603 mov r3, r0 - 801581a: 2800 cmp r0, #0 - 801581c: d1d5 bne.n 80157ca <__sfvwrite_r+0x18e> - 801581e: 6921 ldr r1, [r4, #16] - 8015820: 4630 mov r0, r6 - 8015822: f7fd fb99 bl 8012f58 <_free_r> - 8015826: 89a3 ldrh r3, [r4, #12] - 8015828: f023 0380 bic.w r3, r3, #128 @ 0x80 - 801582c: 81a3 strh r3, [r4, #12] - 801582e: e7b6 b.n 801579e <__sfvwrite_r+0x162> - 8015830: 6923 ldr r3, [r4, #16] - 8015832: 4283 cmp r3, r0 - 8015834: d302 bcc.n 801583c <__sfvwrite_r+0x200> - 8015836: 6961 ldr r1, [r4, #20] - 8015838: 4551 cmp r1, sl - 801583a: d915 bls.n 8015868 <__sfvwrite_r+0x22c> - 801583c: 4552 cmp r2, sl - 801583e: bf28 it cs - 8015840: 4652 movcs r2, sl - 8015842: 4639 mov r1, r7 - 8015844: 4615 mov r5, r2 - 8015846: f7fd fa7c bl 8012d42 - 801584a: 68a3 ldr r3, [r4, #8] - 801584c: 6822 ldr r2, [r4, #0] - 801584e: 1b5b subs r3, r3, r5 - 8015850: 442a add r2, r5 - 8015852: 60a3 str r3, [r4, #8] - 8015854: 6022 str r2, [r4, #0] - 8015856: 2b00 cmp r3, #0 - 8015858: d1cf bne.n 80157fa <__sfvwrite_r+0x1be> - 801585a: 4621 mov r1, r4 - 801585c: 4630 mov r0, r6 - 801585e: f7ff fec7 bl 80155f0 <_fflush_r> - 8015862: 2800 cmp r0, #0 - 8015864: d0c9 beq.n 80157fa <__sfvwrite_r+0x1be> - 8015866: e79c b.n 80157a2 <__sfvwrite_r+0x166> - 8015868: f06f 4300 mvn.w r3, #2147483648 @ 0x80000000 - 801586c: 4553 cmp r3, sl - 801586e: bf28 it cs - 8015870: 4653 movcs r3, sl - 8015872: 6a65 ldr r5, [r4, #36] @ 0x24 - 8015874: fb93 f3f1 sdiv r3, r3, r1 - 8015878: 463a mov r2, r7 - 801587a: 434b muls r3, r1 - 801587c: 4630 mov r0, r6 - 801587e: 69e1 ldr r1, [r4, #28] - 8015880: 47a8 blx r5 - 8015882: 1e05 subs r5, r0, #0 - 8015884: dcb9 bgt.n 80157fa <__sfvwrite_r+0x1be> - 8015886: e78c b.n 80157a2 <__sfvwrite_r+0x166> - 8015888: e9d8 ab00 ldrd sl, fp, [r8] - 801588c: 2000 movs r0, #0 - 801588e: f108 0808 add.w r8, r8, #8 - 8015892: e6f2 b.n 801567a <__sfvwrite_r+0x3e> - 8015894: f10b 0701 add.w r7, fp, #1 - 8015898: e6ff b.n 801569a <__sfvwrite_r+0x5e> - 801589a: 4293 cmp r3, r2 - 801589c: dc08 bgt.n 80158b0 <__sfvwrite_r+0x274> - 801589e: 6a65 ldr r5, [r4, #36] @ 0x24 - 80158a0: 69e1 ldr r1, [r4, #28] - 80158a2: 4652 mov r2, sl - 80158a4: 4630 mov r0, r6 - 80158a6: 47a8 blx r5 - 80158a8: 1e05 subs r5, r0, #0 - 80158aa: f73f af12 bgt.w 80156d2 <__sfvwrite_r+0x96> - 80158ae: e778 b.n 80157a2 <__sfvwrite_r+0x166> - 80158b0: 4651 mov r1, sl - 80158b2: 9201 str r2, [sp, #4] - 80158b4: f7fd fa45 bl 8012d42 - 80158b8: 9a01 ldr r2, [sp, #4] - 80158ba: 68a3 ldr r3, [r4, #8] - 80158bc: 1a9b subs r3, r3, r2 - 80158be: 60a3 str r3, [r4, #8] - 80158c0: 6823 ldr r3, [r4, #0] - 80158c2: 4413 add r3, r2 - 80158c4: 6023 str r3, [r4, #0] - 80158c6: 4615 mov r5, r2 - 80158c8: e703 b.n 80156d2 <__sfvwrite_r+0x96> - 80158ca: 2001 movs r0, #1 - 80158cc: e70a b.n 80156e4 <__sfvwrite_r+0xa8> - 80158ce: bf00 nop - 80158d0: 7ffffc00 .word 0x7ffffc00 - -080158d4 <__swsetup_r>: - 80158d4: b538 push {r3, r4, r5, lr} - 80158d6: 4b29 ldr r3, [pc, #164] @ (801597c <__swsetup_r+0xa8>) - 80158d8: 4605 mov r5, r0 - 80158da: 6818 ldr r0, [r3, #0] - 80158dc: 460c mov r4, r1 - 80158de: b118 cbz r0, 80158e8 <__swsetup_r+0x14> - 80158e0: 6b43 ldr r3, [r0, #52] @ 0x34 - 80158e2: b90b cbnz r3, 80158e8 <__swsetup_r+0x14> - 80158e4: f7fd f992 bl 8012c0c <__sinit> - 80158e8: f9b4 300c ldrsh.w r3, [r4, #12] - 80158ec: 0719 lsls r1, r3, #28 - 80158ee: d422 bmi.n 8015936 <__swsetup_r+0x62> - 80158f0: 06da lsls r2, r3, #27 - 80158f2: d407 bmi.n 8015904 <__swsetup_r+0x30> - 80158f4: 2209 movs r2, #9 - 80158f6: 602a str r2, [r5, #0] - 80158f8: f043 0340 orr.w r3, r3, #64 @ 0x40 - 80158fc: 81a3 strh r3, [r4, #12] - 80158fe: f04f 30ff mov.w r0, #4294967295 - 8015902: e033 b.n 801596c <__swsetup_r+0x98> - 8015904: 0758 lsls r0, r3, #29 - 8015906: d512 bpl.n 801592e <__swsetup_r+0x5a> - 8015908: 6b21 ldr r1, [r4, #48] @ 0x30 - 801590a: b141 cbz r1, 801591e <__swsetup_r+0x4a> - 801590c: f104 0340 add.w r3, r4, #64 @ 0x40 - 8015910: 4299 cmp r1, r3 - 8015912: d002 beq.n 801591a <__swsetup_r+0x46> - 8015914: 4628 mov r0, r5 - 8015916: f7fd fb1f bl 8012f58 <_free_r> - 801591a: 2300 movs r3, #0 - 801591c: 6323 str r3, [r4, #48] @ 0x30 - 801591e: 89a3 ldrh r3, [r4, #12] - 8015920: f023 0324 bic.w r3, r3, #36 @ 0x24 - 8015924: 81a3 strh r3, [r4, #12] - 8015926: 2300 movs r3, #0 - 8015928: 6063 str r3, [r4, #4] - 801592a: 6923 ldr r3, [r4, #16] - 801592c: 6023 str r3, [r4, #0] - 801592e: 89a3 ldrh r3, [r4, #12] - 8015930: f043 0308 orr.w r3, r3, #8 - 8015934: 81a3 strh r3, [r4, #12] - 8015936: 6923 ldr r3, [r4, #16] - 8015938: b94b cbnz r3, 801594e <__swsetup_r+0x7a> - 801593a: 89a3 ldrh r3, [r4, #12] - 801593c: f403 7320 and.w r3, r3, #640 @ 0x280 - 8015940: f5b3 7f00 cmp.w r3, #512 @ 0x200 - 8015944: d003 beq.n 801594e <__swsetup_r+0x7a> - 8015946: 4621 mov r1, r4 - 8015948: 4628 mov r0, r5 - 801594a: f001 fcb7 bl 80172bc <__smakebuf_r> - 801594e: f9b4 300c ldrsh.w r3, [r4, #12] - 8015952: f013 0201 ands.w r2, r3, #1 - 8015956: d00a beq.n 801596e <__swsetup_r+0x9a> - 8015958: 2200 movs r2, #0 - 801595a: 60a2 str r2, [r4, #8] - 801595c: 6962 ldr r2, [r4, #20] - 801595e: 4252 negs r2, r2 - 8015960: 61a2 str r2, [r4, #24] - 8015962: 6922 ldr r2, [r4, #16] - 8015964: b942 cbnz r2, 8015978 <__swsetup_r+0xa4> - 8015966: f013 0080 ands.w r0, r3, #128 @ 0x80 - 801596a: d1c5 bne.n 80158f8 <__swsetup_r+0x24> - 801596c: bd38 pop {r3, r4, r5, pc} - 801596e: 0799 lsls r1, r3, #30 - 8015970: bf58 it pl - 8015972: 6962 ldrpl r2, [r4, #20] - 8015974: 60a2 str r2, [r4, #8] - 8015976: e7f4 b.n 8015962 <__swsetup_r+0x8e> - 8015978: 2000 movs r0, #0 - 801597a: e7f7 b.n 801596c <__swsetup_r+0x98> - 801597c: 2000003c .word 0x2000003c - -08015980 <__fputwc>: - 8015980: e92d 43f7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr} - 8015984: 4680 mov r8, r0 - 8015986: 460f mov r7, r1 - 8015988: 4614 mov r4, r2 - 801598a: f000 f877 bl 8015a7c <__locale_mb_cur_max> - 801598e: 2801 cmp r0, #1 - 8015990: 4605 mov r5, r0 - 8015992: d11b bne.n 80159cc <__fputwc+0x4c> - 8015994: 1e7b subs r3, r7, #1 - 8015996: 2bfe cmp r3, #254 @ 0xfe - 8015998: d818 bhi.n 80159cc <__fputwc+0x4c> - 801599a: f88d 7004 strb.w r7, [sp, #4] - 801599e: 2600 movs r6, #0 - 80159a0: f10d 0904 add.w r9, sp, #4 - 80159a4: 42ae cmp r6, r5 - 80159a6: d021 beq.n 80159ec <__fputwc+0x6c> - 80159a8: 68a3 ldr r3, [r4, #8] - 80159aa: f816 1009 ldrb.w r1, [r6, r9] - 80159ae: 3b01 subs r3, #1 - 80159b0: 2b00 cmp r3, #0 - 80159b2: 60a3 str r3, [r4, #8] - 80159b4: da04 bge.n 80159c0 <__fputwc+0x40> - 80159b6: 69a2 ldr r2, [r4, #24] - 80159b8: 4293 cmp r3, r2 - 80159ba: db1b blt.n 80159f4 <__fputwc+0x74> - 80159bc: 290a cmp r1, #10 - 80159be: d019 beq.n 80159f4 <__fputwc+0x74> - 80159c0: 6823 ldr r3, [r4, #0] - 80159c2: 1c5a adds r2, r3, #1 - 80159c4: 6022 str r2, [r4, #0] - 80159c6: 7019 strb r1, [r3, #0] - 80159c8: 3601 adds r6, #1 - 80159ca: e7eb b.n 80159a4 <__fputwc+0x24> - 80159cc: f104 035c add.w r3, r4, #92 @ 0x5c - 80159d0: 463a mov r2, r7 - 80159d2: a901 add r1, sp, #4 - 80159d4: 4640 mov r0, r8 - 80159d6: f001 fc33 bl 8017240 <_wcrtomb_r> - 80159da: 1c43 adds r3, r0, #1 - 80159dc: 4605 mov r5, r0 - 80159de: d1de bne.n 801599e <__fputwc+0x1e> - 80159e0: 89a3 ldrh r3, [r4, #12] - 80159e2: f043 0340 orr.w r3, r3, #64 @ 0x40 - 80159e6: 81a3 strh r3, [r4, #12] - 80159e8: f04f 37ff mov.w r7, #4294967295 - 80159ec: 4638 mov r0, r7 - 80159ee: b003 add sp, #12 - 80159f0: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} - 80159f4: 4622 mov r2, r4 - 80159f6: 4640 mov r0, r8 - 80159f8: f001 fc9c bl 8017334 <__swbuf_r> - 80159fc: 3001 adds r0, #1 - 80159fe: d1e3 bne.n 80159c8 <__fputwc+0x48> - 8015a00: e7f2 b.n 80159e8 <__fputwc+0x68> - -08015a02 <_fputwc_r>: - 8015a02: 6e53 ldr r3, [r2, #100] @ 0x64 - 8015a04: 07db lsls r3, r3, #31 - 8015a06: b570 push {r4, r5, r6, lr} - 8015a08: 4605 mov r5, r0 - 8015a0a: 460e mov r6, r1 - 8015a0c: 4614 mov r4, r2 - 8015a0e: d405 bmi.n 8015a1c <_fputwc_r+0x1a> - 8015a10: 8993 ldrh r3, [r2, #12] - 8015a12: 0598 lsls r0, r3, #22 - 8015a14: d402 bmi.n 8015a1c <_fputwc_r+0x1a> - 8015a16: 6d90 ldr r0, [r2, #88] @ 0x58 - 8015a18: f7fd fa28 bl 8012e6c <__retarget_lock_acquire_recursive> - 8015a1c: f9b4 300c ldrsh.w r3, [r4, #12] - 8015a20: 0499 lsls r1, r3, #18 - 8015a22: d406 bmi.n 8015a32 <_fputwc_r+0x30> - 8015a24: f443 5300 orr.w r3, r3, #8192 @ 0x2000 - 8015a28: 81a3 strh r3, [r4, #12] - 8015a2a: 6e63 ldr r3, [r4, #100] @ 0x64 - 8015a2c: f443 5300 orr.w r3, r3, #8192 @ 0x2000 - 8015a30: 6663 str r3, [r4, #100] @ 0x64 - 8015a32: 4622 mov r2, r4 - 8015a34: 4628 mov r0, r5 - 8015a36: 4631 mov r1, r6 - 8015a38: f7ff ffa2 bl 8015980 <__fputwc> - 8015a3c: 6e63 ldr r3, [r4, #100] @ 0x64 - 8015a3e: 07da lsls r2, r3, #31 - 8015a40: 4605 mov r5, r0 - 8015a42: d405 bmi.n 8015a50 <_fputwc_r+0x4e> - 8015a44: 89a3 ldrh r3, [r4, #12] - 8015a46: 059b lsls r3, r3, #22 - 8015a48: d402 bmi.n 8015a50 <_fputwc_r+0x4e> - 8015a4a: 6da0 ldr r0, [r4, #88] @ 0x58 - 8015a4c: f7fd fa0f bl 8012e6e <__retarget_lock_release_recursive> - 8015a50: 4628 mov r0, r5 - 8015a52: bd70 pop {r4, r5, r6, pc} - -08015a54 : - 8015a54: b510 push {r4, lr} - 8015a56: 3901 subs r1, #1 - 8015a58: 4603 mov r3, r0 - 8015a5a: b132 cbz r2, 8015a6a - 8015a5c: f811 4f01 ldrb.w r4, [r1, #1]! - 8015a60: f803 4b01 strb.w r4, [r3], #1 - 8015a64: 3a01 subs r2, #1 - 8015a66: 2c00 cmp r4, #0 - 8015a68: d1f7 bne.n 8015a5a - 8015a6a: 441a add r2, r3 - 8015a6c: 2100 movs r1, #0 - 8015a6e: 4293 cmp r3, r2 - 8015a70: d100 bne.n 8015a74 - 8015a72: bd10 pop {r4, pc} - 8015a74: f803 1b01 strb.w r1, [r3], #1 - 8015a78: e7f9 b.n 8015a6e - ... - -08015a7c <__locale_mb_cur_max>: - 8015a7c: 4b01 ldr r3, [pc, #4] @ (8015a84 <__locale_mb_cur_max+0x8>) - 8015a7e: f893 0128 ldrb.w r0, [r3, #296] @ 0x128 - 8015a82: 4770 bx lr - 8015a84: 20000574 .word 0x20000574 - -08015a88 <_localeconv_r>: - 8015a88: 4800 ldr r0, [pc, #0] @ (8015a8c <_localeconv_r+0x4>) - 8015a8a: 4770 bx lr - 8015a8c: 20000664 .word 0x20000664 - -08015a90 <_sbrk_r>: - 8015a90: b538 push {r3, r4, r5, lr} - 8015a92: 4d06 ldr r5, [pc, #24] @ (8015aac <_sbrk_r+0x1c>) - 8015a94: 2300 movs r3, #0 - 8015a96: 4604 mov r4, r0 - 8015a98: 4608 mov r0, r1 - 8015a9a: 602b str r3, [r5, #0] - 8015a9c: f001 fda0 bl 80175e0 <_sbrk> - 8015aa0: 1c43 adds r3, r0, #1 - 8015aa2: d102 bne.n 8015aaa <_sbrk_r+0x1a> - 8015aa4: 682b ldr r3, [r5, #0] - 8015aa6: b103 cbz r3, 8015aaa <_sbrk_r+0x1a> - 8015aa8: 6023 str r3, [r4, #0] - 8015aaa: bd38 pop {r3, r4, r5, pc} - 8015aac: 200193b8 .word 0x200193b8 - -08015ab0 <__libc_fini_array>: - 8015ab0: b538 push {r3, r4, r5, lr} - 8015ab2: 4d07 ldr r5, [pc, #28] @ (8015ad0 <__libc_fini_array+0x20>) - 8015ab4: 4c07 ldr r4, [pc, #28] @ (8015ad4 <__libc_fini_array+0x24>) - 8015ab6: 1b64 subs r4, r4, r5 - 8015ab8: 10a4 asrs r4, r4, #2 - 8015aba: b91c cbnz r4, 8015ac4 <__libc_fini_array+0x14> - 8015abc: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} - 8015ac0: f001 bdac b.w 801761c <_fini> - 8015ac4: 3c01 subs r4, #1 - 8015ac6: f855 3024 ldr.w r3, [r5, r4, lsl #2] - 8015aca: 4798 blx r3 - 8015acc: e7f5 b.n 8015aba <__libc_fini_array+0xa> - 8015ace: bf00 nop - 8015ad0: 0801a994 .word 0x0801a994 - 8015ad4: 0801a998 .word 0x0801a998 - -08015ad8 : - 8015ad8: 2808 cmp r0, #8 - 8015ada: b508 push {r3, lr} - 8015adc: d006 beq.n 8015aec - 8015ade: f7fd f999 bl 8012e14 <__errno> - 8015ae2: 2316 movs r3, #22 - 8015ae4: 6003 str r3, [r0, #0] - 8015ae6: f04f 30ff mov.w r0, #4294967295 - 8015aea: bd08 pop {r3, pc} - 8015aec: 2080 movs r0, #128 @ 0x80 - 8015aee: e7fc b.n 8015aea - -08015af0 : - 8015af0: b570 push {r4, r5, r6, lr} - 8015af2: 2100 movs r1, #0 - 8015af4: ec55 4b10 vmov r4, r5, d0 - 8015af8: 6001 str r1, [r0, #0] - 8015afa: 4915 ldr r1, [pc, #84] @ (8015b50 ) - 8015afc: f025 4200 bic.w r2, r5, #2147483648 @ 0x80000000 - 8015b00: 428a cmp r2, r1 - 8015b02: 4606 mov r6, r0 - 8015b04: 462b mov r3, r5 - 8015b06: d820 bhi.n 8015b4a - 8015b08: 4621 mov r1, r4 - 8015b0a: 4311 orrs r1, r2 - 8015b0c: d01d beq.n 8015b4a - 8015b0e: 4911 ldr r1, [pc, #68] @ (8015b54 ) - 8015b10: 4029 ands r1, r5 - 8015b12: b961 cbnz r1, 8015b2e - 8015b14: 4b10 ldr r3, [pc, #64] @ (8015b58 ) - 8015b16: 2200 movs r2, #0 - 8015b18: 4620 mov r0, r4 - 8015b1a: 4629 mov r1, r5 - 8015b1c: f7ea fd7c bl 8000618 <__aeabi_dmul> - 8015b20: 460b mov r3, r1 - 8015b22: f021 4200 bic.w r2, r1, #2147483648 @ 0x80000000 - 8015b26: f06f 0135 mvn.w r1, #53 @ 0x35 - 8015b2a: 4604 mov r4, r0 - 8015b2c: 6031 str r1, [r6, #0] - 8015b2e: 6831 ldr r1, [r6, #0] - 8015b30: 1512 asrs r2, r2, #20 - 8015b32: f023 43ff bic.w r3, r3, #2139095040 @ 0x7f800000 - 8015b36: f2a2 32fe subw r2, r2, #1022 @ 0x3fe - 8015b3a: f423 03e0 bic.w r3, r3, #7340032 @ 0x700000 - 8015b3e: 4411 add r1, r2 - 8015b40: f043 557f orr.w r5, r3, #1069547520 @ 0x3fc00000 - 8015b44: 6031 str r1, [r6, #0] - 8015b46: f445 1500 orr.w r5, r5, #2097152 @ 0x200000 - 8015b4a: ec45 4b10 vmov d0, r4, r5 - 8015b4e: bd70 pop {r4, r5, r6, pc} - 8015b50: 7fefffff .word 0x7fefffff - 8015b54: 7ff00000 .word 0x7ff00000 - 8015b58: 43500000 .word 0x43500000 - -08015b5c <__register_exitproc>: - 8015b5c: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 8015b60: f8df a074 ldr.w sl, [pc, #116] @ 8015bd8 <__register_exitproc+0x7c> - 8015b64: 4606 mov r6, r0 - 8015b66: f8da 0000 ldr.w r0, [sl] - 8015b6a: 4698 mov r8, r3 - 8015b6c: 460f mov r7, r1 - 8015b6e: 4691 mov r9, r2 - 8015b70: f7fd f97c bl 8012e6c <__retarget_lock_acquire_recursive> - 8015b74: 4b16 ldr r3, [pc, #88] @ (8015bd0 <__register_exitproc+0x74>) - 8015b76: 681c ldr r4, [r3, #0] - 8015b78: b90c cbnz r4, 8015b7e <__register_exitproc+0x22> - 8015b7a: 4c16 ldr r4, [pc, #88] @ (8015bd4 <__register_exitproc+0x78>) - 8015b7c: 601c str r4, [r3, #0] - 8015b7e: 6865 ldr r5, [r4, #4] - 8015b80: f8da 0000 ldr.w r0, [sl] - 8015b84: 2d1f cmp r5, #31 - 8015b86: dd05 ble.n 8015b94 <__register_exitproc+0x38> - 8015b88: f7fd f971 bl 8012e6e <__retarget_lock_release_recursive> - 8015b8c: f04f 30ff mov.w r0, #4294967295 - 8015b90: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 8015b94: b19e cbz r6, 8015bbe <__register_exitproc+0x62> - 8015b96: eb04 0185 add.w r1, r4, r5, lsl #2 - 8015b9a: 2201 movs r2, #1 - 8015b9c: f8c1 9088 str.w r9, [r1, #136] @ 0x88 - 8015ba0: f8d4 3188 ldr.w r3, [r4, #392] @ 0x188 - 8015ba4: 40aa lsls r2, r5 - 8015ba6: 4313 orrs r3, r2 - 8015ba8: f8c4 3188 str.w r3, [r4, #392] @ 0x188 - 8015bac: 2e02 cmp r6, #2 - 8015bae: f8c1 8108 str.w r8, [r1, #264] @ 0x108 - 8015bb2: bf02 ittt eq - 8015bb4: f8d4 318c ldreq.w r3, [r4, #396] @ 0x18c - 8015bb8: 4313 orreq r3, r2 - 8015bba: f8c4 318c streq.w r3, [r4, #396] @ 0x18c - 8015bbe: 1c6b adds r3, r5, #1 - 8015bc0: 3502 adds r5, #2 - 8015bc2: 6063 str r3, [r4, #4] - 8015bc4: f844 7025 str.w r7, [r4, r5, lsl #2] - 8015bc8: f7fd f951 bl 8012e6e <__retarget_lock_release_recursive> - 8015bcc: 2000 movs r0, #0 - 8015bce: e7df b.n 8015b90 <__register_exitproc+0x34> - 8015bd0: 200193c0 .word 0x200193c0 - 8015bd4: 200193f8 .word 0x200193f8 - 8015bd8: 20000160 .word 0x20000160 - -08015bdc : - 8015bdc: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8015be0: 6903 ldr r3, [r0, #16] - 8015be2: 690c ldr r4, [r1, #16] - 8015be4: 42a3 cmp r3, r4 - 8015be6: 4607 mov r7, r0 - 8015be8: db7e blt.n 8015ce8 - 8015bea: 3c01 subs r4, #1 - 8015bec: f101 0814 add.w r8, r1, #20 - 8015bf0: 00a3 lsls r3, r4, #2 - 8015bf2: f100 0514 add.w r5, r0, #20 - 8015bf6: 9300 str r3, [sp, #0] - 8015bf8: eb05 0384 add.w r3, r5, r4, lsl #2 - 8015bfc: 9301 str r3, [sp, #4] - 8015bfe: f858 3024 ldr.w r3, [r8, r4, lsl #2] - 8015c02: f855 2024 ldr.w r2, [r5, r4, lsl #2] - 8015c06: 3301 adds r3, #1 - 8015c08: 429a cmp r2, r3 - 8015c0a: eb08 0984 add.w r9, r8, r4, lsl #2 - 8015c0e: fbb2 f6f3 udiv r6, r2, r3 - 8015c12: d32e bcc.n 8015c72 - 8015c14: f04f 0a00 mov.w sl, #0 - 8015c18: 46c4 mov ip, r8 - 8015c1a: 46ae mov lr, r5 - 8015c1c: 46d3 mov fp, sl - 8015c1e: f85c 3b04 ldr.w r3, [ip], #4 - 8015c22: b298 uxth r0, r3 - 8015c24: fb06 a000 mla r0, r6, r0, sl - 8015c28: 0c02 lsrs r2, r0, #16 - 8015c2a: 0c1b lsrs r3, r3, #16 - 8015c2c: fb06 2303 mla r3, r6, r3, r2 - 8015c30: f8de 2000 ldr.w r2, [lr] - 8015c34: b280 uxth r0, r0 - 8015c36: b292 uxth r2, r2 - 8015c38: 1a12 subs r2, r2, r0 - 8015c3a: 445a add r2, fp - 8015c3c: f8de 0000 ldr.w r0, [lr] - 8015c40: ea4f 4a13 mov.w sl, r3, lsr #16 - 8015c44: b29b uxth r3, r3 - 8015c46: ebc3 4322 rsb r3, r3, r2, asr #16 - 8015c4a: eb03 4310 add.w r3, r3, r0, lsr #16 - 8015c4e: b292 uxth r2, r2 - 8015c50: ea42 4203 orr.w r2, r2, r3, lsl #16 - 8015c54: 45e1 cmp r9, ip - 8015c56: f84e 2b04 str.w r2, [lr], #4 - 8015c5a: ea4f 4b23 mov.w fp, r3, asr #16 - 8015c5e: d2de bcs.n 8015c1e - 8015c60: 9b00 ldr r3, [sp, #0] - 8015c62: 58eb ldr r3, [r5, r3] - 8015c64: b92b cbnz r3, 8015c72 - 8015c66: 9b01 ldr r3, [sp, #4] - 8015c68: 3b04 subs r3, #4 - 8015c6a: 429d cmp r5, r3 - 8015c6c: 461a mov r2, r3 - 8015c6e: d32f bcc.n 8015cd0 - 8015c70: 613c str r4, [r7, #16] - 8015c72: 4638 mov r0, r7 - 8015c74: f001 f826 bl 8016cc4 <__mcmp> - 8015c78: 2800 cmp r0, #0 - 8015c7a: db25 blt.n 8015cc8 - 8015c7c: 4629 mov r1, r5 - 8015c7e: 2000 movs r0, #0 - 8015c80: f858 2b04 ldr.w r2, [r8], #4 - 8015c84: f8d1 c000 ldr.w ip, [r1] - 8015c88: fa1f fe82 uxth.w lr, r2 - 8015c8c: fa1f f38c uxth.w r3, ip - 8015c90: eba3 030e sub.w r3, r3, lr - 8015c94: 4403 add r3, r0 - 8015c96: 0c12 lsrs r2, r2, #16 - 8015c98: ebc2 4223 rsb r2, r2, r3, asr #16 - 8015c9c: eb02 421c add.w r2, r2, ip, lsr #16 - 8015ca0: b29b uxth r3, r3 - 8015ca2: ea43 4302 orr.w r3, r3, r2, lsl #16 - 8015ca6: 45c1 cmp r9, r8 - 8015ca8: f841 3b04 str.w r3, [r1], #4 - 8015cac: ea4f 4022 mov.w r0, r2, asr #16 - 8015cb0: d2e6 bcs.n 8015c80 - 8015cb2: f855 2024 ldr.w r2, [r5, r4, lsl #2] - 8015cb6: eb05 0384 add.w r3, r5, r4, lsl #2 - 8015cba: b922 cbnz r2, 8015cc6 - 8015cbc: 3b04 subs r3, #4 - 8015cbe: 429d cmp r5, r3 - 8015cc0: 461a mov r2, r3 - 8015cc2: d30b bcc.n 8015cdc - 8015cc4: 613c str r4, [r7, #16] - 8015cc6: 3601 adds r6, #1 - 8015cc8: 4630 mov r0, r6 - 8015cca: b003 add sp, #12 - 8015ccc: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 8015cd0: 6812 ldr r2, [r2, #0] - 8015cd2: 3b04 subs r3, #4 - 8015cd4: 2a00 cmp r2, #0 - 8015cd6: d1cb bne.n 8015c70 - 8015cd8: 3c01 subs r4, #1 - 8015cda: e7c6 b.n 8015c6a - 8015cdc: 6812 ldr r2, [r2, #0] - 8015cde: 3b04 subs r3, #4 - 8015ce0: 2a00 cmp r2, #0 - 8015ce2: d1ef bne.n 8015cc4 - 8015ce4: 3c01 subs r4, #1 - 8015ce6: e7ea b.n 8015cbe - 8015ce8: 2000 movs r0, #0 - 8015cea: e7ee b.n 8015cca - 8015cec: 0000 movs r0, r0 - ... - -08015cf0 <_dtoa_r>: - 8015cf0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8015cf4: b099 sub sp, #100 @ 0x64 - 8015cf6: ed8d 0b02 vstr d0, [sp, #8] - 8015cfa: 9109 str r1, [sp, #36] @ 0x24 - 8015cfc: 6b81 ldr r1, [r0, #56] @ 0x38 - 8015cfe: 9e22 ldr r6, [sp, #136] @ 0x88 - 8015d00: 920e str r2, [sp, #56] @ 0x38 - 8015d02: ec55 4b10 vmov r4, r5, d0 - 8015d06: 4683 mov fp, r0 - 8015d08: 9313 str r3, [sp, #76] @ 0x4c - 8015d0a: b149 cbz r1, 8015d20 <_dtoa_r+0x30> - 8015d0c: 6bc2 ldr r2, [r0, #60] @ 0x3c - 8015d0e: 604a str r2, [r1, #4] - 8015d10: 2301 movs r3, #1 - 8015d12: 4093 lsls r3, r2 - 8015d14: 608b str r3, [r1, #8] - 8015d16: f000 fdce bl 80168b6 <_Bfree> - 8015d1a: 2300 movs r3, #0 - 8015d1c: f8cb 3038 str.w r3, [fp, #56] @ 0x38 - 8015d20: 1e2b subs r3, r5, #0 - 8015d22: bfb9 ittee lt - 8015d24: f023 4300 biclt.w r3, r3, #2147483648 @ 0x80000000 - 8015d28: 9303 strlt r3, [sp, #12] - 8015d2a: 2300 movge r3, #0 - 8015d2c: 6033 strge r3, [r6, #0] - 8015d2e: 9f03 ldr r7, [sp, #12] - 8015d30: 4b97 ldr r3, [pc, #604] @ (8015f90 <_dtoa_r+0x2a0>) - 8015d32: bfbc itt lt - 8015d34: 2201 movlt r2, #1 - 8015d36: 6032 strlt r2, [r6, #0] - 8015d38: 43bb bics r3, r7 - 8015d3a: d114 bne.n 8015d66 <_dtoa_r+0x76> - 8015d3c: 9a13 ldr r2, [sp, #76] @ 0x4c - 8015d3e: f242 730f movw r3, #9999 @ 0x270f - 8015d42: 6013 str r3, [r2, #0] - 8015d44: f3c7 0313 ubfx r3, r7, #0, #20 - 8015d48: 4323 orrs r3, r4 - 8015d4a: f000 854c beq.w 80167e6 <_dtoa_r+0xaf6> - 8015d4e: 9b23 ldr r3, [sp, #140] @ 0x8c - 8015d50: f8df a254 ldr.w sl, [pc, #596] @ 8015fa8 <_dtoa_r+0x2b8> - 8015d54: b11b cbz r3, 8015d5e <_dtoa_r+0x6e> - 8015d56: f10a 0303 add.w r3, sl, #3 - 8015d5a: 9a23 ldr r2, [sp, #140] @ 0x8c - 8015d5c: 6013 str r3, [r2, #0] - 8015d5e: 4650 mov r0, sl - 8015d60: b019 add sp, #100 @ 0x64 - 8015d62: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 8015d66: ed9d 7b02 vldr d7, [sp, #8] - 8015d6a: 2200 movs r2, #0 - 8015d6c: ec51 0b17 vmov r0, r1, d7 - 8015d70: 2300 movs r3, #0 - 8015d72: ed8d 7b0c vstr d7, [sp, #48] @ 0x30 - 8015d76: f7ea feb7 bl 8000ae8 <__aeabi_dcmpeq> - 8015d7a: 4680 mov r8, r0 - 8015d7c: b150 cbz r0, 8015d94 <_dtoa_r+0xa4> - 8015d7e: 9a13 ldr r2, [sp, #76] @ 0x4c - 8015d80: 2301 movs r3, #1 - 8015d82: 6013 str r3, [r2, #0] - 8015d84: 9b23 ldr r3, [sp, #140] @ 0x8c - 8015d86: b113 cbz r3, 8015d8e <_dtoa_r+0x9e> - 8015d88: 9a23 ldr r2, [sp, #140] @ 0x8c - 8015d8a: 4b82 ldr r3, [pc, #520] @ (8015f94 <_dtoa_r+0x2a4>) - 8015d8c: 6013 str r3, [r2, #0] - 8015d8e: f8df a21c ldr.w sl, [pc, #540] @ 8015fac <_dtoa_r+0x2bc> - 8015d92: e7e4 b.n 8015d5e <_dtoa_r+0x6e> - 8015d94: ed9d 0b0c vldr d0, [sp, #48] @ 0x30 - 8015d98: aa16 add r2, sp, #88 @ 0x58 - 8015d9a: a917 add r1, sp, #92 @ 0x5c - 8015d9c: 4658 mov r0, fp - 8015d9e: f001 f841 bl 8016e24 <__d2b> - 8015da2: f3c7 560a ubfx r6, r7, #20, #11 - 8015da6: 4681 mov r9, r0 - 8015da8: 2e00 cmp r6, #0 - 8015daa: d077 beq.n 8015e9c <_dtoa_r+0x1ac> - 8015dac: 9b0d ldr r3, [sp, #52] @ 0x34 - 8015dae: f8cd 8050 str.w r8, [sp, #80] @ 0x50 - 8015db2: f3c3 0313 ubfx r3, r3, #0, #20 - 8015db6: e9dd 010c ldrd r0, r1, [sp, #48] @ 0x30 - 8015dba: f043 537f orr.w r3, r3, #1069547520 @ 0x3fc00000 - 8015dbe: f443 1340 orr.w r3, r3, #3145728 @ 0x300000 - 8015dc2: f2a6 36ff subw r6, r6, #1023 @ 0x3ff - 8015dc6: 4619 mov r1, r3 - 8015dc8: 2200 movs r2, #0 - 8015dca: 4b73 ldr r3, [pc, #460] @ (8015f98 <_dtoa_r+0x2a8>) - 8015dcc: f7ea fa6c bl 80002a8 <__aeabi_dsub> - 8015dd0: a369 add r3, pc, #420 @ (adr r3, 8015f78 <_dtoa_r+0x288>) - 8015dd2: e9d3 2300 ldrd r2, r3, [r3] - 8015dd6: f7ea fc1f bl 8000618 <__aeabi_dmul> - 8015dda: a369 add r3, pc, #420 @ (adr r3, 8015f80 <_dtoa_r+0x290>) - 8015ddc: e9d3 2300 ldrd r2, r3, [r3] - 8015de0: f7ea fa64 bl 80002ac <__adddf3> - 8015de4: 4604 mov r4, r0 - 8015de6: 4630 mov r0, r6 - 8015de8: 460d mov r5, r1 - 8015dea: f7ea fbab bl 8000544 <__aeabi_i2d> - 8015dee: a366 add r3, pc, #408 @ (adr r3, 8015f88 <_dtoa_r+0x298>) - 8015df0: e9d3 2300 ldrd r2, r3, [r3] - 8015df4: f7ea fc10 bl 8000618 <__aeabi_dmul> - 8015df8: 4602 mov r2, r0 - 8015dfa: 460b mov r3, r1 - 8015dfc: 4620 mov r0, r4 - 8015dfe: 4629 mov r1, r5 - 8015e00: f7ea fa54 bl 80002ac <__adddf3> - 8015e04: 4604 mov r4, r0 - 8015e06: 460d mov r5, r1 - 8015e08: f7ea feb6 bl 8000b78 <__aeabi_d2iz> - 8015e0c: 2200 movs r2, #0 - 8015e0e: 4607 mov r7, r0 - 8015e10: 2300 movs r3, #0 - 8015e12: 4620 mov r0, r4 - 8015e14: 4629 mov r1, r5 - 8015e16: f7ea fe71 bl 8000afc <__aeabi_dcmplt> - 8015e1a: b140 cbz r0, 8015e2e <_dtoa_r+0x13e> - 8015e1c: 4638 mov r0, r7 - 8015e1e: f7ea fb91 bl 8000544 <__aeabi_i2d> - 8015e22: 4622 mov r2, r4 - 8015e24: 462b mov r3, r5 - 8015e26: f7ea fe5f bl 8000ae8 <__aeabi_dcmpeq> - 8015e2a: b900 cbnz r0, 8015e2e <_dtoa_r+0x13e> - 8015e2c: 3f01 subs r7, #1 - 8015e2e: 2f16 cmp r7, #22 - 8015e30: d851 bhi.n 8015ed6 <_dtoa_r+0x1e6> - 8015e32: 4b5a ldr r3, [pc, #360] @ (8015f9c <_dtoa_r+0x2ac>) - 8015e34: eb03 03c7 add.w r3, r3, r7, lsl #3 - 8015e38: e9d3 2300 ldrd r2, r3, [r3] - 8015e3c: e9dd 010c ldrd r0, r1, [sp, #48] @ 0x30 - 8015e40: f7ea fe5c bl 8000afc <__aeabi_dcmplt> - 8015e44: 2800 cmp r0, #0 - 8015e46: d048 beq.n 8015eda <_dtoa_r+0x1ea> - 8015e48: 3f01 subs r7, #1 - 8015e4a: 2300 movs r3, #0 - 8015e4c: 9312 str r3, [sp, #72] @ 0x48 - 8015e4e: 9b16 ldr r3, [sp, #88] @ 0x58 - 8015e50: 1b9b subs r3, r3, r6 - 8015e52: 1e5a subs r2, r3, #1 - 8015e54: bf44 itt mi - 8015e56: f1c3 0801 rsbmi r8, r3, #1 - 8015e5a: 2300 movmi r3, #0 - 8015e5c: 9208 str r2, [sp, #32] - 8015e5e: bf54 ite pl - 8015e60: f04f 0800 movpl.w r8, #0 - 8015e64: 9308 strmi r3, [sp, #32] - 8015e66: 2f00 cmp r7, #0 - 8015e68: db39 blt.n 8015ede <_dtoa_r+0x1ee> - 8015e6a: 9b08 ldr r3, [sp, #32] - 8015e6c: 970f str r7, [sp, #60] @ 0x3c - 8015e6e: 443b add r3, r7 - 8015e70: 9308 str r3, [sp, #32] - 8015e72: 2300 movs r3, #0 - 8015e74: 930a str r3, [sp, #40] @ 0x28 - 8015e76: 9b09 ldr r3, [sp, #36] @ 0x24 - 8015e78: 2b09 cmp r3, #9 - 8015e7a: d865 bhi.n 8015f48 <_dtoa_r+0x258> - 8015e7c: 2b05 cmp r3, #5 - 8015e7e: bfc4 itt gt - 8015e80: 3b04 subgt r3, #4 - 8015e82: 9309 strgt r3, [sp, #36] @ 0x24 - 8015e84: 9b09 ldr r3, [sp, #36] @ 0x24 - 8015e86: f1a3 0302 sub.w r3, r3, #2 - 8015e8a: bfcc ite gt - 8015e8c: 2400 movgt r4, #0 - 8015e8e: 2401 movle r4, #1 - 8015e90: 2b03 cmp r3, #3 - 8015e92: d864 bhi.n 8015f5e <_dtoa_r+0x26e> - 8015e94: e8df f003 tbb [pc, r3] - 8015e98: 5635372a .word 0x5635372a - 8015e9c: e9dd 6316 ldrd r6, r3, [sp, #88] @ 0x58 - 8015ea0: 441e add r6, r3 - 8015ea2: f206 4332 addw r3, r6, #1074 @ 0x432 - 8015ea6: 2b20 cmp r3, #32 - 8015ea8: bfc1 itttt gt - 8015eaa: f1c3 0340 rsbgt r3, r3, #64 @ 0x40 - 8015eae: 409f lslgt r7, r3 - 8015eb0: f206 4312 addwgt r3, r6, #1042 @ 0x412 - 8015eb4: fa24 f303 lsrgt.w r3, r4, r3 - 8015eb8: bfd6 itet le - 8015eba: f1c3 0320 rsble r3, r3, #32 - 8015ebe: ea47 0003 orrgt.w r0, r7, r3 - 8015ec2: fa04 f003 lslle.w r0, r4, r3 - 8015ec6: f7ea fb2d bl 8000524 <__aeabi_ui2d> - 8015eca: 2201 movs r2, #1 - 8015ecc: f1a1 73f8 sub.w r3, r1, #32505856 @ 0x1f00000 - 8015ed0: 3e01 subs r6, #1 - 8015ed2: 9214 str r2, [sp, #80] @ 0x50 - 8015ed4: e777 b.n 8015dc6 <_dtoa_r+0xd6> - 8015ed6: 2301 movs r3, #1 - 8015ed8: e7b8 b.n 8015e4c <_dtoa_r+0x15c> - 8015eda: 9012 str r0, [sp, #72] @ 0x48 - 8015edc: e7b7 b.n 8015e4e <_dtoa_r+0x15e> - 8015ede: 427b negs r3, r7 - 8015ee0: 930a str r3, [sp, #40] @ 0x28 - 8015ee2: 2300 movs r3, #0 - 8015ee4: eba8 0807 sub.w r8, r8, r7 - 8015ee8: 930f str r3, [sp, #60] @ 0x3c - 8015eea: e7c4 b.n 8015e76 <_dtoa_r+0x186> - 8015eec: 2300 movs r3, #0 - 8015eee: 930b str r3, [sp, #44] @ 0x2c - 8015ef0: 9b0e ldr r3, [sp, #56] @ 0x38 - 8015ef2: 2b00 cmp r3, #0 - 8015ef4: dc36 bgt.n 8015f64 <_dtoa_r+0x274> - 8015ef6: 2301 movs r3, #1 - 8015ef8: 9300 str r3, [sp, #0] - 8015efa: 9307 str r3, [sp, #28] - 8015efc: 461a mov r2, r3 - 8015efe: 920e str r2, [sp, #56] @ 0x38 - 8015f00: e00b b.n 8015f1a <_dtoa_r+0x22a> - 8015f02: 2301 movs r3, #1 - 8015f04: e7f3 b.n 8015eee <_dtoa_r+0x1fe> - 8015f06: 2300 movs r3, #0 - 8015f08: 930b str r3, [sp, #44] @ 0x2c - 8015f0a: 9b0e ldr r3, [sp, #56] @ 0x38 - 8015f0c: 18fb adds r3, r7, r3 - 8015f0e: 9300 str r3, [sp, #0] - 8015f10: 3301 adds r3, #1 - 8015f12: 2b01 cmp r3, #1 - 8015f14: 9307 str r3, [sp, #28] - 8015f16: bfb8 it lt - 8015f18: 2301 movlt r3, #1 - 8015f1a: 2100 movs r1, #0 - 8015f1c: 2204 movs r2, #4 - 8015f1e: f102 0014 add.w r0, r2, #20 - 8015f22: 4298 cmp r0, r3 - 8015f24: d922 bls.n 8015f6c <_dtoa_r+0x27c> - 8015f26: f8cb 103c str.w r1, [fp, #60] @ 0x3c - 8015f2a: 4658 mov r0, fp - 8015f2c: f000 fc9e bl 801686c <_Balloc> - 8015f30: 4682 mov sl, r0 - 8015f32: 2800 cmp r0, #0 - 8015f34: d13c bne.n 8015fb0 <_dtoa_r+0x2c0> - 8015f36: 4b1a ldr r3, [pc, #104] @ (8015fa0 <_dtoa_r+0x2b0>) - 8015f38: 4602 mov r2, r0 - 8015f3a: f240 11af movw r1, #431 @ 0x1af - 8015f3e: 4819 ldr r0, [pc, #100] @ (8015fa4 <_dtoa_r+0x2b4>) - 8015f40: f001 fa64 bl 801740c <__assert_func> - 8015f44: 2301 movs r3, #1 - 8015f46: e7df b.n 8015f08 <_dtoa_r+0x218> - 8015f48: 2401 movs r4, #1 - 8015f4a: 2300 movs r3, #0 - 8015f4c: 9309 str r3, [sp, #36] @ 0x24 - 8015f4e: 940b str r4, [sp, #44] @ 0x2c - 8015f50: f04f 33ff mov.w r3, #4294967295 - 8015f54: 9300 str r3, [sp, #0] - 8015f56: 9307 str r3, [sp, #28] - 8015f58: 2200 movs r2, #0 - 8015f5a: 2312 movs r3, #18 - 8015f5c: e7cf b.n 8015efe <_dtoa_r+0x20e> - 8015f5e: 2301 movs r3, #1 - 8015f60: 930b str r3, [sp, #44] @ 0x2c - 8015f62: e7f5 b.n 8015f50 <_dtoa_r+0x260> - 8015f64: 9b0e ldr r3, [sp, #56] @ 0x38 - 8015f66: 9300 str r3, [sp, #0] - 8015f68: 9307 str r3, [sp, #28] - 8015f6a: e7d6 b.n 8015f1a <_dtoa_r+0x22a> - 8015f6c: 3101 adds r1, #1 - 8015f6e: 0052 lsls r2, r2, #1 - 8015f70: e7d5 b.n 8015f1e <_dtoa_r+0x22e> - 8015f72: bf00 nop - 8015f74: f3af 8000 nop.w - 8015f78: 636f4361 .word 0x636f4361 - 8015f7c: 3fd287a7 .word 0x3fd287a7 - 8015f80: 8b60c8b3 .word 0x8b60c8b3 - 8015f84: 3fc68a28 .word 0x3fc68a28 - 8015f88: 509f79fb .word 0x509f79fb - 8015f8c: 3fd34413 .word 0x3fd34413 - 8015f90: 7ff00000 .word 0x7ff00000 - 8015f94: 0801a72e .word 0x0801a72e - 8015f98: 3ff80000 .word 0x3ff80000 - 8015f9c: 0801a880 .word 0x0801a880 - 8015fa0: 0801a786 .word 0x0801a786 - 8015fa4: 0801a797 .word 0x0801a797 - 8015fa8: 0801a782 .word 0x0801a782 - 8015fac: 0801a72d .word 0x0801a72d - 8015fb0: 9b07 ldr r3, [sp, #28] - 8015fb2: f8cb 0038 str.w r0, [fp, #56] @ 0x38 - 8015fb6: 2b0e cmp r3, #14 - 8015fb8: f200 80a4 bhi.w 8016104 <_dtoa_r+0x414> - 8015fbc: 2c00 cmp r4, #0 - 8015fbe: f000 80a1 beq.w 8016104 <_dtoa_r+0x414> - 8015fc2: 2f00 cmp r7, #0 - 8015fc4: dd33 ble.n 801602e <_dtoa_r+0x33e> - 8015fc6: 4bae ldr r3, [pc, #696] @ (8016280 <_dtoa_r+0x590>) - 8015fc8: f007 020f and.w r2, r7, #15 - 8015fcc: eb03 03c2 add.w r3, r3, r2, lsl #3 - 8015fd0: ed93 7b00 vldr d7, [r3] - 8015fd4: 05f8 lsls r0, r7, #23 - 8015fd6: ed8d 7b04 vstr d7, [sp, #16] - 8015fda: ea4f 1427 mov.w r4, r7, asr #4 - 8015fde: d516 bpl.n 801600e <_dtoa_r+0x31e> - 8015fe0: 4ba8 ldr r3, [pc, #672] @ (8016284 <_dtoa_r+0x594>) - 8015fe2: e9dd 010c ldrd r0, r1, [sp, #48] @ 0x30 - 8015fe6: e9d3 2308 ldrd r2, r3, [r3, #32] - 8015fea: f7ea fc3f bl 800086c <__aeabi_ddiv> - 8015fee: e9cd 0102 strd r0, r1, [sp, #8] - 8015ff2: f004 040f and.w r4, r4, #15 - 8015ff6: 2603 movs r6, #3 - 8015ff8: 4da2 ldr r5, [pc, #648] @ (8016284 <_dtoa_r+0x594>) - 8015ffa: b954 cbnz r4, 8016012 <_dtoa_r+0x322> - 8015ffc: e9dd 2304 ldrd r2, r3, [sp, #16] - 8016000: e9dd 0102 ldrd r0, r1, [sp, #8] - 8016004: f7ea fc32 bl 800086c <__aeabi_ddiv> - 8016008: e9cd 0102 strd r0, r1, [sp, #8] - 801600c: e028 b.n 8016060 <_dtoa_r+0x370> - 801600e: 2602 movs r6, #2 - 8016010: e7f2 b.n 8015ff8 <_dtoa_r+0x308> - 8016012: 07e1 lsls r1, r4, #31 - 8016014: d508 bpl.n 8016028 <_dtoa_r+0x338> - 8016016: e9dd 0104 ldrd r0, r1, [sp, #16] - 801601a: e9d5 2300 ldrd r2, r3, [r5] - 801601e: f7ea fafb bl 8000618 <__aeabi_dmul> - 8016022: e9cd 0104 strd r0, r1, [sp, #16] - 8016026: 3601 adds r6, #1 - 8016028: 1064 asrs r4, r4, #1 - 801602a: 3508 adds r5, #8 - 801602c: e7e5 b.n 8015ffa <_dtoa_r+0x30a> - 801602e: f000 80d2 beq.w 80161d6 <_dtoa_r+0x4e6> - 8016032: 427c negs r4, r7 - 8016034: 4b92 ldr r3, [pc, #584] @ (8016280 <_dtoa_r+0x590>) - 8016036: 4d93 ldr r5, [pc, #588] @ (8016284 <_dtoa_r+0x594>) - 8016038: f004 020f and.w r2, r4, #15 - 801603c: eb03 03c2 add.w r3, r3, r2, lsl #3 - 8016040: e9d3 2300 ldrd r2, r3, [r3] - 8016044: e9dd 010c ldrd r0, r1, [sp, #48] @ 0x30 - 8016048: f7ea fae6 bl 8000618 <__aeabi_dmul> - 801604c: e9cd 0102 strd r0, r1, [sp, #8] - 8016050: 1124 asrs r4, r4, #4 - 8016052: 2300 movs r3, #0 - 8016054: 2602 movs r6, #2 - 8016056: 2c00 cmp r4, #0 - 8016058: f040 80b2 bne.w 80161c0 <_dtoa_r+0x4d0> - 801605c: 2b00 cmp r3, #0 - 801605e: d1d3 bne.n 8016008 <_dtoa_r+0x318> - 8016060: 9b12 ldr r3, [sp, #72] @ 0x48 - 8016062: e9dd 4502 ldrd r4, r5, [sp, #8] - 8016066: 2b00 cmp r3, #0 - 8016068: f000 80b7 beq.w 80161da <_dtoa_r+0x4ea> - 801606c: 4b86 ldr r3, [pc, #536] @ (8016288 <_dtoa_r+0x598>) - 801606e: 2200 movs r2, #0 - 8016070: 4620 mov r0, r4 - 8016072: 4629 mov r1, r5 - 8016074: f7ea fd42 bl 8000afc <__aeabi_dcmplt> - 8016078: 2800 cmp r0, #0 - 801607a: f000 80ae beq.w 80161da <_dtoa_r+0x4ea> - 801607e: 9b07 ldr r3, [sp, #28] - 8016080: 2b00 cmp r3, #0 - 8016082: f000 80aa beq.w 80161da <_dtoa_r+0x4ea> - 8016086: 9b00 ldr r3, [sp, #0] - 8016088: 2b00 cmp r3, #0 - 801608a: dd37 ble.n 80160fc <_dtoa_r+0x40c> - 801608c: 1e7b subs r3, r7, #1 - 801608e: 9304 str r3, [sp, #16] - 8016090: 4620 mov r0, r4 - 8016092: 4b7e ldr r3, [pc, #504] @ (801628c <_dtoa_r+0x59c>) - 8016094: 2200 movs r2, #0 - 8016096: 4629 mov r1, r5 - 8016098: f7ea fabe bl 8000618 <__aeabi_dmul> - 801609c: e9cd 0102 strd r0, r1, [sp, #8] - 80160a0: 9c00 ldr r4, [sp, #0] - 80160a2: 3601 adds r6, #1 - 80160a4: 4630 mov r0, r6 - 80160a6: f7ea fa4d bl 8000544 <__aeabi_i2d> - 80160aa: e9dd 2302 ldrd r2, r3, [sp, #8] - 80160ae: f7ea fab3 bl 8000618 <__aeabi_dmul> - 80160b2: 4b77 ldr r3, [pc, #476] @ (8016290 <_dtoa_r+0x5a0>) - 80160b4: 2200 movs r2, #0 - 80160b6: f7ea f8f9 bl 80002ac <__adddf3> - 80160ba: 4605 mov r5, r0 - 80160bc: f1a1 7650 sub.w r6, r1, #54525952 @ 0x3400000 - 80160c0: 2c00 cmp r4, #0 - 80160c2: f040 808d bne.w 80161e0 <_dtoa_r+0x4f0> - 80160c6: e9dd 0102 ldrd r0, r1, [sp, #8] - 80160ca: 4b72 ldr r3, [pc, #456] @ (8016294 <_dtoa_r+0x5a4>) - 80160cc: 2200 movs r2, #0 - 80160ce: f7ea f8eb bl 80002a8 <__aeabi_dsub> - 80160d2: 4602 mov r2, r0 - 80160d4: 460b mov r3, r1 - 80160d6: e9cd 2302 strd r2, r3, [sp, #8] - 80160da: 462a mov r2, r5 - 80160dc: 4633 mov r3, r6 - 80160de: f7ea fd2b bl 8000b38 <__aeabi_dcmpgt> - 80160e2: 2800 cmp r0, #0 - 80160e4: f040 828c bne.w 8016600 <_dtoa_r+0x910> - 80160e8: e9dd 0102 ldrd r0, r1, [sp, #8] - 80160ec: 462a mov r2, r5 - 80160ee: f106 4300 add.w r3, r6, #2147483648 @ 0x80000000 - 80160f2: f7ea fd03 bl 8000afc <__aeabi_dcmplt> - 80160f6: 2800 cmp r0, #0 - 80160f8: f040 8129 bne.w 801634e <_dtoa_r+0x65e> - 80160fc: e9dd 340c ldrd r3, r4, [sp, #48] @ 0x30 - 8016100: e9cd 3402 strd r3, r4, [sp, #8] - 8016104: 9b17 ldr r3, [sp, #92] @ 0x5c - 8016106: 2b00 cmp r3, #0 - 8016108: f2c0 815b blt.w 80163c2 <_dtoa_r+0x6d2> - 801610c: 2f0e cmp r7, #14 - 801610e: f300 8158 bgt.w 80163c2 <_dtoa_r+0x6d2> - 8016112: 4b5b ldr r3, [pc, #364] @ (8016280 <_dtoa_r+0x590>) - 8016114: eb03 03c7 add.w r3, r3, r7, lsl #3 - 8016118: ed93 7b00 vldr d7, [r3] - 801611c: 9b0e ldr r3, [sp, #56] @ 0x38 - 801611e: 2b00 cmp r3, #0 - 8016120: ed8d 7b00 vstr d7, [sp] - 8016124: da03 bge.n 801612e <_dtoa_r+0x43e> - 8016126: 9b07 ldr r3, [sp, #28] - 8016128: 2b00 cmp r3, #0 - 801612a: f340 8102 ble.w 8016332 <_dtoa_r+0x642> - 801612e: e9dd 4502 ldrd r4, r5, [sp, #8] - 8016132: 4656 mov r6, sl - 8016134: e9dd 2300 ldrd r2, r3, [sp] - 8016138: 4620 mov r0, r4 - 801613a: 4629 mov r1, r5 - 801613c: f7ea fb96 bl 800086c <__aeabi_ddiv> - 8016140: f7ea fd1a bl 8000b78 <__aeabi_d2iz> - 8016144: 4680 mov r8, r0 - 8016146: f7ea f9fd bl 8000544 <__aeabi_i2d> - 801614a: e9dd 2300 ldrd r2, r3, [sp] - 801614e: f7ea fa63 bl 8000618 <__aeabi_dmul> - 8016152: 4602 mov r2, r0 - 8016154: 460b mov r3, r1 - 8016156: 4620 mov r0, r4 - 8016158: 4629 mov r1, r5 - 801615a: f108 0430 add.w r4, r8, #48 @ 0x30 - 801615e: f7ea f8a3 bl 80002a8 <__aeabi_dsub> - 8016162: f806 4b01 strb.w r4, [r6], #1 - 8016166: 9d07 ldr r5, [sp, #28] - 8016168: eba6 040a sub.w r4, r6, sl - 801616c: 42a5 cmp r5, r4 - 801616e: 4602 mov r2, r0 - 8016170: 460b mov r3, r1 - 8016172: f040 8118 bne.w 80163a6 <_dtoa_r+0x6b6> - 8016176: f7ea f899 bl 80002ac <__adddf3> - 801617a: e9dd 2300 ldrd r2, r3, [sp] - 801617e: 4604 mov r4, r0 - 8016180: 460d mov r5, r1 - 8016182: f7ea fcd9 bl 8000b38 <__aeabi_dcmpgt> - 8016186: 2800 cmp r0, #0 - 8016188: f040 80fa bne.w 8016380 <_dtoa_r+0x690> - 801618c: e9dd 2300 ldrd r2, r3, [sp] - 8016190: 4620 mov r0, r4 - 8016192: 4629 mov r1, r5 - 8016194: f7ea fca8 bl 8000ae8 <__aeabi_dcmpeq> - 8016198: b118 cbz r0, 80161a2 <_dtoa_r+0x4b2> - 801619a: f018 0f01 tst.w r8, #1 - 801619e: f040 80ef bne.w 8016380 <_dtoa_r+0x690> - 80161a2: 4649 mov r1, r9 - 80161a4: 4658 mov r0, fp - 80161a6: f000 fb86 bl 80168b6 <_Bfree> - 80161aa: 2300 movs r3, #0 - 80161ac: 7033 strb r3, [r6, #0] - 80161ae: 9b13 ldr r3, [sp, #76] @ 0x4c - 80161b0: 3701 adds r7, #1 - 80161b2: 601f str r7, [r3, #0] - 80161b4: 9b23 ldr r3, [sp, #140] @ 0x8c - 80161b6: 2b00 cmp r3, #0 - 80161b8: f43f add1 beq.w 8015d5e <_dtoa_r+0x6e> - 80161bc: 601e str r6, [r3, #0] - 80161be: e5ce b.n 8015d5e <_dtoa_r+0x6e> - 80161c0: 07e2 lsls r2, r4, #31 - 80161c2: d505 bpl.n 80161d0 <_dtoa_r+0x4e0> - 80161c4: e9d5 2300 ldrd r2, r3, [r5] - 80161c8: f7ea fa26 bl 8000618 <__aeabi_dmul> - 80161cc: 3601 adds r6, #1 - 80161ce: 2301 movs r3, #1 - 80161d0: 1064 asrs r4, r4, #1 - 80161d2: 3508 adds r5, #8 - 80161d4: e73f b.n 8016056 <_dtoa_r+0x366> - 80161d6: 2602 movs r6, #2 - 80161d8: e742 b.n 8016060 <_dtoa_r+0x370> - 80161da: 9c07 ldr r4, [sp, #28] - 80161dc: 9704 str r7, [sp, #16] - 80161de: e761 b.n 80160a4 <_dtoa_r+0x3b4> - 80161e0: 4b27 ldr r3, [pc, #156] @ (8016280 <_dtoa_r+0x590>) - 80161e2: 990b ldr r1, [sp, #44] @ 0x2c - 80161e4: eb03 03c4 add.w r3, r3, r4, lsl #3 - 80161e8: e953 2302 ldrd r2, r3, [r3, #-8] - 80161ec: 4454 add r4, sl - 80161ee: 2900 cmp r1, #0 - 80161f0: d054 beq.n 801629c <_dtoa_r+0x5ac> - 80161f2: 4929 ldr r1, [pc, #164] @ (8016298 <_dtoa_r+0x5a8>) - 80161f4: 2000 movs r0, #0 - 80161f6: f7ea fb39 bl 800086c <__aeabi_ddiv> - 80161fa: 4633 mov r3, r6 - 80161fc: 462a mov r2, r5 - 80161fe: f7ea f853 bl 80002a8 <__aeabi_dsub> - 8016202: e9cd 0110 strd r0, r1, [sp, #64] @ 0x40 - 8016206: 4656 mov r6, sl - 8016208: e9dd 0102 ldrd r0, r1, [sp, #8] - 801620c: f7ea fcb4 bl 8000b78 <__aeabi_d2iz> - 8016210: 4605 mov r5, r0 - 8016212: f7ea f997 bl 8000544 <__aeabi_i2d> - 8016216: 4602 mov r2, r0 - 8016218: 460b mov r3, r1 - 801621a: e9dd 0102 ldrd r0, r1, [sp, #8] - 801621e: f7ea f843 bl 80002a8 <__aeabi_dsub> - 8016222: 3530 adds r5, #48 @ 0x30 - 8016224: 4602 mov r2, r0 - 8016226: 460b mov r3, r1 - 8016228: e9cd 2302 strd r2, r3, [sp, #8] - 801622c: f806 5b01 strb.w r5, [r6], #1 - 8016230: e9dd 2310 ldrd r2, r3, [sp, #64] @ 0x40 - 8016234: f7ea fc62 bl 8000afc <__aeabi_dcmplt> - 8016238: 2800 cmp r0, #0 - 801623a: d172 bne.n 8016322 <_dtoa_r+0x632> - 801623c: e9dd 2302 ldrd r2, r3, [sp, #8] - 8016240: 4911 ldr r1, [pc, #68] @ (8016288 <_dtoa_r+0x598>) - 8016242: 2000 movs r0, #0 - 8016244: f7ea f830 bl 80002a8 <__aeabi_dsub> - 8016248: e9dd 2310 ldrd r2, r3, [sp, #64] @ 0x40 - 801624c: f7ea fc56 bl 8000afc <__aeabi_dcmplt> - 8016250: 2800 cmp r0, #0 - 8016252: f040 8096 bne.w 8016382 <_dtoa_r+0x692> - 8016256: 42a6 cmp r6, r4 - 8016258: f43f af50 beq.w 80160fc <_dtoa_r+0x40c> - 801625c: e9dd 0110 ldrd r0, r1, [sp, #64] @ 0x40 - 8016260: 4b0a ldr r3, [pc, #40] @ (801628c <_dtoa_r+0x59c>) - 8016262: 2200 movs r2, #0 - 8016264: f7ea f9d8 bl 8000618 <__aeabi_dmul> - 8016268: 4b08 ldr r3, [pc, #32] @ (801628c <_dtoa_r+0x59c>) - 801626a: e9cd 0110 strd r0, r1, [sp, #64] @ 0x40 - 801626e: 2200 movs r2, #0 - 8016270: e9dd 0102 ldrd r0, r1, [sp, #8] - 8016274: f7ea f9d0 bl 8000618 <__aeabi_dmul> - 8016278: e9cd 0102 strd r0, r1, [sp, #8] - 801627c: e7c4 b.n 8016208 <_dtoa_r+0x518> - 801627e: bf00 nop - 8016280: 0801a880 .word 0x0801a880 - 8016284: 0801a858 .word 0x0801a858 - 8016288: 3ff00000 .word 0x3ff00000 - 801628c: 40240000 .word 0x40240000 - 8016290: 401c0000 .word 0x401c0000 - 8016294: 40140000 .word 0x40140000 - 8016298: 3fe00000 .word 0x3fe00000 - 801629c: 4631 mov r1, r6 - 801629e: 4628 mov r0, r5 - 80162a0: f7ea f9ba bl 8000618 <__aeabi_dmul> - 80162a4: e9cd 0110 strd r0, r1, [sp, #64] @ 0x40 - 80162a8: 9415 str r4, [sp, #84] @ 0x54 - 80162aa: 4656 mov r6, sl - 80162ac: e9dd 0102 ldrd r0, r1, [sp, #8] - 80162b0: f7ea fc62 bl 8000b78 <__aeabi_d2iz> - 80162b4: 4605 mov r5, r0 - 80162b6: f7ea f945 bl 8000544 <__aeabi_i2d> - 80162ba: 4602 mov r2, r0 - 80162bc: 460b mov r3, r1 - 80162be: e9dd 0102 ldrd r0, r1, [sp, #8] - 80162c2: f7e9 fff1 bl 80002a8 <__aeabi_dsub> - 80162c6: 3530 adds r5, #48 @ 0x30 - 80162c8: f806 5b01 strb.w r5, [r6], #1 - 80162cc: 4602 mov r2, r0 - 80162ce: 460b mov r3, r1 - 80162d0: 42a6 cmp r6, r4 - 80162d2: e9cd 2302 strd r2, r3, [sp, #8] - 80162d6: f04f 0200 mov.w r2, #0 - 80162da: d124 bne.n 8016326 <_dtoa_r+0x636> - 80162dc: 4bac ldr r3, [pc, #688] @ (8016590 <_dtoa_r+0x8a0>) - 80162de: e9dd 0110 ldrd r0, r1, [sp, #64] @ 0x40 - 80162e2: f7e9 ffe3 bl 80002ac <__adddf3> - 80162e6: 4602 mov r2, r0 - 80162e8: 460b mov r3, r1 - 80162ea: e9dd 0102 ldrd r0, r1, [sp, #8] - 80162ee: f7ea fc23 bl 8000b38 <__aeabi_dcmpgt> - 80162f2: 2800 cmp r0, #0 - 80162f4: d145 bne.n 8016382 <_dtoa_r+0x692> - 80162f6: e9dd 2310 ldrd r2, r3, [sp, #64] @ 0x40 - 80162fa: 49a5 ldr r1, [pc, #660] @ (8016590 <_dtoa_r+0x8a0>) - 80162fc: 2000 movs r0, #0 - 80162fe: f7e9 ffd3 bl 80002a8 <__aeabi_dsub> - 8016302: 4602 mov r2, r0 - 8016304: 460b mov r3, r1 - 8016306: e9dd 0102 ldrd r0, r1, [sp, #8] - 801630a: f7ea fbf7 bl 8000afc <__aeabi_dcmplt> - 801630e: 2800 cmp r0, #0 - 8016310: f43f aef4 beq.w 80160fc <_dtoa_r+0x40c> - 8016314: 9e15 ldr r6, [sp, #84] @ 0x54 - 8016316: 1e73 subs r3, r6, #1 - 8016318: 9315 str r3, [sp, #84] @ 0x54 - 801631a: f816 3c01 ldrb.w r3, [r6, #-1] - 801631e: 2b30 cmp r3, #48 @ 0x30 - 8016320: d0f8 beq.n 8016314 <_dtoa_r+0x624> - 8016322: 9f04 ldr r7, [sp, #16] - 8016324: e73d b.n 80161a2 <_dtoa_r+0x4b2> - 8016326: 4b9b ldr r3, [pc, #620] @ (8016594 <_dtoa_r+0x8a4>) - 8016328: f7ea f976 bl 8000618 <__aeabi_dmul> - 801632c: e9cd 0102 strd r0, r1, [sp, #8] - 8016330: e7bc b.n 80162ac <_dtoa_r+0x5bc> - 8016332: d10c bne.n 801634e <_dtoa_r+0x65e> - 8016334: 4b98 ldr r3, [pc, #608] @ (8016598 <_dtoa_r+0x8a8>) - 8016336: 2200 movs r2, #0 - 8016338: e9dd 0100 ldrd r0, r1, [sp] - 801633c: f7ea f96c bl 8000618 <__aeabi_dmul> - 8016340: e9dd 2302 ldrd r2, r3, [sp, #8] - 8016344: f7ea fbee bl 8000b24 <__aeabi_dcmpge> - 8016348: 2800 cmp r0, #0 - 801634a: f000 8157 beq.w 80165fc <_dtoa_r+0x90c> - 801634e: 2400 movs r4, #0 - 8016350: 4625 mov r5, r4 - 8016352: 9b0e ldr r3, [sp, #56] @ 0x38 - 8016354: 43db mvns r3, r3 - 8016356: 9304 str r3, [sp, #16] - 8016358: 4656 mov r6, sl - 801635a: 2700 movs r7, #0 - 801635c: 4621 mov r1, r4 - 801635e: 4658 mov r0, fp - 8016360: f000 faa9 bl 80168b6 <_Bfree> - 8016364: 2d00 cmp r5, #0 - 8016366: d0dc beq.n 8016322 <_dtoa_r+0x632> - 8016368: b12f cbz r7, 8016376 <_dtoa_r+0x686> - 801636a: 42af cmp r7, r5 - 801636c: d003 beq.n 8016376 <_dtoa_r+0x686> - 801636e: 4639 mov r1, r7 - 8016370: 4658 mov r0, fp - 8016372: f000 faa0 bl 80168b6 <_Bfree> - 8016376: 4629 mov r1, r5 - 8016378: 4658 mov r0, fp - 801637a: f000 fa9c bl 80168b6 <_Bfree> - 801637e: e7d0 b.n 8016322 <_dtoa_r+0x632> - 8016380: 9704 str r7, [sp, #16] - 8016382: 4633 mov r3, r6 - 8016384: 461e mov r6, r3 - 8016386: f813 2d01 ldrb.w r2, [r3, #-1]! - 801638a: 2a39 cmp r2, #57 @ 0x39 - 801638c: d107 bne.n 801639e <_dtoa_r+0x6ae> - 801638e: 459a cmp sl, r3 - 8016390: d1f8 bne.n 8016384 <_dtoa_r+0x694> - 8016392: 9a04 ldr r2, [sp, #16] - 8016394: 3201 adds r2, #1 - 8016396: 9204 str r2, [sp, #16] - 8016398: 2230 movs r2, #48 @ 0x30 - 801639a: f88a 2000 strb.w r2, [sl] - 801639e: 781a ldrb r2, [r3, #0] - 80163a0: 3201 adds r2, #1 - 80163a2: 701a strb r2, [r3, #0] - 80163a4: e7bd b.n 8016322 <_dtoa_r+0x632> - 80163a6: 4b7b ldr r3, [pc, #492] @ (8016594 <_dtoa_r+0x8a4>) - 80163a8: 2200 movs r2, #0 - 80163aa: f7ea f935 bl 8000618 <__aeabi_dmul> - 80163ae: 2200 movs r2, #0 - 80163b0: 2300 movs r3, #0 - 80163b2: 4604 mov r4, r0 - 80163b4: 460d mov r5, r1 - 80163b6: f7ea fb97 bl 8000ae8 <__aeabi_dcmpeq> - 80163ba: 2800 cmp r0, #0 - 80163bc: f43f aeba beq.w 8016134 <_dtoa_r+0x444> - 80163c0: e6ef b.n 80161a2 <_dtoa_r+0x4b2> - 80163c2: 9a0b ldr r2, [sp, #44] @ 0x2c - 80163c4: 2a00 cmp r2, #0 - 80163c6: f000 80db beq.w 8016580 <_dtoa_r+0x890> - 80163ca: 9a09 ldr r2, [sp, #36] @ 0x24 - 80163cc: 2a01 cmp r2, #1 - 80163ce: f300 80bf bgt.w 8016550 <_dtoa_r+0x860> - 80163d2: 9a14 ldr r2, [sp, #80] @ 0x50 - 80163d4: 2a00 cmp r2, #0 - 80163d6: f000 80b7 beq.w 8016548 <_dtoa_r+0x858> - 80163da: f203 4333 addw r3, r3, #1075 @ 0x433 - 80163de: 9c0a ldr r4, [sp, #40] @ 0x28 - 80163e0: 4646 mov r6, r8 - 80163e2: 9a08 ldr r2, [sp, #32] - 80163e4: 2101 movs r1, #1 - 80163e6: 441a add r2, r3 - 80163e8: 4658 mov r0, fp - 80163ea: 4498 add r8, r3 - 80163ec: 9208 str r2, [sp, #32] - 80163ee: f000 fafd bl 80169ec <__i2b> - 80163f2: 4605 mov r5, r0 - 80163f4: b15e cbz r6, 801640e <_dtoa_r+0x71e> - 80163f6: 9b08 ldr r3, [sp, #32] - 80163f8: 2b00 cmp r3, #0 - 80163fa: dd08 ble.n 801640e <_dtoa_r+0x71e> - 80163fc: 42b3 cmp r3, r6 - 80163fe: 9a08 ldr r2, [sp, #32] - 8016400: bfa8 it ge - 8016402: 4633 movge r3, r6 - 8016404: eba8 0803 sub.w r8, r8, r3 - 8016408: 1af6 subs r6, r6, r3 - 801640a: 1ad3 subs r3, r2, r3 - 801640c: 9308 str r3, [sp, #32] - 801640e: 9b0a ldr r3, [sp, #40] @ 0x28 - 8016410: b1f3 cbz r3, 8016450 <_dtoa_r+0x760> - 8016412: 9b0b ldr r3, [sp, #44] @ 0x2c - 8016414: 2b00 cmp r3, #0 - 8016416: f000 80b7 beq.w 8016588 <_dtoa_r+0x898> - 801641a: b18c cbz r4, 8016440 <_dtoa_r+0x750> - 801641c: 4629 mov r1, r5 - 801641e: 4622 mov r2, r4 - 8016420: 4658 mov r0, fp - 8016422: f000 fba3 bl 8016b6c <__pow5mult> - 8016426: 464a mov r2, r9 - 8016428: 4601 mov r1, r0 - 801642a: 4605 mov r5, r0 - 801642c: 4658 mov r0, fp - 801642e: f000 faf3 bl 8016a18 <__multiply> - 8016432: 4649 mov r1, r9 - 8016434: 9004 str r0, [sp, #16] - 8016436: 4658 mov r0, fp - 8016438: f000 fa3d bl 80168b6 <_Bfree> - 801643c: 9b04 ldr r3, [sp, #16] - 801643e: 4699 mov r9, r3 - 8016440: 9b0a ldr r3, [sp, #40] @ 0x28 - 8016442: 1b1a subs r2, r3, r4 - 8016444: d004 beq.n 8016450 <_dtoa_r+0x760> - 8016446: 4649 mov r1, r9 - 8016448: 4658 mov r0, fp - 801644a: f000 fb8f bl 8016b6c <__pow5mult> - 801644e: 4681 mov r9, r0 - 8016450: 2101 movs r1, #1 - 8016452: 4658 mov r0, fp - 8016454: f000 faca bl 80169ec <__i2b> - 8016458: 9b0f ldr r3, [sp, #60] @ 0x3c - 801645a: 4604 mov r4, r0 - 801645c: 2b00 cmp r3, #0 - 801645e: f000 81cc beq.w 80167fa <_dtoa_r+0xb0a> - 8016462: 461a mov r2, r3 - 8016464: 4601 mov r1, r0 - 8016466: 4658 mov r0, fp - 8016468: f000 fb80 bl 8016b6c <__pow5mult> - 801646c: 9b09 ldr r3, [sp, #36] @ 0x24 - 801646e: 2b01 cmp r3, #1 - 8016470: 4604 mov r4, r0 - 8016472: f300 8095 bgt.w 80165a0 <_dtoa_r+0x8b0> - 8016476: 9b02 ldr r3, [sp, #8] - 8016478: 2b00 cmp r3, #0 - 801647a: f040 8087 bne.w 801658c <_dtoa_r+0x89c> - 801647e: 9b03 ldr r3, [sp, #12] - 8016480: f3c3 0313 ubfx r3, r3, #0, #20 - 8016484: 2b00 cmp r3, #0 - 8016486: f040 8089 bne.w 801659c <_dtoa_r+0x8ac> - 801648a: 9b03 ldr r3, [sp, #12] - 801648c: f023 4300 bic.w r3, r3, #2147483648 @ 0x80000000 - 8016490: 0d1b lsrs r3, r3, #20 - 8016492: 051b lsls r3, r3, #20 - 8016494: b12b cbz r3, 80164a2 <_dtoa_r+0x7b2> - 8016496: 9b08 ldr r3, [sp, #32] - 8016498: 3301 adds r3, #1 - 801649a: 9308 str r3, [sp, #32] - 801649c: f108 0801 add.w r8, r8, #1 - 80164a0: 2301 movs r3, #1 - 80164a2: 930a str r3, [sp, #40] @ 0x28 - 80164a4: 9b0f ldr r3, [sp, #60] @ 0x3c - 80164a6: 2b00 cmp r3, #0 - 80164a8: f000 81ad beq.w 8016806 <_dtoa_r+0xb16> - 80164ac: 6923 ldr r3, [r4, #16] - 80164ae: eb04 0383 add.w r3, r4, r3, lsl #2 - 80164b2: 6918 ldr r0, [r3, #16] - 80164b4: f000 fa4e bl 8016954 <__hi0bits> - 80164b8: f1c0 0020 rsb r0, r0, #32 - 80164bc: 9b08 ldr r3, [sp, #32] - 80164be: 4418 add r0, r3 - 80164c0: f010 001f ands.w r0, r0, #31 - 80164c4: d077 beq.n 80165b6 <_dtoa_r+0x8c6> - 80164c6: f1c0 0320 rsb r3, r0, #32 - 80164ca: 2b04 cmp r3, #4 - 80164cc: dd6b ble.n 80165a6 <_dtoa_r+0x8b6> - 80164ce: 9b08 ldr r3, [sp, #32] - 80164d0: f1c0 001c rsb r0, r0, #28 - 80164d4: 4403 add r3, r0 - 80164d6: 4480 add r8, r0 - 80164d8: 4406 add r6, r0 - 80164da: 9308 str r3, [sp, #32] - 80164dc: f1b8 0f00 cmp.w r8, #0 - 80164e0: dd05 ble.n 80164ee <_dtoa_r+0x7fe> - 80164e2: 4649 mov r1, r9 - 80164e4: 4642 mov r2, r8 - 80164e6: 4658 mov r0, fp - 80164e8: f000 fb80 bl 8016bec <__lshift> - 80164ec: 4681 mov r9, r0 - 80164ee: 9b08 ldr r3, [sp, #32] - 80164f0: 2b00 cmp r3, #0 - 80164f2: dd05 ble.n 8016500 <_dtoa_r+0x810> - 80164f4: 4621 mov r1, r4 - 80164f6: 461a mov r2, r3 - 80164f8: 4658 mov r0, fp - 80164fa: f000 fb77 bl 8016bec <__lshift> - 80164fe: 4604 mov r4, r0 - 8016500: 9b12 ldr r3, [sp, #72] @ 0x48 - 8016502: 2b00 cmp r3, #0 - 8016504: d059 beq.n 80165ba <_dtoa_r+0x8ca> - 8016506: 4621 mov r1, r4 - 8016508: 4648 mov r0, r9 - 801650a: f000 fbdb bl 8016cc4 <__mcmp> - 801650e: 2800 cmp r0, #0 - 8016510: da53 bge.n 80165ba <_dtoa_r+0x8ca> - 8016512: 1e7b subs r3, r7, #1 - 8016514: 9304 str r3, [sp, #16] - 8016516: 4649 mov r1, r9 - 8016518: 2300 movs r3, #0 - 801651a: 220a movs r2, #10 - 801651c: 4658 mov r0, fp - 801651e: f000 f9d3 bl 80168c8 <__multadd> - 8016522: 9b0b ldr r3, [sp, #44] @ 0x2c - 8016524: 4681 mov r9, r0 - 8016526: 2b00 cmp r3, #0 - 8016528: f000 816f beq.w 801680a <_dtoa_r+0xb1a> - 801652c: 2300 movs r3, #0 - 801652e: 4629 mov r1, r5 - 8016530: 220a movs r2, #10 - 8016532: 4658 mov r0, fp - 8016534: f000 f9c8 bl 80168c8 <__multadd> - 8016538: 9b00 ldr r3, [sp, #0] - 801653a: 2b00 cmp r3, #0 - 801653c: 4605 mov r5, r0 - 801653e: dc67 bgt.n 8016610 <_dtoa_r+0x920> - 8016540: 9b09 ldr r3, [sp, #36] @ 0x24 - 8016542: 2b02 cmp r3, #2 - 8016544: dc41 bgt.n 80165ca <_dtoa_r+0x8da> - 8016546: e063 b.n 8016610 <_dtoa_r+0x920> - 8016548: 9b16 ldr r3, [sp, #88] @ 0x58 - 801654a: f1c3 0336 rsb r3, r3, #54 @ 0x36 - 801654e: e746 b.n 80163de <_dtoa_r+0x6ee> - 8016550: 9b07 ldr r3, [sp, #28] - 8016552: 1e5c subs r4, r3, #1 - 8016554: 9b0a ldr r3, [sp, #40] @ 0x28 - 8016556: 42a3 cmp r3, r4 - 8016558: bfbf itttt lt - 801655a: 9b0a ldrlt r3, [sp, #40] @ 0x28 - 801655c: 9a0f ldrlt r2, [sp, #60] @ 0x3c - 801655e: 940a strlt r4, [sp, #40] @ 0x28 - 8016560: 1ae3 sublt r3, r4, r3 - 8016562: bfb4 ite lt - 8016564: 18d2 addlt r2, r2, r3 - 8016566: 1b1c subge r4, r3, r4 - 8016568: 9b07 ldr r3, [sp, #28] - 801656a: bfbc itt lt - 801656c: 920f strlt r2, [sp, #60] @ 0x3c - 801656e: 2400 movlt r4, #0 - 8016570: 2b00 cmp r3, #0 - 8016572: bfb5 itete lt - 8016574: eba8 0603 sublt.w r6, r8, r3 - 8016578: 9b07 ldrge r3, [sp, #28] - 801657a: 2300 movlt r3, #0 - 801657c: 4646 movge r6, r8 - 801657e: e730 b.n 80163e2 <_dtoa_r+0x6f2> - 8016580: 9c0a ldr r4, [sp, #40] @ 0x28 - 8016582: 9d0b ldr r5, [sp, #44] @ 0x2c - 8016584: 4646 mov r6, r8 - 8016586: e735 b.n 80163f4 <_dtoa_r+0x704> - 8016588: 9a0a ldr r2, [sp, #40] @ 0x28 - 801658a: e75c b.n 8016446 <_dtoa_r+0x756> - 801658c: 2300 movs r3, #0 - 801658e: e788 b.n 80164a2 <_dtoa_r+0x7b2> - 8016590: 3fe00000 .word 0x3fe00000 - 8016594: 40240000 .word 0x40240000 - 8016598: 40140000 .word 0x40140000 - 801659c: 9b02 ldr r3, [sp, #8] - 801659e: e780 b.n 80164a2 <_dtoa_r+0x7b2> - 80165a0: 2300 movs r3, #0 - 80165a2: 930a str r3, [sp, #40] @ 0x28 - 80165a4: e782 b.n 80164ac <_dtoa_r+0x7bc> - 80165a6: d099 beq.n 80164dc <_dtoa_r+0x7ec> - 80165a8: 9a08 ldr r2, [sp, #32] - 80165aa: 331c adds r3, #28 - 80165ac: 441a add r2, r3 - 80165ae: 4498 add r8, r3 - 80165b0: 441e add r6, r3 - 80165b2: 9208 str r2, [sp, #32] - 80165b4: e792 b.n 80164dc <_dtoa_r+0x7ec> - 80165b6: 4603 mov r3, r0 - 80165b8: e7f6 b.n 80165a8 <_dtoa_r+0x8b8> - 80165ba: 9b07 ldr r3, [sp, #28] - 80165bc: 9704 str r7, [sp, #16] - 80165be: 2b00 cmp r3, #0 - 80165c0: dc20 bgt.n 8016604 <_dtoa_r+0x914> - 80165c2: 9300 str r3, [sp, #0] - 80165c4: 9b09 ldr r3, [sp, #36] @ 0x24 - 80165c6: 2b02 cmp r3, #2 - 80165c8: dd1e ble.n 8016608 <_dtoa_r+0x918> - 80165ca: 9b00 ldr r3, [sp, #0] - 80165cc: 2b00 cmp r3, #0 - 80165ce: f47f aec0 bne.w 8016352 <_dtoa_r+0x662> - 80165d2: 4621 mov r1, r4 - 80165d4: 2205 movs r2, #5 - 80165d6: 4658 mov r0, fp - 80165d8: f000 f976 bl 80168c8 <__multadd> - 80165dc: 4601 mov r1, r0 - 80165de: 4604 mov r4, r0 - 80165e0: 4648 mov r0, r9 - 80165e2: f000 fb6f bl 8016cc4 <__mcmp> - 80165e6: 2800 cmp r0, #0 - 80165e8: f77f aeb3 ble.w 8016352 <_dtoa_r+0x662> - 80165ec: 4656 mov r6, sl - 80165ee: 2331 movs r3, #49 @ 0x31 - 80165f0: f806 3b01 strb.w r3, [r6], #1 - 80165f4: 9b04 ldr r3, [sp, #16] - 80165f6: 3301 adds r3, #1 - 80165f8: 9304 str r3, [sp, #16] - 80165fa: e6ae b.n 801635a <_dtoa_r+0x66a> - 80165fc: 9c07 ldr r4, [sp, #28] - 80165fe: 9704 str r7, [sp, #16] - 8016600: 4625 mov r5, r4 - 8016602: e7f3 b.n 80165ec <_dtoa_r+0x8fc> - 8016604: 9b07 ldr r3, [sp, #28] - 8016606: 9300 str r3, [sp, #0] - 8016608: 9b0b ldr r3, [sp, #44] @ 0x2c - 801660a: 2b00 cmp r3, #0 - 801660c: f000 8101 beq.w 8016812 <_dtoa_r+0xb22> - 8016610: 2e00 cmp r6, #0 - 8016612: dd05 ble.n 8016620 <_dtoa_r+0x930> - 8016614: 4629 mov r1, r5 - 8016616: 4632 mov r2, r6 - 8016618: 4658 mov r0, fp - 801661a: f000 fae7 bl 8016bec <__lshift> - 801661e: 4605 mov r5, r0 - 8016620: 9b0a ldr r3, [sp, #40] @ 0x28 - 8016622: 2b00 cmp r3, #0 - 8016624: d059 beq.n 80166da <_dtoa_r+0x9ea> - 8016626: 6869 ldr r1, [r5, #4] - 8016628: 4658 mov r0, fp - 801662a: f000 f91f bl 801686c <_Balloc> - 801662e: 4606 mov r6, r0 - 8016630: b920 cbnz r0, 801663c <_dtoa_r+0x94c> - 8016632: 4b83 ldr r3, [pc, #524] @ (8016840 <_dtoa_r+0xb50>) - 8016634: 4602 mov r2, r0 - 8016636: f240 21ef movw r1, #751 @ 0x2ef - 801663a: e480 b.n 8015f3e <_dtoa_r+0x24e> - 801663c: 692a ldr r2, [r5, #16] - 801663e: 3202 adds r2, #2 - 8016640: 0092 lsls r2, r2, #2 - 8016642: f105 010c add.w r1, r5, #12 - 8016646: 300c adds r0, #12 - 8016648: f7fc fc12 bl 8012e70 - 801664c: 2201 movs r2, #1 - 801664e: 4631 mov r1, r6 - 8016650: 4658 mov r0, fp - 8016652: f000 facb bl 8016bec <__lshift> - 8016656: f10a 0301 add.w r3, sl, #1 - 801665a: 9307 str r3, [sp, #28] - 801665c: 9b00 ldr r3, [sp, #0] - 801665e: 4453 add r3, sl - 8016660: 930b str r3, [sp, #44] @ 0x2c - 8016662: 9b02 ldr r3, [sp, #8] - 8016664: f003 0301 and.w r3, r3, #1 - 8016668: 462f mov r7, r5 - 801666a: 930a str r3, [sp, #40] @ 0x28 - 801666c: 4605 mov r5, r0 - 801666e: 9b07 ldr r3, [sp, #28] - 8016670: 4621 mov r1, r4 - 8016672: 3b01 subs r3, #1 - 8016674: 4648 mov r0, r9 - 8016676: 9300 str r3, [sp, #0] - 8016678: f7ff fab0 bl 8015bdc - 801667c: 4639 mov r1, r7 - 801667e: 9002 str r0, [sp, #8] - 8016680: f100 0830 add.w r8, r0, #48 @ 0x30 - 8016684: 4648 mov r0, r9 - 8016686: f000 fb1d bl 8016cc4 <__mcmp> - 801668a: 462a mov r2, r5 - 801668c: 9008 str r0, [sp, #32] - 801668e: 4621 mov r1, r4 - 8016690: 4658 mov r0, fp - 8016692: f000 fb33 bl 8016cfc <__mdiff> - 8016696: 68c2 ldr r2, [r0, #12] - 8016698: 4606 mov r6, r0 - 801669a: bb02 cbnz r2, 80166de <_dtoa_r+0x9ee> - 801669c: 4601 mov r1, r0 - 801669e: 4648 mov r0, r9 - 80166a0: f000 fb10 bl 8016cc4 <__mcmp> - 80166a4: 4602 mov r2, r0 - 80166a6: 4631 mov r1, r6 - 80166a8: 4658 mov r0, fp - 80166aa: 920e str r2, [sp, #56] @ 0x38 - 80166ac: f000 f903 bl 80168b6 <_Bfree> - 80166b0: 9b09 ldr r3, [sp, #36] @ 0x24 - 80166b2: 9a0e ldr r2, [sp, #56] @ 0x38 - 80166b4: 9e07 ldr r6, [sp, #28] - 80166b6: ea43 0102 orr.w r1, r3, r2 - 80166ba: 9b0a ldr r3, [sp, #40] @ 0x28 - 80166bc: 4319 orrs r1, r3 - 80166be: d110 bne.n 80166e2 <_dtoa_r+0x9f2> - 80166c0: f1b8 0f39 cmp.w r8, #57 @ 0x39 - 80166c4: d029 beq.n 801671a <_dtoa_r+0xa2a> - 80166c6: 9b08 ldr r3, [sp, #32] - 80166c8: 2b00 cmp r3, #0 - 80166ca: dd02 ble.n 80166d2 <_dtoa_r+0x9e2> - 80166cc: 9b02 ldr r3, [sp, #8] - 80166ce: f103 0831 add.w r8, r3, #49 @ 0x31 - 80166d2: 9b00 ldr r3, [sp, #0] - 80166d4: f883 8000 strb.w r8, [r3] - 80166d8: e640 b.n 801635c <_dtoa_r+0x66c> - 80166da: 4628 mov r0, r5 - 80166dc: e7bb b.n 8016656 <_dtoa_r+0x966> - 80166de: 2201 movs r2, #1 - 80166e0: e7e1 b.n 80166a6 <_dtoa_r+0x9b6> - 80166e2: 9b08 ldr r3, [sp, #32] - 80166e4: 2b00 cmp r3, #0 - 80166e6: db04 blt.n 80166f2 <_dtoa_r+0xa02> - 80166e8: 9909 ldr r1, [sp, #36] @ 0x24 - 80166ea: 430b orrs r3, r1 - 80166ec: 990a ldr r1, [sp, #40] @ 0x28 - 80166ee: 430b orrs r3, r1 - 80166f0: d120 bne.n 8016734 <_dtoa_r+0xa44> - 80166f2: 2a00 cmp r2, #0 - 80166f4: dded ble.n 80166d2 <_dtoa_r+0x9e2> - 80166f6: 4649 mov r1, r9 - 80166f8: 2201 movs r2, #1 - 80166fa: 4658 mov r0, fp - 80166fc: f000 fa76 bl 8016bec <__lshift> - 8016700: 4621 mov r1, r4 - 8016702: 4681 mov r9, r0 - 8016704: f000 fade bl 8016cc4 <__mcmp> - 8016708: 2800 cmp r0, #0 - 801670a: dc03 bgt.n 8016714 <_dtoa_r+0xa24> - 801670c: d1e1 bne.n 80166d2 <_dtoa_r+0x9e2> - 801670e: f018 0f01 tst.w r8, #1 - 8016712: d0de beq.n 80166d2 <_dtoa_r+0x9e2> - 8016714: f1b8 0f39 cmp.w r8, #57 @ 0x39 - 8016718: d1d8 bne.n 80166cc <_dtoa_r+0x9dc> - 801671a: 9a00 ldr r2, [sp, #0] - 801671c: 2339 movs r3, #57 @ 0x39 - 801671e: 7013 strb r3, [r2, #0] - 8016720: 4633 mov r3, r6 - 8016722: 461e mov r6, r3 - 8016724: 3b01 subs r3, #1 - 8016726: f816 2c01 ldrb.w r2, [r6, #-1] - 801672a: 2a39 cmp r2, #57 @ 0x39 - 801672c: d052 beq.n 80167d4 <_dtoa_r+0xae4> - 801672e: 3201 adds r2, #1 - 8016730: 701a strb r2, [r3, #0] - 8016732: e613 b.n 801635c <_dtoa_r+0x66c> - 8016734: 2a00 cmp r2, #0 - 8016736: dd07 ble.n 8016748 <_dtoa_r+0xa58> - 8016738: f1b8 0f39 cmp.w r8, #57 @ 0x39 - 801673c: d0ed beq.n 801671a <_dtoa_r+0xa2a> - 801673e: 9a00 ldr r2, [sp, #0] - 8016740: f108 0301 add.w r3, r8, #1 - 8016744: 7013 strb r3, [r2, #0] - 8016746: e609 b.n 801635c <_dtoa_r+0x66c> - 8016748: 9b07 ldr r3, [sp, #28] - 801674a: 9a07 ldr r2, [sp, #28] - 801674c: f803 8c01 strb.w r8, [r3, #-1] - 8016750: 9b0b ldr r3, [sp, #44] @ 0x2c - 8016752: 4293 cmp r3, r2 - 8016754: d028 beq.n 80167a8 <_dtoa_r+0xab8> - 8016756: 4649 mov r1, r9 - 8016758: 2300 movs r3, #0 - 801675a: 220a movs r2, #10 - 801675c: 4658 mov r0, fp - 801675e: f000 f8b3 bl 80168c8 <__multadd> - 8016762: 42af cmp r7, r5 - 8016764: 4681 mov r9, r0 - 8016766: f04f 0300 mov.w r3, #0 - 801676a: f04f 020a mov.w r2, #10 - 801676e: 4639 mov r1, r7 - 8016770: 4658 mov r0, fp - 8016772: d107 bne.n 8016784 <_dtoa_r+0xa94> - 8016774: f000 f8a8 bl 80168c8 <__multadd> - 8016778: 4607 mov r7, r0 - 801677a: 4605 mov r5, r0 - 801677c: 9b07 ldr r3, [sp, #28] - 801677e: 3301 adds r3, #1 - 8016780: 9307 str r3, [sp, #28] - 8016782: e774 b.n 801666e <_dtoa_r+0x97e> - 8016784: f000 f8a0 bl 80168c8 <__multadd> - 8016788: 4629 mov r1, r5 - 801678a: 4607 mov r7, r0 - 801678c: 2300 movs r3, #0 - 801678e: 220a movs r2, #10 - 8016790: 4658 mov r0, fp - 8016792: f000 f899 bl 80168c8 <__multadd> - 8016796: 4605 mov r5, r0 - 8016798: e7f0 b.n 801677c <_dtoa_r+0xa8c> - 801679a: 9b00 ldr r3, [sp, #0] - 801679c: 2b00 cmp r3, #0 - 801679e: bfcc ite gt - 80167a0: 461e movgt r6, r3 - 80167a2: 2601 movle r6, #1 - 80167a4: 4456 add r6, sl - 80167a6: 2700 movs r7, #0 - 80167a8: 4649 mov r1, r9 - 80167aa: 2201 movs r2, #1 - 80167ac: 4658 mov r0, fp - 80167ae: f000 fa1d bl 8016bec <__lshift> - 80167b2: 4621 mov r1, r4 - 80167b4: 4681 mov r9, r0 - 80167b6: f000 fa85 bl 8016cc4 <__mcmp> - 80167ba: 2800 cmp r0, #0 - 80167bc: dcb0 bgt.n 8016720 <_dtoa_r+0xa30> - 80167be: d102 bne.n 80167c6 <_dtoa_r+0xad6> - 80167c0: f018 0f01 tst.w r8, #1 - 80167c4: d1ac bne.n 8016720 <_dtoa_r+0xa30> - 80167c6: 4633 mov r3, r6 - 80167c8: 461e mov r6, r3 - 80167ca: f813 2d01 ldrb.w r2, [r3, #-1]! - 80167ce: 2a30 cmp r2, #48 @ 0x30 - 80167d0: d0fa beq.n 80167c8 <_dtoa_r+0xad8> - 80167d2: e5c3 b.n 801635c <_dtoa_r+0x66c> - 80167d4: 459a cmp sl, r3 - 80167d6: d1a4 bne.n 8016722 <_dtoa_r+0xa32> - 80167d8: 9b04 ldr r3, [sp, #16] - 80167da: 3301 adds r3, #1 - 80167dc: 9304 str r3, [sp, #16] - 80167de: 2331 movs r3, #49 @ 0x31 - 80167e0: f88a 3000 strb.w r3, [sl] - 80167e4: e5ba b.n 801635c <_dtoa_r+0x66c> - 80167e6: 9b23 ldr r3, [sp, #140] @ 0x8c - 80167e8: f8df a058 ldr.w sl, [pc, #88] @ 8016844 <_dtoa_r+0xb54> - 80167ec: 2b00 cmp r3, #0 - 80167ee: f43f aab6 beq.w 8015d5e <_dtoa_r+0x6e> - 80167f2: f10a 0308 add.w r3, sl, #8 - 80167f6: f7ff bab0 b.w 8015d5a <_dtoa_r+0x6a> - 80167fa: 9b09 ldr r3, [sp, #36] @ 0x24 - 80167fc: 2b01 cmp r3, #1 - 80167fe: f77f ae3a ble.w 8016476 <_dtoa_r+0x786> - 8016802: 9b0f ldr r3, [sp, #60] @ 0x3c - 8016804: 930a str r3, [sp, #40] @ 0x28 - 8016806: 2001 movs r0, #1 - 8016808: e658 b.n 80164bc <_dtoa_r+0x7cc> - 801680a: 9b00 ldr r3, [sp, #0] - 801680c: 2b00 cmp r3, #0 - 801680e: f77f aed9 ble.w 80165c4 <_dtoa_r+0x8d4> - 8016812: 4656 mov r6, sl - 8016814: 4621 mov r1, r4 - 8016816: 4648 mov r0, r9 - 8016818: f7ff f9e0 bl 8015bdc - 801681c: f100 0830 add.w r8, r0, #48 @ 0x30 - 8016820: f806 8b01 strb.w r8, [r6], #1 - 8016824: 9b00 ldr r3, [sp, #0] - 8016826: eba6 020a sub.w r2, r6, sl - 801682a: 4293 cmp r3, r2 - 801682c: ddb5 ble.n 801679a <_dtoa_r+0xaaa> - 801682e: 4649 mov r1, r9 - 8016830: 2300 movs r3, #0 - 8016832: 220a movs r2, #10 - 8016834: 4658 mov r0, fp - 8016836: f000 f847 bl 80168c8 <__multadd> - 801683a: 4681 mov r9, r0 - 801683c: e7ea b.n 8016814 <_dtoa_r+0xb24> - 801683e: bf00 nop - 8016840: 0801a786 .word 0x0801a786 - 8016844: 0801a779 .word 0x0801a779 - -08016848 <__ascii_mbtowc>: - 8016848: b082 sub sp, #8 - 801684a: b901 cbnz r1, 801684e <__ascii_mbtowc+0x6> - 801684c: a901 add r1, sp, #4 - 801684e: b142 cbz r2, 8016862 <__ascii_mbtowc+0x1a> - 8016850: b14b cbz r3, 8016866 <__ascii_mbtowc+0x1e> - 8016852: 7813 ldrb r3, [r2, #0] - 8016854: 600b str r3, [r1, #0] - 8016856: 7812 ldrb r2, [r2, #0] - 8016858: 1e10 subs r0, r2, #0 - 801685a: bf18 it ne - 801685c: 2001 movne r0, #1 - 801685e: b002 add sp, #8 - 8016860: 4770 bx lr - 8016862: 4610 mov r0, r2 - 8016864: e7fb b.n 801685e <__ascii_mbtowc+0x16> - 8016866: f06f 0001 mvn.w r0, #1 - 801686a: e7f8 b.n 801685e <__ascii_mbtowc+0x16> - -0801686c <_Balloc>: - 801686c: 6c43 ldr r3, [r0, #68] @ 0x44 - 801686e: b570 push {r4, r5, r6, lr} - 8016870: 4605 mov r5, r0 - 8016872: 460c mov r4, r1 - 8016874: b17b cbz r3, 8016896 <_Balloc+0x2a> - 8016876: 6c6b ldr r3, [r5, #68] @ 0x44 - 8016878: f853 0024 ldr.w r0, [r3, r4, lsl #2] - 801687c: b9a0 cbnz r0, 80168a8 <_Balloc+0x3c> - 801687e: 2101 movs r1, #1 - 8016880: fa01 f604 lsl.w r6, r1, r4 - 8016884: 1d72 adds r2, r6, #5 - 8016886: 0092 lsls r2, r2, #2 - 8016888: 4628 mov r0, r5 - 801688a: f000 fddd bl 8017448 <_calloc_r> - 801688e: b148 cbz r0, 80168a4 <_Balloc+0x38> - 8016890: e9c0 4601 strd r4, r6, [r0, #4] - 8016894: e00b b.n 80168ae <_Balloc+0x42> - 8016896: 2221 movs r2, #33 @ 0x21 - 8016898: 2104 movs r1, #4 - 801689a: f000 fdd5 bl 8017448 <_calloc_r> - 801689e: 6468 str r0, [r5, #68] @ 0x44 - 80168a0: 2800 cmp r0, #0 - 80168a2: d1e8 bne.n 8016876 <_Balloc+0xa> - 80168a4: 2000 movs r0, #0 - 80168a6: bd70 pop {r4, r5, r6, pc} - 80168a8: 6802 ldr r2, [r0, #0] - 80168aa: f843 2024 str.w r2, [r3, r4, lsl #2] - 80168ae: 2300 movs r3, #0 - 80168b0: e9c0 3303 strd r3, r3, [r0, #12] - 80168b4: e7f7 b.n 80168a6 <_Balloc+0x3a> - -080168b6 <_Bfree>: - 80168b6: b131 cbz r1, 80168c6 <_Bfree+0x10> - 80168b8: 6c43 ldr r3, [r0, #68] @ 0x44 - 80168ba: 684a ldr r2, [r1, #4] - 80168bc: f853 0022 ldr.w r0, [r3, r2, lsl #2] - 80168c0: 6008 str r0, [r1, #0] - 80168c2: f843 1022 str.w r1, [r3, r2, lsl #2] - 80168c6: 4770 bx lr - -080168c8 <__multadd>: - 80168c8: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 80168cc: 690d ldr r5, [r1, #16] - 80168ce: 4607 mov r7, r0 - 80168d0: 460c mov r4, r1 - 80168d2: 461e mov r6, r3 - 80168d4: f101 0c14 add.w ip, r1, #20 - 80168d8: 2000 movs r0, #0 - 80168da: f8dc 3000 ldr.w r3, [ip] - 80168de: b299 uxth r1, r3 - 80168e0: fb02 6101 mla r1, r2, r1, r6 - 80168e4: 0c1e lsrs r6, r3, #16 - 80168e6: 0c0b lsrs r3, r1, #16 - 80168e8: fb02 3306 mla r3, r2, r6, r3 - 80168ec: b289 uxth r1, r1 - 80168ee: 3001 adds r0, #1 - 80168f0: eb01 4103 add.w r1, r1, r3, lsl #16 - 80168f4: 4285 cmp r5, r0 - 80168f6: f84c 1b04 str.w r1, [ip], #4 - 80168fa: ea4f 4613 mov.w r6, r3, lsr #16 - 80168fe: dcec bgt.n 80168da <__multadd+0x12> - 8016900: b30e cbz r6, 8016946 <__multadd+0x7e> - 8016902: 68a3 ldr r3, [r4, #8] - 8016904: 42ab cmp r3, r5 - 8016906: dc19 bgt.n 801693c <__multadd+0x74> - 8016908: 6861 ldr r1, [r4, #4] - 801690a: 4638 mov r0, r7 - 801690c: 3101 adds r1, #1 - 801690e: f7ff ffad bl 801686c <_Balloc> - 8016912: 4680 mov r8, r0 - 8016914: b928 cbnz r0, 8016922 <__multadd+0x5a> - 8016916: 4602 mov r2, r0 - 8016918: 4b0c ldr r3, [pc, #48] @ (801694c <__multadd+0x84>) - 801691a: 480d ldr r0, [pc, #52] @ (8016950 <__multadd+0x88>) - 801691c: 21ba movs r1, #186 @ 0xba - 801691e: f000 fd75 bl 801740c <__assert_func> - 8016922: 6922 ldr r2, [r4, #16] - 8016924: 3202 adds r2, #2 - 8016926: f104 010c add.w r1, r4, #12 - 801692a: 0092 lsls r2, r2, #2 - 801692c: 300c adds r0, #12 - 801692e: f7fc fa9f bl 8012e70 - 8016932: 4621 mov r1, r4 - 8016934: 4638 mov r0, r7 - 8016936: f7ff ffbe bl 80168b6 <_Bfree> - 801693a: 4644 mov r4, r8 - 801693c: eb04 0385 add.w r3, r4, r5, lsl #2 - 8016940: 3501 adds r5, #1 - 8016942: 615e str r6, [r3, #20] - 8016944: 6125 str r5, [r4, #16] - 8016946: 4620 mov r0, r4 - 8016948: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 801694c: 0801a786 .word 0x0801a786 - 8016950: 0801a7ef .word 0x0801a7ef - -08016954 <__hi0bits>: - 8016954: f5b0 3f80 cmp.w r0, #65536 @ 0x10000 - 8016958: 4603 mov r3, r0 - 801695a: bf36 itet cc - 801695c: 0403 lslcc r3, r0, #16 - 801695e: 2000 movcs r0, #0 - 8016960: 2010 movcc r0, #16 - 8016962: f1b3 7f80 cmp.w r3, #16777216 @ 0x1000000 - 8016966: bf3c itt cc - 8016968: 021b lslcc r3, r3, #8 - 801696a: 3008 addcc r0, #8 - 801696c: f1b3 5f80 cmp.w r3, #268435456 @ 0x10000000 - 8016970: bf3c itt cc - 8016972: 011b lslcc r3, r3, #4 - 8016974: 3004 addcc r0, #4 - 8016976: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 801697a: bf3c itt cc - 801697c: 009b lslcc r3, r3, #2 - 801697e: 3002 addcc r0, #2 - 8016980: 2b00 cmp r3, #0 - 8016982: db05 blt.n 8016990 <__hi0bits+0x3c> - 8016984: f013 4f80 tst.w r3, #1073741824 @ 0x40000000 - 8016988: f100 0001 add.w r0, r0, #1 - 801698c: bf08 it eq - 801698e: 2020 moveq r0, #32 - 8016990: 4770 bx lr - -08016992 <__lo0bits>: - 8016992: 6803 ldr r3, [r0, #0] - 8016994: 4602 mov r2, r0 - 8016996: f013 0007 ands.w r0, r3, #7 - 801699a: d00b beq.n 80169b4 <__lo0bits+0x22> - 801699c: 07d9 lsls r1, r3, #31 - 801699e: d421 bmi.n 80169e4 <__lo0bits+0x52> - 80169a0: 0798 lsls r0, r3, #30 - 80169a2: bf49 itett mi - 80169a4: 085b lsrmi r3, r3, #1 - 80169a6: 089b lsrpl r3, r3, #2 - 80169a8: 2001 movmi r0, #1 - 80169aa: 6013 strmi r3, [r2, #0] - 80169ac: bf5c itt pl - 80169ae: 6013 strpl r3, [r2, #0] - 80169b0: 2002 movpl r0, #2 - 80169b2: 4770 bx lr - 80169b4: b299 uxth r1, r3 - 80169b6: b909 cbnz r1, 80169bc <__lo0bits+0x2a> - 80169b8: 0c1b lsrs r3, r3, #16 - 80169ba: 2010 movs r0, #16 - 80169bc: b2d9 uxtb r1, r3 - 80169be: b909 cbnz r1, 80169c4 <__lo0bits+0x32> - 80169c0: 3008 adds r0, #8 - 80169c2: 0a1b lsrs r3, r3, #8 - 80169c4: 0719 lsls r1, r3, #28 - 80169c6: bf04 itt eq - 80169c8: 091b lsreq r3, r3, #4 - 80169ca: 3004 addeq r0, #4 - 80169cc: 0799 lsls r1, r3, #30 - 80169ce: bf04 itt eq - 80169d0: 089b lsreq r3, r3, #2 - 80169d2: 3002 addeq r0, #2 - 80169d4: 07d9 lsls r1, r3, #31 - 80169d6: d403 bmi.n 80169e0 <__lo0bits+0x4e> - 80169d8: 085b lsrs r3, r3, #1 - 80169da: f100 0001 add.w r0, r0, #1 - 80169de: d003 beq.n 80169e8 <__lo0bits+0x56> - 80169e0: 6013 str r3, [r2, #0] - 80169e2: 4770 bx lr - 80169e4: 2000 movs r0, #0 - 80169e6: 4770 bx lr - 80169e8: 2020 movs r0, #32 - 80169ea: 4770 bx lr - -080169ec <__i2b>: - 80169ec: b510 push {r4, lr} - 80169ee: 460c mov r4, r1 - 80169f0: 2101 movs r1, #1 - 80169f2: f7ff ff3b bl 801686c <_Balloc> - 80169f6: 4602 mov r2, r0 - 80169f8: b928 cbnz r0, 8016a06 <__i2b+0x1a> - 80169fa: 4b05 ldr r3, [pc, #20] @ (8016a10 <__i2b+0x24>) - 80169fc: 4805 ldr r0, [pc, #20] @ (8016a14 <__i2b+0x28>) - 80169fe: f240 1145 movw r1, #325 @ 0x145 - 8016a02: f000 fd03 bl 801740c <__assert_func> - 8016a06: 2301 movs r3, #1 - 8016a08: 6144 str r4, [r0, #20] - 8016a0a: 6103 str r3, [r0, #16] - 8016a0c: bd10 pop {r4, pc} - 8016a0e: bf00 nop - 8016a10: 0801a786 .word 0x0801a786 - 8016a14: 0801a7ef .word 0x0801a7ef - -08016a18 <__multiply>: - 8016a18: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8016a1c: 4614 mov r4, r2 - 8016a1e: 690a ldr r2, [r1, #16] - 8016a20: 6923 ldr r3, [r4, #16] - 8016a22: 429a cmp r2, r3 - 8016a24: bfa8 it ge - 8016a26: 4623 movge r3, r4 - 8016a28: 460f mov r7, r1 - 8016a2a: bfa4 itt ge - 8016a2c: 460c movge r4, r1 - 8016a2e: 461f movge r7, r3 - 8016a30: f8d4 a010 ldr.w sl, [r4, #16] - 8016a34: f8d7 9010 ldr.w r9, [r7, #16] - 8016a38: 68a3 ldr r3, [r4, #8] - 8016a3a: 6861 ldr r1, [r4, #4] - 8016a3c: eb0a 0609 add.w r6, sl, r9 - 8016a40: 42b3 cmp r3, r6 - 8016a42: b085 sub sp, #20 - 8016a44: bfb8 it lt - 8016a46: 3101 addlt r1, #1 - 8016a48: f7ff ff10 bl 801686c <_Balloc> - 8016a4c: b930 cbnz r0, 8016a5c <__multiply+0x44> - 8016a4e: 4602 mov r2, r0 - 8016a50: 4b44 ldr r3, [pc, #272] @ (8016b64 <__multiply+0x14c>) - 8016a52: 4845 ldr r0, [pc, #276] @ (8016b68 <__multiply+0x150>) - 8016a54: f44f 71b1 mov.w r1, #354 @ 0x162 - 8016a58: f000 fcd8 bl 801740c <__assert_func> - 8016a5c: f100 0514 add.w r5, r0, #20 - 8016a60: eb05 0886 add.w r8, r5, r6, lsl #2 - 8016a64: 462b mov r3, r5 - 8016a66: 2200 movs r2, #0 - 8016a68: 4543 cmp r3, r8 - 8016a6a: d321 bcc.n 8016ab0 <__multiply+0x98> - 8016a6c: f107 0114 add.w r1, r7, #20 - 8016a70: f104 0214 add.w r2, r4, #20 - 8016a74: eb02 028a add.w r2, r2, sl, lsl #2 - 8016a78: eb01 0389 add.w r3, r1, r9, lsl #2 - 8016a7c: 9302 str r3, [sp, #8] - 8016a7e: 1b13 subs r3, r2, r4 - 8016a80: 3b15 subs r3, #21 - 8016a82: f023 0303 bic.w r3, r3, #3 - 8016a86: 3304 adds r3, #4 - 8016a88: f104 0715 add.w r7, r4, #21 - 8016a8c: 42ba cmp r2, r7 - 8016a8e: bf38 it cc - 8016a90: 2304 movcc r3, #4 - 8016a92: 9301 str r3, [sp, #4] - 8016a94: 9b02 ldr r3, [sp, #8] - 8016a96: 9103 str r1, [sp, #12] - 8016a98: 428b cmp r3, r1 - 8016a9a: d80c bhi.n 8016ab6 <__multiply+0x9e> - 8016a9c: 2e00 cmp r6, #0 - 8016a9e: dd03 ble.n 8016aa8 <__multiply+0x90> - 8016aa0: f858 3d04 ldr.w r3, [r8, #-4]! - 8016aa4: 2b00 cmp r3, #0 - 8016aa6: d05b beq.n 8016b60 <__multiply+0x148> - 8016aa8: 6106 str r6, [r0, #16] - 8016aaa: b005 add sp, #20 - 8016aac: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 8016ab0: f843 2b04 str.w r2, [r3], #4 - 8016ab4: e7d8 b.n 8016a68 <__multiply+0x50> - 8016ab6: f8b1 a000 ldrh.w sl, [r1] - 8016aba: f1ba 0f00 cmp.w sl, #0 - 8016abe: d024 beq.n 8016b0a <__multiply+0xf2> - 8016ac0: f104 0e14 add.w lr, r4, #20 - 8016ac4: 46a9 mov r9, r5 - 8016ac6: f04f 0c00 mov.w ip, #0 - 8016aca: f85e 7b04 ldr.w r7, [lr], #4 - 8016ace: f8d9 3000 ldr.w r3, [r9] - 8016ad2: fa1f fb87 uxth.w fp, r7 - 8016ad6: b29b uxth r3, r3 - 8016ad8: fb0a 330b mla r3, sl, fp, r3 - 8016adc: ea4f 4b17 mov.w fp, r7, lsr #16 - 8016ae0: f8d9 7000 ldr.w r7, [r9] - 8016ae4: 4463 add r3, ip - 8016ae6: ea4f 4c17 mov.w ip, r7, lsr #16 - 8016aea: fb0a c70b mla r7, sl, fp, ip - 8016aee: eb07 4713 add.w r7, r7, r3, lsr #16 - 8016af2: b29b uxth r3, r3 - 8016af4: ea43 4307 orr.w r3, r3, r7, lsl #16 - 8016af8: 4572 cmp r2, lr - 8016afa: f849 3b04 str.w r3, [r9], #4 - 8016afe: ea4f 4c17 mov.w ip, r7, lsr #16 - 8016b02: d8e2 bhi.n 8016aca <__multiply+0xb2> - 8016b04: 9b01 ldr r3, [sp, #4] - 8016b06: f845 c003 str.w ip, [r5, r3] - 8016b0a: 9b03 ldr r3, [sp, #12] - 8016b0c: f8b3 9002 ldrh.w r9, [r3, #2] - 8016b10: 3104 adds r1, #4 - 8016b12: f1b9 0f00 cmp.w r9, #0 - 8016b16: d021 beq.n 8016b5c <__multiply+0x144> - 8016b18: 682b ldr r3, [r5, #0] - 8016b1a: f104 0c14 add.w ip, r4, #20 - 8016b1e: 46ae mov lr, r5 - 8016b20: f04f 0a00 mov.w sl, #0 - 8016b24: f8bc b000 ldrh.w fp, [ip] - 8016b28: f8be 7002 ldrh.w r7, [lr, #2] - 8016b2c: fb09 770b mla r7, r9, fp, r7 - 8016b30: 4457 add r7, sl - 8016b32: b29b uxth r3, r3 - 8016b34: ea43 4307 orr.w r3, r3, r7, lsl #16 - 8016b38: f84e 3b04 str.w r3, [lr], #4 - 8016b3c: f85c 3b04 ldr.w r3, [ip], #4 - 8016b40: ea4f 4a13 mov.w sl, r3, lsr #16 - 8016b44: f8be 3000 ldrh.w r3, [lr] - 8016b48: fb09 330a mla r3, r9, sl, r3 - 8016b4c: eb03 4317 add.w r3, r3, r7, lsr #16 - 8016b50: 4562 cmp r2, ip - 8016b52: ea4f 4a13 mov.w sl, r3, lsr #16 - 8016b56: d8e5 bhi.n 8016b24 <__multiply+0x10c> - 8016b58: 9f01 ldr r7, [sp, #4] - 8016b5a: 51eb str r3, [r5, r7] - 8016b5c: 3504 adds r5, #4 - 8016b5e: e799 b.n 8016a94 <__multiply+0x7c> - 8016b60: 3e01 subs r6, #1 - 8016b62: e79b b.n 8016a9c <__multiply+0x84> - 8016b64: 0801a786 .word 0x0801a786 - 8016b68: 0801a7ef .word 0x0801a7ef - -08016b6c <__pow5mult>: - 8016b6c: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - 8016b70: 4615 mov r5, r2 - 8016b72: f012 0203 ands.w r2, r2, #3 - 8016b76: 4607 mov r7, r0 - 8016b78: 460e mov r6, r1 - 8016b7a: d007 beq.n 8016b8c <__pow5mult+0x20> - 8016b7c: 4c1a ldr r4, [pc, #104] @ (8016be8 <__pow5mult+0x7c>) - 8016b7e: 3a01 subs r2, #1 - 8016b80: 2300 movs r3, #0 - 8016b82: f854 2022 ldr.w r2, [r4, r2, lsl #2] - 8016b86: f7ff fe9f bl 80168c8 <__multadd> - 8016b8a: 4606 mov r6, r0 - 8016b8c: 10ad asrs r5, r5, #2 - 8016b8e: d027 beq.n 8016be0 <__pow5mult+0x74> - 8016b90: 6c3c ldr r4, [r7, #64] @ 0x40 - 8016b92: b944 cbnz r4, 8016ba6 <__pow5mult+0x3a> - 8016b94: f240 2171 movw r1, #625 @ 0x271 - 8016b98: 4638 mov r0, r7 - 8016b9a: f7ff ff27 bl 80169ec <__i2b> - 8016b9e: 2300 movs r3, #0 - 8016ba0: 6438 str r0, [r7, #64] @ 0x40 - 8016ba2: 4604 mov r4, r0 - 8016ba4: 6003 str r3, [r0, #0] - 8016ba6: f04f 0900 mov.w r9, #0 - 8016baa: 07eb lsls r3, r5, #31 - 8016bac: d50a bpl.n 8016bc4 <__pow5mult+0x58> - 8016bae: 4631 mov r1, r6 - 8016bb0: 4622 mov r2, r4 - 8016bb2: 4638 mov r0, r7 - 8016bb4: f7ff ff30 bl 8016a18 <__multiply> - 8016bb8: 4631 mov r1, r6 - 8016bba: 4680 mov r8, r0 - 8016bbc: 4638 mov r0, r7 - 8016bbe: f7ff fe7a bl 80168b6 <_Bfree> - 8016bc2: 4646 mov r6, r8 - 8016bc4: 106d asrs r5, r5, #1 - 8016bc6: d00b beq.n 8016be0 <__pow5mult+0x74> - 8016bc8: 6820 ldr r0, [r4, #0] - 8016bca: b938 cbnz r0, 8016bdc <__pow5mult+0x70> - 8016bcc: 4622 mov r2, r4 - 8016bce: 4621 mov r1, r4 - 8016bd0: 4638 mov r0, r7 - 8016bd2: f7ff ff21 bl 8016a18 <__multiply> - 8016bd6: 6020 str r0, [r4, #0] - 8016bd8: f8c0 9000 str.w r9, [r0] - 8016bdc: 4604 mov r4, r0 - 8016bde: e7e4 b.n 8016baa <__pow5mult+0x3e> - 8016be0: 4630 mov r0, r6 - 8016be2: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} - 8016be6: bf00 nop - 8016be8: 0801a848 .word 0x0801a848 - -08016bec <__lshift>: - 8016bec: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 8016bf0: 460c mov r4, r1 - 8016bf2: 6849 ldr r1, [r1, #4] - 8016bf4: 6923 ldr r3, [r4, #16] - 8016bf6: eb03 1862 add.w r8, r3, r2, asr #5 - 8016bfa: 68a3 ldr r3, [r4, #8] - 8016bfc: 4607 mov r7, r0 - 8016bfe: 4691 mov r9, r2 - 8016c00: ea4f 1a62 mov.w sl, r2, asr #5 - 8016c04: f108 0601 add.w r6, r8, #1 - 8016c08: 42b3 cmp r3, r6 - 8016c0a: db0b blt.n 8016c24 <__lshift+0x38> - 8016c0c: 4638 mov r0, r7 - 8016c0e: f7ff fe2d bl 801686c <_Balloc> - 8016c12: 4605 mov r5, r0 - 8016c14: b948 cbnz r0, 8016c2a <__lshift+0x3e> - 8016c16: 4602 mov r2, r0 - 8016c18: 4b28 ldr r3, [pc, #160] @ (8016cbc <__lshift+0xd0>) - 8016c1a: 4829 ldr r0, [pc, #164] @ (8016cc0 <__lshift+0xd4>) - 8016c1c: f44f 71ef mov.w r1, #478 @ 0x1de - 8016c20: f000 fbf4 bl 801740c <__assert_func> - 8016c24: 3101 adds r1, #1 - 8016c26: 005b lsls r3, r3, #1 - 8016c28: e7ee b.n 8016c08 <__lshift+0x1c> - 8016c2a: 2300 movs r3, #0 - 8016c2c: f100 0114 add.w r1, r0, #20 - 8016c30: f100 0210 add.w r2, r0, #16 - 8016c34: 4618 mov r0, r3 - 8016c36: 4553 cmp r3, sl - 8016c38: db33 blt.n 8016ca2 <__lshift+0xb6> - 8016c3a: 6920 ldr r0, [r4, #16] - 8016c3c: ea2a 7aea bic.w sl, sl, sl, asr #31 - 8016c40: f104 0314 add.w r3, r4, #20 - 8016c44: f019 091f ands.w r9, r9, #31 - 8016c48: eb01 018a add.w r1, r1, sl, lsl #2 - 8016c4c: eb03 0c80 add.w ip, r3, r0, lsl #2 - 8016c50: d02b beq.n 8016caa <__lshift+0xbe> - 8016c52: f1c9 0e20 rsb lr, r9, #32 - 8016c56: 468a mov sl, r1 - 8016c58: 2200 movs r2, #0 - 8016c5a: 6818 ldr r0, [r3, #0] - 8016c5c: fa00 f009 lsl.w r0, r0, r9 - 8016c60: 4310 orrs r0, r2 - 8016c62: f84a 0b04 str.w r0, [sl], #4 - 8016c66: f853 2b04 ldr.w r2, [r3], #4 - 8016c6a: 459c cmp ip, r3 - 8016c6c: fa22 f20e lsr.w r2, r2, lr - 8016c70: d8f3 bhi.n 8016c5a <__lshift+0x6e> - 8016c72: ebac 0304 sub.w r3, ip, r4 - 8016c76: 3b15 subs r3, #21 - 8016c78: f023 0303 bic.w r3, r3, #3 - 8016c7c: 3304 adds r3, #4 - 8016c7e: f104 0015 add.w r0, r4, #21 - 8016c82: 4584 cmp ip, r0 - 8016c84: bf38 it cc - 8016c86: 2304 movcc r3, #4 - 8016c88: 50ca str r2, [r1, r3] - 8016c8a: b10a cbz r2, 8016c90 <__lshift+0xa4> - 8016c8c: f108 0602 add.w r6, r8, #2 - 8016c90: 3e01 subs r6, #1 - 8016c92: 4638 mov r0, r7 - 8016c94: 612e str r6, [r5, #16] - 8016c96: 4621 mov r1, r4 - 8016c98: f7ff fe0d bl 80168b6 <_Bfree> - 8016c9c: 4628 mov r0, r5 - 8016c9e: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 8016ca2: f842 0f04 str.w r0, [r2, #4]! - 8016ca6: 3301 adds r3, #1 - 8016ca8: e7c5 b.n 8016c36 <__lshift+0x4a> - 8016caa: 3904 subs r1, #4 - 8016cac: f853 2b04 ldr.w r2, [r3], #4 - 8016cb0: f841 2f04 str.w r2, [r1, #4]! - 8016cb4: 459c cmp ip, r3 - 8016cb6: d8f9 bhi.n 8016cac <__lshift+0xc0> - 8016cb8: e7ea b.n 8016c90 <__lshift+0xa4> - 8016cba: bf00 nop - 8016cbc: 0801a786 .word 0x0801a786 - 8016cc0: 0801a7ef .word 0x0801a7ef - -08016cc4 <__mcmp>: - 8016cc4: 690a ldr r2, [r1, #16] - 8016cc6: 4603 mov r3, r0 - 8016cc8: 6900 ldr r0, [r0, #16] - 8016cca: 1a80 subs r0, r0, r2 - 8016ccc: b530 push {r4, r5, lr} - 8016cce: d10e bne.n 8016cee <__mcmp+0x2a> - 8016cd0: 3314 adds r3, #20 - 8016cd2: 3114 adds r1, #20 - 8016cd4: eb03 0482 add.w r4, r3, r2, lsl #2 - 8016cd8: eb01 0182 add.w r1, r1, r2, lsl #2 - 8016cdc: f854 5d04 ldr.w r5, [r4, #-4]! - 8016ce0: f851 2d04 ldr.w r2, [r1, #-4]! - 8016ce4: 4295 cmp r5, r2 - 8016ce6: d003 beq.n 8016cf0 <__mcmp+0x2c> - 8016ce8: d205 bcs.n 8016cf6 <__mcmp+0x32> - 8016cea: f04f 30ff mov.w r0, #4294967295 - 8016cee: bd30 pop {r4, r5, pc} - 8016cf0: 42a3 cmp r3, r4 - 8016cf2: d3f3 bcc.n 8016cdc <__mcmp+0x18> - 8016cf4: e7fb b.n 8016cee <__mcmp+0x2a> - 8016cf6: 2001 movs r0, #1 - 8016cf8: e7f9 b.n 8016cee <__mcmp+0x2a> - ... - -08016cfc <__mdiff>: - 8016cfc: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8016d00: 4689 mov r9, r1 - 8016d02: 4606 mov r6, r0 - 8016d04: 4611 mov r1, r2 - 8016d06: 4648 mov r0, r9 - 8016d08: 4614 mov r4, r2 - 8016d0a: f7ff ffdb bl 8016cc4 <__mcmp> - 8016d0e: 1e05 subs r5, r0, #0 - 8016d10: d112 bne.n 8016d38 <__mdiff+0x3c> - 8016d12: 4629 mov r1, r5 - 8016d14: 4630 mov r0, r6 - 8016d16: f7ff fda9 bl 801686c <_Balloc> - 8016d1a: 4602 mov r2, r0 - 8016d1c: b928 cbnz r0, 8016d2a <__mdiff+0x2e> - 8016d1e: 4b3f ldr r3, [pc, #252] @ (8016e1c <__mdiff+0x120>) - 8016d20: f240 2137 movw r1, #567 @ 0x237 - 8016d24: 483e ldr r0, [pc, #248] @ (8016e20 <__mdiff+0x124>) - 8016d26: f000 fb71 bl 801740c <__assert_func> - 8016d2a: 2301 movs r3, #1 - 8016d2c: e9c0 3504 strd r3, r5, [r0, #16] - 8016d30: 4610 mov r0, r2 - 8016d32: b003 add sp, #12 - 8016d34: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 8016d38: bfbc itt lt - 8016d3a: 464b movlt r3, r9 - 8016d3c: 46a1 movlt r9, r4 - 8016d3e: 4630 mov r0, r6 - 8016d40: f8d9 1004 ldr.w r1, [r9, #4] - 8016d44: bfba itte lt - 8016d46: 461c movlt r4, r3 - 8016d48: 2501 movlt r5, #1 - 8016d4a: 2500 movge r5, #0 - 8016d4c: f7ff fd8e bl 801686c <_Balloc> - 8016d50: 4602 mov r2, r0 - 8016d52: b918 cbnz r0, 8016d5c <__mdiff+0x60> - 8016d54: 4b31 ldr r3, [pc, #196] @ (8016e1c <__mdiff+0x120>) - 8016d56: f240 2145 movw r1, #581 @ 0x245 - 8016d5a: e7e3 b.n 8016d24 <__mdiff+0x28> - 8016d5c: f8d9 7010 ldr.w r7, [r9, #16] - 8016d60: 6926 ldr r6, [r4, #16] - 8016d62: 60c5 str r5, [r0, #12] - 8016d64: f109 0310 add.w r3, r9, #16 - 8016d68: f109 0514 add.w r5, r9, #20 - 8016d6c: f104 0e14 add.w lr, r4, #20 - 8016d70: f100 0b14 add.w fp, r0, #20 - 8016d74: eb05 0887 add.w r8, r5, r7, lsl #2 - 8016d78: eb0e 0686 add.w r6, lr, r6, lsl #2 - 8016d7c: 9301 str r3, [sp, #4] - 8016d7e: 46d9 mov r9, fp - 8016d80: f04f 0c00 mov.w ip, #0 - 8016d84: 9b01 ldr r3, [sp, #4] - 8016d86: f85e 0b04 ldr.w r0, [lr], #4 - 8016d8a: f853 af04 ldr.w sl, [r3, #4]! - 8016d8e: 9301 str r3, [sp, #4] - 8016d90: fa1f f38a uxth.w r3, sl - 8016d94: 4619 mov r1, r3 - 8016d96: b283 uxth r3, r0 - 8016d98: 1acb subs r3, r1, r3 - 8016d9a: 0c00 lsrs r0, r0, #16 - 8016d9c: 4463 add r3, ip - 8016d9e: ebc0 401a rsb r0, r0, sl, lsr #16 - 8016da2: eb00 4023 add.w r0, r0, r3, asr #16 - 8016da6: b29b uxth r3, r3 - 8016da8: ea43 4300 orr.w r3, r3, r0, lsl #16 - 8016dac: 4576 cmp r6, lr - 8016dae: f849 3b04 str.w r3, [r9], #4 - 8016db2: ea4f 4c20 mov.w ip, r0, asr #16 - 8016db6: d8e5 bhi.n 8016d84 <__mdiff+0x88> - 8016db8: 1b33 subs r3, r6, r4 - 8016dba: 3b15 subs r3, #21 - 8016dbc: f023 0303 bic.w r3, r3, #3 - 8016dc0: 3415 adds r4, #21 - 8016dc2: 3304 adds r3, #4 - 8016dc4: 42a6 cmp r6, r4 - 8016dc6: bf38 it cc - 8016dc8: 2304 movcc r3, #4 - 8016dca: 441d add r5, r3 - 8016dcc: 445b add r3, fp - 8016dce: 461e mov r6, r3 - 8016dd0: 462c mov r4, r5 - 8016dd2: 4544 cmp r4, r8 - 8016dd4: d30e bcc.n 8016df4 <__mdiff+0xf8> - 8016dd6: f108 0103 add.w r1, r8, #3 - 8016dda: 1b49 subs r1, r1, r5 - 8016ddc: f021 0103 bic.w r1, r1, #3 - 8016de0: 3d03 subs r5, #3 - 8016de2: 45a8 cmp r8, r5 - 8016de4: bf38 it cc - 8016de6: 2100 movcc r1, #0 - 8016de8: 440b add r3, r1 - 8016dea: f853 1d04 ldr.w r1, [r3, #-4]! - 8016dee: b191 cbz r1, 8016e16 <__mdiff+0x11a> - 8016df0: 6117 str r7, [r2, #16] - 8016df2: e79d b.n 8016d30 <__mdiff+0x34> - 8016df4: f854 1b04 ldr.w r1, [r4], #4 - 8016df8: 46e6 mov lr, ip - 8016dfa: 0c08 lsrs r0, r1, #16 - 8016dfc: fa1c fc81 uxtah ip, ip, r1 - 8016e00: 4471 add r1, lr - 8016e02: eb00 402c add.w r0, r0, ip, asr #16 - 8016e06: b289 uxth r1, r1 - 8016e08: ea41 4100 orr.w r1, r1, r0, lsl #16 - 8016e0c: f846 1b04 str.w r1, [r6], #4 - 8016e10: ea4f 4c20 mov.w ip, r0, asr #16 - 8016e14: e7dd b.n 8016dd2 <__mdiff+0xd6> - 8016e16: 3f01 subs r7, #1 - 8016e18: e7e7 b.n 8016dea <__mdiff+0xee> - 8016e1a: bf00 nop - 8016e1c: 0801a786 .word 0x0801a786 - 8016e20: 0801a7ef .word 0x0801a7ef - -08016e24 <__d2b>: - 8016e24: e92d 43f7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr} - 8016e28: 460f mov r7, r1 - 8016e2a: 2101 movs r1, #1 - 8016e2c: ec59 8b10 vmov r8, r9, d0 - 8016e30: 4616 mov r6, r2 - 8016e32: f7ff fd1b bl 801686c <_Balloc> - 8016e36: 4604 mov r4, r0 - 8016e38: b930 cbnz r0, 8016e48 <__d2b+0x24> - 8016e3a: 4602 mov r2, r0 - 8016e3c: 4b23 ldr r3, [pc, #140] @ (8016ecc <__d2b+0xa8>) - 8016e3e: 4824 ldr r0, [pc, #144] @ (8016ed0 <__d2b+0xac>) - 8016e40: f240 310f movw r1, #783 @ 0x30f - 8016e44: f000 fae2 bl 801740c <__assert_func> - 8016e48: f3c9 550a ubfx r5, r9, #20, #11 - 8016e4c: f3c9 0313 ubfx r3, r9, #0, #20 - 8016e50: b10d cbz r5, 8016e56 <__d2b+0x32> - 8016e52: f443 1380 orr.w r3, r3, #1048576 @ 0x100000 - 8016e56: 9301 str r3, [sp, #4] - 8016e58: f1b8 0300 subs.w r3, r8, #0 - 8016e5c: d023 beq.n 8016ea6 <__d2b+0x82> - 8016e5e: 4668 mov r0, sp - 8016e60: 9300 str r3, [sp, #0] - 8016e62: f7ff fd96 bl 8016992 <__lo0bits> - 8016e66: e9dd 1200 ldrd r1, r2, [sp] - 8016e6a: b1d0 cbz r0, 8016ea2 <__d2b+0x7e> - 8016e6c: f1c0 0320 rsb r3, r0, #32 - 8016e70: fa02 f303 lsl.w r3, r2, r3 - 8016e74: 430b orrs r3, r1 - 8016e76: 40c2 lsrs r2, r0 - 8016e78: 6163 str r3, [r4, #20] - 8016e7a: 9201 str r2, [sp, #4] - 8016e7c: 9b01 ldr r3, [sp, #4] - 8016e7e: 61a3 str r3, [r4, #24] - 8016e80: 2b00 cmp r3, #0 - 8016e82: bf0c ite eq - 8016e84: 2201 moveq r2, #1 - 8016e86: 2202 movne r2, #2 - 8016e88: 6122 str r2, [r4, #16] - 8016e8a: b1a5 cbz r5, 8016eb6 <__d2b+0x92> - 8016e8c: f2a5 4533 subw r5, r5, #1075 @ 0x433 - 8016e90: 4405 add r5, r0 - 8016e92: 603d str r5, [r7, #0] - 8016e94: f1c0 0035 rsb r0, r0, #53 @ 0x35 - 8016e98: 6030 str r0, [r6, #0] - 8016e9a: 4620 mov r0, r4 - 8016e9c: b003 add sp, #12 - 8016e9e: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} - 8016ea2: 6161 str r1, [r4, #20] - 8016ea4: e7ea b.n 8016e7c <__d2b+0x58> - 8016ea6: a801 add r0, sp, #4 - 8016ea8: f7ff fd73 bl 8016992 <__lo0bits> - 8016eac: 9b01 ldr r3, [sp, #4] - 8016eae: 6163 str r3, [r4, #20] - 8016eb0: 3020 adds r0, #32 - 8016eb2: 2201 movs r2, #1 - 8016eb4: e7e8 b.n 8016e88 <__d2b+0x64> - 8016eb6: eb04 0382 add.w r3, r4, r2, lsl #2 - 8016eba: f2a0 4032 subw r0, r0, #1074 @ 0x432 - 8016ebe: 6038 str r0, [r7, #0] - 8016ec0: 6918 ldr r0, [r3, #16] - 8016ec2: f7ff fd47 bl 8016954 <__hi0bits> - 8016ec6: ebc0 1042 rsb r0, r0, r2, lsl #5 - 8016eca: e7e5 b.n 8016e98 <__d2b+0x74> - 8016ecc: 0801a786 .word 0x0801a786 - 8016ed0: 0801a7ef .word 0x0801a7ef - -08016ed4 <_realloc_r>: - 8016ed4: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8016ed8: 4682 mov sl, r0 - 8016eda: 4693 mov fp, r2 - 8016edc: 460c mov r4, r1 - 8016ede: b929 cbnz r1, 8016eec <_realloc_r+0x18> - 8016ee0: 4611 mov r1, r2 - 8016ee2: b003 add sp, #12 - 8016ee4: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8016ee8: f7fc b8f6 b.w 80130d8 <_malloc_r> - 8016eec: f7fc fb2e bl 801354c <__malloc_lock> - 8016ef0: f10b 080b add.w r8, fp, #11 - 8016ef4: f854 5c04 ldr.w r5, [r4, #-4] - 8016ef8: f1b8 0f16 cmp.w r8, #22 - 8016efc: f1a4 0908 sub.w r9, r4, #8 - 8016f00: f025 0603 bic.w r6, r5, #3 - 8016f04: d908 bls.n 8016f18 <_realloc_r+0x44> - 8016f06: f038 0807 bics.w r8, r8, #7 - 8016f0a: d507 bpl.n 8016f1c <_realloc_r+0x48> - 8016f0c: 230c movs r3, #12 - 8016f0e: f8ca 3000 str.w r3, [sl] - 8016f12: f04f 0b00 mov.w fp, #0 - 8016f16: e032 b.n 8016f7e <_realloc_r+0xaa> - 8016f18: f04f 0810 mov.w r8, #16 - 8016f1c: 45c3 cmp fp, r8 - 8016f1e: d8f5 bhi.n 8016f0c <_realloc_r+0x38> - 8016f20: 4546 cmp r6, r8 - 8016f22: f280 8174 bge.w 801720e <_realloc_r+0x33a> - 8016f26: 4b9e ldr r3, [pc, #632] @ (80171a0 <_realloc_r+0x2cc>) - 8016f28: f8d3 c008 ldr.w ip, [r3, #8] - 8016f2c: eb09 0106 add.w r1, r9, r6 - 8016f30: 458c cmp ip, r1 - 8016f32: 6848 ldr r0, [r1, #4] - 8016f34: d005 beq.n 8016f42 <_realloc_r+0x6e> - 8016f36: f020 0201 bic.w r2, r0, #1 - 8016f3a: 440a add r2, r1 - 8016f3c: 6852 ldr r2, [r2, #4] - 8016f3e: 07d7 lsls r7, r2, #31 - 8016f40: d449 bmi.n 8016fd6 <_realloc_r+0x102> - 8016f42: f020 0003 bic.w r0, r0, #3 - 8016f46: 458c cmp ip, r1 - 8016f48: eb06 0700 add.w r7, r6, r0 - 8016f4c: d11b bne.n 8016f86 <_realloc_r+0xb2> - 8016f4e: f108 0210 add.w r2, r8, #16 - 8016f52: 42ba cmp r2, r7 - 8016f54: dc41 bgt.n 8016fda <_realloc_r+0x106> - 8016f56: eb09 0208 add.w r2, r9, r8 - 8016f5a: eba7 0708 sub.w r7, r7, r8 - 8016f5e: f047 0701 orr.w r7, r7, #1 - 8016f62: 609a str r2, [r3, #8] - 8016f64: 6057 str r7, [r2, #4] - 8016f66: f854 3c04 ldr.w r3, [r4, #-4] - 8016f6a: f003 0301 and.w r3, r3, #1 - 8016f6e: ea43 0308 orr.w r3, r3, r8 - 8016f72: f844 3c04 str.w r3, [r4, #-4] - 8016f76: 4650 mov r0, sl - 8016f78: f7fc faee bl 8013558 <__malloc_unlock> - 8016f7c: 46a3 mov fp, r4 - 8016f7e: 4658 mov r0, fp - 8016f80: b003 add sp, #12 - 8016f82: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 8016f86: 45b8 cmp r8, r7 - 8016f88: dc27 bgt.n 8016fda <_realloc_r+0x106> - 8016f8a: e9d1 2302 ldrd r2, r3, [r1, #8] - 8016f8e: 60d3 str r3, [r2, #12] - 8016f90: 609a str r2, [r3, #8] - 8016f92: f8d9 3004 ldr.w r3, [r9, #4] - 8016f96: eba7 0008 sub.w r0, r7, r8 - 8016f9a: 280f cmp r0, #15 - 8016f9c: f003 0301 and.w r3, r3, #1 - 8016fa0: eb09 0207 add.w r2, r9, r7 - 8016fa4: f240 8135 bls.w 8017212 <_realloc_r+0x33e> - 8016fa8: eb09 0108 add.w r1, r9, r8 - 8016fac: ea48 0303 orr.w r3, r8, r3 - 8016fb0: f040 0001 orr.w r0, r0, #1 - 8016fb4: f8c9 3004 str.w r3, [r9, #4] - 8016fb8: 6048 str r0, [r1, #4] - 8016fba: 6853 ldr r3, [r2, #4] - 8016fbc: f043 0301 orr.w r3, r3, #1 - 8016fc0: 6053 str r3, [r2, #4] - 8016fc2: 3108 adds r1, #8 - 8016fc4: 4650 mov r0, sl - 8016fc6: f7fb ffc7 bl 8012f58 <_free_r> - 8016fca: 4650 mov r0, sl - 8016fcc: f7fc fac4 bl 8013558 <__malloc_unlock> - 8016fd0: f109 0b08 add.w fp, r9, #8 - 8016fd4: e7d3 b.n 8016f7e <_realloc_r+0xaa> - 8016fd6: 2000 movs r0, #0 - 8016fd8: 4601 mov r1, r0 - 8016fda: 07ea lsls r2, r5, #31 - 8016fdc: f100 80c7 bmi.w 801716e <_realloc_r+0x29a> - 8016fe0: f854 5c08 ldr.w r5, [r4, #-8] - 8016fe4: eba9 0505 sub.w r5, r9, r5 - 8016fe8: 686a ldr r2, [r5, #4] - 8016fea: f022 0203 bic.w r2, r2, #3 - 8016fee: 4432 add r2, r6 - 8016ff0: 9201 str r2, [sp, #4] - 8016ff2: 2900 cmp r1, #0 - 8016ff4: f000 8086 beq.w 8017104 <_realloc_r+0x230> - 8016ff8: 458c cmp ip, r1 - 8016ffa: eb00 0702 add.w r7, r0, r2 - 8016ffe: d149 bne.n 8017094 <_realloc_r+0x1c0> - 8017000: f108 0210 add.w r2, r8, #16 - 8017004: 42ba cmp r2, r7 - 8017006: dc7d bgt.n 8017104 <_realloc_r+0x230> - 8017008: 46ab mov fp, r5 - 801700a: 68ea ldr r2, [r5, #12] - 801700c: f85b 1f08 ldr.w r1, [fp, #8]! - 8017010: 60ca str r2, [r1, #12] - 8017012: 6091 str r1, [r2, #8] - 8017014: 1f32 subs r2, r6, #4 - 8017016: 2a24 cmp r2, #36 @ 0x24 - 8017018: d836 bhi.n 8017088 <_realloc_r+0x1b4> - 801701a: 2a13 cmp r2, #19 - 801701c: d932 bls.n 8017084 <_realloc_r+0x1b0> - 801701e: 6821 ldr r1, [r4, #0] - 8017020: 60a9 str r1, [r5, #8] - 8017022: 6861 ldr r1, [r4, #4] - 8017024: 60e9 str r1, [r5, #12] - 8017026: 2a1b cmp r2, #27 - 8017028: d81a bhi.n 8017060 <_realloc_r+0x18c> - 801702a: 3408 adds r4, #8 - 801702c: f105 0210 add.w r2, r5, #16 - 8017030: 6821 ldr r1, [r4, #0] - 8017032: 6011 str r1, [r2, #0] - 8017034: 6861 ldr r1, [r4, #4] - 8017036: 6051 str r1, [r2, #4] - 8017038: 68a1 ldr r1, [r4, #8] - 801703a: 6091 str r1, [r2, #8] - 801703c: eb05 0208 add.w r2, r5, r8 - 8017040: eba7 0708 sub.w r7, r7, r8 - 8017044: f047 0701 orr.w r7, r7, #1 - 8017048: 609a str r2, [r3, #8] - 801704a: 6057 str r7, [r2, #4] - 801704c: 686b ldr r3, [r5, #4] - 801704e: f003 0301 and.w r3, r3, #1 - 8017052: ea43 0308 orr.w r3, r3, r8 - 8017056: 606b str r3, [r5, #4] - 8017058: 4650 mov r0, sl - 801705a: f7fc fa7d bl 8013558 <__malloc_unlock> - 801705e: e78e b.n 8016f7e <_realloc_r+0xaa> - 8017060: 68a1 ldr r1, [r4, #8] - 8017062: 6129 str r1, [r5, #16] - 8017064: 68e1 ldr r1, [r4, #12] - 8017066: 6169 str r1, [r5, #20] - 8017068: 2a24 cmp r2, #36 @ 0x24 - 801706a: bf01 itttt eq - 801706c: 6922 ldreq r2, [r4, #16] - 801706e: 61aa streq r2, [r5, #24] - 8017070: 6961 ldreq r1, [r4, #20] - 8017072: 61e9 streq r1, [r5, #28] - 8017074: bf19 ittee ne - 8017076: 3410 addne r4, #16 - 8017078: f105 0218 addne.w r2, r5, #24 - 801707c: f105 0220 addeq.w r2, r5, #32 - 8017080: 3418 addeq r4, #24 - 8017082: e7d5 b.n 8017030 <_realloc_r+0x15c> - 8017084: 465a mov r2, fp - 8017086: e7d3 b.n 8017030 <_realloc_r+0x15c> - 8017088: 4621 mov r1, r4 - 801708a: 4658 mov r0, fp - 801708c: f7fb fe59 bl 8012d42 - 8017090: 4b43 ldr r3, [pc, #268] @ (80171a0 <_realloc_r+0x2cc>) - 8017092: e7d3 b.n 801703c <_realloc_r+0x168> - 8017094: 45b8 cmp r8, r7 - 8017096: dc35 bgt.n 8017104 <_realloc_r+0x230> - 8017098: e9d1 2302 ldrd r2, r3, [r1, #8] - 801709c: 4628 mov r0, r5 - 801709e: 60d3 str r3, [r2, #12] - 80170a0: 609a str r2, [r3, #8] - 80170a2: f850 2f08 ldr.w r2, [r0, #8]! - 80170a6: 68eb ldr r3, [r5, #12] - 80170a8: 60d3 str r3, [r2, #12] - 80170aa: 609a str r2, [r3, #8] - 80170ac: 1f32 subs r2, r6, #4 - 80170ae: 2a24 cmp r2, #36 @ 0x24 - 80170b0: d824 bhi.n 80170fc <_realloc_r+0x228> - 80170b2: 2a13 cmp r2, #19 - 80170b4: d908 bls.n 80170c8 <_realloc_r+0x1f4> - 80170b6: 6823 ldr r3, [r4, #0] - 80170b8: 60ab str r3, [r5, #8] - 80170ba: 6863 ldr r3, [r4, #4] - 80170bc: 60eb str r3, [r5, #12] - 80170be: 2a1b cmp r2, #27 - 80170c0: d80a bhi.n 80170d8 <_realloc_r+0x204> - 80170c2: 3408 adds r4, #8 - 80170c4: f105 0010 add.w r0, r5, #16 - 80170c8: 6823 ldr r3, [r4, #0] - 80170ca: 6003 str r3, [r0, #0] - 80170cc: 6863 ldr r3, [r4, #4] - 80170ce: 6043 str r3, [r0, #4] - 80170d0: 68a3 ldr r3, [r4, #8] - 80170d2: 6083 str r3, [r0, #8] - 80170d4: 46a9 mov r9, r5 - 80170d6: e75c b.n 8016f92 <_realloc_r+0xbe> - 80170d8: 68a3 ldr r3, [r4, #8] - 80170da: 612b str r3, [r5, #16] - 80170dc: 68e3 ldr r3, [r4, #12] - 80170de: 616b str r3, [r5, #20] - 80170e0: 2a24 cmp r2, #36 @ 0x24 - 80170e2: bf01 itttt eq - 80170e4: 6923 ldreq r3, [r4, #16] - 80170e6: 61ab streq r3, [r5, #24] - 80170e8: 6963 ldreq r3, [r4, #20] - 80170ea: 61eb streq r3, [r5, #28] - 80170ec: bf19 ittee ne - 80170ee: 3410 addne r4, #16 - 80170f0: f105 0018 addne.w r0, r5, #24 - 80170f4: f105 0020 addeq.w r0, r5, #32 - 80170f8: 3418 addeq r4, #24 - 80170fa: e7e5 b.n 80170c8 <_realloc_r+0x1f4> - 80170fc: 4621 mov r1, r4 - 80170fe: f7fb fe20 bl 8012d42 - 8017102: e7e7 b.n 80170d4 <_realloc_r+0x200> - 8017104: 9b01 ldr r3, [sp, #4] - 8017106: 4598 cmp r8, r3 - 8017108: dc31 bgt.n 801716e <_realloc_r+0x29a> - 801710a: 4628 mov r0, r5 - 801710c: 68eb ldr r3, [r5, #12] - 801710e: f850 2f08 ldr.w r2, [r0, #8]! - 8017112: 60d3 str r3, [r2, #12] - 8017114: 609a str r2, [r3, #8] - 8017116: 1f32 subs r2, r6, #4 - 8017118: 2a24 cmp r2, #36 @ 0x24 - 801711a: d824 bhi.n 8017166 <_realloc_r+0x292> - 801711c: 2a13 cmp r2, #19 - 801711e: d908 bls.n 8017132 <_realloc_r+0x25e> - 8017120: 6823 ldr r3, [r4, #0] - 8017122: 60ab str r3, [r5, #8] - 8017124: 6863 ldr r3, [r4, #4] - 8017126: 60eb str r3, [r5, #12] - 8017128: 2a1b cmp r2, #27 - 801712a: d80a bhi.n 8017142 <_realloc_r+0x26e> - 801712c: 3408 adds r4, #8 - 801712e: f105 0010 add.w r0, r5, #16 - 8017132: 6823 ldr r3, [r4, #0] - 8017134: 6003 str r3, [r0, #0] - 8017136: 6863 ldr r3, [r4, #4] - 8017138: 6043 str r3, [r0, #4] - 801713a: 68a3 ldr r3, [r4, #8] - 801713c: 6083 str r3, [r0, #8] - 801713e: 9f01 ldr r7, [sp, #4] - 8017140: e7c8 b.n 80170d4 <_realloc_r+0x200> - 8017142: 68a3 ldr r3, [r4, #8] - 8017144: 612b str r3, [r5, #16] - 8017146: 68e3 ldr r3, [r4, #12] - 8017148: 616b str r3, [r5, #20] - 801714a: 2a24 cmp r2, #36 @ 0x24 - 801714c: bf01 itttt eq - 801714e: 6923 ldreq r3, [r4, #16] - 8017150: 61ab streq r3, [r5, #24] - 8017152: 6963 ldreq r3, [r4, #20] - 8017154: 61eb streq r3, [r5, #28] - 8017156: bf19 ittee ne - 8017158: 3410 addne r4, #16 - 801715a: f105 0018 addne.w r0, r5, #24 - 801715e: f105 0020 addeq.w r0, r5, #32 - 8017162: 3418 addeq r4, #24 - 8017164: e7e5 b.n 8017132 <_realloc_r+0x25e> - 8017166: 4621 mov r1, r4 - 8017168: f7fb fdeb bl 8012d42 - 801716c: e7e7 b.n 801713e <_realloc_r+0x26a> - 801716e: 4659 mov r1, fp - 8017170: 4650 mov r0, sl - 8017172: f7fb ffb1 bl 80130d8 <_malloc_r> - 8017176: 4683 mov fp, r0 - 8017178: b918 cbnz r0, 8017182 <_realloc_r+0x2ae> - 801717a: 4650 mov r0, sl - 801717c: f7fc f9ec bl 8013558 <__malloc_unlock> - 8017180: e6c7 b.n 8016f12 <_realloc_r+0x3e> - 8017182: f854 3c04 ldr.w r3, [r4, #-4] - 8017186: f023 0301 bic.w r3, r3, #1 - 801718a: 444b add r3, r9 - 801718c: f1a0 0208 sub.w r2, r0, #8 - 8017190: 4293 cmp r3, r2 - 8017192: d107 bne.n 80171a4 <_realloc_r+0x2d0> - 8017194: f850 7c04 ldr.w r7, [r0, #-4] - 8017198: f027 0703 bic.w r7, r7, #3 - 801719c: 4437 add r7, r6 - 801719e: e6f8 b.n 8016f92 <_realloc_r+0xbe> - 80171a0: 2000016c .word 0x2000016c - 80171a4: 1f32 subs r2, r6, #4 - 80171a6: 2a24 cmp r2, #36 @ 0x24 - 80171a8: d82d bhi.n 8017206 <_realloc_r+0x332> - 80171aa: 2a13 cmp r2, #19 - 80171ac: d928 bls.n 8017200 <_realloc_r+0x32c> - 80171ae: 6823 ldr r3, [r4, #0] - 80171b0: 6003 str r3, [r0, #0] - 80171b2: 6863 ldr r3, [r4, #4] - 80171b4: 6043 str r3, [r0, #4] - 80171b6: 2a1b cmp r2, #27 - 80171b8: d80e bhi.n 80171d8 <_realloc_r+0x304> - 80171ba: f104 0208 add.w r2, r4, #8 - 80171be: f100 0308 add.w r3, r0, #8 - 80171c2: 6811 ldr r1, [r2, #0] - 80171c4: 6019 str r1, [r3, #0] - 80171c6: 6851 ldr r1, [r2, #4] - 80171c8: 6059 str r1, [r3, #4] - 80171ca: 6892 ldr r2, [r2, #8] - 80171cc: 609a str r2, [r3, #8] - 80171ce: 4621 mov r1, r4 - 80171d0: 4650 mov r0, sl - 80171d2: f7fb fec1 bl 8012f58 <_free_r> - 80171d6: e73f b.n 8017058 <_realloc_r+0x184> - 80171d8: 68a3 ldr r3, [r4, #8] - 80171da: 6083 str r3, [r0, #8] - 80171dc: 68e3 ldr r3, [r4, #12] - 80171de: 60c3 str r3, [r0, #12] - 80171e0: 2a24 cmp r2, #36 @ 0x24 - 80171e2: bf01 itttt eq - 80171e4: 6923 ldreq r3, [r4, #16] - 80171e6: 6103 streq r3, [r0, #16] - 80171e8: 6961 ldreq r1, [r4, #20] - 80171ea: 6141 streq r1, [r0, #20] - 80171ec: bf19 ittee ne - 80171ee: f104 0210 addne.w r2, r4, #16 - 80171f2: f100 0310 addne.w r3, r0, #16 - 80171f6: f104 0218 addeq.w r2, r4, #24 - 80171fa: f100 0318 addeq.w r3, r0, #24 - 80171fe: e7e0 b.n 80171c2 <_realloc_r+0x2ee> - 8017200: 4603 mov r3, r0 - 8017202: 4622 mov r2, r4 - 8017204: e7dd b.n 80171c2 <_realloc_r+0x2ee> - 8017206: 4621 mov r1, r4 - 8017208: f7fb fd9b bl 8012d42 - 801720c: e7df b.n 80171ce <_realloc_r+0x2fa> - 801720e: 4637 mov r7, r6 - 8017210: e6bf b.n 8016f92 <_realloc_r+0xbe> - 8017212: 431f orrs r7, r3 - 8017214: f8c9 7004 str.w r7, [r9, #4] - 8017218: 6853 ldr r3, [r2, #4] - 801721a: f043 0301 orr.w r3, r3, #1 - 801721e: 6053 str r3, [r2, #4] - 8017220: e6d3 b.n 8016fca <_realloc_r+0xf6> - 8017222: bf00 nop - -08017224 <__ascii_wctomb>: - 8017224: 4603 mov r3, r0 - 8017226: 4608 mov r0, r1 - 8017228: b141 cbz r1, 801723c <__ascii_wctomb+0x18> - 801722a: 2aff cmp r2, #255 @ 0xff - 801722c: d904 bls.n 8017238 <__ascii_wctomb+0x14> - 801722e: 228a movs r2, #138 @ 0x8a - 8017230: 601a str r2, [r3, #0] - 8017232: f04f 30ff mov.w r0, #4294967295 - 8017236: 4770 bx lr - 8017238: 700a strb r2, [r1, #0] - 801723a: 2001 movs r0, #1 - 801723c: 4770 bx lr - ... - -08017240 <_wcrtomb_r>: - 8017240: b5f0 push {r4, r5, r6, r7, lr} - 8017242: 4c09 ldr r4, [pc, #36] @ (8017268 <_wcrtomb_r+0x28>) - 8017244: b085 sub sp, #20 - 8017246: f8d4 70e0 ldr.w r7, [r4, #224] @ 0xe0 - 801724a: 4605 mov r5, r0 - 801724c: 461e mov r6, r3 - 801724e: b909 cbnz r1, 8017254 <_wcrtomb_r+0x14> - 8017250: 460a mov r2, r1 - 8017252: a901 add r1, sp, #4 - 8017254: 47b8 blx r7 - 8017256: 1c43 adds r3, r0, #1 - 8017258: bf01 itttt eq - 801725a: 2300 moveq r3, #0 - 801725c: 6033 streq r3, [r6, #0] - 801725e: 238a moveq r3, #138 @ 0x8a - 8017260: 602b streq r3, [r5, #0] - 8017262: b005 add sp, #20 - 8017264: bdf0 pop {r4, r5, r6, r7, pc} - 8017266: bf00 nop - 8017268: 20000574 .word 0x20000574 - -0801726c <__swhatbuf_r>: - 801726c: b570 push {r4, r5, r6, lr} - 801726e: 460c mov r4, r1 - 8017270: f9b1 100e ldrsh.w r1, [r1, #14] - 8017274: 2900 cmp r1, #0 - 8017276: b096 sub sp, #88 @ 0x58 - 8017278: 4615 mov r5, r2 - 801727a: 461e mov r6, r3 - 801727c: da07 bge.n 801728e <__swhatbuf_r+0x22> - 801727e: 89a1 ldrh r1, [r4, #12] - 8017280: f011 0180 ands.w r1, r1, #128 @ 0x80 - 8017284: d117 bne.n 80172b6 <__swhatbuf_r+0x4a> - 8017286: f44f 6380 mov.w r3, #1024 @ 0x400 - 801728a: 4608 mov r0, r1 - 801728c: e00f b.n 80172ae <__swhatbuf_r+0x42> - 801728e: 466a mov r2, sp - 8017290: f000 f89a bl 80173c8 <_fstat_r> - 8017294: 2800 cmp r0, #0 - 8017296: dbf2 blt.n 801727e <__swhatbuf_r+0x12> - 8017298: 9901 ldr r1, [sp, #4] - 801729a: f401 4170 and.w r1, r1, #61440 @ 0xf000 - 801729e: f5a1 5300 sub.w r3, r1, #8192 @ 0x2000 - 80172a2: 4259 negs r1, r3 - 80172a4: 4159 adcs r1, r3 - 80172a6: f44f 6000 mov.w r0, #2048 @ 0x800 - 80172aa: f44f 6380 mov.w r3, #1024 @ 0x400 - 80172ae: 6031 str r1, [r6, #0] - 80172b0: 602b str r3, [r5, #0] - 80172b2: b016 add sp, #88 @ 0x58 - 80172b4: bd70 pop {r4, r5, r6, pc} - 80172b6: 2100 movs r1, #0 - 80172b8: 2340 movs r3, #64 @ 0x40 - 80172ba: e7e6 b.n 801728a <__swhatbuf_r+0x1e> - -080172bc <__smakebuf_r>: - 80172bc: 898b ldrh r3, [r1, #12] - 80172be: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} - 80172c0: 079d lsls r5, r3, #30 - 80172c2: 4606 mov r6, r0 - 80172c4: 460c mov r4, r1 - 80172c6: d507 bpl.n 80172d8 <__smakebuf_r+0x1c> - 80172c8: f104 0343 add.w r3, r4, #67 @ 0x43 - 80172cc: 6023 str r3, [r4, #0] - 80172ce: 6123 str r3, [r4, #16] - 80172d0: 2301 movs r3, #1 - 80172d2: 6163 str r3, [r4, #20] - 80172d4: b003 add sp, #12 - 80172d6: bdf0 pop {r4, r5, r6, r7, pc} - 80172d8: ab01 add r3, sp, #4 - 80172da: 466a mov r2, sp - 80172dc: f7ff ffc6 bl 801726c <__swhatbuf_r> - 80172e0: 9f00 ldr r7, [sp, #0] - 80172e2: 4605 mov r5, r0 - 80172e4: 4639 mov r1, r7 - 80172e6: 4630 mov r0, r6 - 80172e8: f7fb fef6 bl 80130d8 <_malloc_r> - 80172ec: b948 cbnz r0, 8017302 <__smakebuf_r+0x46> - 80172ee: f9b4 300c ldrsh.w r3, [r4, #12] - 80172f2: 059a lsls r2, r3, #22 - 80172f4: d4ee bmi.n 80172d4 <__smakebuf_r+0x18> - 80172f6: f023 0303 bic.w r3, r3, #3 - 80172fa: f043 0302 orr.w r3, r3, #2 - 80172fe: 81a3 strh r3, [r4, #12] - 8017300: e7e2 b.n 80172c8 <__smakebuf_r+0xc> - 8017302: 89a3 ldrh r3, [r4, #12] - 8017304: 6020 str r0, [r4, #0] - 8017306: f043 0380 orr.w r3, r3, #128 @ 0x80 - 801730a: 81a3 strh r3, [r4, #12] - 801730c: 9b01 ldr r3, [sp, #4] - 801730e: e9c4 0704 strd r0, r7, [r4, #16] - 8017312: b15b cbz r3, 801732c <__smakebuf_r+0x70> - 8017314: f9b4 100e ldrsh.w r1, [r4, #14] - 8017318: 4630 mov r0, r6 - 801731a: f000 f867 bl 80173ec <_isatty_r> - 801731e: b128 cbz r0, 801732c <__smakebuf_r+0x70> - 8017320: 89a3 ldrh r3, [r4, #12] - 8017322: f023 0303 bic.w r3, r3, #3 - 8017326: f043 0301 orr.w r3, r3, #1 - 801732a: 81a3 strh r3, [r4, #12] - 801732c: 89a3 ldrh r3, [r4, #12] - 801732e: 431d orrs r5, r3 - 8017330: 81a5 strh r5, [r4, #12] - 8017332: e7cf b.n 80172d4 <__smakebuf_r+0x18> - -08017334 <__swbuf_r>: - 8017334: b5f8 push {r3, r4, r5, r6, r7, lr} - 8017336: 460e mov r6, r1 - 8017338: 4614 mov r4, r2 - 801733a: 4605 mov r5, r0 - 801733c: b118 cbz r0, 8017346 <__swbuf_r+0x12> - 801733e: 6b43 ldr r3, [r0, #52] @ 0x34 - 8017340: b90b cbnz r3, 8017346 <__swbuf_r+0x12> - 8017342: f7fb fc63 bl 8012c0c <__sinit> - 8017346: 69a3 ldr r3, [r4, #24] - 8017348: 60a3 str r3, [r4, #8] - 801734a: 89a3 ldrh r3, [r4, #12] - 801734c: 0719 lsls r1, r3, #28 - 801734e: d501 bpl.n 8017354 <__swbuf_r+0x20> - 8017350: 6923 ldr r3, [r4, #16] - 8017352: b943 cbnz r3, 8017366 <__swbuf_r+0x32> - 8017354: 4621 mov r1, r4 - 8017356: 4628 mov r0, r5 - 8017358: f7fe fabc bl 80158d4 <__swsetup_r> - 801735c: b118 cbz r0, 8017366 <__swbuf_r+0x32> - 801735e: f04f 37ff mov.w r7, #4294967295 - 8017362: 4638 mov r0, r7 - 8017364: bdf8 pop {r3, r4, r5, r6, r7, pc} - 8017366: f9b4 300c ldrsh.w r3, [r4, #12] - 801736a: b2f6 uxtb r6, r6 - 801736c: 049a lsls r2, r3, #18 - 801736e: 4637 mov r7, r6 - 8017370: d406 bmi.n 8017380 <__swbuf_r+0x4c> - 8017372: f443 5300 orr.w r3, r3, #8192 @ 0x2000 - 8017376: 81a3 strh r3, [r4, #12] - 8017378: 6e63 ldr r3, [r4, #100] @ 0x64 - 801737a: f423 5300 bic.w r3, r3, #8192 @ 0x2000 - 801737e: 6663 str r3, [r4, #100] @ 0x64 - 8017380: 6823 ldr r3, [r4, #0] - 8017382: 6922 ldr r2, [r4, #16] - 8017384: 1a98 subs r0, r3, r2 - 8017386: 6963 ldr r3, [r4, #20] - 8017388: 4283 cmp r3, r0 - 801738a: dc05 bgt.n 8017398 <__swbuf_r+0x64> - 801738c: 4621 mov r1, r4 - 801738e: 4628 mov r0, r5 - 8017390: f7fe f92e bl 80155f0 <_fflush_r> - 8017394: 2800 cmp r0, #0 - 8017396: d1e2 bne.n 801735e <__swbuf_r+0x2a> - 8017398: 68a3 ldr r3, [r4, #8] - 801739a: 3b01 subs r3, #1 - 801739c: 60a3 str r3, [r4, #8] - 801739e: 6823 ldr r3, [r4, #0] - 80173a0: 1c5a adds r2, r3, #1 - 80173a2: 6022 str r2, [r4, #0] - 80173a4: 701e strb r6, [r3, #0] - 80173a6: 6962 ldr r2, [r4, #20] - 80173a8: 1c43 adds r3, r0, #1 - 80173aa: 429a cmp r2, r3 - 80173ac: d004 beq.n 80173b8 <__swbuf_r+0x84> - 80173ae: 89a3 ldrh r3, [r4, #12] - 80173b0: 07db lsls r3, r3, #31 - 80173b2: d5d6 bpl.n 8017362 <__swbuf_r+0x2e> - 80173b4: 2e0a cmp r6, #10 - 80173b6: d1d4 bne.n 8017362 <__swbuf_r+0x2e> - 80173b8: 4621 mov r1, r4 - 80173ba: 4628 mov r0, r5 - 80173bc: f7fe f918 bl 80155f0 <_fflush_r> - 80173c0: 2800 cmp r0, #0 - 80173c2: d0ce beq.n 8017362 <__swbuf_r+0x2e> - 80173c4: e7cb b.n 801735e <__swbuf_r+0x2a> - ... - -080173c8 <_fstat_r>: - 80173c8: b538 push {r3, r4, r5, lr} - 80173ca: 4d07 ldr r5, [pc, #28] @ (80173e8 <_fstat_r+0x20>) - 80173cc: 2300 movs r3, #0 - 80173ce: 4604 mov r4, r0 - 80173d0: 4608 mov r0, r1 - 80173d2: 4611 mov r1, r2 - 80173d4: 602b str r3, [r5, #0] - 80173d6: f000 f8d3 bl 8017580 <_fstat> - 80173da: 1c43 adds r3, r0, #1 - 80173dc: d102 bne.n 80173e4 <_fstat_r+0x1c> - 80173de: 682b ldr r3, [r5, #0] - 80173e0: b103 cbz r3, 80173e4 <_fstat_r+0x1c> - 80173e2: 6023 str r3, [r4, #0] - 80173e4: bd38 pop {r3, r4, r5, pc} - 80173e6: bf00 nop - 80173e8: 200193b8 .word 0x200193b8 - -080173ec <_isatty_r>: - 80173ec: b538 push {r3, r4, r5, lr} - 80173ee: 4d06 ldr r5, [pc, #24] @ (8017408 <_isatty_r+0x1c>) - 80173f0: 2300 movs r3, #0 - 80173f2: 4604 mov r4, r0 - 80173f4: 4608 mov r0, r1 - 80173f6: 602b str r3, [r5, #0] - 80173f8: f000 f8d2 bl 80175a0 <_isatty> - 80173fc: 1c43 adds r3, r0, #1 - 80173fe: d102 bne.n 8017406 <_isatty_r+0x1a> - 8017400: 682b ldr r3, [r5, #0] - 8017402: b103 cbz r3, 8017406 <_isatty_r+0x1a> - 8017404: 6023 str r3, [r4, #0] - 8017406: bd38 pop {r3, r4, r5, pc} - 8017408: 200193b8 .word 0x200193b8 - -0801740c <__assert_func>: - 801740c: b51f push {r0, r1, r2, r3, r4, lr} - 801740e: 4614 mov r4, r2 - 8017410: 461a mov r2, r3 - 8017412: 4b09 ldr r3, [pc, #36] @ (8017438 <__assert_func+0x2c>) - 8017414: 681b ldr r3, [r3, #0] - 8017416: 4605 mov r5, r0 - 8017418: 68d8 ldr r0, [r3, #12] - 801741a: b954 cbnz r4, 8017432 <__assert_func+0x26> - 801741c: 4b07 ldr r3, [pc, #28] @ (801743c <__assert_func+0x30>) - 801741e: 461c mov r4, r3 - 8017420: e9cd 3401 strd r3, r4, [sp, #4] - 8017424: 9100 str r1, [sp, #0] - 8017426: 462b mov r3, r5 - 8017428: 4905 ldr r1, [pc, #20] @ (8017440 <__assert_func+0x34>) - 801742a: f000 f843 bl 80174b4 - 801742e: f000 f853 bl 80174d8 - 8017432: 4b04 ldr r3, [pc, #16] @ (8017444 <__assert_func+0x38>) - 8017434: e7f4 b.n 8017420 <__assert_func+0x14> - 8017436: bf00 nop - 8017438: 2000003c .word 0x2000003c - 801743c: 0801a983 .word 0x0801a983 - 8017440: 0801a955 .word 0x0801a955 - 8017444: 0801a948 .word 0x0801a948 - -08017448 <_calloc_r>: - 8017448: b538 push {r3, r4, r5, lr} - 801744a: fba1 1502 umull r1, r5, r1, r2 - 801744e: b935 cbnz r5, 801745e <_calloc_r+0x16> - 8017450: f7fb fe42 bl 80130d8 <_malloc_r> - 8017454: 4604 mov r4, r0 - 8017456: b938 cbnz r0, 8017468 <_calloc_r+0x20> - 8017458: 2400 movs r4, #0 - 801745a: 4620 mov r0, r4 - 801745c: bd38 pop {r3, r4, r5, pc} - 801745e: f7fb fcd9 bl 8012e14 <__errno> - 8017462: 230c movs r3, #12 - 8017464: 6003 str r3, [r0, #0] - 8017466: e7f7 b.n 8017458 <_calloc_r+0x10> - 8017468: f850 2c04 ldr.w r2, [r0, #-4] - 801746c: f022 0203 bic.w r2, r2, #3 - 8017470: 3a04 subs r2, #4 - 8017472: 2a24 cmp r2, #36 @ 0x24 - 8017474: d819 bhi.n 80174aa <_calloc_r+0x62> - 8017476: 2a13 cmp r2, #19 - 8017478: d915 bls.n 80174a6 <_calloc_r+0x5e> - 801747a: 2a1b cmp r2, #27 - 801747c: e9c0 5500 strd r5, r5, [r0] - 8017480: d806 bhi.n 8017490 <_calloc_r+0x48> - 8017482: f100 0308 add.w r3, r0, #8 - 8017486: 2200 movs r2, #0 - 8017488: e9c3 2200 strd r2, r2, [r3] - 801748c: 609a str r2, [r3, #8] - 801748e: e7e4 b.n 801745a <_calloc_r+0x12> - 8017490: 2a24 cmp r2, #36 @ 0x24 - 8017492: e9c0 5502 strd r5, r5, [r0, #8] - 8017496: bf11 iteee ne - 8017498: f100 0310 addne.w r3, r0, #16 - 801749c: 6105 streq r5, [r0, #16] - 801749e: f100 0318 addeq.w r3, r0, #24 - 80174a2: 6145 streq r5, [r0, #20] - 80174a4: e7ef b.n 8017486 <_calloc_r+0x3e> - 80174a6: 4603 mov r3, r0 - 80174a8: e7ed b.n 8017486 <_calloc_r+0x3e> - 80174aa: 4629 mov r1, r5 - 80174ac: f7fb fc63 bl 8012d76 - 80174b0: e7d3 b.n 801745a <_calloc_r+0x12> - ... - -080174b4 : - 80174b4: b40e push {r1, r2, r3} - 80174b6: b503 push {r0, r1, lr} - 80174b8: 4601 mov r1, r0 - 80174ba: ab03 add r3, sp, #12 - 80174bc: 4805 ldr r0, [pc, #20] @ (80174d4 ) - 80174be: f853 2b04 ldr.w r2, [r3], #4 - 80174c2: 6800 ldr r0, [r0, #0] - 80174c4: 9301 str r3, [sp, #4] - 80174c6: f7fd faed bl 8014aa4 <_vfiprintf_r> - 80174ca: b002 add sp, #8 - 80174cc: f85d eb04 ldr.w lr, [sp], #4 - 80174d0: b003 add sp, #12 - 80174d2: 4770 bx lr - 80174d4: 2000003c .word 0x2000003c - -080174d8 : - 80174d8: b508 push {r3, lr} - 80174da: 2006 movs r0, #6 - 80174dc: f000 f82c bl 8017538 - 80174e0: 2001 movs r0, #1 - 80174e2: f000 f893 bl 801760c <_exit> - -080174e6 <_raise_r>: - 80174e6: 291f cmp r1, #31 - 80174e8: b538 push {r3, r4, r5, lr} - 80174ea: 4605 mov r5, r0 - 80174ec: 460c mov r4, r1 - 80174ee: d904 bls.n 80174fa <_raise_r+0x14> - 80174f0: 2316 movs r3, #22 - 80174f2: 6003 str r3, [r0, #0] - 80174f4: f04f 30ff mov.w r0, #4294967295 - 80174f8: bd38 pop {r3, r4, r5, pc} - 80174fa: f8d0 2118 ldr.w r2, [r0, #280] @ 0x118 - 80174fe: b112 cbz r2, 8017506 <_raise_r+0x20> - 8017500: f852 3021 ldr.w r3, [r2, r1, lsl #2] - 8017504: b94b cbnz r3, 801751a <_raise_r+0x34> - 8017506: 4628 mov r0, r5 - 8017508: f000 f830 bl 801756c <_getpid_r> - 801750c: 4622 mov r2, r4 - 801750e: 4601 mov r1, r0 - 8017510: 4628 mov r0, r5 - 8017512: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} - 8017516: f000 b817 b.w 8017548 <_kill_r> - 801751a: 2b01 cmp r3, #1 - 801751c: d00a beq.n 8017534 <_raise_r+0x4e> - 801751e: 1c59 adds r1, r3, #1 - 8017520: d103 bne.n 801752a <_raise_r+0x44> - 8017522: 2316 movs r3, #22 - 8017524: 6003 str r3, [r0, #0] - 8017526: 2001 movs r0, #1 - 8017528: e7e6 b.n 80174f8 <_raise_r+0x12> - 801752a: 2100 movs r1, #0 - 801752c: f842 1024 str.w r1, [r2, r4, lsl #2] - 8017530: 4620 mov r0, r4 - 8017532: 4798 blx r3 - 8017534: 2000 movs r0, #0 - 8017536: e7df b.n 80174f8 <_raise_r+0x12> - -08017538 : - 8017538: 4b02 ldr r3, [pc, #8] @ (8017544 ) - 801753a: 4601 mov r1, r0 - 801753c: 6818 ldr r0, [r3, #0] - 801753e: f7ff bfd2 b.w 80174e6 <_raise_r> - 8017542: bf00 nop - 8017544: 2000003c .word 0x2000003c - -08017548 <_kill_r>: - 8017548: b538 push {r3, r4, r5, lr} - 801754a: 4d07 ldr r5, [pc, #28] @ (8017568 <_kill_r+0x20>) - 801754c: 2300 movs r3, #0 - 801754e: 4604 mov r4, r0 - 8017550: 4608 mov r0, r1 - 8017552: 4611 mov r1, r2 - 8017554: 602b str r3, [r5, #0] - 8017556: f000 f82b bl 80175b0 <_kill> - 801755a: 1c43 adds r3, r0, #1 - 801755c: d102 bne.n 8017564 <_kill_r+0x1c> - 801755e: 682b ldr r3, [r5, #0] - 8017560: b103 cbz r3, 8017564 <_kill_r+0x1c> - 8017562: 6023 str r3, [r4, #0] - 8017564: bd38 pop {r3, r4, r5, pc} - 8017566: bf00 nop - 8017568: 200193b8 .word 0x200193b8 - -0801756c <_getpid_r>: - 801756c: f000 b810 b.w 8017590 <_getpid> - -08017570 <_close>: - 8017570: 4b02 ldr r3, [pc, #8] @ (801757c <_close+0xc>) - 8017572: 2258 movs r2, #88 @ 0x58 - 8017574: 601a str r2, [r3, #0] - 8017576: f04f 30ff mov.w r0, #4294967295 - 801757a: 4770 bx lr - 801757c: 200193b8 .word 0x200193b8 - -08017580 <_fstat>: - 8017580: 4b02 ldr r3, [pc, #8] @ (801758c <_fstat+0xc>) - 8017582: 2258 movs r2, #88 @ 0x58 - 8017584: 601a str r2, [r3, #0] - 8017586: f04f 30ff mov.w r0, #4294967295 - 801758a: 4770 bx lr - 801758c: 200193b8 .word 0x200193b8 - -08017590 <_getpid>: - 8017590: 4b02 ldr r3, [pc, #8] @ (801759c <_getpid+0xc>) - 8017592: 2258 movs r2, #88 @ 0x58 - 8017594: 601a str r2, [r3, #0] - 8017596: f04f 30ff mov.w r0, #4294967295 - 801759a: 4770 bx lr - 801759c: 200193b8 .word 0x200193b8 - -080175a0 <_isatty>: - 80175a0: 4b02 ldr r3, [pc, #8] @ (80175ac <_isatty+0xc>) - 80175a2: 2258 movs r2, #88 @ 0x58 - 80175a4: 601a str r2, [r3, #0] - 80175a6: 2000 movs r0, #0 - 80175a8: 4770 bx lr - 80175aa: bf00 nop - 80175ac: 200193b8 .word 0x200193b8 - -080175b0 <_kill>: - 80175b0: 4b02 ldr r3, [pc, #8] @ (80175bc <_kill+0xc>) - 80175b2: 2258 movs r2, #88 @ 0x58 - 80175b4: 601a str r2, [r3, #0] - 80175b6: f04f 30ff mov.w r0, #4294967295 - 80175ba: 4770 bx lr - 80175bc: 200193b8 .word 0x200193b8 - -080175c0 <_lseek>: - 80175c0: 4b02 ldr r3, [pc, #8] @ (80175cc <_lseek+0xc>) - 80175c2: 2258 movs r2, #88 @ 0x58 - 80175c4: 601a str r2, [r3, #0] - 80175c6: f04f 30ff mov.w r0, #4294967295 - 80175ca: 4770 bx lr - 80175cc: 200193b8 .word 0x200193b8 - -080175d0 <_read>: - 80175d0: 4b02 ldr r3, [pc, #8] @ (80175dc <_read+0xc>) - 80175d2: 2258 movs r2, #88 @ 0x58 - 80175d4: 601a str r2, [r3, #0] - 80175d6: f04f 30ff mov.w r0, #4294967295 - 80175da: 4770 bx lr - 80175dc: 200193b8 .word 0x200193b8 - -080175e0 <_sbrk>: - 80175e0: 4a04 ldr r2, [pc, #16] @ (80175f4 <_sbrk+0x14>) - 80175e2: 6811 ldr r1, [r2, #0] - 80175e4: 4603 mov r3, r0 - 80175e6: b909 cbnz r1, 80175ec <_sbrk+0xc> - 80175e8: 4903 ldr r1, [pc, #12] @ (80175f8 <_sbrk+0x18>) - 80175ea: 6011 str r1, [r2, #0] - 80175ec: 6810 ldr r0, [r2, #0] - 80175ee: 4403 add r3, r0 - 80175f0: 6013 str r3, [r2, #0] - 80175f2: 4770 bx lr - 80175f4: 20019588 .word 0x20019588 - 80175f8: 20019590 .word 0x20019590 - -080175fc <_write>: - 80175fc: 4b02 ldr r3, [pc, #8] @ (8017608 <_write+0xc>) - 80175fe: 2258 movs r2, #88 @ 0x58 - 8017600: 601a str r2, [r3, #0] - 8017602: f04f 30ff mov.w r0, #4294967295 - 8017606: 4770 bx lr - 8017608: 200193b8 .word 0x200193b8 - -0801760c <_exit>: - 801760c: e7fe b.n 801760c <_exit> - ... - -08017610 <_init>: - 8017610: b5f8 push {r3, r4, r5, r6, r7, lr} - 8017612: bf00 nop - 8017614: bcf8 pop {r3, r4, r5, r6, r7} - 8017616: bc08 pop {r3} - 8017618: 469e mov lr, r3 - 801761a: 4770 bx lr - -0801761c <_fini>: - 801761c: b5f8 push {r3, r4, r5, r6, r7, lr} - 801761e: bf00 nop - 8017620: bcf8 pop {r3, r4, r5, r6, r7} - 8017622: bc08 pop {r3} - 8017624: 469e mov lr, r3 - 8017626: 4770 bx lr diff --git a/Release/Core/Src/subdir.mk b/Release/Core/Src/subdir.mk deleted file mode 100644 index 02acbde..0000000 --- a/Release/Core/Src/subdir.mk +++ /dev/null @@ -1,42 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (12.3.rel1) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../Core/Src/FLASH_SECTOR_F4.c \ -../Core/Src/main.c \ -../Core/Src/pribors.c \ -../Core/Src/stm32f4xx_hal_msp.c \ -../Core/Src/stm32f4xx_it.c \ -../Core/Src/system_stm32f4xx.c - -OBJS += \ -./Core/Src/FLASH_SECTOR_F4.o \ -./Core/Src/main.o \ -./Core/Src/pribors.o \ -./Core/Src/stm32f4xx_hal_msp.o \ -./Core/Src/stm32f4xx_it.o \ -./Core/Src/system_stm32f4xx.o - -C_DEPS += \ -./Core/Src/FLASH_SECTOR_F4.d \ -./Core/Src/main.d \ -./Core/Src/pribors.d \ -./Core/Src/stm32f4xx_hal_msp.d \ -./Core/Src/stm32f4xx_it.d \ -./Core/Src/system_stm32f4xx.d - - -# Each subdirectory must supply rules for building sources it contributes -Core/Src/%.o Core/Src/%.su Core/Src/%.cyclo: ../Core/Src/%.c Core/Src/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -DUSE_HAL_DRIVER -DSTM32F429xx -c -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I../LWIP/App -I../LWIP/Target -I../Middlewares/Third_Party/LwIP/src/include -I../Middlewares/Third_Party/LwIP/system -I../Drivers/BSP/Components/dp83848 -I../Middlewares/Third_Party/LwIP/src/include/netif/ppp -I../Middlewares/Third_Party/LwIP/src/include/lwip -I../Middlewares/Third_Party/LwIP/src/include/lwip/apps -I../Middlewares/Third_Party/LwIP/src/include/lwip/priv -I../Middlewares/Third_Party/LwIP/src/include/lwip/prot -I../Middlewares/Third_Party/LwIP/src/include/netif -I../Middlewares/Third_Party/LwIP/src/include/compat/posix -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/arpa -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/net -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/sys -I../Middlewares/Third_Party/LwIP/src/include/compat/stdc -I../Middlewares/Third_Party/LwIP/system/arch -Os -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" - -clean: clean-Core-2f-Src - -clean-Core-2f-Src: - -$(RM) ./Core/Src/FLASH_SECTOR_F4.cyclo ./Core/Src/FLASH_SECTOR_F4.d ./Core/Src/FLASH_SECTOR_F4.o ./Core/Src/FLASH_SECTOR_F4.su ./Core/Src/main.cyclo ./Core/Src/main.d ./Core/Src/main.o ./Core/Src/main.su ./Core/Src/pribors.cyclo ./Core/Src/pribors.d ./Core/Src/pribors.o ./Core/Src/pribors.su ./Core/Src/stm32f4xx_hal_msp.cyclo ./Core/Src/stm32f4xx_hal_msp.d ./Core/Src/stm32f4xx_hal_msp.o ./Core/Src/stm32f4xx_hal_msp.su ./Core/Src/stm32f4xx_it.cyclo ./Core/Src/stm32f4xx_it.d ./Core/Src/stm32f4xx_it.o ./Core/Src/stm32f4xx_it.su ./Core/Src/system_stm32f4xx.cyclo ./Core/Src/system_stm32f4xx.d ./Core/Src/system_stm32f4xx.o ./Core/Src/system_stm32f4xx.su - -.PHONY: clean-Core-2f-Src - diff --git a/Release/Core/Startup/subdir.mk b/Release/Core/Startup/subdir.mk deleted file mode 100644 index d213218..0000000 --- a/Release/Core/Startup/subdir.mk +++ /dev/null @@ -1,27 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (12.3.rel1) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -S_SRCS += \ -../Core/Startup/startup_stm32f429zitx.s - -OBJS += \ -./Core/Startup/startup_stm32f429zitx.o - -S_DEPS += \ -./Core/Startup/startup_stm32f429zitx.d - - -# Each subdirectory must supply rules for building sources it contributes -Core/Startup/%.o: ../Core/Startup/%.s Core/Startup/subdir.mk - arm-none-eabi-gcc -mcpu=cortex-m4 -c -x assembler-with-cpp -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" "$<" - -clean: clean-Core-2f-Startup - -clean-Core-2f-Startup: - -$(RM) ./Core/Startup/startup_stm32f429zitx.d ./Core/Startup/startup_stm32f429zitx.o - -.PHONY: clean-Core-2f-Startup - diff --git a/Release/Drivers/BSP/Components/dp83848/subdir.mk b/Release/Drivers/BSP/Components/dp83848/subdir.mk deleted file mode 100644 index ae1d490..0000000 --- a/Release/Drivers/BSP/Components/dp83848/subdir.mk +++ /dev/null @@ -1,27 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (12.3.rel1) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../Drivers/BSP/Components/dp83848/dp83848.c - -OBJS += \ -./Drivers/BSP/Components/dp83848/dp83848.o - -C_DEPS += \ -./Drivers/BSP/Components/dp83848/dp83848.d - - -# Each subdirectory must supply rules for building sources it contributes -Drivers/BSP/Components/dp83848/%.o Drivers/BSP/Components/dp83848/%.su Drivers/BSP/Components/dp83848/%.cyclo: ../Drivers/BSP/Components/dp83848/%.c Drivers/BSP/Components/dp83848/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -DUSE_HAL_DRIVER -DSTM32F429xx -c -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I../LWIP/App -I../LWIP/Target -I../Middlewares/Third_Party/LwIP/src/include -I../Middlewares/Third_Party/LwIP/system -I../Drivers/BSP/Components/dp83848 -I../Middlewares/Third_Party/LwIP/src/include/netif/ppp -I../Middlewares/Third_Party/LwIP/src/include/lwip -I../Middlewares/Third_Party/LwIP/src/include/lwip/apps -I../Middlewares/Third_Party/LwIP/src/include/lwip/priv -I../Middlewares/Third_Party/LwIP/src/include/lwip/prot -I../Middlewares/Third_Party/LwIP/src/include/netif -I../Middlewares/Third_Party/LwIP/src/include/compat/posix -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/arpa -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/net -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/sys -I../Middlewares/Third_Party/LwIP/src/include/compat/stdc -I../Middlewares/Third_Party/LwIP/system/arch -Os -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" - -clean: clean-Drivers-2f-BSP-2f-Components-2f-dp83848 - -clean-Drivers-2f-BSP-2f-Components-2f-dp83848: - -$(RM) ./Drivers/BSP/Components/dp83848/dp83848.cyclo ./Drivers/BSP/Components/dp83848/dp83848.d ./Drivers/BSP/Components/dp83848/dp83848.o ./Drivers/BSP/Components/dp83848/dp83848.su - -.PHONY: clean-Drivers-2f-BSP-2f-Components-2f-dp83848 - diff --git a/Release/Drivers/STM32F4xx_HAL_Driver/Src/subdir.mk b/Release/Drivers/STM32F4xx_HAL_Driver/Src/subdir.mk deleted file mode 100644 index 4cc4bab..0000000 --- a/Release/Drivers/STM32F4xx_HAL_Driver/Src/subdir.mk +++ /dev/null @@ -1,78 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (12.3.rel1) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_eth.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sram.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c \ -../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.c - -OBJS += \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_eth.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sram.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.o - -C_DEPS += \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_eth.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sram.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.d \ -./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.d - - -# Each subdirectory must supply rules for building sources it contributes -Drivers/STM32F4xx_HAL_Driver/Src/%.o Drivers/STM32F4xx_HAL_Driver/Src/%.su Drivers/STM32F4xx_HAL_Driver/Src/%.cyclo: ../Drivers/STM32F4xx_HAL_Driver/Src/%.c Drivers/STM32F4xx_HAL_Driver/Src/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -DUSE_HAL_DRIVER -DSTM32F429xx -c -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I../LWIP/App -I../LWIP/Target -I../Middlewares/Third_Party/LwIP/src/include -I../Middlewares/Third_Party/LwIP/system -I../Drivers/BSP/Components/dp83848 -I../Middlewares/Third_Party/LwIP/src/include/netif/ppp -I../Middlewares/Third_Party/LwIP/src/include/lwip -I../Middlewares/Third_Party/LwIP/src/include/lwip/apps -I../Middlewares/Third_Party/LwIP/src/include/lwip/priv -I../Middlewares/Third_Party/LwIP/src/include/lwip/prot -I../Middlewares/Third_Party/LwIP/src/include/netif -I../Middlewares/Third_Party/LwIP/src/include/compat/posix -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/arpa -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/net -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/sys -I../Middlewares/Third_Party/LwIP/src/include/compat/stdc -I../Middlewares/Third_Party/LwIP/system/arch -Os -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" - -clean: clean-Drivers-2f-STM32F4xx_HAL_Driver-2f-Src - -clean-Drivers-2f-STM32F4xx_HAL_Driver-2f-Src: - -$(RM) ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_eth.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_eth.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_eth.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_eth.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sram.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sram.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sram.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sram.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.su ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.cyclo ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.o ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.su - -.PHONY: clean-Drivers-2f-STM32F4xx_HAL_Driver-2f-Src - diff --git a/Release/LWIP/App/subdir.mk b/Release/LWIP/App/subdir.mk deleted file mode 100644 index a16ac50..0000000 --- a/Release/LWIP/App/subdir.mk +++ /dev/null @@ -1,27 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (12.3.rel1) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../LWIP/App/lwip.c - -OBJS += \ -./LWIP/App/lwip.o - -C_DEPS += \ -./LWIP/App/lwip.d - - -# Each subdirectory must supply rules for building sources it contributes -LWIP/App/%.o LWIP/App/%.su LWIP/App/%.cyclo: ../LWIP/App/%.c LWIP/App/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -DUSE_HAL_DRIVER -DSTM32F429xx -c -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I../LWIP/App -I../LWIP/Target -I../Middlewares/Third_Party/LwIP/src/include -I../Middlewares/Third_Party/LwIP/system -I../Drivers/BSP/Components/dp83848 -I../Middlewares/Third_Party/LwIP/src/include/netif/ppp -I../Middlewares/Third_Party/LwIP/src/include/lwip -I../Middlewares/Third_Party/LwIP/src/include/lwip/apps -I../Middlewares/Third_Party/LwIP/src/include/lwip/priv -I../Middlewares/Third_Party/LwIP/src/include/lwip/prot -I../Middlewares/Third_Party/LwIP/src/include/netif -I../Middlewares/Third_Party/LwIP/src/include/compat/posix -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/arpa -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/net -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/sys -I../Middlewares/Third_Party/LwIP/src/include/compat/stdc -I../Middlewares/Third_Party/LwIP/system/arch -Os -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" - -clean: clean-LWIP-2f-App - -clean-LWIP-2f-App: - -$(RM) ./LWIP/App/lwip.cyclo ./LWIP/App/lwip.d ./LWIP/App/lwip.o ./LWIP/App/lwip.su - -.PHONY: clean-LWIP-2f-App - diff --git a/Release/LWIP/Target/subdir.mk b/Release/LWIP/Target/subdir.mk deleted file mode 100644 index 3cb4ee2..0000000 --- a/Release/LWIP/Target/subdir.mk +++ /dev/null @@ -1,27 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (12.3.rel1) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../LWIP/Target/ethernetif.c - -OBJS += \ -./LWIP/Target/ethernetif.o - -C_DEPS += \ -./LWIP/Target/ethernetif.d - - -# Each subdirectory must supply rules for building sources it contributes -LWIP/Target/%.o LWIP/Target/%.su LWIP/Target/%.cyclo: ../LWIP/Target/%.c LWIP/Target/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -DUSE_HAL_DRIVER -DSTM32F429xx -c -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I../LWIP/App -I../LWIP/Target -I../Middlewares/Third_Party/LwIP/src/include -I../Middlewares/Third_Party/LwIP/system -I../Drivers/BSP/Components/dp83848 -I../Middlewares/Third_Party/LwIP/src/include/netif/ppp -I../Middlewares/Third_Party/LwIP/src/include/lwip -I../Middlewares/Third_Party/LwIP/src/include/lwip/apps -I../Middlewares/Third_Party/LwIP/src/include/lwip/priv -I../Middlewares/Third_Party/LwIP/src/include/lwip/prot -I../Middlewares/Third_Party/LwIP/src/include/netif -I../Middlewares/Third_Party/LwIP/src/include/compat/posix -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/arpa -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/net -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/sys -I../Middlewares/Third_Party/LwIP/src/include/compat/stdc -I../Middlewares/Third_Party/LwIP/system/arch -Os -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" - -clean: clean-LWIP-2f-Target - -clean-LWIP-2f-Target: - -$(RM) ./LWIP/Target/ethernetif.cyclo ./LWIP/Target/ethernetif.d ./LWIP/Target/ethernetif.o ./LWIP/Target/ethernetif.su - -.PHONY: clean-LWIP-2f-Target - diff --git a/Release/Middlewares/Third_Party/LwIP/src/api/subdir.mk b/Release/Middlewares/Third_Party/LwIP/src/api/subdir.mk deleted file mode 100644 index b255094..0000000 --- a/Release/Middlewares/Third_Party/LwIP/src/api/subdir.mk +++ /dev/null @@ -1,51 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (12.3.rel1) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../Middlewares/Third_Party/LwIP/src/api/api_lib.c \ -../Middlewares/Third_Party/LwIP/src/api/api_msg.c \ -../Middlewares/Third_Party/LwIP/src/api/err.c \ -../Middlewares/Third_Party/LwIP/src/api/if_api.c \ -../Middlewares/Third_Party/LwIP/src/api/netbuf.c \ -../Middlewares/Third_Party/LwIP/src/api/netdb.c \ -../Middlewares/Third_Party/LwIP/src/api/netifapi.c \ -../Middlewares/Third_Party/LwIP/src/api/sockets.c \ -../Middlewares/Third_Party/LwIP/src/api/tcpip.c - -OBJS += \ -./Middlewares/Third_Party/LwIP/src/api/api_lib.o \ -./Middlewares/Third_Party/LwIP/src/api/api_msg.o \ -./Middlewares/Third_Party/LwIP/src/api/err.o \ -./Middlewares/Third_Party/LwIP/src/api/if_api.o \ -./Middlewares/Third_Party/LwIP/src/api/netbuf.o \ -./Middlewares/Third_Party/LwIP/src/api/netdb.o \ -./Middlewares/Third_Party/LwIP/src/api/netifapi.o \ -./Middlewares/Third_Party/LwIP/src/api/sockets.o \ -./Middlewares/Third_Party/LwIP/src/api/tcpip.o - -C_DEPS += \ -./Middlewares/Third_Party/LwIP/src/api/api_lib.d \ -./Middlewares/Third_Party/LwIP/src/api/api_msg.d \ -./Middlewares/Third_Party/LwIP/src/api/err.d \ -./Middlewares/Third_Party/LwIP/src/api/if_api.d \ -./Middlewares/Third_Party/LwIP/src/api/netbuf.d \ -./Middlewares/Third_Party/LwIP/src/api/netdb.d \ -./Middlewares/Third_Party/LwIP/src/api/netifapi.d \ -./Middlewares/Third_Party/LwIP/src/api/sockets.d \ -./Middlewares/Third_Party/LwIP/src/api/tcpip.d - - -# Each subdirectory must supply rules for building sources it contributes -Middlewares/Third_Party/LwIP/src/api/%.o Middlewares/Third_Party/LwIP/src/api/%.su Middlewares/Third_Party/LwIP/src/api/%.cyclo: ../Middlewares/Third_Party/LwIP/src/api/%.c Middlewares/Third_Party/LwIP/src/api/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -DUSE_HAL_DRIVER -DSTM32F429xx -c -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I../LWIP/App -I../LWIP/Target -I../Middlewares/Third_Party/LwIP/src/include -I../Middlewares/Third_Party/LwIP/system -I../Drivers/BSP/Components/dp83848 -I../Middlewares/Third_Party/LwIP/src/include/netif/ppp -I../Middlewares/Third_Party/LwIP/src/include/lwip -I../Middlewares/Third_Party/LwIP/src/include/lwip/apps -I../Middlewares/Third_Party/LwIP/src/include/lwip/priv -I../Middlewares/Third_Party/LwIP/src/include/lwip/prot -I../Middlewares/Third_Party/LwIP/src/include/netif -I../Middlewares/Third_Party/LwIP/src/include/compat/posix -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/arpa -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/net -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/sys -I../Middlewares/Third_Party/LwIP/src/include/compat/stdc -I../Middlewares/Third_Party/LwIP/system/arch -Os -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" - -clean: clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-api - -clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-api: - -$(RM) ./Middlewares/Third_Party/LwIP/src/api/api_lib.cyclo ./Middlewares/Third_Party/LwIP/src/api/api_lib.d ./Middlewares/Third_Party/LwIP/src/api/api_lib.o ./Middlewares/Third_Party/LwIP/src/api/api_lib.su ./Middlewares/Third_Party/LwIP/src/api/api_msg.cyclo ./Middlewares/Third_Party/LwIP/src/api/api_msg.d ./Middlewares/Third_Party/LwIP/src/api/api_msg.o ./Middlewares/Third_Party/LwIP/src/api/api_msg.su ./Middlewares/Third_Party/LwIP/src/api/err.cyclo ./Middlewares/Third_Party/LwIP/src/api/err.d ./Middlewares/Third_Party/LwIP/src/api/err.o ./Middlewares/Third_Party/LwIP/src/api/err.su ./Middlewares/Third_Party/LwIP/src/api/if_api.cyclo ./Middlewares/Third_Party/LwIP/src/api/if_api.d ./Middlewares/Third_Party/LwIP/src/api/if_api.o ./Middlewares/Third_Party/LwIP/src/api/if_api.su ./Middlewares/Third_Party/LwIP/src/api/netbuf.cyclo ./Middlewares/Third_Party/LwIP/src/api/netbuf.d ./Middlewares/Third_Party/LwIP/src/api/netbuf.o ./Middlewares/Third_Party/LwIP/src/api/netbuf.su ./Middlewares/Third_Party/LwIP/src/api/netdb.cyclo ./Middlewares/Third_Party/LwIP/src/api/netdb.d ./Middlewares/Third_Party/LwIP/src/api/netdb.o ./Middlewares/Third_Party/LwIP/src/api/netdb.su ./Middlewares/Third_Party/LwIP/src/api/netifapi.cyclo ./Middlewares/Third_Party/LwIP/src/api/netifapi.d ./Middlewares/Third_Party/LwIP/src/api/netifapi.o ./Middlewares/Third_Party/LwIP/src/api/netifapi.su ./Middlewares/Third_Party/LwIP/src/api/sockets.cyclo ./Middlewares/Third_Party/LwIP/src/api/sockets.d ./Middlewares/Third_Party/LwIP/src/api/sockets.o ./Middlewares/Third_Party/LwIP/src/api/sockets.su ./Middlewares/Third_Party/LwIP/src/api/tcpip.cyclo ./Middlewares/Third_Party/LwIP/src/api/tcpip.d ./Middlewares/Third_Party/LwIP/src/api/tcpip.o ./Middlewares/Third_Party/LwIP/src/api/tcpip.su - -.PHONY: clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-api - diff --git a/Release/Middlewares/Third_Party/LwIP/src/apps/mqtt/subdir.mk b/Release/Middlewares/Third_Party/LwIP/src/apps/mqtt/subdir.mk deleted file mode 100644 index f609698..0000000 --- a/Release/Middlewares/Third_Party/LwIP/src/apps/mqtt/subdir.mk +++ /dev/null @@ -1,27 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (12.3.rel1) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../Middlewares/Third_Party/LwIP/src/apps/mqtt/mqtt.c - -OBJS += \ -./Middlewares/Third_Party/LwIP/src/apps/mqtt/mqtt.o - -C_DEPS += \ -./Middlewares/Third_Party/LwIP/src/apps/mqtt/mqtt.d - - -# Each subdirectory must supply rules for building sources it contributes -Middlewares/Third_Party/LwIP/src/apps/mqtt/%.o Middlewares/Third_Party/LwIP/src/apps/mqtt/%.su Middlewares/Third_Party/LwIP/src/apps/mqtt/%.cyclo: ../Middlewares/Third_Party/LwIP/src/apps/mqtt/%.c Middlewares/Third_Party/LwIP/src/apps/mqtt/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -DUSE_HAL_DRIVER -DSTM32F429xx -c -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I../LWIP/App -I../LWIP/Target -I../Middlewares/Third_Party/LwIP/src/include -I../Middlewares/Third_Party/LwIP/system -I../Drivers/BSP/Components/dp83848 -I../Middlewares/Third_Party/LwIP/src/include/netif/ppp -I../Middlewares/Third_Party/LwIP/src/include/lwip -I../Middlewares/Third_Party/LwIP/src/include/lwip/apps -I../Middlewares/Third_Party/LwIP/src/include/lwip/priv -I../Middlewares/Third_Party/LwIP/src/include/lwip/prot -I../Middlewares/Third_Party/LwIP/src/include/netif -I../Middlewares/Third_Party/LwIP/src/include/compat/posix -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/arpa -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/net -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/sys -I../Middlewares/Third_Party/LwIP/src/include/compat/stdc -I../Middlewares/Third_Party/LwIP/system/arch -Os -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" - -clean: clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-apps-2f-mqtt - -clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-apps-2f-mqtt: - -$(RM) ./Middlewares/Third_Party/LwIP/src/apps/mqtt/mqtt.cyclo ./Middlewares/Third_Party/LwIP/src/apps/mqtt/mqtt.d ./Middlewares/Third_Party/LwIP/src/apps/mqtt/mqtt.o ./Middlewares/Third_Party/LwIP/src/apps/mqtt/mqtt.su - -.PHONY: clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-apps-2f-mqtt - diff --git a/Release/Middlewares/Third_Party/LwIP/src/core/ipv4/subdir.mk b/Release/Middlewares/Third_Party/LwIP/src/core/ipv4/subdir.mk deleted file mode 100644 index fffe8b9..0000000 --- a/Release/Middlewares/Third_Party/LwIP/src/core/ipv4/subdir.mk +++ /dev/null @@ -1,48 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (12.3.rel1) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../Middlewares/Third_Party/LwIP/src/core/ipv4/autoip.c \ -../Middlewares/Third_Party/LwIP/src/core/ipv4/dhcp.c \ -../Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.c \ -../Middlewares/Third_Party/LwIP/src/core/ipv4/icmp.c \ -../Middlewares/Third_Party/LwIP/src/core/ipv4/igmp.c \ -../Middlewares/Third_Party/LwIP/src/core/ipv4/ip4.c \ -../Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_addr.c \ -../Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.c - -OBJS += \ -./Middlewares/Third_Party/LwIP/src/core/ipv4/autoip.o \ -./Middlewares/Third_Party/LwIP/src/core/ipv4/dhcp.o \ -./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o \ -./Middlewares/Third_Party/LwIP/src/core/ipv4/icmp.o \ -./Middlewares/Third_Party/LwIP/src/core/ipv4/igmp.o \ -./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4.o \ -./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_addr.o \ -./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o - -C_DEPS += \ -./Middlewares/Third_Party/LwIP/src/core/ipv4/autoip.d \ -./Middlewares/Third_Party/LwIP/src/core/ipv4/dhcp.d \ -./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.d \ -./Middlewares/Third_Party/LwIP/src/core/ipv4/icmp.d \ -./Middlewares/Third_Party/LwIP/src/core/ipv4/igmp.d \ -./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4.d \ -./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_addr.d \ -./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.d - - -# Each subdirectory must supply rules for building sources it contributes -Middlewares/Third_Party/LwIP/src/core/ipv4/%.o Middlewares/Third_Party/LwIP/src/core/ipv4/%.su Middlewares/Third_Party/LwIP/src/core/ipv4/%.cyclo: ../Middlewares/Third_Party/LwIP/src/core/ipv4/%.c Middlewares/Third_Party/LwIP/src/core/ipv4/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -DUSE_HAL_DRIVER -DSTM32F429xx -c -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I../LWIP/App -I../LWIP/Target -I../Middlewares/Third_Party/LwIP/src/include -I../Middlewares/Third_Party/LwIP/system -I../Drivers/BSP/Components/dp83848 -I../Middlewares/Third_Party/LwIP/src/include/netif/ppp -I../Middlewares/Third_Party/LwIP/src/include/lwip -I../Middlewares/Third_Party/LwIP/src/include/lwip/apps -I../Middlewares/Third_Party/LwIP/src/include/lwip/priv -I../Middlewares/Third_Party/LwIP/src/include/lwip/prot -I../Middlewares/Third_Party/LwIP/src/include/netif -I../Middlewares/Third_Party/LwIP/src/include/compat/posix -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/arpa -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/net -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/sys -I../Middlewares/Third_Party/LwIP/src/include/compat/stdc -I../Middlewares/Third_Party/LwIP/system/arch -Os -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" - -clean: clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-core-2f-ipv4 - -clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-core-2f-ipv4: - -$(RM) ./Middlewares/Third_Party/LwIP/src/core/ipv4/autoip.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv4/autoip.d ./Middlewares/Third_Party/LwIP/src/core/ipv4/autoip.o ./Middlewares/Third_Party/LwIP/src/core/ipv4/autoip.su ./Middlewares/Third_Party/LwIP/src/core/ipv4/dhcp.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv4/dhcp.d ./Middlewares/Third_Party/LwIP/src/core/ipv4/dhcp.o ./Middlewares/Third_Party/LwIP/src/core/ipv4/dhcp.su ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.d ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.su ./Middlewares/Third_Party/LwIP/src/core/ipv4/icmp.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv4/icmp.d ./Middlewares/Third_Party/LwIP/src/core/ipv4/icmp.o ./Middlewares/Third_Party/LwIP/src/core/ipv4/icmp.su ./Middlewares/Third_Party/LwIP/src/core/ipv4/igmp.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv4/igmp.d ./Middlewares/Third_Party/LwIP/src/core/ipv4/igmp.o ./Middlewares/Third_Party/LwIP/src/core/ipv4/igmp.su ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4.d ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4.o ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4.su ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_addr.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_addr.d ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_addr.o ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_addr.su ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.d ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.su - -.PHONY: clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-core-2f-ipv4 - diff --git a/Release/Middlewares/Third_Party/LwIP/src/core/ipv6/subdir.mk b/Release/Middlewares/Third_Party/LwIP/src/core/ipv6/subdir.mk deleted file mode 100644 index 70a839f..0000000 --- a/Release/Middlewares/Third_Party/LwIP/src/core/ipv6/subdir.mk +++ /dev/null @@ -1,51 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (12.3.rel1) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../Middlewares/Third_Party/LwIP/src/core/ipv6/dhcp6.c \ -../Middlewares/Third_Party/LwIP/src/core/ipv6/ethip6.c \ -../Middlewares/Third_Party/LwIP/src/core/ipv6/icmp6.c \ -../Middlewares/Third_Party/LwIP/src/core/ipv6/inet6.c \ -../Middlewares/Third_Party/LwIP/src/core/ipv6/ip6.c \ -../Middlewares/Third_Party/LwIP/src/core/ipv6/ip6_addr.c \ -../Middlewares/Third_Party/LwIP/src/core/ipv6/ip6_frag.c \ -../Middlewares/Third_Party/LwIP/src/core/ipv6/mld6.c \ -../Middlewares/Third_Party/LwIP/src/core/ipv6/nd6.c - -OBJS += \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/dhcp6.o \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/ethip6.o \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/icmp6.o \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/inet6.o \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6.o \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6_addr.o \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6_frag.o \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/mld6.o \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/nd6.o - -C_DEPS += \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/dhcp6.d \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/ethip6.d \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/icmp6.d \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/inet6.d \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6.d \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6_addr.d \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6_frag.d \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/mld6.d \ -./Middlewares/Third_Party/LwIP/src/core/ipv6/nd6.d - - -# Each subdirectory must supply rules for building sources it contributes -Middlewares/Third_Party/LwIP/src/core/ipv6/%.o Middlewares/Third_Party/LwIP/src/core/ipv6/%.su Middlewares/Third_Party/LwIP/src/core/ipv6/%.cyclo: ../Middlewares/Third_Party/LwIP/src/core/ipv6/%.c Middlewares/Third_Party/LwIP/src/core/ipv6/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -DUSE_HAL_DRIVER -DSTM32F429xx -c -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I../LWIP/App -I../LWIP/Target -I../Middlewares/Third_Party/LwIP/src/include -I../Middlewares/Third_Party/LwIP/system -I../Drivers/BSP/Components/dp83848 -I../Middlewares/Third_Party/LwIP/src/include/netif/ppp -I../Middlewares/Third_Party/LwIP/src/include/lwip -I../Middlewares/Third_Party/LwIP/src/include/lwip/apps -I../Middlewares/Third_Party/LwIP/src/include/lwip/priv -I../Middlewares/Third_Party/LwIP/src/include/lwip/prot -I../Middlewares/Third_Party/LwIP/src/include/netif -I../Middlewares/Third_Party/LwIP/src/include/compat/posix -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/arpa -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/net -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/sys -I../Middlewares/Third_Party/LwIP/src/include/compat/stdc -I../Middlewares/Third_Party/LwIP/system/arch -Os -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" - -clean: clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-core-2f-ipv6 - -clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-core-2f-ipv6: - -$(RM) ./Middlewares/Third_Party/LwIP/src/core/ipv6/dhcp6.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv6/dhcp6.d ./Middlewares/Third_Party/LwIP/src/core/ipv6/dhcp6.o ./Middlewares/Third_Party/LwIP/src/core/ipv6/dhcp6.su ./Middlewares/Third_Party/LwIP/src/core/ipv6/ethip6.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv6/ethip6.d ./Middlewares/Third_Party/LwIP/src/core/ipv6/ethip6.o ./Middlewares/Third_Party/LwIP/src/core/ipv6/ethip6.su ./Middlewares/Third_Party/LwIP/src/core/ipv6/icmp6.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv6/icmp6.d ./Middlewares/Third_Party/LwIP/src/core/ipv6/icmp6.o ./Middlewares/Third_Party/LwIP/src/core/ipv6/icmp6.su ./Middlewares/Third_Party/LwIP/src/core/ipv6/inet6.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv6/inet6.d ./Middlewares/Third_Party/LwIP/src/core/ipv6/inet6.o ./Middlewares/Third_Party/LwIP/src/core/ipv6/inet6.su ./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6.d ./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6.o ./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6.su ./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6_addr.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6_addr.d ./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6_addr.o ./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6_addr.su ./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6_frag.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6_frag.d ./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6_frag.o ./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6_frag.su ./Middlewares/Third_Party/LwIP/src/core/ipv6/mld6.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv6/mld6.d ./Middlewares/Third_Party/LwIP/src/core/ipv6/mld6.o ./Middlewares/Third_Party/LwIP/src/core/ipv6/mld6.su ./Middlewares/Third_Party/LwIP/src/core/ipv6/nd6.cyclo ./Middlewares/Third_Party/LwIP/src/core/ipv6/nd6.d ./Middlewares/Third_Party/LwIP/src/core/ipv6/nd6.o ./Middlewares/Third_Party/LwIP/src/core/ipv6/nd6.su - -.PHONY: clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-core-2f-ipv6 - diff --git a/Release/Middlewares/Third_Party/LwIP/src/core/subdir.mk b/Release/Middlewares/Third_Party/LwIP/src/core/subdir.mk deleted file mode 100644 index ebf49fc..0000000 --- a/Release/Middlewares/Third_Party/LwIP/src/core/subdir.mk +++ /dev/null @@ -1,84 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (12.3.rel1) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../Middlewares/Third_Party/LwIP/src/core/altcp.c \ -../Middlewares/Third_Party/LwIP/src/core/altcp_alloc.c \ -../Middlewares/Third_Party/LwIP/src/core/altcp_tcp.c \ -../Middlewares/Third_Party/LwIP/src/core/def.c \ -../Middlewares/Third_Party/LwIP/src/core/dns.c \ -../Middlewares/Third_Party/LwIP/src/core/inet_chksum.c \ -../Middlewares/Third_Party/LwIP/src/core/init.c \ -../Middlewares/Third_Party/LwIP/src/core/ip.c \ -../Middlewares/Third_Party/LwIP/src/core/mem.c \ -../Middlewares/Third_Party/LwIP/src/core/memp.c \ -../Middlewares/Third_Party/LwIP/src/core/netif.c \ -../Middlewares/Third_Party/LwIP/src/core/pbuf.c \ -../Middlewares/Third_Party/LwIP/src/core/raw.c \ -../Middlewares/Third_Party/LwIP/src/core/stats.c \ -../Middlewares/Third_Party/LwIP/src/core/sys.c \ -../Middlewares/Third_Party/LwIP/src/core/tcp.c \ -../Middlewares/Third_Party/LwIP/src/core/tcp_in.c \ -../Middlewares/Third_Party/LwIP/src/core/tcp_out.c \ -../Middlewares/Third_Party/LwIP/src/core/timeouts.c \ -../Middlewares/Third_Party/LwIP/src/core/udp.c - -OBJS += \ -./Middlewares/Third_Party/LwIP/src/core/altcp.o \ -./Middlewares/Third_Party/LwIP/src/core/altcp_alloc.o \ -./Middlewares/Third_Party/LwIP/src/core/altcp_tcp.o \ -./Middlewares/Third_Party/LwIP/src/core/def.o \ -./Middlewares/Third_Party/LwIP/src/core/dns.o \ -./Middlewares/Third_Party/LwIP/src/core/inet_chksum.o \ -./Middlewares/Third_Party/LwIP/src/core/init.o \ -./Middlewares/Third_Party/LwIP/src/core/ip.o \ -./Middlewares/Third_Party/LwIP/src/core/mem.o \ -./Middlewares/Third_Party/LwIP/src/core/memp.o \ -./Middlewares/Third_Party/LwIP/src/core/netif.o \ -./Middlewares/Third_Party/LwIP/src/core/pbuf.o \ -./Middlewares/Third_Party/LwIP/src/core/raw.o \ -./Middlewares/Third_Party/LwIP/src/core/stats.o \ -./Middlewares/Third_Party/LwIP/src/core/sys.o \ -./Middlewares/Third_Party/LwIP/src/core/tcp.o \ -./Middlewares/Third_Party/LwIP/src/core/tcp_in.o \ -./Middlewares/Third_Party/LwIP/src/core/tcp_out.o \ -./Middlewares/Third_Party/LwIP/src/core/timeouts.o \ -./Middlewares/Third_Party/LwIP/src/core/udp.o - -C_DEPS += \ -./Middlewares/Third_Party/LwIP/src/core/altcp.d \ -./Middlewares/Third_Party/LwIP/src/core/altcp_alloc.d \ -./Middlewares/Third_Party/LwIP/src/core/altcp_tcp.d \ -./Middlewares/Third_Party/LwIP/src/core/def.d \ -./Middlewares/Third_Party/LwIP/src/core/dns.d \ -./Middlewares/Third_Party/LwIP/src/core/inet_chksum.d \ -./Middlewares/Third_Party/LwIP/src/core/init.d \ -./Middlewares/Third_Party/LwIP/src/core/ip.d \ -./Middlewares/Third_Party/LwIP/src/core/mem.d \ -./Middlewares/Third_Party/LwIP/src/core/memp.d \ -./Middlewares/Third_Party/LwIP/src/core/netif.d \ -./Middlewares/Third_Party/LwIP/src/core/pbuf.d \ -./Middlewares/Third_Party/LwIP/src/core/raw.d \ -./Middlewares/Third_Party/LwIP/src/core/stats.d \ -./Middlewares/Third_Party/LwIP/src/core/sys.d \ -./Middlewares/Third_Party/LwIP/src/core/tcp.d \ -./Middlewares/Third_Party/LwIP/src/core/tcp_in.d \ -./Middlewares/Third_Party/LwIP/src/core/tcp_out.d \ -./Middlewares/Third_Party/LwIP/src/core/timeouts.d \ -./Middlewares/Third_Party/LwIP/src/core/udp.d - - -# Each subdirectory must supply rules for building sources it contributes -Middlewares/Third_Party/LwIP/src/core/%.o Middlewares/Third_Party/LwIP/src/core/%.su Middlewares/Third_Party/LwIP/src/core/%.cyclo: ../Middlewares/Third_Party/LwIP/src/core/%.c Middlewares/Third_Party/LwIP/src/core/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -DUSE_HAL_DRIVER -DSTM32F429xx -c -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I../LWIP/App -I../LWIP/Target -I../Middlewares/Third_Party/LwIP/src/include -I../Middlewares/Third_Party/LwIP/system -I../Drivers/BSP/Components/dp83848 -I../Middlewares/Third_Party/LwIP/src/include/netif/ppp -I../Middlewares/Third_Party/LwIP/src/include/lwip -I../Middlewares/Third_Party/LwIP/src/include/lwip/apps -I../Middlewares/Third_Party/LwIP/src/include/lwip/priv -I../Middlewares/Third_Party/LwIP/src/include/lwip/prot -I../Middlewares/Third_Party/LwIP/src/include/netif -I../Middlewares/Third_Party/LwIP/src/include/compat/posix -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/arpa -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/net -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/sys -I../Middlewares/Third_Party/LwIP/src/include/compat/stdc -I../Middlewares/Third_Party/LwIP/system/arch -Os -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" - -clean: clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-core - -clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-core: - -$(RM) ./Middlewares/Third_Party/LwIP/src/core/altcp.cyclo ./Middlewares/Third_Party/LwIP/src/core/altcp.d ./Middlewares/Third_Party/LwIP/src/core/altcp.o ./Middlewares/Third_Party/LwIP/src/core/altcp.su ./Middlewares/Third_Party/LwIP/src/core/altcp_alloc.cyclo ./Middlewares/Third_Party/LwIP/src/core/altcp_alloc.d ./Middlewares/Third_Party/LwIP/src/core/altcp_alloc.o ./Middlewares/Third_Party/LwIP/src/core/altcp_alloc.su ./Middlewares/Third_Party/LwIP/src/core/altcp_tcp.cyclo ./Middlewares/Third_Party/LwIP/src/core/altcp_tcp.d ./Middlewares/Third_Party/LwIP/src/core/altcp_tcp.o ./Middlewares/Third_Party/LwIP/src/core/altcp_tcp.su ./Middlewares/Third_Party/LwIP/src/core/def.cyclo ./Middlewares/Third_Party/LwIP/src/core/def.d ./Middlewares/Third_Party/LwIP/src/core/def.o ./Middlewares/Third_Party/LwIP/src/core/def.su ./Middlewares/Third_Party/LwIP/src/core/dns.cyclo ./Middlewares/Third_Party/LwIP/src/core/dns.d ./Middlewares/Third_Party/LwIP/src/core/dns.o ./Middlewares/Third_Party/LwIP/src/core/dns.su ./Middlewares/Third_Party/LwIP/src/core/inet_chksum.cyclo ./Middlewares/Third_Party/LwIP/src/core/inet_chksum.d ./Middlewares/Third_Party/LwIP/src/core/inet_chksum.o ./Middlewares/Third_Party/LwIP/src/core/inet_chksum.su ./Middlewares/Third_Party/LwIP/src/core/init.cyclo ./Middlewares/Third_Party/LwIP/src/core/init.d ./Middlewares/Third_Party/LwIP/src/core/init.o ./Middlewares/Third_Party/LwIP/src/core/init.su ./Middlewares/Third_Party/LwIP/src/core/ip.cyclo ./Middlewares/Third_Party/LwIP/src/core/ip.d ./Middlewares/Third_Party/LwIP/src/core/ip.o ./Middlewares/Third_Party/LwIP/src/core/ip.su ./Middlewares/Third_Party/LwIP/src/core/mem.cyclo ./Middlewares/Third_Party/LwIP/src/core/mem.d ./Middlewares/Third_Party/LwIP/src/core/mem.o ./Middlewares/Third_Party/LwIP/src/core/mem.su ./Middlewares/Third_Party/LwIP/src/core/memp.cyclo ./Middlewares/Third_Party/LwIP/src/core/memp.d ./Middlewares/Third_Party/LwIP/src/core/memp.o ./Middlewares/Third_Party/LwIP/src/core/memp.su ./Middlewares/Third_Party/LwIP/src/core/netif.cyclo ./Middlewares/Third_Party/LwIP/src/core/netif.d ./Middlewares/Third_Party/LwIP/src/core/netif.o ./Middlewares/Third_Party/LwIP/src/core/netif.su ./Middlewares/Third_Party/LwIP/src/core/pbuf.cyclo ./Middlewares/Third_Party/LwIP/src/core/pbuf.d ./Middlewares/Third_Party/LwIP/src/core/pbuf.o ./Middlewares/Third_Party/LwIP/src/core/pbuf.su ./Middlewares/Third_Party/LwIP/src/core/raw.cyclo ./Middlewares/Third_Party/LwIP/src/core/raw.d ./Middlewares/Third_Party/LwIP/src/core/raw.o ./Middlewares/Third_Party/LwIP/src/core/raw.su ./Middlewares/Third_Party/LwIP/src/core/stats.cyclo ./Middlewares/Third_Party/LwIP/src/core/stats.d ./Middlewares/Third_Party/LwIP/src/core/stats.o ./Middlewares/Third_Party/LwIP/src/core/stats.su ./Middlewares/Third_Party/LwIP/src/core/sys.cyclo ./Middlewares/Third_Party/LwIP/src/core/sys.d ./Middlewares/Third_Party/LwIP/src/core/sys.o ./Middlewares/Third_Party/LwIP/src/core/sys.su ./Middlewares/Third_Party/LwIP/src/core/tcp.cyclo ./Middlewares/Third_Party/LwIP/src/core/tcp.d ./Middlewares/Third_Party/LwIP/src/core/tcp.o ./Middlewares/Third_Party/LwIP/src/core/tcp.su ./Middlewares/Third_Party/LwIP/src/core/tcp_in.cyclo ./Middlewares/Third_Party/LwIP/src/core/tcp_in.d ./Middlewares/Third_Party/LwIP/src/core/tcp_in.o ./Middlewares/Third_Party/LwIP/src/core/tcp_in.su ./Middlewares/Third_Party/LwIP/src/core/tcp_out.cyclo ./Middlewares/Third_Party/LwIP/src/core/tcp_out.d ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o ./Middlewares/Third_Party/LwIP/src/core/tcp_out.su ./Middlewares/Third_Party/LwIP/src/core/timeouts.cyclo ./Middlewares/Third_Party/LwIP/src/core/timeouts.d ./Middlewares/Third_Party/LwIP/src/core/timeouts.o ./Middlewares/Third_Party/LwIP/src/core/timeouts.su ./Middlewares/Third_Party/LwIP/src/core/udp.cyclo ./Middlewares/Third_Party/LwIP/src/core/udp.d ./Middlewares/Third_Party/LwIP/src/core/udp.o ./Middlewares/Third_Party/LwIP/src/core/udp.su - -.PHONY: clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-core - diff --git a/Release/Middlewares/Third_Party/LwIP/src/netif/ppp/subdir.mk b/Release/Middlewares/Third_Party/LwIP/src/netif/ppp/subdir.mk deleted file mode 100644 index 30ba85d..0000000 --- a/Release/Middlewares/Third_Party/LwIP/src/netif/ppp/subdir.mk +++ /dev/null @@ -1,99 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (12.3.rel1) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/auth.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/ccp.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/chap-md5.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/chap-new.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/chap_ms.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/demand.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/eap.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/ecp.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/eui64.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/fsm.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/ipcp.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/ipv6cp.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/lcp.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/magic.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/mppe.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/multilink.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/ppp.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/pppapi.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/pppcrypt.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/pppoe.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/pppol2tp.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/pppos.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/upap.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/utils.c \ -../Middlewares/Third_Party/LwIP/src/netif/ppp/vj.c - -OBJS += \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/auth.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/ccp.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/chap-md5.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/chap-new.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/chap_ms.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/demand.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/eap.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/ecp.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/eui64.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/fsm.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/ipcp.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/ipv6cp.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/lcp.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/magic.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/mppe.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/multilink.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/ppp.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/pppapi.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/pppcrypt.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/pppoe.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/pppol2tp.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/pppos.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/upap.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/utils.o \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/vj.o - -C_DEPS += \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/auth.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/ccp.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/chap-md5.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/chap-new.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/chap_ms.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/demand.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/eap.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/ecp.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/eui64.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/fsm.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/ipcp.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/ipv6cp.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/lcp.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/magic.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/mppe.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/multilink.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/ppp.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/pppapi.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/pppcrypt.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/pppoe.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/pppol2tp.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/pppos.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/upap.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/utils.d \ -./Middlewares/Third_Party/LwIP/src/netif/ppp/vj.d - - -# Each subdirectory must supply rules for building sources it contributes -Middlewares/Third_Party/LwIP/src/netif/ppp/%.o Middlewares/Third_Party/LwIP/src/netif/ppp/%.su Middlewares/Third_Party/LwIP/src/netif/ppp/%.cyclo: ../Middlewares/Third_Party/LwIP/src/netif/ppp/%.c Middlewares/Third_Party/LwIP/src/netif/ppp/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -DUSE_HAL_DRIVER -DSTM32F429xx -c -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I../LWIP/App -I../LWIP/Target -I../Middlewares/Third_Party/LwIP/src/include -I../Middlewares/Third_Party/LwIP/system -I../Drivers/BSP/Components/dp83848 -I../Middlewares/Third_Party/LwIP/src/include/netif/ppp -I../Middlewares/Third_Party/LwIP/src/include/lwip -I../Middlewares/Third_Party/LwIP/src/include/lwip/apps -I../Middlewares/Third_Party/LwIP/src/include/lwip/priv -I../Middlewares/Third_Party/LwIP/src/include/lwip/prot -I../Middlewares/Third_Party/LwIP/src/include/netif -I../Middlewares/Third_Party/LwIP/src/include/compat/posix -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/arpa -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/net -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/sys -I../Middlewares/Third_Party/LwIP/src/include/compat/stdc -I../Middlewares/Third_Party/LwIP/system/arch -Os -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" - -clean: clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-netif-2f-ppp - -clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-netif-2f-ppp: - -$(RM) ./Middlewares/Third_Party/LwIP/src/netif/ppp/auth.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/auth.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/auth.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/auth.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/ccp.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/ccp.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/ccp.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/ccp.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/chap-md5.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/chap-md5.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/chap-md5.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/chap-md5.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/chap-new.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/chap-new.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/chap-new.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/chap-new.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/chap_ms.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/chap_ms.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/chap_ms.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/chap_ms.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/demand.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/demand.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/demand.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/demand.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/eap.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/eap.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/eap.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/eap.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/ecp.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/ecp.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/ecp.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/ecp.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/eui64.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/eui64.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/eui64.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/eui64.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/fsm.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/fsm.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/fsm.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/fsm.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/ipcp.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/ipcp.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/ipcp.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/ipcp.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/ipv6cp.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/ipv6cp.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/ipv6cp.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/ipv6cp.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/lcp.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/lcp.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/lcp.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/lcp.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/magic.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/magic.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/magic.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/magic.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/mppe.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/mppe.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/mppe.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/mppe.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/multilink.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/multilink.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/multilink.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/multilink.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/ppp.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/ppp.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/ppp.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/ppp.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppapi.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppapi.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppapi.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppapi.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppcrypt.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppcrypt.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppcrypt.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppcrypt.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppoe.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppoe.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppoe.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppoe.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppol2tp.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppol2tp.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppol2tp.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppol2tp.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppos.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppos.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppos.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/pppos.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/upap.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/upap.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/upap.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/upap.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/utils.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/utils.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/utils.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/utils.su ./Middlewares/Third_Party/LwIP/src/netif/ppp/vj.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ppp/vj.d ./Middlewares/Third_Party/LwIP/src/netif/ppp/vj.o ./Middlewares/Third_Party/LwIP/src/netif/ppp/vj.su - -.PHONY: clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-netif-2f-ppp - diff --git a/Release/Middlewares/Third_Party/LwIP/src/netif/subdir.mk b/Release/Middlewares/Third_Party/LwIP/src/netif/subdir.mk deleted file mode 100644 index b64c3de..0000000 --- a/Release/Middlewares/Third_Party/LwIP/src/netif/subdir.mk +++ /dev/null @@ -1,48 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (12.3.rel1) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../Middlewares/Third_Party/LwIP/src/netif/bridgeif.c \ -../Middlewares/Third_Party/LwIP/src/netif/bridgeif_fdb.c \ -../Middlewares/Third_Party/LwIP/src/netif/ethernet.c \ -../Middlewares/Third_Party/LwIP/src/netif/lowpan6.c \ -../Middlewares/Third_Party/LwIP/src/netif/lowpan6_ble.c \ -../Middlewares/Third_Party/LwIP/src/netif/lowpan6_common.c \ -../Middlewares/Third_Party/LwIP/src/netif/slipif.c \ -../Middlewares/Third_Party/LwIP/src/netif/zepif.c - -OBJS += \ -./Middlewares/Third_Party/LwIP/src/netif/bridgeif.o \ -./Middlewares/Third_Party/LwIP/src/netif/bridgeif_fdb.o \ -./Middlewares/Third_Party/LwIP/src/netif/ethernet.o \ -./Middlewares/Third_Party/LwIP/src/netif/lowpan6.o \ -./Middlewares/Third_Party/LwIP/src/netif/lowpan6_ble.o \ -./Middlewares/Third_Party/LwIP/src/netif/lowpan6_common.o \ -./Middlewares/Third_Party/LwIP/src/netif/slipif.o \ -./Middlewares/Third_Party/LwIP/src/netif/zepif.o - -C_DEPS += \ -./Middlewares/Third_Party/LwIP/src/netif/bridgeif.d \ -./Middlewares/Third_Party/LwIP/src/netif/bridgeif_fdb.d \ -./Middlewares/Third_Party/LwIP/src/netif/ethernet.d \ -./Middlewares/Third_Party/LwIP/src/netif/lowpan6.d \ -./Middlewares/Third_Party/LwIP/src/netif/lowpan6_ble.d \ -./Middlewares/Third_Party/LwIP/src/netif/lowpan6_common.d \ -./Middlewares/Third_Party/LwIP/src/netif/slipif.d \ -./Middlewares/Third_Party/LwIP/src/netif/zepif.d - - -# Each subdirectory must supply rules for building sources it contributes -Middlewares/Third_Party/LwIP/src/netif/%.o Middlewares/Third_Party/LwIP/src/netif/%.su Middlewares/Third_Party/LwIP/src/netif/%.cyclo: ../Middlewares/Third_Party/LwIP/src/netif/%.c Middlewares/Third_Party/LwIP/src/netif/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -DUSE_HAL_DRIVER -DSTM32F429xx -c -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I../LWIP/App -I../LWIP/Target -I../Middlewares/Third_Party/LwIP/src/include -I../Middlewares/Third_Party/LwIP/system -I../Drivers/BSP/Components/dp83848 -I../Middlewares/Third_Party/LwIP/src/include/netif/ppp -I../Middlewares/Third_Party/LwIP/src/include/lwip -I../Middlewares/Third_Party/LwIP/src/include/lwip/apps -I../Middlewares/Third_Party/LwIP/src/include/lwip/priv -I../Middlewares/Third_Party/LwIP/src/include/lwip/prot -I../Middlewares/Third_Party/LwIP/src/include/netif -I../Middlewares/Third_Party/LwIP/src/include/compat/posix -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/arpa -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/net -I../Middlewares/Third_Party/LwIP/src/include/compat/posix/sys -I../Middlewares/Third_Party/LwIP/src/include/compat/stdc -I../Middlewares/Third_Party/LwIP/system/arch -Os -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" - -clean: clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-netif - -clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-netif: - -$(RM) ./Middlewares/Third_Party/LwIP/src/netif/bridgeif.cyclo ./Middlewares/Third_Party/LwIP/src/netif/bridgeif.d ./Middlewares/Third_Party/LwIP/src/netif/bridgeif.o ./Middlewares/Third_Party/LwIP/src/netif/bridgeif.su ./Middlewares/Third_Party/LwIP/src/netif/bridgeif_fdb.cyclo ./Middlewares/Third_Party/LwIP/src/netif/bridgeif_fdb.d ./Middlewares/Third_Party/LwIP/src/netif/bridgeif_fdb.o ./Middlewares/Third_Party/LwIP/src/netif/bridgeif_fdb.su ./Middlewares/Third_Party/LwIP/src/netif/ethernet.cyclo ./Middlewares/Third_Party/LwIP/src/netif/ethernet.d ./Middlewares/Third_Party/LwIP/src/netif/ethernet.o ./Middlewares/Third_Party/LwIP/src/netif/ethernet.su ./Middlewares/Third_Party/LwIP/src/netif/lowpan6.cyclo ./Middlewares/Third_Party/LwIP/src/netif/lowpan6.d ./Middlewares/Third_Party/LwIP/src/netif/lowpan6.o ./Middlewares/Third_Party/LwIP/src/netif/lowpan6.su ./Middlewares/Third_Party/LwIP/src/netif/lowpan6_ble.cyclo ./Middlewares/Third_Party/LwIP/src/netif/lowpan6_ble.d ./Middlewares/Third_Party/LwIP/src/netif/lowpan6_ble.o ./Middlewares/Third_Party/LwIP/src/netif/lowpan6_ble.su ./Middlewares/Third_Party/LwIP/src/netif/lowpan6_common.cyclo ./Middlewares/Third_Party/LwIP/src/netif/lowpan6_common.d ./Middlewares/Third_Party/LwIP/src/netif/lowpan6_common.o ./Middlewares/Third_Party/LwIP/src/netif/lowpan6_common.su ./Middlewares/Third_Party/LwIP/src/netif/slipif.cyclo ./Middlewares/Third_Party/LwIP/src/netif/slipif.d ./Middlewares/Third_Party/LwIP/src/netif/slipif.o ./Middlewares/Third_Party/LwIP/src/netif/slipif.su ./Middlewares/Third_Party/LwIP/src/netif/zepif.cyclo ./Middlewares/Third_Party/LwIP/src/netif/zepif.d ./Middlewares/Third_Party/LwIP/src/netif/zepif.o ./Middlewares/Third_Party/LwIP/src/netif/zepif.su - -.PHONY: clean-Middlewares-2f-Third_Party-2f-LwIP-2f-src-2f-netif - diff --git a/Release/makefile b/Release/makefile index aa71b19..f8b0496 100644 --- a/Release/makefile +++ b/Release/makefile @@ -70,8 +70,8 @@ all: main-build main-build: yau-07b.elf secondary-outputs # Tool invocations -yau-07b.elf yau-07b.map: $(OBJS) $(USER_OBJS) D:\Work\CubeMX\ Projects\yau-07b\STM32F429ZITX_FLASH.ld makefile objects.list $(OPTIONAL_TOOL_DEPS) - arm-none-eabi-gcc -o "yau-07b.elf" @"objects.list" $(USER_OBJS) $(LIBS) -mcpu=cortex-m4 -T"D:\Work\CubeMX Projects\yau-07b\STM32F429ZITX_FLASH.ld" --specs=nosys.specs -Wl,-Map="yau-07b.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group +yau-07b.elf yau-07b.map: $(OBJS) $(USER_OBJS) C:\Maxim_Git\Yau-07B\STM32F429ZITX_FLASH.ld makefile objects.list $(OPTIONAL_TOOL_DEPS) + arm-none-eabi-gcc -o "yau-07b.elf" @"objects.list" $(USER_OBJS) $(LIBS) -mcpu=cortex-m4 -T"C:\Maxim_Git\Yau-07B\STM32F429ZITX_FLASH.ld" --specs=nosys.specs -Wl,-Map="yau-07b.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group @echo 'Finished building target: $@' @echo ' ' diff --git a/Release/objects.list b/Release/objects.list deleted file mode 100644 index cea01d7..0000000 --- a/Release/objects.list +++ /dev/null @@ -1,108 +0,0 @@ -"./Core/Src/FLASH_SECTOR_F4.o" -"./Core/Src/main.o" -"./Core/Src/pribors.o" -"./Core/Src/stm32f4xx_hal_msp.o" -"./Core/Src/stm32f4xx_it.o" -"./Core/Src/system_stm32f4xx.o" -"./Core/Startup/startup_stm32f429zitx.o" -"./Drivers/BSP/Components/dp83848/dp83848.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_eth.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sram.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o" -"./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.o" -"./LWIP/App/lwip.o" -"./LWIP/Target/ethernetif.o" -"./Middlewares/Third_Party/LwIP/src/api/api_lib.o" -"./Middlewares/Third_Party/LwIP/src/api/api_msg.o" -"./Middlewares/Third_Party/LwIP/src/api/err.o" -"./Middlewares/Third_Party/LwIP/src/api/if_api.o" -"./Middlewares/Third_Party/LwIP/src/api/netbuf.o" -"./Middlewares/Third_Party/LwIP/src/api/netdb.o" -"./Middlewares/Third_Party/LwIP/src/api/netifapi.o" -"./Middlewares/Third_Party/LwIP/src/api/sockets.o" -"./Middlewares/Third_Party/LwIP/src/api/tcpip.o" -"./Middlewares/Third_Party/LwIP/src/apps/mqtt/mqtt.o" -"./Middlewares/Third_Party/LwIP/src/core/altcp.o" -"./Middlewares/Third_Party/LwIP/src/core/altcp_alloc.o" -"./Middlewares/Third_Party/LwIP/src/core/altcp_tcp.o" -"./Middlewares/Third_Party/LwIP/src/core/def.o" -"./Middlewares/Third_Party/LwIP/src/core/dns.o" -"./Middlewares/Third_Party/LwIP/src/core/inet_chksum.o" -"./Middlewares/Third_Party/LwIP/src/core/init.o" -"./Middlewares/Third_Party/LwIP/src/core/ip.o" -"./Middlewares/Third_Party/LwIP/src/core/mem.o" -"./Middlewares/Third_Party/LwIP/src/core/memp.o" -"./Middlewares/Third_Party/LwIP/src/core/netif.o" -"./Middlewares/Third_Party/LwIP/src/core/pbuf.o" -"./Middlewares/Third_Party/LwIP/src/core/raw.o" -"./Middlewares/Third_Party/LwIP/src/core/stats.o" -"./Middlewares/Third_Party/LwIP/src/core/sys.o" -"./Middlewares/Third_Party/LwIP/src/core/tcp.o" -"./Middlewares/Third_Party/LwIP/src/core/tcp_in.o" -"./Middlewares/Third_Party/LwIP/src/core/tcp_out.o" -"./Middlewares/Third_Party/LwIP/src/core/timeouts.o" -"./Middlewares/Third_Party/LwIP/src/core/udp.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv4/autoip.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv4/dhcp.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv4/icmp.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv4/igmp.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_addr.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv6/dhcp6.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv6/ethip6.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv6/icmp6.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv6/inet6.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6_addr.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv6/ip6_frag.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv6/mld6.o" -"./Middlewares/Third_Party/LwIP/src/core/ipv6/nd6.o" -"./Middlewares/Third_Party/LwIP/src/netif/bridgeif.o" -"./Middlewares/Third_Party/LwIP/src/netif/bridgeif_fdb.o" -"./Middlewares/Third_Party/LwIP/src/netif/ethernet.o" -"./Middlewares/Third_Party/LwIP/src/netif/lowpan6.o" -"./Middlewares/Third_Party/LwIP/src/netif/lowpan6_ble.o" -"./Middlewares/Third_Party/LwIP/src/netif/lowpan6_common.o" -"./Middlewares/Third_Party/LwIP/src/netif/slipif.o" -"./Middlewares/Third_Party/LwIP/src/netif/zepif.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/auth.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/ccp.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/chap-md5.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/chap-new.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/chap_ms.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/demand.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/eap.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/ecp.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/eui64.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/fsm.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/ipcp.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/ipv6cp.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/lcp.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/magic.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/mppe.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/multilink.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/ppp.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/pppapi.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/pppcrypt.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/pppoe.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/pppol2tp.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/pppos.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/upap.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/utils.o" -"./Middlewares/Third_Party/LwIP/src/netif/ppp/vj.o" diff --git a/Release/objects.mk b/Release/objects.mk deleted file mode 100644 index 94e86f7..0000000 --- a/Release/objects.mk +++ /dev/null @@ -1,9 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (12.3.rel1) -################################################################################ - -USER_OBJS := - -LIBS := - diff --git a/Release/sources.mk b/Release/sources.mk deleted file mode 100644 index 182aa5f..0000000 --- a/Release/sources.mk +++ /dev/null @@ -1,38 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (12.3.rel1) -################################################################################ - -ELF_SRCS := -OBJ_SRCS := -S_SRCS := -C_SRCS := -S_UPPER_SRCS := -O_SRCS := -CYCLO_FILES := -SIZE_OUTPUT := -OBJDUMP_LIST := -SU_FILES := -EXECUTABLES := -OBJS := -MAP_FILES := -S_DEPS := -S_UPPER_DEPS := -C_DEPS := - -# Every subdirectory with source files must be described here -SUBDIRS := \ -Core/Src \ -Core/Startup \ -Drivers/BSP/Components/dp83848 \ -Drivers/STM32F4xx_HAL_Driver/Src \ -LWIP/App \ -LWIP/Target \ -Middlewares/Third_Party/LwIP/src/api \ -Middlewares/Third_Party/LwIP/src/apps/mqtt \ -Middlewares/Third_Party/LwIP/src/core \ -Middlewares/Third_Party/LwIP/src/core/ipv4 \ -Middlewares/Third_Party/LwIP/src/core/ipv6 \ -Middlewares/Third_Party/LwIP/src/netif \ -Middlewares/Third_Party/LwIP/src/netif/ppp \ - diff --git a/Release/yau-07b.list b/Release/yau-07b.list deleted file mode 100644 index 07161b9..0000000 --- a/Release/yau-07b.list +++ /dev/null @@ -1,18622 +0,0 @@ - -yau-07b.elf: file format elf32-littlearm - -Sections: -Idx Name Size VMA LMA File off Algn - 0 .isr_vector 000001ac 08000000 08000000 00001000 2**0 - CONTENTS, ALLOC, LOAD, READONLY, DATA - 1 .text 0000b4a4 080001b0 080001b0 000011b0 2**4 - CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .rodata 000022d8 0800b654 0800b654 0000c654 2**2 - CONTENTS, ALLOC, LOAD, READONLY, DATA - 3 .ARM.extab 00000000 0800d92c 0800d92c 0000f084 2**0 - CONTENTS - 4 .ARM 00000008 0800d92c 0800d92c 0000e92c 2**2 - CONTENTS, ALLOC, LOAD, READONLY, DATA - 5 .preinit_array 00000000 0800d934 0800d934 0000f084 2**0 - CONTENTS, ALLOC, LOAD, DATA - 6 .init_array 00000004 0800d934 0800d934 0000e934 2**2 - CONTENTS, ALLOC, LOAD, DATA - 7 .fini_array 00000004 0800d938 0800d938 0000e938 2**2 - CONTENTS, ALLOC, LOAD, DATA - 8 .data 00000084 20000000 0800d93c 0000f000 2**2 - CONTENTS, ALLOC, LOAD, DATA - 9 .ccmram 00000000 10000000 10000000 0000f084 2**0 - CONTENTS - 10 .bss 00018ce8 20000084 20000084 0000f084 2**2 - ALLOC - 11 ._user_heap_stack 00000604 20018d6c 20018d6c 0000f084 2**0 - ALLOC - 12 .ARM.attributes 00000030 00000000 00000000 0000f084 2**0 - CONTENTS, READONLY - 13 .comment 00000043 00000000 00000000 0000f0b4 2**0 - CONTENTS, READONLY - 14 .debug_frame 00000bec 00000000 00000000 0000f0f8 2**2 - CONTENTS, READONLY, DEBUGGING, OCTETS - -Disassembly of section .text: - -080001b0 <__do_global_dtors_aux>: - 80001b0: b510 push {r4, lr} - 80001b2: 4c05 ldr r4, [pc, #20] @ (80001c8 <__do_global_dtors_aux+0x18>) - 80001b4: 7823 ldrb r3, [r4, #0] - 80001b6: b933 cbnz r3, 80001c6 <__do_global_dtors_aux+0x16> - 80001b8: 4b04 ldr r3, [pc, #16] @ (80001cc <__do_global_dtors_aux+0x1c>) - 80001ba: b113 cbz r3, 80001c2 <__do_global_dtors_aux+0x12> - 80001bc: 4804 ldr r0, [pc, #16] @ (80001d0 <__do_global_dtors_aux+0x20>) - 80001be: f3af 8000 nop.w - 80001c2: 2301 movs r3, #1 - 80001c4: 7023 strb r3, [r4, #0] - 80001c6: bd10 pop {r4, pc} - 80001c8: 20000084 .word 0x20000084 - 80001cc: 00000000 .word 0x00000000 - 80001d0: 0800b63c .word 0x0800b63c - -080001d4 : - 80001d4: b508 push {r3, lr} - 80001d6: 4b03 ldr r3, [pc, #12] @ (80001e4 ) - 80001d8: b11b cbz r3, 80001e2 - 80001da: 4903 ldr r1, [pc, #12] @ (80001e8 ) - 80001dc: 4803 ldr r0, [pc, #12] @ (80001ec ) - 80001de: f3af 8000 nop.w - 80001e2: bd08 pop {r3, pc} - 80001e4: 00000000 .word 0x00000000 - 80001e8: 20000088 .word 0x20000088 - 80001ec: 0800b63c .word 0x0800b63c - -080001f0 : - 80001f0: f001 01ff and.w r1, r1, #255 @ 0xff - 80001f4: 2a10 cmp r2, #16 - 80001f6: db2b blt.n 8000250 - 80001f8: f010 0f07 tst.w r0, #7 - 80001fc: d008 beq.n 8000210 - 80001fe: f810 3b01 ldrb.w r3, [r0], #1 - 8000202: 3a01 subs r2, #1 - 8000204: 428b cmp r3, r1 - 8000206: d02d beq.n 8000264 - 8000208: f010 0f07 tst.w r0, #7 - 800020c: b342 cbz r2, 8000260 - 800020e: d1f6 bne.n 80001fe - 8000210: b4f0 push {r4, r5, r6, r7} - 8000212: ea41 2101 orr.w r1, r1, r1, lsl #8 - 8000216: ea41 4101 orr.w r1, r1, r1, lsl #16 - 800021a: f022 0407 bic.w r4, r2, #7 - 800021e: f07f 0700 mvns.w r7, #0 - 8000222: 2300 movs r3, #0 - 8000224: e8f0 5602 ldrd r5, r6, [r0], #8 - 8000228: 3c08 subs r4, #8 - 800022a: ea85 0501 eor.w r5, r5, r1 - 800022e: ea86 0601 eor.w r6, r6, r1 - 8000232: fa85 f547 uadd8 r5, r5, r7 - 8000236: faa3 f587 sel r5, r3, r7 - 800023a: fa86 f647 uadd8 r6, r6, r7 - 800023e: faa5 f687 sel r6, r5, r7 - 8000242: b98e cbnz r6, 8000268 - 8000244: d1ee bne.n 8000224 - 8000246: bcf0 pop {r4, r5, r6, r7} - 8000248: f001 01ff and.w r1, r1, #255 @ 0xff - 800024c: f002 0207 and.w r2, r2, #7 - 8000250: b132 cbz r2, 8000260 - 8000252: f810 3b01 ldrb.w r3, [r0], #1 - 8000256: 3a01 subs r2, #1 - 8000258: ea83 0301 eor.w r3, r3, r1 - 800025c: b113 cbz r3, 8000264 - 800025e: d1f8 bne.n 8000252 - 8000260: 2000 movs r0, #0 - 8000262: 4770 bx lr - 8000264: 3801 subs r0, #1 - 8000266: 4770 bx lr - 8000268: 2d00 cmp r5, #0 - 800026a: bf06 itte eq - 800026c: 4635 moveq r5, r6 - 800026e: 3803 subeq r0, #3 - 8000270: 3807 subne r0, #7 - 8000272: f015 0f01 tst.w r5, #1 - 8000276: d107 bne.n 8000288 - 8000278: 3001 adds r0, #1 - 800027a: f415 7f80 tst.w r5, #256 @ 0x100 - 800027e: bf02 ittt eq - 8000280: 3001 addeq r0, #1 - 8000282: f415 3fc0 tsteq.w r5, #98304 @ 0x18000 - 8000286: 3001 addeq r0, #1 - 8000288: bcf0 pop {r4, r5, r6, r7} - 800028a: 3801 subs r0, #1 - 800028c: 4770 bx lr - 800028e: bf00 nop - -08000290 <__aeabi_uldivmod>: - 8000290: b953 cbnz r3, 80002a8 <__aeabi_uldivmod+0x18> - 8000292: b94a cbnz r2, 80002a8 <__aeabi_uldivmod+0x18> - 8000294: 2900 cmp r1, #0 - 8000296: bf08 it eq - 8000298: 2800 cmpeq r0, #0 - 800029a: bf1c itt ne - 800029c: f04f 31ff movne.w r1, #4294967295 - 80002a0: f04f 30ff movne.w r0, #4294967295 - 80002a4: f000 b96a b.w 800057c <__aeabi_idiv0> - 80002a8: f1ad 0c08 sub.w ip, sp, #8 - 80002ac: e96d ce04 strd ip, lr, [sp, #-16]! - 80002b0: f000 f806 bl 80002c0 <__udivmoddi4> - 80002b4: f8dd e004 ldr.w lr, [sp, #4] - 80002b8: e9dd 2302 ldrd r2, r3, [sp, #8] - 80002bc: b004 add sp, #16 - 80002be: 4770 bx lr - -080002c0 <__udivmoddi4>: - 80002c0: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 80002c4: 9d08 ldr r5, [sp, #32] - 80002c6: 460c mov r4, r1 - 80002c8: 2b00 cmp r3, #0 - 80002ca: d14e bne.n 800036a <__udivmoddi4+0xaa> - 80002cc: 4694 mov ip, r2 - 80002ce: 458c cmp ip, r1 - 80002d0: 4686 mov lr, r0 - 80002d2: fab2 f282 clz r2, r2 - 80002d6: d962 bls.n 800039e <__udivmoddi4+0xde> - 80002d8: b14a cbz r2, 80002ee <__udivmoddi4+0x2e> - 80002da: f1c2 0320 rsb r3, r2, #32 - 80002de: 4091 lsls r1, r2 - 80002e0: fa20 f303 lsr.w r3, r0, r3 - 80002e4: fa0c fc02 lsl.w ip, ip, r2 - 80002e8: 4319 orrs r1, r3 - 80002ea: fa00 fe02 lsl.w lr, r0, r2 - 80002ee: ea4f 471c mov.w r7, ip, lsr #16 - 80002f2: fa1f f68c uxth.w r6, ip - 80002f6: fbb1 f4f7 udiv r4, r1, r7 - 80002fa: ea4f 431e mov.w r3, lr, lsr #16 - 80002fe: fb07 1114 mls r1, r7, r4, r1 - 8000302: ea43 4301 orr.w r3, r3, r1, lsl #16 - 8000306: fb04 f106 mul.w r1, r4, r6 - 800030a: 4299 cmp r1, r3 - 800030c: d90a bls.n 8000324 <__udivmoddi4+0x64> - 800030e: eb1c 0303 adds.w r3, ip, r3 - 8000312: f104 30ff add.w r0, r4, #4294967295 - 8000316: f080 8112 bcs.w 800053e <__udivmoddi4+0x27e> - 800031a: 4299 cmp r1, r3 - 800031c: f240 810f bls.w 800053e <__udivmoddi4+0x27e> - 8000320: 3c02 subs r4, #2 - 8000322: 4463 add r3, ip - 8000324: 1a59 subs r1, r3, r1 - 8000326: fa1f f38e uxth.w r3, lr - 800032a: fbb1 f0f7 udiv r0, r1, r7 - 800032e: fb07 1110 mls r1, r7, r0, r1 - 8000332: ea43 4301 orr.w r3, r3, r1, lsl #16 - 8000336: fb00 f606 mul.w r6, r0, r6 - 800033a: 429e cmp r6, r3 - 800033c: d90a bls.n 8000354 <__udivmoddi4+0x94> - 800033e: eb1c 0303 adds.w r3, ip, r3 - 8000342: f100 31ff add.w r1, r0, #4294967295 - 8000346: f080 80fc bcs.w 8000542 <__udivmoddi4+0x282> - 800034a: 429e cmp r6, r3 - 800034c: f240 80f9 bls.w 8000542 <__udivmoddi4+0x282> - 8000350: 4463 add r3, ip - 8000352: 3802 subs r0, #2 - 8000354: 1b9b subs r3, r3, r6 - 8000356: ea40 4004 orr.w r0, r0, r4, lsl #16 - 800035a: 2100 movs r1, #0 - 800035c: b11d cbz r5, 8000366 <__udivmoddi4+0xa6> - 800035e: 40d3 lsrs r3, r2 - 8000360: 2200 movs r2, #0 - 8000362: e9c5 3200 strd r3, r2, [r5] - 8000366: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 800036a: 428b cmp r3, r1 - 800036c: d905 bls.n 800037a <__udivmoddi4+0xba> - 800036e: b10d cbz r5, 8000374 <__udivmoddi4+0xb4> - 8000370: e9c5 0100 strd r0, r1, [r5] - 8000374: 2100 movs r1, #0 - 8000376: 4608 mov r0, r1 - 8000378: e7f5 b.n 8000366 <__udivmoddi4+0xa6> - 800037a: fab3 f183 clz r1, r3 - 800037e: 2900 cmp r1, #0 - 8000380: d146 bne.n 8000410 <__udivmoddi4+0x150> - 8000382: 42a3 cmp r3, r4 - 8000384: d302 bcc.n 800038c <__udivmoddi4+0xcc> - 8000386: 4290 cmp r0, r2 - 8000388: f0c0 80f0 bcc.w 800056c <__udivmoddi4+0x2ac> - 800038c: 1a86 subs r6, r0, r2 - 800038e: eb64 0303 sbc.w r3, r4, r3 - 8000392: 2001 movs r0, #1 - 8000394: 2d00 cmp r5, #0 - 8000396: d0e6 beq.n 8000366 <__udivmoddi4+0xa6> - 8000398: e9c5 6300 strd r6, r3, [r5] - 800039c: e7e3 b.n 8000366 <__udivmoddi4+0xa6> - 800039e: 2a00 cmp r2, #0 - 80003a0: f040 8090 bne.w 80004c4 <__udivmoddi4+0x204> - 80003a4: eba1 040c sub.w r4, r1, ip - 80003a8: ea4f 481c mov.w r8, ip, lsr #16 - 80003ac: fa1f f78c uxth.w r7, ip - 80003b0: 2101 movs r1, #1 - 80003b2: fbb4 f6f8 udiv r6, r4, r8 - 80003b6: ea4f 431e mov.w r3, lr, lsr #16 - 80003ba: fb08 4416 mls r4, r8, r6, r4 - 80003be: ea43 4304 orr.w r3, r3, r4, lsl #16 - 80003c2: fb07 f006 mul.w r0, r7, r6 - 80003c6: 4298 cmp r0, r3 - 80003c8: d908 bls.n 80003dc <__udivmoddi4+0x11c> - 80003ca: eb1c 0303 adds.w r3, ip, r3 - 80003ce: f106 34ff add.w r4, r6, #4294967295 - 80003d2: d202 bcs.n 80003da <__udivmoddi4+0x11a> - 80003d4: 4298 cmp r0, r3 - 80003d6: f200 80cd bhi.w 8000574 <__udivmoddi4+0x2b4> - 80003da: 4626 mov r6, r4 - 80003dc: 1a1c subs r4, r3, r0 - 80003de: fa1f f38e uxth.w r3, lr - 80003e2: fbb4 f0f8 udiv r0, r4, r8 - 80003e6: fb08 4410 mls r4, r8, r0, r4 - 80003ea: ea43 4304 orr.w r3, r3, r4, lsl #16 - 80003ee: fb00 f707 mul.w r7, r0, r7 - 80003f2: 429f cmp r7, r3 - 80003f4: d908 bls.n 8000408 <__udivmoddi4+0x148> - 80003f6: eb1c 0303 adds.w r3, ip, r3 - 80003fa: f100 34ff add.w r4, r0, #4294967295 - 80003fe: d202 bcs.n 8000406 <__udivmoddi4+0x146> - 8000400: 429f cmp r7, r3 - 8000402: f200 80b0 bhi.w 8000566 <__udivmoddi4+0x2a6> - 8000406: 4620 mov r0, r4 - 8000408: 1bdb subs r3, r3, r7 - 800040a: ea40 4006 orr.w r0, r0, r6, lsl #16 - 800040e: e7a5 b.n 800035c <__udivmoddi4+0x9c> - 8000410: f1c1 0620 rsb r6, r1, #32 - 8000414: 408b lsls r3, r1 - 8000416: fa22 f706 lsr.w r7, r2, r6 - 800041a: 431f orrs r7, r3 - 800041c: fa20 fc06 lsr.w ip, r0, r6 - 8000420: fa04 f301 lsl.w r3, r4, r1 - 8000424: ea43 030c orr.w r3, r3, ip - 8000428: 40f4 lsrs r4, r6 - 800042a: fa00 f801 lsl.w r8, r0, r1 - 800042e: 0c38 lsrs r0, r7, #16 - 8000430: ea4f 4913 mov.w r9, r3, lsr #16 - 8000434: fbb4 fef0 udiv lr, r4, r0 - 8000438: fa1f fc87 uxth.w ip, r7 - 800043c: fb00 441e mls r4, r0, lr, r4 - 8000440: ea49 4404 orr.w r4, r9, r4, lsl #16 - 8000444: fb0e f90c mul.w r9, lr, ip - 8000448: 45a1 cmp r9, r4 - 800044a: fa02 f201 lsl.w r2, r2, r1 - 800044e: d90a bls.n 8000466 <__udivmoddi4+0x1a6> - 8000450: 193c adds r4, r7, r4 - 8000452: f10e 3aff add.w sl, lr, #4294967295 - 8000456: f080 8084 bcs.w 8000562 <__udivmoddi4+0x2a2> - 800045a: 45a1 cmp r9, r4 - 800045c: f240 8081 bls.w 8000562 <__udivmoddi4+0x2a2> - 8000460: f1ae 0e02 sub.w lr, lr, #2 - 8000464: 443c add r4, r7 - 8000466: eba4 0409 sub.w r4, r4, r9 - 800046a: fa1f f983 uxth.w r9, r3 - 800046e: fbb4 f3f0 udiv r3, r4, r0 - 8000472: fb00 4413 mls r4, r0, r3, r4 - 8000476: ea49 4404 orr.w r4, r9, r4, lsl #16 - 800047a: fb03 fc0c mul.w ip, r3, ip - 800047e: 45a4 cmp ip, r4 - 8000480: d907 bls.n 8000492 <__udivmoddi4+0x1d2> - 8000482: 193c adds r4, r7, r4 - 8000484: f103 30ff add.w r0, r3, #4294967295 - 8000488: d267 bcs.n 800055a <__udivmoddi4+0x29a> - 800048a: 45a4 cmp ip, r4 - 800048c: d965 bls.n 800055a <__udivmoddi4+0x29a> - 800048e: 3b02 subs r3, #2 - 8000490: 443c add r4, r7 - 8000492: ea43 400e orr.w r0, r3, lr, lsl #16 - 8000496: fba0 9302 umull r9, r3, r0, r2 - 800049a: eba4 040c sub.w r4, r4, ip - 800049e: 429c cmp r4, r3 - 80004a0: 46ce mov lr, r9 - 80004a2: 469c mov ip, r3 - 80004a4: d351 bcc.n 800054a <__udivmoddi4+0x28a> - 80004a6: d04e beq.n 8000546 <__udivmoddi4+0x286> - 80004a8: b155 cbz r5, 80004c0 <__udivmoddi4+0x200> - 80004aa: ebb8 030e subs.w r3, r8, lr - 80004ae: eb64 040c sbc.w r4, r4, ip - 80004b2: fa04 f606 lsl.w r6, r4, r6 - 80004b6: 40cb lsrs r3, r1 - 80004b8: 431e orrs r6, r3 - 80004ba: 40cc lsrs r4, r1 - 80004bc: e9c5 6400 strd r6, r4, [r5] - 80004c0: 2100 movs r1, #0 - 80004c2: e750 b.n 8000366 <__udivmoddi4+0xa6> - 80004c4: f1c2 0320 rsb r3, r2, #32 - 80004c8: fa20 f103 lsr.w r1, r0, r3 - 80004cc: fa0c fc02 lsl.w ip, ip, r2 - 80004d0: fa24 f303 lsr.w r3, r4, r3 - 80004d4: 4094 lsls r4, r2 - 80004d6: 430c orrs r4, r1 - 80004d8: ea4f 481c mov.w r8, ip, lsr #16 - 80004dc: fa00 fe02 lsl.w lr, r0, r2 - 80004e0: fa1f f78c uxth.w r7, ip - 80004e4: fbb3 f0f8 udiv r0, r3, r8 - 80004e8: fb08 3110 mls r1, r8, r0, r3 - 80004ec: 0c23 lsrs r3, r4, #16 - 80004ee: ea43 4301 orr.w r3, r3, r1, lsl #16 - 80004f2: fb00 f107 mul.w r1, r0, r7 - 80004f6: 4299 cmp r1, r3 - 80004f8: d908 bls.n 800050c <__udivmoddi4+0x24c> - 80004fa: eb1c 0303 adds.w r3, ip, r3 - 80004fe: f100 36ff add.w r6, r0, #4294967295 - 8000502: d22c bcs.n 800055e <__udivmoddi4+0x29e> - 8000504: 4299 cmp r1, r3 - 8000506: d92a bls.n 800055e <__udivmoddi4+0x29e> - 8000508: 3802 subs r0, #2 - 800050a: 4463 add r3, ip - 800050c: 1a5b subs r3, r3, r1 - 800050e: b2a4 uxth r4, r4 - 8000510: fbb3 f1f8 udiv r1, r3, r8 - 8000514: fb08 3311 mls r3, r8, r1, r3 - 8000518: ea44 4403 orr.w r4, r4, r3, lsl #16 - 800051c: fb01 f307 mul.w r3, r1, r7 - 8000520: 42a3 cmp r3, r4 - 8000522: d908 bls.n 8000536 <__udivmoddi4+0x276> - 8000524: eb1c 0404 adds.w r4, ip, r4 - 8000528: f101 36ff add.w r6, r1, #4294967295 - 800052c: d213 bcs.n 8000556 <__udivmoddi4+0x296> - 800052e: 42a3 cmp r3, r4 - 8000530: d911 bls.n 8000556 <__udivmoddi4+0x296> - 8000532: 3902 subs r1, #2 - 8000534: 4464 add r4, ip - 8000536: 1ae4 subs r4, r4, r3 - 8000538: ea41 4100 orr.w r1, r1, r0, lsl #16 - 800053c: e739 b.n 80003b2 <__udivmoddi4+0xf2> - 800053e: 4604 mov r4, r0 - 8000540: e6f0 b.n 8000324 <__udivmoddi4+0x64> - 8000542: 4608 mov r0, r1 - 8000544: e706 b.n 8000354 <__udivmoddi4+0x94> - 8000546: 45c8 cmp r8, r9 - 8000548: d2ae bcs.n 80004a8 <__udivmoddi4+0x1e8> - 800054a: ebb9 0e02 subs.w lr, r9, r2 - 800054e: eb63 0c07 sbc.w ip, r3, r7 - 8000552: 3801 subs r0, #1 - 8000554: e7a8 b.n 80004a8 <__udivmoddi4+0x1e8> - 8000556: 4631 mov r1, r6 - 8000558: e7ed b.n 8000536 <__udivmoddi4+0x276> - 800055a: 4603 mov r3, r0 - 800055c: e799 b.n 8000492 <__udivmoddi4+0x1d2> - 800055e: 4630 mov r0, r6 - 8000560: e7d4 b.n 800050c <__udivmoddi4+0x24c> - 8000562: 46d6 mov lr, sl - 8000564: e77f b.n 8000466 <__udivmoddi4+0x1a6> - 8000566: 4463 add r3, ip - 8000568: 3802 subs r0, #2 - 800056a: e74d b.n 8000408 <__udivmoddi4+0x148> - 800056c: 4606 mov r6, r0 - 800056e: 4623 mov r3, r4 - 8000570: 4608 mov r0, r1 - 8000572: e70f b.n 8000394 <__udivmoddi4+0xd4> - 8000574: 3e02 subs r6, #2 - 8000576: 4463 add r3, ip - 8000578: e730 b.n 80003dc <__udivmoddi4+0x11c> - 800057a: bf00 nop - -0800057c <__aeabi_idiv0>: - 800057c: 4770 bx lr - 800057e: bf00 nop - -08000580 : - 8000580: f100 4378 add.w r3, r0, #4160749568 @ 0xf8000000 - 8000584: f643 72fe movw r2, #16382 @ 0x3ffe - 8000588: 4293 cmp r3, r2 - 800058a: b510 push {r4, lr} - 800058c: d968 bls.n 8000660 - 800058e: f5a3 4180 sub.w r1, r3, #16384 @ 0x4000 - 8000592: 4291 cmp r1, r2 - 8000594: d966 bls.n 8000664 - 8000596: f5a3 4100 sub.w r1, r3, #32768 @ 0x8000 - 800059a: 4291 cmp r1, r2 - 800059c: d964 bls.n 8000668 - 800059e: f5a3 4340 sub.w r3, r3, #49152 @ 0xc000 - 80005a2: 4293 cmp r3, r2 - 80005a4: d962 bls.n 800066c - 80005a6: f100 4377 add.w r3, r0, #4143972352 @ 0xf7000000 - 80005aa: f503 017f add.w r1, r3, #16711680 @ 0xff0000 - 80005ae: f64f 72fe movw r2, #65534 @ 0xfffe - 80005b2: 4291 cmp r1, r2 - 80005b4: d95c bls.n 8000670 - 80005b6: f503 017e add.w r1, r3, #16646144 @ 0xfe0000 - 80005ba: f502 3280 add.w r2, r2, #65536 @ 0x10000 - 80005be: 4291 cmp r1, r2 - 80005c0: d958 bls.n 8000674 - 80005c2: f503 017c add.w r1, r3, #16515072 @ 0xfc0000 - 80005c6: 4291 cmp r1, r2 - 80005c8: d956 bls.n 8000678 - 80005ca: f503 017a add.w r1, r3, #16384000 @ 0xfa0000 - 80005ce: 4291 cmp r1, r2 - 80005d0: d954 bls.n 800067c - 80005d2: f503 0178 add.w r1, r3, #16252928 @ 0xf80000 - 80005d6: 4291 cmp r1, r2 - 80005d8: d952 bls.n 8000680 - 80005da: f503 0176 add.w r1, r3, #16121856 @ 0xf60000 - 80005de: 4291 cmp r1, r2 - 80005e0: d950 bls.n 8000684 - 80005e2: f503 0174 add.w r1, r3, #15990784 @ 0xf40000 - 80005e6: 4291 cmp r1, r2 - 80005e8: d94e bls.n 8000688 - 80005ea: f503 0172 add.w r1, r3, #15859712 @ 0xf20000 - 80005ee: 4291 cmp r1, r2 - 80005f0: d94c bls.n 800068c - 80005f2: f1a0 6001 sub.w r0, r0, #135266304 @ 0x8100000 - 80005f6: f643 71fe movw r1, #16382 @ 0x3ffe - 80005fa: 4288 cmp r0, r1 - 80005fc: d948 bls.n 8000690 - 80005fe: f5a0 4480 sub.w r4, r0, #16384 @ 0x4000 - 8000602: 428c cmp r4, r1 - 8000604: d946 bls.n 8000694 - 8000606: f5a0 4400 sub.w r4, r0, #32768 @ 0x8000 - 800060a: 428c cmp r4, r1 - 800060c: d944 bls.n 8000698 - 800060e: f5a0 4040 sub.w r0, r0, #49152 @ 0xc000 - 8000612: 4288 cmp r0, r1 - 8000614: d942 bls.n 800069c - 8000616: f503 006f add.w r0, r3, #15663104 @ 0xef0000 - 800061a: f64f 71fe movw r1, #65534 @ 0xfffe - 800061e: 4288 cmp r0, r1 - 8000620: d93e bls.n 80006a0 - 8000622: f503 016e add.w r1, r3, #15597568 @ 0xee0000 - 8000626: 4291 cmp r1, r2 - 8000628: d93c bls.n 80006a4 - 800062a: f503 016c add.w r1, r3, #15466496 @ 0xec0000 - 800062e: 4291 cmp r1, r2 - 8000630: d93a bls.n 80006a8 - 8000632: f503 016a add.w r1, r3, #15335424 @ 0xea0000 - 8000636: 4291 cmp r1, r2 - 8000638: d938 bls.n 80006ac - 800063a: f503 0168 add.w r1, r3, #15204352 @ 0xe80000 - 800063e: 4291 cmp r1, r2 - 8000640: d936 bls.n 80006b0 - 8000642: f503 0166 add.w r1, r3, #15073280 @ 0xe60000 - 8000646: 4291 cmp r1, r2 - 8000648: d934 bls.n 80006b4 - 800064a: f503 0164 add.w r1, r3, #14942208 @ 0xe40000 - 800064e: 4291 cmp r1, r2 - 8000650: d932 bls.n 80006b8 - 8000652: f503 0062 add.w r0, r3, #14811136 @ 0xe20000 - 8000656: 4290 cmp r0, r2 - 8000658: bf94 ite ls - 800065a: 2017 movls r0, #23 - 800065c: 2000 movhi r0, #0 - 800065e: bd10 pop {r4, pc} - 8000660: 2000 movs r0, #0 - 8000662: e7fc b.n 800065e - 8000664: 2001 movs r0, #1 - 8000666: e7fa b.n 800065e - 8000668: 2002 movs r0, #2 - 800066a: e7f8 b.n 800065e - 800066c: 2003 movs r0, #3 - 800066e: e7f6 b.n 800065e - 8000670: 2004 movs r0, #4 - 8000672: e7f4 b.n 800065e - 8000674: 2005 movs r0, #5 - 8000676: e7f2 b.n 800065e - 8000678: 2006 movs r0, #6 - 800067a: e7f0 b.n 800065e - 800067c: 2007 movs r0, #7 - 800067e: e7ee b.n 800065e - 8000680: 2008 movs r0, #8 - 8000682: e7ec b.n 800065e - 8000684: 2009 movs r0, #9 - 8000686: e7ea b.n 800065e - 8000688: 200a movs r0, #10 - 800068a: e7e8 b.n 800065e - 800068c: 200b movs r0, #11 - 800068e: e7e6 b.n 800065e - 8000690: 200c movs r0, #12 - 8000692: e7e4 b.n 800065e - 8000694: 200d movs r0, #13 - 8000696: e7e2 b.n 800065e - 8000698: 200e movs r0, #14 - 800069a: e7e0 b.n 800065e - 800069c: 200f movs r0, #15 - 800069e: e7de b.n 800065e - 80006a0: 2010 movs r0, #16 - 80006a2: e7dc b.n 800065e - 80006a4: 2011 movs r0, #17 - 80006a6: e7da b.n 800065e - 80006a8: 2012 movs r0, #18 - 80006aa: e7d8 b.n 800065e - 80006ac: 2013 movs r0, #19 - 80006ae: e7d6 b.n 800065e - 80006b0: 2014 movs r0, #20 - 80006b2: e7d4 b.n 800065e - 80006b4: 2015 movs r0, #21 - 80006b6: e7d2 b.n 800065e - 80006b8: 2016 movs r0, #22 - 80006ba: e7d0 b.n 800065e - -080006bc : - 80006bc: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} - 80006be: 4605 mov r5, r0 - 80006c0: 4616 mov r6, r2 - 80006c2: 460f mov r7, r1 - 80006c4: f001 fda6 bl 8002214 - 80006c8: 4628 mov r0, r5 - 80006ca: f7ff ff59 bl 8000580 - 80006ce: 4604 mov r4, r0 - 80006d0: eb05 0086 add.w r0, r5, r6, lsl #2 - 80006d4: f7ff ff54 bl 8000580 - 80006d8: 4b11 ldr r3, [pc, #68] @ (8000720 ) - 80006da: 2200 movs r2, #0 - 80006dc: 601a str r2, [r3, #0] - 80006de: 2202 movs r2, #2 - 80006e0: 611a str r2, [r3, #16] - 80006e2: 1c42 adds r2, r0, #1 - 80006e4: 1b12 subs r2, r2, r4 - 80006e6: a901 add r1, sp, #4 - 80006e8: 4618 mov r0, r3 - 80006ea: 609c str r4, [r3, #8] - 80006ec: 60da str r2, [r3, #12] - 80006ee: f001 fe8b bl 8002408 - 80006f2: 4604 mov r4, r0 - 80006f4: b160 cbz r0, 8000710 - 80006f6: f001 fda9 bl 800224c - 80006fa: b003 add sp, #12 - 80006fc: bdf0 pop {r4, r5, r6, r7, pc} - 80006fe: f857 2024 ldr.w r2, [r7, r4, lsl #2] - 8000702: 2300 movs r3, #0 - 8000704: 2002 movs r0, #2 - 8000706: f001 fdcf bl 80022a8 - 800070a: 2800 cmp r0, #0 - 800070c: d1f3 bne.n 80006f6 - 800070e: 3401 adds r4, #1 - 8000710: 42a6 cmp r6, r4 - 8000712: eb05 0184 add.w r1, r5, r4, lsl #2 - 8000716: dcf2 bgt.n 80006fe - 8000718: f001 fd8e bl 8002238 - 800071c: 2000 movs r0, #0 - 800071e: e7ec b.n 80006fa - 8000720: 200000a0 .word 0x200000a0 - -08000724 : - 8000724: b510 push {r4, lr} - 8000726: 1a40 subs r0, r0, r1 - 8000728: f64f 73ff movw r3, #65535 @ 0xffff - 800072c: 3a01 subs r2, #1 - 800072e: b292 uxth r2, r2 - 8000730: 580c ldr r4, [r1, r0] - 8000732: f841 4b04 str.w r4, [r1], #4 - 8000736: 429a cmp r2, r3 - 8000738: d1f8 bne.n 800072c - 800073a: bd10 pop {r4, pc} - -0800073c : - 800073c: b510 push {r4, lr} - 800073e: b094 sub sp, #80 @ 0x50 - 8000740: 2214 movs r2, #20 - 8000742: 2100 movs r1, #0 - 8000744: a809 add r0, sp, #36 @ 0x24 - 8000746: f00a f884 bl 800a852 - 800074a: 2214 movs r2, #20 - 800074c: 2100 movs r1, #0 - 800074e: a803 add r0, sp, #12 - 8000750: f00a f87f bl 800a852 - 8000754: 4b20 ldr r3, [pc, #128] @ (80007d8 ) - 8000756: 2200 movs r2, #0 - 8000758: 9201 str r2, [sp, #4] - 800075a: 6c19 ldr r1, [r3, #64] @ 0x40 - 800075c: f041 5180 orr.w r1, r1, #268435456 @ 0x10000000 - 8000760: 6419 str r1, [r3, #64] @ 0x40 - 8000762: 6c1b ldr r3, [r3, #64] @ 0x40 - 8000764: 491d ldr r1, [pc, #116] @ (80007dc ) - 8000766: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 800076a: 9301 str r3, [sp, #4] - 800076c: 9b01 ldr r3, [sp, #4] - 800076e: 9202 str r2, [sp, #8] - 8000770: 680b ldr r3, [r1, #0] - 8000772: f423 4340 bic.w r3, r3, #49152 @ 0xc000 - 8000776: f443 4380 orr.w r3, r3, #16384 @ 0x4000 - 800077a: 600b str r3, [r1, #0] - 800077c: 680b ldr r3, [r1, #0] - 800077e: f403 4340 and.w r3, r3, #49152 @ 0xc000 - 8000782: 9302 str r3, [sp, #8] - 8000784: 9b02 ldr r3, [sp, #8] - 8000786: 2101 movs r1, #1 - 8000788: 2310 movs r3, #16 - 800078a: 2008 movs r0, #8 - 800078c: e9cd 130b strd r1, r3, [sp, #44] @ 0x2c - 8000790: 2364 movs r3, #100 @ 0x64 - 8000792: 2402 movs r4, #2 - 8000794: e9cd 0310 strd r0, r3, [sp, #64] @ 0x40 - 8000798: 2304 movs r3, #4 - 800079a: a808 add r0, sp, #32 - 800079c: e9cd 420e strd r4, r2, [sp, #56] @ 0x38 - 80007a0: 9408 str r4, [sp, #32] - 80007a2: 9412 str r4, [sp, #72] @ 0x48 - 80007a4: 9313 str r3, [sp, #76] @ 0x4c - 80007a6: f001 ff6d bl 8002684 - 80007aa: b108 cbz r0, 80007b0 - 80007ac: b672 cpsid i - 80007ae: e7fe b.n 80007ae - 80007b0: 230f movs r3, #15 - 80007b2: e9cd 3403 strd r3, r4, [sp, #12] - 80007b6: 9005 str r0, [sp, #20] - 80007b8: f44f 52a0 mov.w r2, #5120 @ 0x1400 - 80007bc: f44f 5380 mov.w r3, #4096 @ 0x1000 - 80007c0: 2103 movs r1, #3 - 80007c2: a803 add r0, sp, #12 - 80007c4: e9cd 2306 strd r2, r3, [sp, #24] - 80007c8: f002 f938 bl 8002a3c - 80007cc: b108 cbz r0, 80007d2 - 80007ce: b672 cpsid i - 80007d0: e7fe b.n 80007d0 - 80007d2: b014 add sp, #80 @ 0x50 - 80007d4: bd10 pop {r4, pc} - 80007d6: bf00 nop - 80007d8: 40023800 .word 0x40023800 - 80007dc: 40007000 .word 0x40007000 - -080007e0 : - 80007e0: b510 push {r4, lr} - 80007e2: 4c09 ldr r4, [pc, #36] @ (8000808 ) - 80007e4: 4a09 ldr r2, [pc, #36] @ (800080c ) - 80007e6: 2300 movs r3, #0 - 80007e8: 8023 strh r3, [r4, #0] - 80007ea: 80a3 strh r3, [r4, #4] - 80007ec: 4b08 ldr r3, [pc, #32] @ (8000810 ) - 80007ee: 7a51 ldrb r1, [r2, #9] - 80007f0: 70a1 strb r1, [r4, #2] - 80007f2: 7a92 ldrb r2, [r2, #10] - 80007f4: 6819 ldr r1, [r3, #0] - 80007f6: 70e2 strb r2, [r4, #3] - 80007f8: 4620 mov r0, r4 - 80007fa: f000 fd17 bl 800122c - 80007fe: 3006 adds r0, #6 - 8000800: b280 uxth r0, r0 - 8000802: f8a4 0578 strh.w r0, [r4, #1400] @ 0x578 - 8000806: bd10 pop {r4, pc} - 8000808: 200000b6 .word 0x200000b6 - 800080c: 20000634 .word 0x20000634 - 8000810: 20000e4c .word 0x20000e4c - -08000814 : - 8000814: 8141 strh r1, [r0, #10] - 8000816: 8101 strh r1, [r0, #8] - 8000818: 460a mov r2, r1 - 800081a: 6840 ldr r0, [r0, #4] - 800081c: 4901 ldr r1, [pc, #4] @ (8000824 ) - 800081e: f00a b88e b.w 800a93e - 8000822: bf00 nop - 8000824: 200000b6 .word 0x200000b6 - -08000828 : - 8000828: b513 push {r0, r1, r4, lr} - 800082a: 4604 mov r4, r0 - 800082c: f000 fba8 bl 8000f80 - 8000830: 9001 str r0, [sp, #4] - 8000832: f000 fbfb bl 800102c - 8000836: a901 add r1, sp, #4 - 8000838: 4602 mov r2, r0 - 800083a: 4620 mov r0, r4 - 800083c: f007 f8bc bl 80079b8 - 8000840: 4620 mov r0, r4 - 8000842: 490c ldr r1, [pc, #48] @ (8000874 ) - 8000844: 2200 movs r2, #0 - 8000846: f007 fa71 bl 8007d2c - 800084a: 480b ldr r0, [pc, #44] @ (8000878 ) - 800084c: 4b0b ldr r3, [pc, #44] @ (800087c ) - 800084e: 2100 movs r1, #0 - 8000850: 8001 strh r1, [r0, #0] - 8000852: 8041 strh r1, [r0, #2] - 8000854: 8081 strh r1, [r0, #4] - 8000856: 7181 strb r1, [r0, #6] - 8000858: f8a0 1808 strh.w r1, [r0, #2056] @ 0x808 - 800085c: f44f 6200 mov.w r2, #2048 @ 0x800 - 8000860: 3007 adds r0, #7 - 8000862: f8a3 1578 strh.w r1, [r3, #1400] @ 0x578 - 8000866: f8a3 157c strh.w r1, [r3, #1404] @ 0x57c - 800086a: b002 add sp, #8 - 800086c: e8bd 4010 ldmia.w sp!, {r4, lr} - 8000870: f009 bfef b.w 800a852 - 8000874: 08000b01 .word 0x08000b01 - 8000878: 20000634 .word 0x20000634 - 800087c: 200000b6 .word 0x200000b6 - -08000880 : - 8000880: b5f8 push {r3, r4, r5, r6, r7, lr} - 8000882: 4d96 ldr r5, [pc, #600] @ (8000adc ) - 8000884: 4f96 ldr r7, [pc, #600] @ (8000ae0 ) - 8000886: f8b5 3009 ldrh.w r3, [r5, #9] - 800088a: 806b strh r3, [r5, #2] - 800088c: 7b6b ldrb r3, [r5, #13] - 800088e: 80ab strh r3, [r5, #4] - 8000890: f7ff ffa6 bl 80007e0 - 8000894: 2200 movs r2, #0 - 8000896: f8a7 0578 strh.w r0, [r7, #1400] @ 0x578 - 800089a: f44f 4180 mov.w r1, #16384 @ 0x4000 - 800089e: 4606 mov r6, r0 - 80008a0: 19c4 adds r4, r0, r7 - 80008a2: 4890 ldr r0, [pc, #576] @ (8000ae4 ) - 80008a4: f001 fee8 bl 8002678 - 80008a8: 4b8f ldr r3, [pc, #572] @ (8000ae8 ) - 80008aa: 2200 movs r2, #0 - 80008ac: 601a str r2, [r3, #0] - 80008ae: 88aa ldrh r2, [r5, #4] - 80008b0: 2101 movs r1, #1 - 80008b2: 2a3d cmp r2, #61 @ 0x3d - 80008b4: 7179 strb r1, [r7, #5] - 80008b6: d804 bhi.n 80008c2 - 80008b8: 2a32 cmp r2, #50 @ 0x32 - 80008ba: d805 bhi.n 80008c8 - 80008bc: b312 cbz r2, 8000904 - 80008be: 428a cmp r2, r1 - 80008c0: d04b beq.n 800095a - 80008c2: 55ba strb r2, [r7, r6] - 80008c4: 23ff movs r3, #255 @ 0xff - 80008c6: e026 b.n 8000916 - 80008c8: f1a2 0333 sub.w r3, r2, #51 @ 0x33 - 80008cc: 2b0a cmp r3, #10 - 80008ce: d8f8 bhi.n 80008c2 - 80008d0: a101 add r1, pc, #4 @ (adr r1, 80008d8 ) - 80008d2: f851 f023 ldr.w pc, [r1, r3, lsl #2] - 80008d6: bf00 nop - 80008d8: 080009ab .word 0x080009ab - 80008dc: 080008c3 .word 0x080008c3 - 80008e0: 080008c3 .word 0x080008c3 - 80008e4: 080008c3 .word 0x080008c3 - 80008e8: 080009f3 .word 0x080009f3 - 80008ec: 080008c3 .word 0x080008c3 - 80008f0: 080008c3 .word 0x080008c3 - 80008f4: 080008c3 .word 0x080008c3 - 80008f8: 080008c3 .word 0x080008c3 - 80008fc: 08000a3b .word 0x08000a3b - 8000900: 08000a93 .word 0x08000a93 - 8000904: 7bab ldrb r3, [r5, #14] - 8000906: 55ba strb r2, [r7, r6] - 8000908: f8b5 2808 ldrh.w r2, [r5, #2056] @ 0x808 - 800090c: 1d18 adds r0, r3, #4 - 800090e: ebb2 0f40 cmp.w r2, r0, lsl #1 - 8000912: da02 bge.n 800091a - 8000914: 2302 movs r3, #2 - 8000916: 7063 strb r3, [r4, #1] - 8000918: e08b b.n 8000a32 - 800091a: 7061 strb r1, [r4, #1] - 800091c: 70a3 strb r3, [r4, #2] - 800091e: eb04 0083 add.w r0, r4, r3, lsl #2 - 8000922: 42a0 cmp r0, r4 - 8000924: f105 0502 add.w r5, r5, #2 - 8000928: d107 bne.n 800093a - 800092a: 009b lsls r3, r3, #2 - 800092c: 3303 adds r3, #3 - 800092e: f8a7 357c strh.w r3, [r7, #1404] @ 0x57c - 8000932: 4b6e ldr r3, [pc, #440] @ (8000aec ) - 8000934: 2201 movs r2, #1 - 8000936: 701a strb r2, [r3, #0] - 8000938: bdf8 pop {r3, r4, r5, r6, r7, pc} - 800093a: 7b6a ldrb r2, [r5, #13] - 800093c: 7ba9 ldrb r1, [r5, #14] - 800093e: 70e2 strb r2, [r4, #3] - 8000940: eb02 2201 add.w r2, r2, r1, lsl #8 - 8000944: b292 uxth r2, r2 - 8000946: 0052 lsls r2, r2, #1 - 8000948: f102 42c0 add.w r2, r2, #1610612736 @ 0x60000000 - 800094c: 7121 strb r1, [r4, #4] - 800094e: 8812 ldrh r2, [r2, #0] - 8000950: 7162 strb r2, [r4, #5] - 8000952: 0a12 lsrs r2, r2, #8 - 8000954: 71a2 strb r2, [r4, #6] - 8000956: 3404 adds r4, #4 - 8000958: e7e3 b.n 8000922 - 800095a: 7bab ldrb r3, [r5, #14] - 800095c: f8b5 1808 ldrh.w r1, [r5, #2056] @ 0x808 - 8000960: 55ba strb r2, [r7, r6] - 8000962: 1c98 adds r0, r3, #2 - 8000964: ebb1 0f80 cmp.w r1, r0, lsl #2 - 8000968: dbd4 blt.n 8000914 - 800096a: 7062 strb r2, [r4, #1] - 800096c: 70a3 strb r3, [r4, #2] - 800096e: eb04 0083 add.w r0, r4, r3, lsl #2 - 8000972: 4284 cmp r4, r0 - 8000974: f105 0504 add.w r5, r5, #4 - 8000978: d0d7 beq.n 800092a - 800097a: 7b2e ldrb r6, [r5, #12] - 800097c: 7aea ldrb r2, [r5, #11] - 800097e: 70e2 strb r2, [r4, #3] - 8000980: eb02 2206 add.w r2, r2, r6, lsl #8 - 8000984: b292 uxth r2, r2 - 8000986: 0052 lsls r2, r2, #1 - 8000988: f895 c00e ldrb.w ip, [r5, #14] - 800098c: 7b69 ldrb r1, [r5, #13] - 800098e: 7126 strb r6, [r4, #4] - 8000990: f102 42c0 add.w r2, r2, #1610612736 @ 0x60000000 - 8000994: f502 0680 add.w r6, r2, #4194304 @ 0x400000 - 8000998: eb01 210c add.w r1, r1, ip, lsl #8 - 800099c: 8031 strh r1, [r6, #0] - 800099e: 8812 ldrh r2, [r2, #0] - 80009a0: 7162 strb r2, [r4, #5] - 80009a2: 0a12 lsrs r2, r2, #8 - 80009a4: 71a2 strb r2, [r4, #6] - 80009a6: 3404 adds r4, #4 - 80009a8: e7e3 b.n 8000972 - 80009aa: 2333 movs r3, #51 @ 0x33 - 80009ac: 55bb strb r3, [r7, r6] - 80009ae: f8b5 3808 ldrh.w r3, [r5, #2056] @ 0x808 - 80009b2: 8a2e ldrh r6, [r5, #16] - 80009b4: 7c2a ldrb r2, [r5, #16] - 80009b6: 2b07 cmp r3, #7 - 80009b8: d9ac bls.n 8000914 - 80009ba: 2301 movs r3, #1 - 80009bc: 7063 strb r3, [r4, #1] - 80009be: 2300 movs r3, #0 - 80009c0: 7ba8 ldrb r0, [r5, #14] - 80009c2: 70e3 strb r3, [r4, #3] - 80009c4: 7163 strb r3, [r4, #5] - 80009c6: 7beb ldrb r3, [r5, #15] - 80009c8: 70a0 strb r0, [r4, #2] - 80009ca: eb00 2003 add.w r0, r0, r3, lsl #8 - 80009ce: 7122 strb r2, [r4, #4] - 80009d0: b280 uxth r0, r0 - 80009d2: f016 0203 ands.w r2, r6, #3 - 80009d6: bf18 it ne - 80009d8: 2201 movne r2, #1 - 80009da: f100 6001 add.w r0, r0, #135266304 @ 0x8100000 - 80009de: eb02 0296 add.w r2, r2, r6, lsr #2 - 80009e2: 1da1 adds r1, r4, #6 - 80009e4: f500 2060 add.w r0, r0, #917504 @ 0xe0000 - 80009e8: f7ff fe9c bl 8000724 - 80009ec: 1db3 adds r3, r6, #6 - 80009ee: b29b uxth r3, r3 - 80009f0: e79d b.n 800092e - 80009f2: 2337 movs r3, #55 @ 0x37 - 80009f4: f8b5 2011 ldrh.w r2, [r5, #17] - 80009f8: 55bb strb r3, [r7, r6] - 80009fa: f8b5 3808 ldrh.w r3, [r5, #2056] @ 0x808 - 80009fe: f102 0109 add.w r1, r2, #9 - 8000a02: 4299 cmp r1, r3 - 8000a04: da86 bge.n 8000914 - 8000a06: 7ba9 ldrb r1, [r5, #14] - 8000a08: 2301 movs r3, #1 - 8000a0a: 4299 cmp r1, r3 - 8000a0c: 7063 strb r3, [r4, #1] - 8000a0e: d012 beq.n 8000a36 - 8000a10: 4b37 ldr r3, [pc, #220] @ (8000af0 ) - 8000a12: 4838 ldr r0, [pc, #224] @ (8000af4 ) - 8000a14: 2902 cmp r1, #2 - 8000a16: bf18 it ne - 8000a18: 4603 movne r3, r0 - 8000a1a: f012 0103 ands.w r1, r2, #3 - 8000a1e: f8b5 000f ldrh.w r0, [r5, #15] - 8000a22: bf18 it ne - 8000a24: 2101 movne r1, #1 - 8000a26: eb01 0292 add.w r2, r1, r2, lsr #2 - 8000a2a: 4418 add r0, r3 - 8000a2c: 4932 ldr r1, [pc, #200] @ (8000af8 ) - 8000a2e: f7ff fe45 bl 80006bc - 8000a32: 2302 movs r3, #2 - 8000a34: e77b b.n 800092e - 8000a36: 4b31 ldr r3, [pc, #196] @ (8000afc ) - 8000a38: e7ef b.n 8000a1a - 8000a3a: 233c movs r3, #60 @ 0x3c - 8000a3c: 55bb strb r3, [r7, r6] - 8000a3e: 89ee ldrh r6, [r5, #14] - 8000a40: f8b5 1808 ldrh.w r1, [r5, #2056] @ 0x808 - 8000a44: 7baa ldrb r2, [r5, #14] - 8000a46: 7beb ldrb r3, [r5, #15] - 8000a48: 1d70 adds r0, r6, #5 - 8000a4a: ebb1 0f40 cmp.w r1, r0, lsl #1 - 8000a4e: f77f af61 ble.w 8000914 - 8000a52: 70a2 strb r2, [r4, #2] - 8000a54: 70e3 strb r3, [r4, #3] - 8000a56: 7c6a ldrb r2, [r5, #17] - 8000a58: 7c2b ldrb r3, [r5, #16] - 8000a5a: 7123 strb r3, [r4, #4] - 8000a5c: eb03 2302 add.w r3, r3, r2, lsl #8 - 8000a60: 2101 movs r1, #1 - 8000a62: b29b uxth r3, r3 - 8000a64: 408b lsls r3, r1 - 8000a66: 7162 strb r2, [r4, #5] - 8000a68: f103 43c0 add.w r3, r3, #1610612736 @ 0x60000000 - 8000a6c: 4a1b ldr r2, [pc, #108] @ (8000adc ) - 8000a6e: 7061 strb r1, [r4, #1] - 8000a70: f503 0380 add.w r3, r3, #4194304 @ 0x400000 - 8000a74: 2100 movs r1, #0 - 8000a76: b288 uxth r0, r1 - 8000a78: 4286 cmp r6, r0 - 8000a7a: f102 0202 add.w r2, r2, #2 - 8000a7e: d801 bhi.n 8000a84 - 8000a80: 2306 movs r3, #6 - 8000a82: e754 b.n 800092e - 8000a84: 7c54 ldrb r4, [r2, #17] - 8000a86: 7c10 ldrb r0, [r2, #16] - 8000a88: eb00 2004 add.w r0, r0, r4, lsl #8 - 8000a8c: 8018 strh r0, [r3, #0] - 8000a8e: 3101 adds r1, #1 - 8000a90: e7f1 b.n 8000a76 - 8000a92: f8b5 0808 ldrh.w r0, [r5, #2056] @ 0x808 - 8000a96: 7ba9 ldrb r1, [r5, #14] - 8000a98: 7bea ldrb r2, [r5, #15] - 8000a9a: 233d movs r3, #61 @ 0x3d - 8000a9c: 280a cmp r0, #10 - 8000a9e: 55bb strb r3, [r7, r6] - 8000aa0: 89eb ldrh r3, [r5, #14] - 8000aa2: f67f af37 bls.w 8000914 - 8000aa6: 70a1 strb r1, [r4, #2] - 8000aa8: 70e2 strb r2, [r4, #3] - 8000aaa: 7c69 ldrb r1, [r5, #17] - 8000aac: 7c2a ldrb r2, [r5, #16] - 8000aae: 7122 strb r2, [r4, #4] - 8000ab0: eb02 2201 add.w r2, r2, r1, lsl #8 - 8000ab4: 2001 movs r0, #1 - 8000ab6: b292 uxth r2, r2 - 8000ab8: 4082 lsls r2, r0 - 8000aba: 7060 strb r0, [r4, #1] - 8000abc: 7161 strb r1, [r4, #5] - 8000abe: f102 42c0 add.w r2, r2, #1610612736 @ 0x60000000 - 8000ac2: eb04 0043 add.w r0, r4, r3, lsl #1 - 8000ac6: 42a0 cmp r0, r4 - 8000ac8: d102 bne.n 8000ad0 - 8000aca: 3303 adds r3, #3 - 8000acc: 005b lsls r3, r3, #1 - 8000ace: e78e b.n 80009ee - 8000ad0: 8811 ldrh r1, [r2, #0] - 8000ad2: 71a1 strb r1, [r4, #6] - 8000ad4: 0a09 lsrs r1, r1, #8 - 8000ad6: 71e1 strb r1, [r4, #7] - 8000ad8: 3402 adds r4, #2 - 8000ada: e7f4 b.n 8000ac6 - 8000adc: 20000634 .word 0x20000634 - 8000ae0: 200000b6 .word 0x200000b6 - 8000ae4: 40020800 .word 0x40020800 - 8000ae8: 20000e54 .word 0x20000e54 - 8000aec: 200000b4 .word 0x200000b4 - 8000af0: 081c0000 .word 0x081c0000 - 8000af4: 081e0000 .word 0x081e0000 - 8000af8: 20000647 .word 0x20000647 - 8000afc: 081a0000 .word 0x081a0000 - -08000b00 : - 8000b00: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 8000b04: 461f mov r7, r3 - 8000b06: f8bd 8018 ldrh.w r8, [sp, #24] - 8000b0a: 4614 mov r4, r2 - 8000b0c: b39a cbz r2, 8000b76 - 8000b0e: 8912 ldrh r2, [r2, #8] - 8000b10: f5b2 6f00 cmp.w r2, #2048 @ 0x800 - 8000b14: d224 bcs.n 8000b60 - 8000b16: 2a05 cmp r2, #5 - 8000b18: d92d bls.n 8000b76 - 8000b1a: 4e18 ldr r6, [pc, #96] @ (8000b7c ) - 8000b1c: 6861 ldr r1, [r4, #4] - 8000b1e: 4630 mov r0, r6 - 8000b20: f009 ff0d bl 800a93e - 8000b24: f816 3c01 ldrb.w r3, [r6, #-1] - 8000b28: 1ff5 subs r5, r6, #7 - 8000b2a: b1f3 cbz r3, 8000b6a - 8000b2c: 4814 ldr r0, [pc, #80] @ (8000b80 ) - 8000b2e: 2204 movs r2, #4 - 8000b30: 4639 mov r1, r7 - 8000b32: f009 fe7e bl 800a832 - 8000b36: b9f0 cbnz r0, 8000b76 - 8000b38: f836 3c07 ldrh.w r3, [r6, #-7] - 8000b3c: 4543 cmp r3, r8 - 8000b3e: d11a bne.n 8000b76 - 8000b40: 886b ldrh r3, [r5, #2] - 8000b42: f8b5 2009 ldrh.w r2, [r5, #9] - 8000b46: 3301 adds r3, #1 - 8000b48: 429a cmp r2, r3 - 8000b4a: d114 bne.n 8000b76 - 8000b4c: 2300 movs r3, #0 - 8000b4e: f8a5 380a strh.w r3, [r5, #2058] @ 0x80a - 8000b52: 2301 movs r3, #1 - 8000b54: 71ab strb r3, [r5, #6] - 8000b56: 8923 ldrh r3, [r4, #8] - 8000b58: f8a5 3808 strh.w r3, [r5, #2056] @ 0x808 - 8000b5c: f7ff fe90 bl 8000880 - 8000b60: 4620 mov r0, r4 - 8000b62: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} - 8000b66: f003 bab3 b.w 80040d0 - 8000b6a: 4b05 ldr r3, [pc, #20] @ (8000b80 ) - 8000b6c: 683a ldr r2, [r7, #0] - 8000b6e: 601a str r2, [r3, #0] - 8000b70: f826 8c07 strh.w r8, [r6, #-7] - 8000b74: e7ea b.n 8000b4c - 8000b76: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 8000b7a: bf00 nop - 8000b7c: 2000063b .word 0x2000063b - 8000b80: 20000e44 .word 0x20000e44 - -08000b84 : - 8000b84: 0040 lsls r0, r0, #1 - 8000b86: f100 40c0 add.w r0, r0, #1610612736 @ 0x60000000 - 8000b8a: 8800 ldrh r0, [r0, #0] - 8000b8c: 4770 bx lr - -08000b8e : - 8000b8e: 0040 lsls r0, r0, #1 - 8000b90: f100 40c0 add.w r0, r0, #1610612736 @ 0x60000000 - 8000b94: f500 0080 add.w r0, r0, #4194304 @ 0x400000 - 8000b98: 8001 strh r1, [r0, #0] - 8000b9a: 4770 bx lr - -08000b9c : - 8000b9c: 1c8b adds r3, r1, #2 - 8000b9e: b29b uxth r3, r3 - 8000ba0: 005b lsls r3, r3, #1 - 8000ba2: f103 43c0 add.w r3, r3, #1610612736 @ 0x60000000 - 8000ba6: e92d 47f3 stmdb sp!, {r0, r1, r4, r5, r6, r7, r8, r9, sl, lr} - 8000baa: f503 0880 add.w r8, r3, #4194304 @ 0x400000 - 8000bae: 22c8 movs r2, #200 @ 0xc8 - 8000bb0: f8a8 2000 strh.w r2, [r8] - 8000bb4: 881b ldrh r3, [r3, #0] - 8000bb6: 4605 mov r5, r0 - 8000bb8: 4293 cmp r3, r2 - 8000bba: f04f 0000 mov.w r0, #0 - 8000bbe: e9cd 0000 strd r0, r0, [sp] - 8000bc2: d14c bne.n 8000c5e - 8000bc4: f101 0904 add.w r9, r1, #4 - 8000bc8: 1d8f adds r7, r1, #6 - 8000bca: f101 0608 add.w r6, r1, #8 - 8000bce: f101 040a add.w r4, r1, #10 - 8000bd2: fa1f f989 uxth.w r9, r9 - 8000bd6: b2bf uxth r7, r7 - 8000bd8: b2b6 uxth r6, r6 - 8000bda: b2a4 uxth r4, r4 - 8000bdc: ea4f 0949 mov.w r9, r9, lsl #1 - 8000be0: 007f lsls r7, r7, #1 - 8000be2: 0076 lsls r6, r6, #1 - 8000be4: 0064 lsls r4, r4, #1 - 8000be6: f109 49c0 add.w r9, r9, #1610612736 @ 0x60000000 - 8000bea: f107 47c0 add.w r7, r7, #1610612736 @ 0x60000000 - 8000bee: f106 46c0 add.w r6, r6, #1610612736 @ 0x60000000 - 8000bf2: f104 44c0 add.w r4, r4, #1610612736 @ 0x60000000 - 8000bf6: f509 0980 add.w r9, r9, #4194304 @ 0x400000 - 8000bfa: f507 0780 add.w r7, r7, #4194304 @ 0x400000 - 8000bfe: f506 0680 add.w r6, r6, #4194304 @ 0x400000 - 8000c02: f504 0480 add.w r4, r4, #4194304 @ 0x400000 - 8000c06: f205 3a02 addw sl, r5, #770 @ 0x302 - 8000c0a: 4628 mov r0, r5 - 8000c0c: 2201 movs r2, #1 - 8000c0e: 4669 mov r1, sp - 8000c10: f7ff fd88 bl 8000724 - 8000c14: 9b00 ldr r3, [sp, #0] - 8000c16: f8a8 3000 strh.w r3, [r8] - 8000c1a: 1ca8 adds r0, r5, #2 - 8000c1c: 2201 movs r2, #1 - 8000c1e: 4669 mov r1, sp - 8000c20: f7ff fd80 bl 8000724 - 8000c24: 9b00 ldr r3, [sp, #0] - 8000c26: f8a9 3000 strh.w r3, [r9] - 8000c2a: 1d28 adds r0, r5, #4 - 8000c2c: 2201 movs r2, #1 - 8000c2e: 4669 mov r1, sp - 8000c30: f7ff fd78 bl 8000724 - 8000c34: 9b00 ldr r3, [sp, #0] - 8000c36: 803b strh r3, [r7, #0] - 8000c38: 1da8 adds r0, r5, #6 - 8000c3a: 2201 movs r2, #1 - 8000c3c: 4669 mov r1, sp - 8000c3e: f7ff fd71 bl 8000724 - 8000c42: 9b00 ldr r3, [sp, #0] - 8000c44: 8033 strh r3, [r6, #0] - 8000c46: f105 0008 add.w r0, r5, #8 - 8000c4a: 2201 movs r2, #1 - 8000c4c: 4669 mov r1, sp - 8000c4e: 350a adds r5, #10 - 8000c50: f7ff fd68 bl 8000724 - 8000c54: 9b00 ldr r3, [sp, #0] - 8000c56: 8023 strh r3, [r4, #0] - 8000c58: 4555 cmp r5, sl - 8000c5a: d1d6 bne.n 8000c0a - 8000c5c: 2001 movs r0, #1 - 8000c5e: b002 add sp, #8 - 8000c60: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - -08000c64
: - 8000c64: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 8000c68: b090 sub sp, #64 @ 0x40 - 8000c6a: f000 fcd3 bl 8001614 - 8000c6e: f7ff fd65 bl 800073c - 8000c72: 2214 movs r2, #20 - 8000c74: 2100 movs r1, #0 - 8000c76: a809 add r0, sp, #36 @ 0x24 - 8000c78: f009 fdeb bl 800a852 - 8000c7c: 2400 movs r4, #0 - 8000c7e: 4baa ldr r3, [pc, #680] @ (8000f28 ) - 8000c80: 9400 str r4, [sp, #0] - 8000c82: 6b1a ldr r2, [r3, #48] @ 0x30 - 8000c84: 4ea9 ldr r6, [pc, #676] @ (8000f2c ) - 8000c86: f042 0210 orr.w r2, r2, #16 - 8000c8a: 631a str r2, [r3, #48] @ 0x30 - 8000c8c: 6b1a ldr r2, [r3, #48] @ 0x30 - 8000c8e: f002 0210 and.w r2, r2, #16 - 8000c92: 9200 str r2, [sp, #0] - 8000c94: 9a00 ldr r2, [sp, #0] - 8000c96: 9401 str r4, [sp, #4] - 8000c98: 6b1a ldr r2, [r3, #48] @ 0x30 - 8000c9a: f042 0204 orr.w r2, r2, #4 - 8000c9e: 631a str r2, [r3, #48] @ 0x30 - 8000ca0: 6b1a ldr r2, [r3, #48] @ 0x30 - 8000ca2: f002 0204 and.w r2, r2, #4 - 8000ca6: 9201 str r2, [sp, #4] - 8000ca8: 9a01 ldr r2, [sp, #4] - 8000caa: 9402 str r4, [sp, #8] - 8000cac: 6b1a ldr r2, [r3, #48] @ 0x30 - 8000cae: f042 0220 orr.w r2, r2, #32 - 8000cb2: 631a str r2, [r3, #48] @ 0x30 - 8000cb4: 6b1a ldr r2, [r3, #48] @ 0x30 - 8000cb6: f002 0220 and.w r2, r2, #32 - 8000cba: 9202 str r2, [sp, #8] - 8000cbc: 9a02 ldr r2, [sp, #8] - 8000cbe: 9403 str r4, [sp, #12] - 8000cc0: 6b1a ldr r2, [r3, #48] @ 0x30 - 8000cc2: f042 0201 orr.w r2, r2, #1 - 8000cc6: 631a str r2, [r3, #48] @ 0x30 - 8000cc8: 6b1a ldr r2, [r3, #48] @ 0x30 - 8000cca: f002 0201 and.w r2, r2, #1 - 8000cce: 9203 str r2, [sp, #12] - 8000cd0: 9a03 ldr r2, [sp, #12] - 8000cd2: 9404 str r4, [sp, #16] - 8000cd4: 6b1a ldr r2, [r3, #48] @ 0x30 - 8000cd6: f042 0240 orr.w r2, r2, #64 @ 0x40 - 8000cda: 631a str r2, [r3, #48] @ 0x30 - 8000cdc: 6b1a ldr r2, [r3, #48] @ 0x30 - 8000cde: f002 0240 and.w r2, r2, #64 @ 0x40 - 8000ce2: 9204 str r2, [sp, #16] - 8000ce4: 9a04 ldr r2, [sp, #16] - 8000ce6: 9405 str r4, [sp, #20] - 8000ce8: 6b1a ldr r2, [r3, #48] @ 0x30 - 8000cea: f042 0202 orr.w r2, r2, #2 - 8000cee: 631a str r2, [r3, #48] @ 0x30 - 8000cf0: 6b1a ldr r2, [r3, #48] @ 0x30 - 8000cf2: f002 0202 and.w r2, r2, #2 - 8000cf6: 9205 str r2, [sp, #20] - 8000cf8: 9a05 ldr r2, [sp, #20] - 8000cfa: 9406 str r4, [sp, #24] - 8000cfc: 6b1a ldr r2, [r3, #48] @ 0x30 - 8000cfe: f042 0208 orr.w r2, r2, #8 - 8000d02: 631a str r2, [r3, #48] @ 0x30 - 8000d04: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000d06: f003 0308 and.w r3, r3, #8 - 8000d0a: 4622 mov r2, r4 - 8000d0c: 9306 str r3, [sp, #24] - 8000d0e: f44f 4180 mov.w r1, #16384 @ 0x4000 - 8000d12: 4630 mov r0, r6 - 8000d14: 9b06 ldr r3, [sp, #24] - 8000d16: f001 fcaf bl 8002678 - 8000d1a: f44f 5347 mov.w r3, #12736 @ 0x31c0 - 8000d1e: a909 add r1, sp, #36 @ 0x24 - 8000d20: 4630 mov r0, r6 - 8000d22: e9cd 3409 strd r3, r4, [sp, #36] @ 0x24 - 8000d26: 940b str r4, [sp, #44] @ 0x2c - 8000d28: f44f 4780 mov.w r7, #16384 @ 0x4000 - 8000d2c: f001 fbc0 bl 80024b0 - 8000d30: f04f 0801 mov.w r8, #1 - 8000d34: a909 add r1, sp, #36 @ 0x24 - 8000d36: 4630 mov r0, r6 - 8000d38: e9cd 7809 strd r7, r8, [sp, #36] @ 0x24 - 8000d3c: e9cd 440b strd r4, r4, [sp, #44] @ 0x2c - 8000d40: f001 fbb6 bl 80024b0 - 8000d44: 2064 movs r0, #100 @ 0x64 - 8000d46: f000 fc91 bl 800166c - 8000d4a: f002 fa25 bl 8003198 - 8000d4e: 4878 ldr r0, [pc, #480] @ (8000f30 ) - 8000d50: 940f str r4, [sp, #60] @ 0x3c - 8000d52: f04f 4320 mov.w r3, #2684354560 @ 0xa0000000 - 8000d56: 6003 str r3, [r0, #0] - 8000d58: f503 7382 add.w r3, r3, #260 @ 0x104 - 8000d5c: e9c0 3401 strd r3, r4, [r0, #4] - 8000d60: 220f movs r2, #15 - 8000d62: 230a movs r3, #10 - 8000d64: e9cd 230b strd r2, r3, [sp, #44] @ 0x2c - 8000d68: f04f 0a10 mov.w sl, #16 - 8000d6c: f44f 5980 mov.w r9, #4096 @ 0x1000 - 8000d70: 4622 mov r2, r4 - 8000d72: a909 add r1, sp, #36 @ 0x24 - 8000d74: e9c0 4403 strd r4, r4, [r0, #12] - 8000d78: e9c0 a405 strd sl, r4, [r0, #20] - 8000d7c: e9c0 4407 strd r4, r4, [r0, #28] - 8000d80: e9c0 940a strd r9, r4, [r0, #40] @ 0x28 - 8000d84: e9c0 440c strd r4, r4, [r0, #48] @ 0x30 - 8000d88: e9c0 440e strd r4, r4, [r0, #56] @ 0x38 - 8000d8c: e9cd 3309 strd r3, r3, [sp, #36] @ 0x24 - 8000d90: e9cd 330d strd r3, r3, [sp, #52] @ 0x34 - 8000d94: 6244 str r4, [r0, #36] @ 0x24 - 8000d96: 6444 str r4, [r0, #68] @ 0x44 - 8000d98: f001 fef0 bl 8002b7c - 8000d9c: 4605 mov r5, r0 - 8000d9e: b108 cbz r0, 8000da4 - 8000da0: b672 cpsid i - 8000da2: e7fe b.n 8000da2 - 8000da4: 4652 mov r2, sl - 8000da6: 4601 mov r1, r0 - 8000da8: a809 add r0, sp, #36 @ 0x24 - 8000daa: f009 fd52 bl 800a852 - 8000dae: 4c61 ldr r4, [pc, #388] @ (8000f34 ) - 8000db0: 4a61 ldr r2, [pc, #388] @ (8000f38 ) - 8000db2: 60a5 str r5, [r4, #8] - 8000db4: 2316 movs r3, #22 - 8000db6: e9c4 2300 strd r2, r3, [r4] - 8000dba: 4620 mov r0, r4 - 8000dbc: f640 037a movw r3, #2170 @ 0x87a - 8000dc0: e9cd 5507 strd r5, r5, [sp, #28] - 8000dc4: e9c4 3503 strd r3, r5, [r4, #12] - 8000dc8: 61a5 str r5, [r4, #24] - 8000dca: f002 f84d bl 8002e68 - 8000dce: b108 cbz r0, 8000dd4 - 8000dd0: b672 cpsid i - 8000dd2: e7fe b.n 8000dd2 - 8000dd4: a909 add r1, sp, #36 @ 0x24 - 8000dd6: 4620 mov r0, r4 - 8000dd8: f8cd 9024 str.w r9, [sp, #36] @ 0x24 - 8000ddc: f002 f87a bl 8002ed4 - 8000de0: b108 cbz r0, 8000de6 - 8000de2: b672 cpsid i - 8000de4: e7fe b.n 8000de4 - 8000de6: e9cd 0007 strd r0, r0, [sp, #28] - 8000dea: a907 add r1, sp, #28 - 8000dec: 4620 mov r0, r4 - 8000dee: f002 f90b bl 8003008 - 8000df2: 4605 mov r5, r0 - 8000df4: b108 cbz r0, 8000dfa - 8000df6: b672 cpsid i - 8000df8: e7fe b.n 8000df8 - 8000dfa: f006 ffcf bl 8007d9c - 8000dfe: 4681 mov r9, r0 - 8000e00: f7ff fd12 bl 8000828 - 8000e04: 4629 mov r1, r5 - 8000e06: f44f 62af mov.w r2, #1400 @ 0x578 - 8000e0a: 484c ldr r0, [pc, #304] @ (8000f3c ) - 8000e0c: f009 fd21 bl 800a852 - 8000e10: f44f 7220 mov.w r2, #640 @ 0x280 - 8000e14: f44f 61af mov.w r1, #1400 @ 0x578 - 8000e18: 4628 mov r0, r5 - 8000e1a: f003 f9bd bl 8004198 - 8000e1e: 4605 mov r5, r0 - 8000e20: 4847 ldr r0, [pc, #284] @ (8000f40 ) - 8000e22: f008 ff61 bl 8009ce8 - 8000e26: 9009 str r0, [sp, #36] @ 0x24 - 8000e28: 6933 ldr r3, [r6, #16] - 8000e2a: 6932 ldr r2, [r6, #16] - 8000e2c: 0a52 lsrs r2, r2, #9 - 8000e2e: f002 0218 and.w r2, r2, #24 - 8000e32: f3c3 1382 ubfx r3, r3, #6, #3 - 8000e36: 4313 orrs r3, r2 - 8000e38: 4a42 ldr r2, [pc, #264] @ (8000f44 ) - 8000e3a: 4620 mov r0, r4 - 8000e3c: 6013 str r3, [r2, #0] - 8000e3e: f001 fecb bl 8002bd8 - 8000e42: b108 cbz r0, 8000e48 - 8000e44: b672 cpsid i - 8000e46: e7fe b.n 8000e46 - 8000e48: 4642 mov r2, r8 - 8000e4a: 4639 mov r1, r7 - 8000e4c: 4630 mov r0, r6 - 8000e4e: f001 fc13 bl 8002678 - 8000e52: f8df 8124 ldr.w r8, [pc, #292] @ 8000f78 - 8000e56: 4c3c ldr r4, [pc, #240] @ (8000f48 ) - 8000e58: 4f3c ldr r7, [pc, #240] @ (8000f4c ) - 8000e5a: f002 f9e3 bl 8003224 - 8000e5e: f898 a000 ldrb.w sl, [r8] - 8000e62: f1ba 0f00 cmp.w sl, #0 - 8000e66: d04d beq.n 8000f04 - 8000e68: 4b34 ldr r3, [pc, #208] @ (8000f3c ) - 8000e6a: f8b3 1578 ldrh.w r1, [r3, #1400] @ 0x578 - 8000e6e: f8b3 357c ldrh.w r3, [r3, #1404] @ 0x57c - 8000e72: 4419 add r1, r3 - 8000e74: f04f 0a00 mov.w sl, #0 - 8000e78: b289 uxth r1, r1 - 8000e7a: 4628 mov r0, r5 - 8000e7c: f888 a000 strb.w sl, [r8] - 8000e80: f7ff fcc8 bl 8000814 - 8000e84: 8823 ldrh r3, [r4, #0] - 8000e86: 4a32 ldr r2, [pc, #200] @ (8000f50 ) - 8000e88: 4629 mov r1, r5 - 8000e8a: 4648 mov r0, r9 - 8000e8c: f006 fed8 bl 8007c40 - 8000e90: f8c7 a000 str.w sl, [r7] - 8000e94: f8b4 380a ldrh.w r3, [r4, #2058] @ 0x80a - 8000e98: f5b3 6ffa cmp.w r3, #2000 @ 0x7d0 - 8000e9c: bf24 itt cs - 8000e9e: 2300 movcs r3, #0 - 8000ea0: 71a3 strbcs r3, [r4, #6] - 8000ea2: 4b2c ldr r3, [pc, #176] @ (8000f54 ) - 8000ea4: 681b ldr r3, [r3, #0] - 8000ea6: 2b1e cmp r3, #30 - 8000ea8: d905 bls.n 8000eb6 - 8000eaa: 2201 movs r2, #1 - 8000eac: f44f 4180 mov.w r1, #16384 @ 0x4000 - 8000eb0: 4630 mov r0, r6 - 8000eb2: f001 fbe1 bl 8002678 - 8000eb6: 4b28 ldr r3, [pc, #160] @ (8000f58 ) - 8000eb8: 681a ldr r2, [r3, #0] - 8000eba: 2a64 cmp r2, #100 @ 0x64 - 8000ebc: d9cc bls.n 8000e58 - 8000ebe: 2200 movs r2, #0 - 8000ec0: 601a str r2, [r3, #0] - 8000ec2: 4b26 ldr r3, [pc, #152] @ (8000f5c ) - 8000ec4: 681b ldr r3, [r3, #0] - 8000ec6: 2b01 cmp r3, #1 - 8000ec8: d1c6 bne.n 8000e58 - 8000eca: 4f25 ldr r7, [pc, #148] @ (8000f60 ) - 8000ecc: 783b ldrb r3, [r7, #0] - 8000ece: b92b cbnz r3, 8000edc - 8000ed0: 4824 ldr r0, [pc, #144] @ (8000f64 ) - 8000ed2: f44f 7198 mov.w r1, #304 @ 0x130 - 8000ed6: f7ff fe61 bl 8000b9c - 8000eda: 7038 strb r0, [r7, #0] - 8000edc: 4f22 ldr r7, [pc, #136] @ (8000f68 ) - 8000ede: 783b ldrb r3, [r7, #0] - 8000ee0: b92b cbnz r3, 8000eee - 8000ee2: 4822 ldr r0, [pc, #136] @ (8000f6c ) - 8000ee4: f44f 7188 mov.w r1, #272 @ 0x110 - 8000ee8: f7ff fe58 bl 8000b9c - 8000eec: 7038 strb r0, [r7, #0] - 8000eee: 4f20 ldr r7, [pc, #128] @ (8000f70 ) - 8000ef0: 783b ldrb r3, [r7, #0] - 8000ef2: 2b00 cmp r3, #0 - 8000ef4: d1b0 bne.n 8000e58 - 8000ef6: 481f ldr r0, [pc, #124] @ (8000f74 ) - 8000ef8: f44f 7190 mov.w r1, #288 @ 0x120 - 8000efc: f7ff fe4e bl 8000b9c - 8000f00: 7038 strb r0, [r7, #0] - 8000f02: e7a9 b.n 8000e58 - 8000f04: 683b ldr r3, [r7, #0] - 8000f06: 2b63 cmp r3, #99 @ 0x63 - 8000f08: d9c4 bls.n 8000e94 - 8000f0a: f7ff fc69 bl 80007e0 - 8000f0e: 4b0b ldr r3, [pc, #44] @ (8000f3c ) - 8000f10: f8b3 357c ldrh.w r3, [r3, #1404] @ 0x57c - 8000f14: 18c1 adds r1, r0, r3 - 8000f16: b289 uxth r1, r1 - 8000f18: 4628 mov r0, r5 - 8000f1a: f7ff fc7b bl 8000814 - 8000f1e: f24c 3350 movw r3, #50000 @ 0xc350 - 8000f22: aa09 add r2, sp, #36 @ 0x24 - 8000f24: e7b0 b.n 8000e88 - 8000f26: bf00 nop - 8000f28: 40023800 .word 0x40023800 - 8000f2c: 40020800 .word 0x40020800 - 8000f30: 20000e5c .word 0x20000e5c - 8000f34: 20000eac .word 0x20000eac - 8000f38: 40000400 .word 0x40000400 - 8000f3c: 200000b6 .word 0x200000b6 - 8000f40: 0800b654 .word 0x0800b654 - 8000f44: 20000e4c .word 0x20000e4c - 8000f48: 20000634 .word 0x20000634 - 8000f4c: 20000e58 .word 0x20000e58 - 8000f50: 20000e44 .word 0x20000e44 - 8000f54: 20000e54 .word 0x20000e54 - 8000f58: 20000e50 .word 0x20000e50 - 8000f5c: 20000e48 .word 0x20000e48 - 8000f60: 20000e40 .word 0x20000e40 - 8000f64: 081e0000 .word 0x081e0000 - 8000f68: 20000e42 .word 0x20000e42 - 8000f6c: 081a0000 .word 0x081a0000 - 8000f70: 20000e41 .word 0x20000e41 - 8000f74: 081c0000 .word 0x081c0000 - 8000f78: 200000b4 .word 0x200000b4 - -08000f7c : - 8000f7c: b672 cpsid i - 8000f7e: e7fe b.n 8000f7e - -08000f80 : - 8000f80: 4a1b ldr r2, [pc, #108] @ (8000ff0 ) - 8000f82: 6913 ldr r3, [r2, #16] - 8000f84: 6912 ldr r2, [r2, #16] - 8000f86: 0a52 lsrs r2, r2, #9 - 8000f88: f3c3 1382 ubfx r3, r3, #6, #3 - 8000f8c: f002 0218 and.w r2, r2, #24 - 8000f90: 4313 orrs r3, r2 - 8000f92: 2b1b cmp r3, #27 - 8000f94: d82a bhi.n 8000fec - 8000f96: e8df f003 tbb [pc, r3] - 8000f9a: 1911 .short 0x1911 - 8000f9c: 1b132921 .word 0x1b132921 - 8000fa0: 1d152923 .word 0x1d152923 - 8000fa4: 1f172925 .word 0x1f172925 - 8000fa8: 29292927 .word 0x29292927 - 8000fac: 29292929 .word 0x29292929 - 8000fb0: 29292929 .word 0x29292929 - 8000fb4: 0e29 .short 0x0e29 - 8000fb6: 480f ldr r0, [pc, #60] @ (8000ff4 ) - 8000fb8: f008 be96 b.w 8009ce8 - 8000fbc: 480e ldr r0, [pc, #56] @ (8000ff8 ) - 8000fbe: e7fb b.n 8000fb8 - 8000fc0: 480e ldr r0, [pc, #56] @ (8000ffc ) - 8000fc2: e7f9 b.n 8000fb8 - 8000fc4: 480e ldr r0, [pc, #56] @ (8001000 ) - 8000fc6: e7f7 b.n 8000fb8 - 8000fc8: 480e ldr r0, [pc, #56] @ (8001004 ) - 8000fca: e7f5 b.n 8000fb8 - 8000fcc: 480e ldr r0, [pc, #56] @ (8001008 ) - 8000fce: e7f3 b.n 8000fb8 - 8000fd0: 480e ldr r0, [pc, #56] @ (800100c ) - 8000fd2: e7f1 b.n 8000fb8 - 8000fd4: 480e ldr r0, [pc, #56] @ (8001010 ) - 8000fd6: e7ef b.n 8000fb8 - 8000fd8: 480e ldr r0, [pc, #56] @ (8001014 ) - 8000fda: e7ed b.n 8000fb8 - 8000fdc: 480e ldr r0, [pc, #56] @ (8001018 ) - 8000fde: e7eb b.n 8000fb8 - 8000fe0: 480e ldr r0, [pc, #56] @ (800101c ) - 8000fe2: e7e9 b.n 8000fb8 - 8000fe4: 480e ldr r0, [pc, #56] @ (8001020 ) - 8000fe6: e7e7 b.n 8000fb8 - 8000fe8: 480e ldr r0, [pc, #56] @ (8001024 ) - 8000fea: e7e5 b.n 8000fb8 - 8000fec: 480e ldr r0, [pc, #56] @ (8001028 ) - 8000fee: e7e3 b.n 8000fb8 - 8000ff0: 40020800 .word 0x40020800 - 8000ff4: 0800b65f .word 0x0800b65f - 8000ff8: 0800b669 .word 0x0800b669 - 8000ffc: 0800b673 .word 0x0800b673 - 8001000: 0800b67d .word 0x0800b67d - 8001004: 0800b687 .word 0x0800b687 - 8001008: 0800b691 .word 0x0800b691 - 800100c: 0800b69b .word 0x0800b69b - 8001010: 0800b6a5 .word 0x0800b6a5 - 8001014: 0800b6af .word 0x0800b6af - 8001018: 0800b6b9 .word 0x0800b6b9 - 800101c: 0800b6c3 .word 0x0800b6c3 - 8001020: 0800b6cd .word 0x0800b6cd - 8001024: 0800b6d7 .word 0x0800b6d7 - 8001028: 0800b6e1 .word 0x0800b6e1 - -0800102c : - 800102c: 4a08 ldr r2, [pc, #32] @ (8001050 ) - 800102e: 6913 ldr r3, [r2, #16] - 8001030: 6912 ldr r2, [r2, #16] - 8001032: 0a52 lsrs r2, r2, #9 - 8001034: f002 0218 and.w r2, r2, #24 - 8001038: f3c3 1382 ubfx r3, r3, #6, #3 - 800103c: 4313 orrs r3, r2 - 800103e: 2b1b cmp r3, #27 - 8001040: bf9a itte ls - 8001042: 4a04 ldrls r2, [pc, #16] @ (8001054 ) - 8001044: f832 0013 ldrhls.w r0, [r2, r3, lsl #1] - 8001048: f24c 3095 movwhi r0, #50069 @ 0xc395 - 800104c: 4770 bx lr - 800104e: bf00 nop - 8001050: 40020800 .word 0x40020800 - 8001054: 0800b6ec .word 0x0800b6ec - -08001058 : - 8001058: 231f movs r3, #31 - 800105a: b570 push {r4, r5, r6, lr} - 800105c: 7183 strb r3, [r0, #6] - 800105e: 2300 movs r3, #0 - 8001060: 4604 mov r4, r0 - 8001062: 71c3 strb r3, [r0, #7] - 8001064: f44f 7090 mov.w r0, #288 @ 0x120 - 8001068: f7ff fd8c bl 8000b84 - 800106c: f64f 75ff movw r5, #65535 @ 0xffff - 8001070: 1b40 subs r0, r0, r5 - 8001072: bf18 it ne - 8001074: 2001 movne r0, #1 - 8001076: 7220 strb r0, [r4, #8] - 8001078: f44f 7080 mov.w r0, #256 @ 0x100 - 800107c: f7ff fd82 bl 8000b84 - 8001080: 42a8 cmp r0, r5 - 8001082: bf1e ittt ne - 8001084: 7a23 ldrbne r3, [r4, #8] - 8001086: f043 0302 orrne.w r3, r3, #2 - 800108a: 7223 strbne r3, [r4, #8] - 800108c: f44f 7098 mov.w r0, #304 @ 0x130 - 8001090: f7ff fd78 bl 8000b84 - 8001094: f64f 73ff movw r3, #65535 @ 0xffff - 8001098: 4298 cmp r0, r3 - 800109a: bf1e ittt ne - 800109c: 7a23 ldrbne r3, [r4, #8] - 800109e: f043 0304 orrne.w r3, r3, #4 - 80010a2: 7223 strbne r3, [r4, #8] - 80010a4: f44f 70a0 mov.w r0, #320 @ 0x140 - 80010a8: f7ff fd6c bl 8000b84 - 80010ac: f64f 73ff movw r3, #65535 @ 0xffff - 80010b0: 4298 cmp r0, r3 - 80010b2: bf1e ittt ne - 80010b4: 7a23 ldrbne r3, [r4, #8] - 80010b6: f043 0308 orrne.w r3, r3, #8 - 80010ba: 7223 strbne r3, [r4, #8] - 80010bc: 4626 mov r6, r4 - 80010be: 2501 movs r5, #1 - 80010c0: b2a9 uxth r1, r5 - 80010c2: f44f 7096 mov.w r0, #300 @ 0x12c - 80010c6: f7ff fd62 bl 8000b8e - 80010ca: f44f 7097 mov.w r0, #302 @ 0x12e - 80010ce: f7ff fd59 bl 8000b84 - 80010d2: 3501 adds r5, #1 - 80010d4: 7270 strb r0, [r6, #9] - 80010d6: 2d0e cmp r5, #14 - 80010d8: ea4f 2010 mov.w r0, r0, lsr #8 - 80010dc: 72b0 strb r0, [r6, #10] - 80010de: f106 0602 add.w r6, r6, #2 - 80010e2: d1ed bne.n 80010c0 - 80010e4: f44f 7086 mov.w r0, #268 @ 0x10c - 80010e8: f7ff fd4c bl 8000b84 - 80010ec: 77e0 strb r0, [r4, #31] - 80010ee: 0a00 lsrs r0, r0, #8 - 80010f0: f884 0020 strb.w r0, [r4, #32] - 80010f4: f44f 7087 mov.w r0, #270 @ 0x10e - 80010f8: f7ff fd44 bl 8000b84 - 80010fc: 4b04 ldr r3, [pc, #16] @ (8001110 ) - 80010fe: f884 0021 strb.w r0, [r4, #33] @ 0x21 - 8001102: 0a00 lsrs r0, r0, #8 - 8001104: f884 0022 strb.w r0, [r4, #34] @ 0x22 - 8001108: 2200 movs r2, #0 - 800110a: 601a str r2, [r3, #0] - 800110c: 2021 movs r0, #33 @ 0x21 - 800110e: bd70 pop {r4, r5, r6, pc} - 8001110: 20000e48 .word 0x20000e48 - -08001114 : - 8001114: b570 push {r4, r5, r6, lr} - 8001116: 234f movs r3, #79 @ 0x4f - 8001118: 2500 movs r5, #0 - 800111a: 7183 strb r3, [r0, #6] - 800111c: 71c5 strb r5, [r0, #7] - 800111e: 7205 strb r5, [r0, #8] - 8001120: 4604 mov r4, r0 - 8001122: f44f 7098 mov.w r0, #304 @ 0x130 - 8001126: f7ff fd2d bl 8000b84 - 800112a: f64f 73ff movw r3, #65535 @ 0xffff - 800112e: 4298 cmp r0, r3 - 8001130: 4a3a ldr r2, [pc, #232] @ (800121c ) - 8001132: d060 beq.n 80011f6 - 8001134: 7812 ldrb r2, [r2, #0] - 8001136: 7a23 ldrb r3, [r4, #8] - 8001138: 2a00 cmp r2, #0 - 800113a: d057 beq.n 80011ec - 800113c: f043 0309 orr.w r3, r3, #9 - 8001140: 7223 strb r3, [r4, #8] - 8001142: f44f 7088 mov.w r0, #272 @ 0x110 - 8001146: f7ff fd1d bl 8000b84 - 800114a: f64f 73ff movw r3, #65535 @ 0xffff - 800114e: 4298 cmp r0, r3 - 8001150: 4a33 ldr r2, [pc, #204] @ (8001220 ) - 8001152: d057 beq.n 8001204 - 8001154: 7812 ldrb r2, [r2, #0] - 8001156: 7a23 ldrb r3, [r4, #8] - 8001158: 2a00 cmp r2, #0 - 800115a: d04e beq.n 80011fa - 800115c: f043 0312 orr.w r3, r3, #18 - 8001160: 7223 strb r3, [r4, #8] - 8001162: f44f 7090 mov.w r0, #288 @ 0x120 - 8001166: f7ff fd0d bl 8000b84 - 800116a: f64f 73ff movw r3, #65535 @ 0xffff - 800116e: 4298 cmp r0, r3 - 8001170: 4a2c ldr r2, [pc, #176] @ (8001224 ) - 8001172: d04f beq.n 8001214 - 8001174: 7812 ldrb r2, [r2, #0] - 8001176: 7a23 ldrb r3, [r4, #8] - 8001178: 2a00 cmp r2, #0 - 800117a: d046 beq.n 800120a - 800117c: f043 0324 orr.w r3, r3, #36 @ 0x24 - 8001180: 7223 strb r3, [r4, #8] - 8001182: 2501 movs r5, #1 - 8001184: b2ae uxth r6, r5 - 8001186: 4631 mov r1, r6 - 8001188: f44f 709e mov.w r0, #316 @ 0x13c - 800118c: f7ff fcff bl 8000b8e - 8001190: f44f 709f mov.w r0, #318 @ 0x13e - 8001194: f7ff fcf6 bl 8000b84 - 8001198: 7260 strb r0, [r4, #9] - 800119a: 0a00 lsrs r0, r0, #8 - 800119c: 72a0 strb r0, [r4, #10] - 800119e: 4631 mov r1, r6 - 80011a0: f44f 708e mov.w r0, #284 @ 0x11c - 80011a4: f7ff fcf3 bl 8000b8e - 80011a8: f44f 708f mov.w r0, #286 @ 0x11e - 80011ac: f7ff fcea bl 8000b84 - 80011b0: f884 0023 strb.w r0, [r4, #35] @ 0x23 - 80011b4: 0a00 lsrs r0, r0, #8 - 80011b6: f884 0024 strb.w r0, [r4, #36] @ 0x24 - 80011ba: 4631 mov r1, r6 - 80011bc: f44f 7096 mov.w r0, #300 @ 0x12c - 80011c0: f7ff fce5 bl 8000b8e - 80011c4: f44f 7097 mov.w r0, #302 @ 0x12e - 80011c8: f7ff fcdc bl 8000b84 - 80011cc: 3501 adds r5, #1 - 80011ce: f884 003d strb.w r0, [r4, #61] @ 0x3d - 80011d2: 2d0e cmp r5, #14 - 80011d4: ea4f 2010 mov.w r0, r0, lsr #8 - 80011d8: f884 003e strb.w r0, [r4, #62] @ 0x3e - 80011dc: f104 0402 add.w r4, r4, #2 - 80011e0: d1d0 bne.n 8001184 - 80011e2: 4b11 ldr r3, [pc, #68] @ (8001228 ) - 80011e4: 2201 movs r2, #1 - 80011e6: 601a str r2, [r3, #0] - 80011e8: 2051 movs r0, #81 @ 0x51 - 80011ea: bd70 pop {r4, r5, r6, pc} - 80011ec: f023 0308 bic.w r3, r3, #8 - 80011f0: f043 0301 orr.w r3, r3, #1 - 80011f4: e7a4 b.n 8001140 - 80011f6: 7015 strb r5, [r2, #0] - 80011f8: e7a3 b.n 8001142 - 80011fa: f023 0310 bic.w r3, r3, #16 - 80011fe: f043 0302 orr.w r3, r3, #2 - 8001202: e7ad b.n 8001160 - 8001204: 2300 movs r3, #0 - 8001206: 7013 strb r3, [r2, #0] - 8001208: e7ab b.n 8001162 - 800120a: f023 0320 bic.w r3, r3, #32 - 800120e: f043 0304 orr.w r3, r3, #4 - 8001212: e7b5 b.n 8001180 - 8001214: 2300 movs r3, #0 - 8001216: 7013 strb r3, [r2, #0] - 8001218: e7b3 b.n 8001182 - 800121a: bf00 nop - 800121c: 20000e40 .word 0x20000e40 - 8001220: 20000e42 .word 0x20000e42 - 8001224: 20000e41 .word 0x20000e41 - 8001228: 20000e48 .word 0x20000e48 - -0800122c : - 800122c: 291b cmp r1, #27 - 800122e: b410 push {r4} - 8001230: 4603 mov r3, r0 - 8001232: d80f bhi.n 8001254 - 8001234: 2201 movs r2, #1 - 8001236: 408a lsls r2, r1 - 8001238: f247 7477 movw r4, #30583 @ 0x7777 - 800123c: 4222 tst r2, r4 - 800123e: d105 bne.n 800124c - 8001240: 291b cmp r1, #27 - 8001242: d107 bne.n 8001254 - 8001244: f85d 4b04 ldr.w r4, [sp], #4 - 8001248: f7ff bf64 b.w 8001114 - 800124c: f85d 4b04 ldr.w r4, [sp], #4 - 8001250: f7ff bf02 b.w 8001058 - 8001254: 2100 movs r1, #0 - 8001256: 2202 movs r2, #2 - 8001258: 71d9 strb r1, [r3, #7] - 800125a: 2101 movs r1, #1 - 800125c: 719a strb r2, [r3, #6] - 800125e: 7219 strb r1, [r3, #8] - 8001260: 725a strb r2, [r3, #9] - 8001262: 4b03 ldr r3, [pc, #12] @ (8001270 ) - 8001264: f85d 4b04 ldr.w r4, [sp], #4 - 8001268: 601a str r2, [r3, #0] - 800126a: 2004 movs r0, #4 - 800126c: 4770 bx lr - 800126e: bf00 nop - 8001270: 20000e48 .word 0x20000e48 - -08001274 : - 8001274: b082 sub sp, #8 - 8001276: 4b0c ldr r3, [pc, #48] @ (80012a8 ) - 8001278: 2100 movs r1, #0 - 800127a: 9100 str r1, [sp, #0] - 800127c: 6c5a ldr r2, [r3, #68] @ 0x44 - 800127e: f442 4280 orr.w r2, r2, #16384 @ 0x4000 - 8001282: 645a str r2, [r3, #68] @ 0x44 - 8001284: 6c5a ldr r2, [r3, #68] @ 0x44 - 8001286: f402 4280 and.w r2, r2, #16384 @ 0x4000 - 800128a: 9200 str r2, [sp, #0] - 800128c: 9a00 ldr r2, [sp, #0] - 800128e: 9101 str r1, [sp, #4] - 8001290: 6c1a ldr r2, [r3, #64] @ 0x40 - 8001292: f042 5280 orr.w r2, r2, #268435456 @ 0x10000000 - 8001296: 641a str r2, [r3, #64] @ 0x40 - 8001298: 6c1b ldr r3, [r3, #64] @ 0x40 - 800129a: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 800129e: 9301 str r3, [sp, #4] - 80012a0: 9b01 ldr r3, [sp, #4] - 80012a2: b002 add sp, #8 - 80012a4: 4770 bx lr - 80012a6: bf00 nop - 80012a8: 40023800 .word 0x40023800 - -080012ac : - 80012ac: b507 push {r0, r1, r2, lr} - 80012ae: 4b0f ldr r3, [pc, #60] @ (80012ec ) - 80012b0: 6802 ldr r2, [r0, #0] - 80012b2: 429a cmp r2, r3 - 80012b4: d116 bne.n 80012e4 - 80012b6: 2200 movs r2, #0 - 80012b8: f503 330d add.w r3, r3, #144384 @ 0x23400 - 80012bc: 9201 str r2, [sp, #4] - 80012be: 6c19 ldr r1, [r3, #64] @ 0x40 - 80012c0: f041 0102 orr.w r1, r1, #2 - 80012c4: 6419 str r1, [r3, #64] @ 0x40 - 80012c6: 6c1b ldr r3, [r3, #64] @ 0x40 - 80012c8: f003 0302 and.w r3, r3, #2 - 80012cc: 9301 str r3, [sp, #4] - 80012ce: 4611 mov r1, r2 - 80012d0: 201d movs r0, #29 - 80012d2: 9b01 ldr r3, [sp, #4] - 80012d4: f000 f9f0 bl 80016b8 - 80012d8: 201d movs r0, #29 - 80012da: b003 add sp, #12 - 80012dc: f85d eb04 ldr.w lr, [sp], #4 - 80012e0: f000 ba1c b.w 800171c - 80012e4: b003 add sp, #12 - 80012e6: f85d fb04 ldr.w pc, [sp], #4 - 80012ea: bf00 nop - 80012ec: 40000400 .word 0x40000400 - -080012f0 : - 80012f0: b5f0 push {r4, r5, r6, r7, lr} - 80012f2: b087 sub sp, #28 - 80012f4: 2300 movs r3, #0 - 80012f6: 9303 str r3, [sp, #12] - 80012f8: 4b1f ldr r3, [pc, #124] @ (8001378 ) - 80012fa: 681c ldr r4, [r3, #0] - 80012fc: 2c00 cmp r4, #0 - 80012fe: d139 bne.n 8001374 - 8001300: 2201 movs r2, #1 - 8001302: 601a str r2, [r3, #0] - 8001304: 4b1d ldr r3, [pc, #116] @ (800137c ) - 8001306: 9400 str r4, [sp, #0] - 8001308: 6b9a ldr r2, [r3, #56] @ 0x38 - 800130a: 481d ldr r0, [pc, #116] @ (8001380 ) - 800130c: f042 0201 orr.w r2, r2, #1 - 8001310: 639a str r2, [r3, #56] @ 0x38 - 8001312: 6b9b ldr r3, [r3, #56] @ 0x38 - 8001314: f003 0301 and.w r3, r3, #1 - 8001318: 9300 str r3, [sp, #0] - 800131a: 2702 movs r7, #2 - 800131c: 2603 movs r6, #3 - 800131e: 250c movs r5, #12 - 8001320: 9b00 ldr r3, [sp, #0] - 8001322: a901 add r1, sp, #4 - 8001324: f64f 73fb movw r3, #65531 @ 0xfffb - 8001328: e9cd 3701 strd r3, r7, [sp, #4] - 800132c: e9cd 6504 strd r6, r5, [sp, #16] - 8001330: f001 f8be bl 80024b0 - 8001334: f24f 033f movw r3, #61503 @ 0xf03f - 8001338: 4812 ldr r0, [pc, #72] @ (8001384 ) - 800133a: 9505 str r5, [sp, #20] - 800133c: a901 add r1, sp, #4 - 800133e: e9cd 3701 strd r3, r7, [sp, #4] - 8001342: e9cd 4603 strd r4, r6, [sp, #12] - 8001346: f001 f8b3 bl 80024b0 - 800134a: 233f movs r3, #63 @ 0x3f - 800134c: 480e ldr r0, [pc, #56] @ (8001388 ) - 800134e: 9505 str r5, [sp, #20] - 8001350: a901 add r1, sp, #4 - 8001352: e9cd 3701 strd r3, r7, [sp, #4] - 8001356: e9cd 4603 strd r4, r6, [sp, #12] - 800135a: f001 f8a9 bl 80024b0 - 800135e: f64f 73b3 movw r3, #65459 @ 0xffb3 - 8001362: 480a ldr r0, [pc, #40] @ (800138c ) - 8001364: 9505 str r5, [sp, #20] - 8001366: a901 add r1, sp, #4 - 8001368: e9cd 3701 strd r3, r7, [sp, #4] - 800136c: e9cd 4603 strd r4, r6, [sp, #12] - 8001370: f001 f89e bl 80024b0 - 8001374: b007 add sp, #28 - 8001376: bdf0 pop {r4, r5, r6, r7, pc} - 8001378: 20000ef4 .word 0x20000ef4 - 800137c: 40023800 .word 0x40023800 - 8001380: 40021000 .word 0x40021000 - 8001384: 40021400 .word 0x40021400 - 8001388: 40021800 .word 0x40021800 - 800138c: 40020c00 .word 0x40020c00 - -08001390 : - 8001390: e7fe b.n 8001390 - -08001392 : - 8001392: e7fe b.n 8001392 - -08001394 : - 8001394: e7fe b.n 8001394 - -08001396 : - 8001396: e7fe b.n 8001396 - -08001398 : - 8001398: e7fe b.n 8001398 - -0800139a : - 800139a: 4770 bx lr - -0800139c : - 800139c: 4770 bx lr - -0800139e : - 800139e: 4770 bx lr - -080013a0 : - 80013a0: f000 b952 b.w 8001648 - -080013a4 : - 80013a4: b508 push {r3, lr} - 80013a6: 480b ldr r0, [pc, #44] @ (80013d4 ) - 80013a8: f001 fc55 bl 8002c56 - 80013ac: 4a0a ldr r2, [pc, #40] @ (80013d8 ) - 80013ae: 6813 ldr r3, [r2, #0] - 80013b0: 3301 adds r3, #1 - 80013b2: 6013 str r3, [r2, #0] - 80013b4: 4a09 ldr r2, [pc, #36] @ (80013dc ) - 80013b6: f8b2 380a ldrh.w r3, [r2, #2058] @ 0x80a - 80013ba: 3301 adds r3, #1 - 80013bc: f8a2 380a strh.w r3, [r2, #2058] @ 0x80a - 80013c0: 4a07 ldr r2, [pc, #28] @ (80013e0 ) - 80013c2: 6813 ldr r3, [r2, #0] - 80013c4: 3301 adds r3, #1 - 80013c6: 6013 str r3, [r2, #0] - 80013c8: 4a06 ldr r2, [pc, #24] @ (80013e4 ) - 80013ca: 6813 ldr r3, [r2, #0] - 80013cc: 3301 adds r3, #1 - 80013ce: 6013 str r3, [r2, #0] - 80013d0: bd08 pop {r3, pc} - 80013d2: bf00 nop - 80013d4: 20000eac .word 0x20000eac - 80013d8: 20000e58 .word 0x20000e58 - 80013dc: 20000634 .word 0x20000634 - 80013e0: 20000e54 .word 0x20000e54 - 80013e4: 20000e50 .word 0x20000e50 - -080013e8 : - 80013e8: 4a03 ldr r2, [pc, #12] @ (80013f8 ) - 80013ea: f8d2 3088 ldr.w r3, [r2, #136] @ 0x88 - 80013ee: f443 0370 orr.w r3, r3, #15728640 @ 0xf00000 - 80013f2: f8c2 3088 str.w r3, [r2, #136] @ 0x88 - 80013f6: 4770 bx lr - 80013f8: e000ed00 .word 0xe000ed00 - -080013fc : - 80013fc: 480d ldr r0, [pc, #52] @ (8001434 ) - 80013fe: 4685 mov sp, r0 - 8001400: f7ff fff2 bl 80013e8 - 8001404: 480c ldr r0, [pc, #48] @ (8001438 ) - 8001406: 490d ldr r1, [pc, #52] @ (800143c ) - 8001408: 4a0d ldr r2, [pc, #52] @ (8001440 ) - 800140a: 2300 movs r3, #0 - 800140c: e002 b.n 8001414 - -0800140e : - 800140e: 58d4 ldr r4, [r2, r3] - 8001410: 50c4 str r4, [r0, r3] - 8001412: 3304 adds r3, #4 - -08001414 : - 8001414: 18c4 adds r4, r0, r3 - 8001416: 428c cmp r4, r1 - 8001418: d3f9 bcc.n 800140e - 800141a: 4a0a ldr r2, [pc, #40] @ (8001444 ) - 800141c: 4c0a ldr r4, [pc, #40] @ (8001448 ) - 800141e: 2300 movs r3, #0 - 8001420: e001 b.n 8001426 - -08001422 : - 8001422: 6013 str r3, [r2, #0] - 8001424: 3204 adds r2, #4 - -08001426 : - 8001426: 42a2 cmp r2, r4 - 8001428: d3fb bcc.n 8001422 - 800142a: f009 fa61 bl 800a8f0 <__libc_init_array> - 800142e: f7ff fc19 bl 8000c64
- -08001432 : - 8001432: e7fe b.n 8001432 - 8001434: 20030000 .word 0x20030000 - 8001438: 20000000 .word 0x20000000 - 800143c: 20000084 .word 0x20000084 - 8001440: 0800d93c .word 0x0800d93c - 8001444: 20000084 .word 0x20000084 - 8001448: 20018d6c .word 0x20018d6c - -0800144c : - 800144c: e7fe b.n 800144c - -0800144e : - 800144e: b530 push {r4, r5, lr} - 8001450: b170 cbz r0, 8001470 - 8001452: 68cc ldr r4, [r1, #12] - 8001454: b164 cbz r4, 8001470 - 8001456: 688a ldr r2, [r1, #8] - 8001458: b152 cbz r2, 8001470 - 800145a: 690b ldr r3, [r1, #16] - 800145c: b143 cbz r3, 8001470 - 800145e: 680d ldr r5, [r1, #0] - 8001460: 6849 ldr r1, [r1, #4] - 8001462: 6085 str r5, [r0, #8] - 8001464: e9c0 2404 strd r2, r4, [r0, #16] - 8001468: 60c1 str r1, [r0, #12] - 800146a: 6183 str r3, [r0, #24] - 800146c: 2000 movs r0, #0 - 800146e: bd30 pop {r4, r5, pc} - 8001470: f04f 30ff mov.w r0, #4294967295 - 8001474: e7fb b.n 800146e - -08001476 : - 8001476: b573 push {r0, r1, r4, r5, r6, lr} - 8001478: 6846 ldr r6, [r0, #4] - 800147a: 2300 movs r3, #0 - 800147c: 4604 mov r4, r0 - 800147e: 9301 str r3, [sp, #4] - 8001480: b176 cbz r6, 80014a0 - 8001482: 69a3 ldr r3, [r4, #24] - 8001484: 4798 blx r3 - 8001486: 4605 mov r5, r0 - 8001488: 69a3 ldr r3, [r4, #24] - 800148a: 4798 blx r3 - 800148c: 1b43 subs r3, r0, r5 - 800148e: f5b3 6ffa cmp.w r3, #2000 @ 0x7d0 - 8001492: d9f9 bls.n 8001488 - 8001494: 2301 movs r3, #1 - 8001496: 6063 str r3, [r4, #4] - 8001498: 2500 movs r5, #0 - 800149a: 4628 mov r0, r5 - 800149c: b002 add sp, #8 - 800149e: bd70 pop {r4, r5, r6, pc} - 80014a0: 6883 ldr r3, [r0, #8] - 80014a2: b103 cbz r3, 80014a6 - 80014a4: 4798 blx r3 - 80014a6: 2320 movs r3, #32 - 80014a8: 6023 str r3, [r4, #0] - 80014aa: 2500 movs r5, #0 - 80014ac: 6963 ldr r3, [r4, #20] - 80014ae: aa01 add r2, sp, #4 - 80014b0: 2119 movs r1, #25 - 80014b2: 4630 mov r0, r6 - 80014b4: 4798 blx r3 - 80014b6: 2800 cmp r0, #0 - 80014b8: db2f blt.n 800151a - 80014ba: 9b01 ldr r3, [sp, #4] - 80014bc: f003 031f and.w r3, r3, #31 - 80014c0: 42b3 cmp r3, r6 - 80014c2: d12c bne.n 800151e - 80014c4: 6026 str r6, [r4, #0] - 80014c6: 2500 movs r5, #0 - 80014c8: 6820 ldr r0, [r4, #0] - 80014ca: 281f cmp r0, #31 - 80014cc: d82b bhi.n 8001526 - 80014ce: 2d00 cmp r5, #0 - 80014d0: d1e3 bne.n 800149a - 80014d2: 6923 ldr r3, [r4, #16] - 80014d4: f44f 4200 mov.w r2, #32768 @ 0x8000 - 80014d8: 4629 mov r1, r5 - 80014da: 4798 blx r3 - 80014dc: 2800 cmp r0, #0 - 80014de: db25 blt.n 800152c - 80014e0: 6963 ldr r3, [r4, #20] - 80014e2: 6820 ldr r0, [r4, #0] - 80014e4: aa01 add r2, sp, #4 - 80014e6: 4629 mov r1, r5 - 80014e8: 4798 blx r3 - 80014ea: 2800 cmp r0, #0 - 80014ec: db12 blt.n 8001514 - 80014ee: 69a3 ldr r3, [r4, #24] - 80014f0: 4798 blx r3 - 80014f2: 4605 mov r5, r0 - 80014f4: 9b01 ldr r3, [sp, #4] - 80014f6: 041b lsls r3, r3, #16 - 80014f8: d5c3 bpl.n 8001482 - 80014fa: 69a3 ldr r3, [r4, #24] - 80014fc: 4798 blx r3 - 80014fe: 1b40 subs r0, r0, r5 - 8001500: f5b0 7ffa cmp.w r0, #500 @ 0x1f4 - 8001504: d815 bhi.n 8001532 - 8001506: 6963 ldr r3, [r4, #20] - 8001508: 6820 ldr r0, [r4, #0] - 800150a: aa01 add r2, sp, #4 - 800150c: 2100 movs r1, #0 - 800150e: 4798 blx r3 - 8001510: 2800 cmp r0, #0 - 8001512: daef bge.n 80014f4 - 8001514: f06f 0504 mvn.w r5, #4 - 8001518: e7bf b.n 800149a - 800151a: f06f 0504 mvn.w r5, #4 - 800151e: 3601 adds r6, #1 - 8001520: 2e20 cmp r6, #32 - 8001522: d1c3 bne.n 80014ac - 8001524: e7d0 b.n 80014c8 - 8001526: f06f 0502 mvn.w r5, #2 - 800152a: e7b6 b.n 800149a - 800152c: f06f 0503 mvn.w r5, #3 - 8001530: e7b3 b.n 800149a - 8001532: f06f 0501 mvn.w r5, #1 - 8001536: e7b0 b.n 800149a - -08001538 : - 8001538: b537 push {r0, r1, r2, r4, r5, lr} - 800153a: 2500 movs r5, #0 - 800153c: 6943 ldr r3, [r0, #20] - 800153e: 9501 str r5, [sp, #4] - 8001540: 4604 mov r4, r0 - 8001542: aa01 add r2, sp, #4 - 8001544: 6800 ldr r0, [r0, #0] - 8001546: 2101 movs r1, #1 - 8001548: 4798 blx r3 - 800154a: 42a8 cmp r0, r5 - 800154c: da03 bge.n 8001556 - 800154e: f06f 0004 mvn.w r0, #4 - 8001552: b003 add sp, #12 - 8001554: bd30 pop {r4, r5, pc} - 8001556: 6963 ldr r3, [r4, #20] - 8001558: 6820 ldr r0, [r4, #0] - 800155a: aa01 add r2, sp, #4 - 800155c: 2101 movs r1, #1 - 800155e: 4798 blx r3 - 8001560: 2800 cmp r0, #0 - 8001562: dbf4 blt.n 800154e - 8001564: 9b01 ldr r3, [sp, #4] - 8001566: 075b lsls r3, r3, #29 - 8001568: d52c bpl.n 80015c4 - 800156a: 6963 ldr r3, [r4, #20] - 800156c: 6820 ldr r0, [r4, #0] - 800156e: aa01 add r2, sp, #4 - 8001570: 4629 mov r1, r5 - 8001572: 4798 blx r3 - 8001574: 2800 cmp r0, #0 - 8001576: dbea blt.n 800154e - 8001578: 9b01 ldr r3, [sp, #4] - 800157a: 04dd lsls r5, r3, #19 - 800157c: d40e bmi.n 800159c - 800157e: f403 5204 and.w r2, r3, #8448 @ 0x2100 - 8001582: f5b2 5f04 cmp.w r2, #8448 @ 0x2100 - 8001586: d101 bne.n 800158c - 8001588: 2002 movs r0, #2 - 800158a: e7e2 b.n 8001552 - 800158c: 0498 lsls r0, r3, #18 - 800158e: d501 bpl.n 8001594 - 8001590: 2003 movs r0, #3 - 8001592: e7de b.n 8001552 - 8001594: 05d9 lsls r1, r3, #23 - 8001596: d413 bmi.n 80015c0 - 8001598: 2005 movs r0, #5 - 800159a: e7da b.n 8001552 - 800159c: 6963 ldr r3, [r4, #20] - 800159e: 6820 ldr r0, [r4, #0] - 80015a0: aa01 add r2, sp, #4 - 80015a2: 2110 movs r1, #16 - 80015a4: 4798 blx r3 - 80015a6: 2800 cmp r0, #0 - 80015a8: dbd1 blt.n 800154e - 80015aa: 9b01 ldr r3, [sp, #4] - 80015ac: 05da lsls r2, r3, #23 - 80015ae: d50b bpl.n 80015c8 - 80015b0: f003 0306 and.w r3, r3, #6 - 80015b4: 2b04 cmp r3, #4 - 80015b6: d0e7 beq.n 8001588 - 80015b8: 2b00 cmp r3, #0 - 80015ba: d0e9 beq.n 8001590 - 80015bc: 2b06 cmp r3, #6 - 80015be: d1eb bne.n 8001598 - 80015c0: 2004 movs r0, #4 - 80015c2: e7c6 b.n 8001552 - 80015c4: 2001 movs r0, #1 - 80015c6: e7c4 b.n 8001552 - 80015c8: 2006 movs r0, #6 - 80015ca: e7c2 b.n 8001552 - -080015cc : - 80015cc: b538 push {r3, r4, r5, lr} - 80015ce: 4b0e ldr r3, [pc, #56] @ (8001608 ) - 80015d0: 781a ldrb r2, [r3, #0] - 80015d2: f44f 737a mov.w r3, #1000 @ 0x3e8 - 80015d6: fbb3 f3f2 udiv r3, r3, r2 - 80015da: 4a0c ldr r2, [pc, #48] @ (800160c ) - 80015dc: 4605 mov r5, r0 - 80015de: 6810 ldr r0, [r2, #0] - 80015e0: fbb0 f0f3 udiv r0, r0, r3 - 80015e4: f000 f8a8 bl 8001738 - 80015e8: 4604 mov r4, r0 - 80015ea: b958 cbnz r0, 8001604 - 80015ec: 2d0f cmp r5, #15 - 80015ee: d809 bhi.n 8001604 - 80015f0: 4602 mov r2, r0 - 80015f2: 4629 mov r1, r5 - 80015f4: f04f 30ff mov.w r0, #4294967295 - 80015f8: f000 f85e bl 80016b8 - 80015fc: 4b04 ldr r3, [pc, #16] @ (8001610 ) - 80015fe: 4620 mov r0, r4 - 8001600: 601d str r5, [r3, #0] - 8001602: bd38 pop {r3, r4, r5, pc} - 8001604: 2001 movs r0, #1 - 8001606: e7fc b.n 8001602 - 8001608: 20000004 .word 0x20000004 - 800160c: 20000000 .word 0x20000000 - 8001610: 20000008 .word 0x20000008 - -08001614 : - 8001614: b508 push {r3, lr} - 8001616: 4b0b ldr r3, [pc, #44] @ (8001644 ) - 8001618: 681a ldr r2, [r3, #0] - 800161a: f442 7200 orr.w r2, r2, #512 @ 0x200 - 800161e: 601a str r2, [r3, #0] - 8001620: 681a ldr r2, [r3, #0] - 8001622: f442 6280 orr.w r2, r2, #1024 @ 0x400 - 8001626: 601a str r2, [r3, #0] - 8001628: 681a ldr r2, [r3, #0] - 800162a: f442 7280 orr.w r2, r2, #256 @ 0x100 - 800162e: 601a str r2, [r3, #0] - 8001630: 2003 movs r0, #3 - 8001632: f000 f82f bl 8001694 - 8001636: 200f movs r0, #15 - 8001638: f7ff ffc8 bl 80015cc - 800163c: f7ff fe1a bl 8001274 - 8001640: 2000 movs r0, #0 - 8001642: bd08 pop {r3, pc} - 8001644: 40023c00 .word 0x40023c00 - -08001648 : - 8001648: 4a03 ldr r2, [pc, #12] @ (8001658 ) - 800164a: 4b04 ldr r3, [pc, #16] @ (800165c ) - 800164c: 6811 ldr r1, [r2, #0] - 800164e: 781b ldrb r3, [r3, #0] - 8001650: 440b add r3, r1 - 8001652: 6013 str r3, [r2, #0] - 8001654: 4770 bx lr - 8001656: bf00 nop - 8001658: 20000ef8 .word 0x20000ef8 - 800165c: 20000004 .word 0x20000004 - -08001660 : - 8001660: 4b01 ldr r3, [pc, #4] @ (8001668 ) - 8001662: 6818 ldr r0, [r3, #0] - 8001664: 4770 bx lr - 8001666: bf00 nop - 8001668: 20000ef8 .word 0x20000ef8 - -0800166c : - 800166c: b538 push {r3, r4, r5, lr} - 800166e: 4604 mov r4, r0 - 8001670: f7ff fff6 bl 8001660 - 8001674: 1c63 adds r3, r4, #1 - 8001676: bf1c itt ne - 8001678: 4b05 ldrne r3, [pc, #20] @ (8001690 ) - 800167a: 781b ldrbne r3, [r3, #0] - 800167c: 4605 mov r5, r0 - 800167e: bf18 it ne - 8001680: 18e4 addne r4, r4, r3 - 8001682: f7ff ffed bl 8001660 - 8001686: 1b43 subs r3, r0, r5 - 8001688: 42a3 cmp r3, r4 - 800168a: d3fa bcc.n 8001682 - 800168c: bd38 pop {r3, r4, r5, pc} - 800168e: bf00 nop - 8001690: 20000004 .word 0x20000004 - -08001694 : - 8001694: 4907 ldr r1, [pc, #28] @ (80016b4 ) - 8001696: 68ca ldr r2, [r1, #12] - 8001698: f422 62e0 bic.w r2, r2, #1792 @ 0x700 - 800169c: 0203 lsls r3, r0, #8 - 800169e: 0412 lsls r2, r2, #16 - 80016a0: f403 63e0 and.w r3, r3, #1792 @ 0x700 - 80016a4: 0c12 lsrs r2, r2, #16 - 80016a6: 4313 orrs r3, r2 - 80016a8: f043 63bf orr.w r3, r3, #100139008 @ 0x5f80000 - 80016ac: f443 3300 orr.w r3, r3, #131072 @ 0x20000 - 80016b0: 60cb str r3, [r1, #12] - 80016b2: 4770 bx lr - 80016b4: e000ed00 .word 0xe000ed00 - -080016b8 : - 80016b8: 4b16 ldr r3, [pc, #88] @ (8001714 ) - 80016ba: b530 push {r4, r5, lr} - 80016bc: 68dc ldr r4, [r3, #12] - 80016be: f3c4 2402 ubfx r4, r4, #8, #3 - 80016c2: f1c4 0307 rsb r3, r4, #7 - 80016c6: 1d25 adds r5, r4, #4 - 80016c8: 2b04 cmp r3, #4 - 80016ca: bf28 it cs - 80016cc: 2304 movcs r3, #4 - 80016ce: 2d06 cmp r5, #6 - 80016d0: f04f 35ff mov.w r5, #4294967295 - 80016d4: bf8c ite hi - 80016d6: 3c03 subhi r4, #3 - 80016d8: 2400 movls r4, #0 - 80016da: fa05 f303 lsl.w r3, r5, r3 - 80016de: ea21 0303 bic.w r3, r1, r3 - 80016e2: 40a5 lsls r5, r4 - 80016e4: ea22 0205 bic.w r2, r2, r5 - 80016e8: 40a3 lsls r3, r4 - 80016ea: 2800 cmp r0, #0 - 80016ec: ea43 0302 orr.w r3, r3, r2 - 80016f0: bfac ite ge - 80016f2: f100 4060 addge.w r0, r0, #3758096384 @ 0xe0000000 - 80016f6: 4a08 ldrlt r2, [pc, #32] @ (8001718 ) - 80016f8: ea4f 1303 mov.w r3, r3, lsl #4 - 80016fc: bfb8 it lt - 80016fe: f000 000f andlt.w r0, r0, #15 - 8001702: b2db uxtb r3, r3 - 8001704: bfaa itet ge - 8001706: f500 4061 addge.w r0, r0, #57600 @ 0xe100 - 800170a: 5413 strblt r3, [r2, r0] - 800170c: f880 3300 strbge.w r3, [r0, #768] @ 0x300 - 8001710: bd30 pop {r4, r5, pc} - 8001712: bf00 nop - 8001714: e000ed00 .word 0xe000ed00 - 8001718: e000ed14 .word 0xe000ed14 - -0800171c : - 800171c: 2800 cmp r0, #0 - 800171e: db07 blt.n 8001730 - 8001720: 0941 lsrs r1, r0, #5 - 8001722: 4a04 ldr r2, [pc, #16] @ (8001734 ) - 8001724: f000 001f and.w r0, r0, #31 - 8001728: 2301 movs r3, #1 - 800172a: 4083 lsls r3, r0 - 800172c: f842 3021 str.w r3, [r2, r1, lsl #2] - 8001730: 4770 bx lr - 8001732: bf00 nop - 8001734: e000e100 .word 0xe000e100 - -08001738 : - 8001738: 3801 subs r0, #1 - 800173a: f1b0 7f80 cmp.w r0, #16777216 @ 0x1000000 - 800173e: d20b bcs.n 8001758 - 8001740: f04f 23e0 mov.w r3, #3758153728 @ 0xe000e000 - 8001744: 4a05 ldr r2, [pc, #20] @ (800175c ) - 8001746: 6158 str r0, [r3, #20] - 8001748: 21f0 movs r1, #240 @ 0xf0 - 800174a: f882 1023 strb.w r1, [r2, #35] @ 0x23 - 800174e: 2000 movs r0, #0 - 8001750: 2207 movs r2, #7 - 8001752: 6198 str r0, [r3, #24] - 8001754: 611a str r2, [r3, #16] - 8001756: 4770 bx lr - 8001758: 2001 movs r0, #1 - 800175a: 4770 bx lr - 800175c: e000ed00 .word 0xe000ed00 - -08001760 : - 8001760: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} - 8001764: 6a86 ldr r6, [r0, #40] @ 0x28 - 8001766: 688c ldr r4, [r1, #8] - 8001768: eb00 0c86 add.w ip, r0, r6, lsl #2 - 800176c: 4691 mov r9, r2 - 800176e: f8dc 3018 ldr.w r3, [ip, #24] - 8001772: 681d ldr r5, [r3, #0] - 8001774: 2d00 cmp r5, #0 - 8001776: da02 bge.n 800177e - 8001778: 2002 movs r0, #2 - 800177a: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} - 800177e: f8dc 502c ldr.w r5, [ip, #44] @ 0x2c - 8001782: 2d00 cmp r5, #0 - 8001784: d1f8 bne.n 8001778 - 8001786: 6825 ldr r5, [r4, #0] - 8001788: 609d str r5, [r3, #8] - 800178a: 685d ldr r5, [r3, #4] - 800178c: 6867 ldr r7, [r4, #4] - 800178e: f425 55ff bic.w r5, r5, #8160 @ 0x1fe0 - 8001792: f025 051f bic.w r5, r5, #31 - 8001796: 433d orrs r5, r7 - 8001798: 680f ldr r7, [r1, #0] - 800179a: 605d str r5, [r3, #4] - 800179c: 07fa lsls r2, r7, #31 - 800179e: d505 bpl.n 80017ac - 80017a0: 681d ldr r5, [r3, #0] - 80017a2: 694a ldr r2, [r1, #20] - 80017a4: f425 0540 bic.w r5, r5, #12582912 @ 0xc00000 - 80017a8: 4315 orrs r5, r2 - 80017aa: 601d str r5, [r3, #0] - 80017ac: 06bd lsls r5, r7, #26 - 80017ae: d505 bpl.n 80017bc - 80017b0: 681d ldr r5, [r3, #0] - 80017b2: 6909 ldr r1, [r1, #16] - 80017b4: f025 6540 bic.w r5, r5, #201326592 @ 0xc000000 - 80017b8: 4329 orrs r1, r5 - 80017ba: 6019 str r1, [r3, #0] - 80017bc: 077a lsls r2, r7, #29 - 80017be: bf42 ittt mi - 80017c0: 6819 ldrmi r1, [r3, #0] - 80017c2: f041 0180 orrmi.w r1, r1, #128 @ 0x80 - 80017c6: 6019 strmi r1, [r3, #0] - 80017c8: 6819 ldr r1, [r3, #0] - 80017ca: f041 5180 orr.w r1, r1, #268435456 @ 0x10000000 - 80017ce: 6019 str r1, [r3, #0] - 80017d0: f3bf 8f5f dmb sy - 80017d4: 6819 ldr r1, [r3, #0] - 80017d6: f8df 80d4 ldr.w r8, [pc, #212] @ 80018ac - 80017da: f041 4100 orr.w r1, r1, #2147483648 @ 0x80000000 - 80017de: 6019 str r1, [r3, #0] - 80017e0: 2500 movs r5, #0 - 80017e2: 4631 mov r1, r6 - 80017e4: 68a4 ldr r4, [r4, #8] - 80017e6: f105 0e01 add.w lr, r5, #1 - 80017ea: b9bc cbnz r4, 800181c - 80017ec: 681a ldr r2, [r3, #0] - 80017ee: f1b9 0f00 cmp.w r9, #0 - 80017f2: d058 beq.n 80018a6 - 80017f4: f042 4280 orr.w r2, r2, #1073741824 @ 0x40000000 - 80017f8: 601a str r2, [r3, #0] - 80017fa: 681a ldr r2, [r3, #0] - 80017fc: f042 5200 orr.w r2, r2, #536870912 @ 0x20000000 - 8001800: 601a str r2, [r3, #0] - 8001802: eb00 0381 add.w r3, r0, r1, lsl #2 - 8001806: 6bc2 ldr r2, [r0, #60] @ 0x3c - 8001808: 62da str r2, [r3, #44] @ 0x2c - 800180a: 6281 str r1, [r0, #40] @ 0x28 - 800180c: b672 cpsid i - 800180e: 6c03 ldr r3, [r0, #64] @ 0x40 - 8001810: 3301 adds r3, #1 - 8001812: 442b add r3, r5 - 8001814: 6403 str r3, [r0, #64] @ 0x40 - 8001816: b662 cpsie i - 8001818: 2000 movs r0, #0 - 800181a: e7ae b.n 800177a - 800181c: 681d ldr r5, [r3, #0] - 800181e: f025 5500 bic.w r5, r5, #536870912 @ 0x20000000 - 8001822: 601d str r5, [r3, #0] - 8001824: 681d ldr r5, [r3, #0] - 8001826: f1b9 0f00 cmp.w r9, #0 - 800182a: d025 beq.n 8001878 - 800182c: f045 4580 orr.w r5, r5, #1073741824 @ 0x40000000 - 8001830: 1c4f adds r7, r1, #1 - 8001832: 2f03 cmp r7, #3 - 8001834: bf88 it hi - 8001836: 1ecf subhi r7, r1, #3 - 8001838: 601d str r5, [r3, #0] - 800183a: eb00 0587 add.w r5, r0, r7, lsl #2 - 800183e: 69ab ldr r3, [r5, #24] - 8001840: 6819 ldr r1, [r3, #0] - 8001842: f021 5180 bic.w r1, r1, #268435456 @ 0x10000000 - 8001846: 6019 str r1, [r3, #0] - 8001848: 6819 ldr r1, [r3, #0] - 800184a: 2900 cmp r1, #0 - 800184c: da17 bge.n 800187e - 800184e: f8dc 1018 ldr.w r1, [ip, #24] - 8001852: 2200 movs r2, #0 - 8001854: 4572 cmp r2, lr - 8001856: d08f beq.n 8001778 - 8001858: f3bf 8f5f dmb sy - 800185c: 680b ldr r3, [r1, #0] - 800185e: f023 4300 bic.w r3, r3, #2147483648 @ 0x80000000 - 8001862: 600b str r3, [r1, #0] - 8001864: 1c73 adds r3, r6, #1 - 8001866: 2b03 cmp r3, #3 - 8001868: bf88 it hi - 800186a: 1ef3 subhi r3, r6, #3 - 800186c: eb00 0183 add.w r1, r0, r3, lsl #2 - 8001870: 3201 adds r2, #1 - 8001872: 6989 ldr r1, [r1, #24] - 8001874: 461e mov r6, r3 - 8001876: e7ed b.n 8001854 - 8001878: f025 4580 bic.w r5, r5, #1073741824 @ 0x40000000 - 800187c: e7d8 b.n 8001830 - 800187e: 6ae9 ldr r1, [r5, #44] @ 0x2c - 8001880: 2900 cmp r1, #0 - 8001882: d1e4 bne.n 800184e - 8001884: 6821 ldr r1, [r4, #0] - 8001886: 6099 str r1, [r3, #8] - 8001888: 6859 ldr r1, [r3, #4] - 800188a: 6865 ldr r5, [r4, #4] - 800188c: ea01 0108 and.w r1, r1, r8 - 8001890: 4329 orrs r1, r5 - 8001892: 6059 str r1, [r3, #4] - 8001894: f3bf 8f5f dmb sy - 8001898: 6819 ldr r1, [r3, #0] - 800189a: f041 4100 orr.w r1, r1, #2147483648 @ 0x80000000 - 800189e: 6019 str r1, [r3, #0] - 80018a0: 4675 mov r5, lr - 80018a2: 4639 mov r1, r7 - 80018a4: e79e b.n 80017e4 - 80018a6: f022 4280 bic.w r2, r2, #1073741824 @ 0x40000000 - 80018aa: e7a5 b.n 80017f8 - 80018ac: ffffe000 .word 0xffffe000 - -080018b0 : - 80018b0: b570 push {r4, r5, r6, lr} - 80018b2: 688b ldr r3, [r1, #8] - 80018b4: 6802 ldr r2, [r0, #0] - 80018b6: 460d mov r5, r1 - 80018b8: 6949 ldr r1, [r1, #20] - 80018ba: 430b orrs r3, r1 - 80018bc: 69a9 ldr r1, [r5, #24] - 80018be: 430b orrs r3, r1 - 80018c0: 6a69 ldr r1, [r5, #36] @ 0x24 - 80018c2: 430b orrs r3, r1 - 80018c4: 7fe9 ldrb r1, [r5, #31] - 80018c6: ea43 4301 orr.w r3, r3, r1, lsl #16 - 80018ca: 7f29 ldrb r1, [r5, #28] - 80018cc: ea43 3301 orr.w r3, r3, r1, lsl #12 - 80018d0: 7929 ldrb r1, [r5, #4] - 80018d2: ea43 2381 orr.w r3, r3, r1, lsl #10 - 80018d6: 7be9 ldrb r1, [r5, #15] - 80018d8: ea43 13c1 orr.w r3, r3, r1, lsl #7 - 80018dc: f895 1028 ldrb.w r1, [r5, #40] @ 0x28 - 80018e0: 4604 mov r4, r0 - 80018e2: ea43 1301 orr.w r3, r3, r1, lsl #4 - 80018e6: 6810 ldr r0, [r2, #0] - 80018e8: 4929 ldr r1, [pc, #164] @ (8001990 ) - 80018ea: 4001 ands r1, r0 - 80018ec: 430b orrs r3, r1 - 80018ee: 7c29 ldrb r1, [r5, #16] - 80018f0: fab1 f181 clz r1, r1 - 80018f4: 0949 lsrs r1, r1, #5 - 80018f6: ea43 53c1 orr.w r3, r3, r1, lsl #23 - 80018fa: 7c69 ldrb r1, [r5, #17] - 80018fc: fab1 f181 clz r1, r1 - 8001900: 0949 lsrs r1, r1, #5 - 8001902: ea43 5381 orr.w r3, r3, r1, lsl #22 - 8001906: 7fa9 ldrb r1, [r5, #30] - 8001908: fab1 f181 clz r1, r1 - 800190c: 0949 lsrs r1, r1, #5 - 800190e: ea43 3341 orr.w r3, r3, r1, lsl #13 - 8001912: f895 1020 ldrb.w r1, [r5, #32] - 8001916: fab1 f181 clz r1, r1 - 800191a: 0949 lsrs r1, r1, #5 - 800191c: ea43 2341 orr.w r3, r3, r1, lsl #9 - 8001920: 6013 str r3, [r2, #0] - 8001922: 2001 movs r0, #1 - 8001924: 6816 ldr r6, [r2, #0] - 8001926: f7ff fea1 bl 800166c - 800192a: 6821 ldr r1, [r4, #0] - 800192c: 6ca8 ldr r0, [r5, #72] @ 0x48 - 800192e: 600e str r6, [r1, #0] - 8001930: 698a ldr r2, [r1, #24] - 8001932: 6d2b ldr r3, [r5, #80] @ 0x50 - 8001934: f022 02be bic.w r2, r2, #190 @ 0xbe - 8001938: 0412 lsls r2, r2, #16 - 800193a: ea43 4300 orr.w r3, r3, r0, lsl #16 - 800193e: 0c12 lsrs r2, r2, #16 - 8001940: 4313 orrs r3, r2 - 8001942: f895 204c ldrb.w r2, [r5, #76] @ 0x4c - 8001946: fab2 f282 clz r2, r2 - 800194a: 0952 lsrs r2, r2, #5 - 800194c: ea43 13c2 orr.w r3, r3, r2, lsl #7 - 8001950: f895 2055 ldrb.w r2, [r5, #85] @ 0x55 - 8001954: 1e50 subs r0, r2, #1 - 8001956: 4242 negs r2, r0 - 8001958: 4142 adcs r2, r0 - 800195a: ea43 03c2 orr.w r3, r3, r2, lsl #3 - 800195e: f895 2056 ldrb.w r2, [r5, #86] @ 0x56 - 8001962: 1e56 subs r6, r2, #1 - 8001964: 4272 negs r2, r6 - 8001966: 4172 adcs r2, r6 - 8001968: ea43 0382 orr.w r3, r3, r2, lsl #2 - 800196c: f895 2054 ldrb.w r2, [r5, #84] @ 0x54 - 8001970: f102 3cff add.w ip, r2, #4294967295 - 8001974: f1dc 0200 rsbs r2, ip, #0 - 8001978: eb42 020c adc.w r2, r2, ip - 800197c: ea43 0342 orr.w r3, r3, r2, lsl #1 - 8001980: 618b str r3, [r1, #24] - 8001982: 2001 movs r0, #1 - 8001984: 698d ldr r5, [r1, #24] - 8001986: f7ff fe71 bl 800166c - 800198a: 6823 ldr r3, [r4, #0] - 800198c: 619d str r5, [r3, #24] - 800198e: bd70 pop {r4, r5, r6, pc} - 8001990: ff20810f .word 0xff20810f - -08001994 : - 8001994: b570 push {r4, r5, r6, lr} - 8001996: 694b ldr r3, [r1, #20] - 8001998: 6802 ldr r2, [r0, #0] - 800199a: 460d mov r5, r1 - 800199c: 6a09 ldr r1, [r1, #32] - 800199e: 430b orrs r3, r1 - 80019a0: 7b69 ldrb r1, [r5, #13] - 80019a2: ea43 6341 orr.w r3, r3, r1, lsl #25 - 80019a6: 7ba9 ldrb r1, [r5, #14] - 80019a8: ea43 5341 orr.w r3, r3, r1, lsl #21 - 80019ac: 7f29 ldrb r1, [r5, #28] - 80019ae: ea43 13c1 orr.w r3, r3, r1, lsl #7 - 80019b2: 7fa9 ldrb r1, [r5, #30] - 80019b4: f502 5280 add.w r2, r2, #4096 @ 0x1000 - 80019b8: ea43 1381 orr.w r3, r3, r1, lsl #6 - 80019bc: f895 1024 ldrb.w r1, [r5, #36] @ 0x24 - 80019c0: 4604 mov r4, r0 - 80019c2: ea43 0381 orr.w r3, r3, r1, lsl #2 - 80019c6: 6990 ldr r0, [r2, #24] - 80019c8: 491a ldr r1, [pc, #104] @ (8001a34 ) - 80019ca: 4001 ands r1, r0 - 80019cc: 430b orrs r3, r1 - 80019ce: 7b29 ldrb r1, [r5, #12] - 80019d0: fab1 f181 clz r1, r1 - 80019d4: 0949 lsrs r1, r1, #5 - 80019d6: ea43 6381 orr.w r3, r3, r1, lsl #26 - 80019da: 7f69 ldrb r1, [r5, #29] - 80019dc: fab1 f181 clz r1, r1 - 80019e0: 0949 lsrs r1, r1, #5 - 80019e2: ea43 5301 orr.w r3, r3, r1, lsl #20 - 80019e6: 6193 str r3, [r2, #24] - 80019e8: 2001 movs r0, #1 - 80019ea: 6996 ldr r6, [r2, #24] - 80019ec: f7ff fe3e bl 800166c - 80019f0: 6822 ldr r2, [r4, #0] - 80019f2: 69a9 ldr r1, [r5, #24] - 80019f4: 68ab ldr r3, [r5, #8] - 80019f6: f502 5280 add.w r2, r2, #4096 @ 0x1000 - 80019fa: 430b orrs r3, r1 - 80019fc: 6196 str r6, [r2, #24] - 80019fe: f895 1025 ldrb.w r1, [r5, #37] @ 0x25 - 8001a02: ea43 13c1 orr.w r3, r3, r1, lsl #7 - 8001a06: 6929 ldr r1, [r5, #16] - 8001a08: 430b orrs r3, r1 - 8001a0a: 6829 ldr r1, [r5, #0] - 8001a0c: 430b orrs r3, r1 - 8001a0e: 6aa9 ldr r1, [r5, #40] @ 0x28 - 8001a10: ea43 0381 orr.w r3, r3, r1, lsl #2 - 8001a14: 7929 ldrb r1, [r5, #4] - 8001a16: ea43 6341 orr.w r3, r3, r1, lsl #25 - 8001a1a: f443 0300 orr.w r3, r3, #8388608 @ 0x800000 - 8001a1e: 6013 str r3, [r2, #0] - 8001a20: 2001 movs r0, #1 - 8001a22: 6815 ldr r5, [r2, #0] - 8001a24: f7ff fe22 bl 800166c - 8001a28: 6823 ldr r3, [r4, #0] - 8001a2a: f503 5380 add.w r3, r3, #4096 @ 0x1000 - 8001a2e: 601d str r5, [r3, #0] - 8001a30: bd70 pop {r4, r5, r6, pc} - 8001a32: bf00 nop - 8001a34: f8de3f23 .word 0xf8de3f23 - -08001a38 : - 8001a38: b513 push {r0, r1, r4, lr} - 8001a3a: 2300 movs r3, #0 - 8001a3c: 9301 str r3, [sp, #4] - 8001a3e: 6803 ldr r3, [r0, #0] - 8001a40: f503 5380 add.w r3, r3, #4096 @ 0x1000 - 8001a44: 4604 mov r4, r0 - 8001a46: 699a ldr r2, [r3, #24] - 8001a48: f442 1280 orr.w r2, r2, #1048576 @ 0x100000 - 8001a4c: 619a str r2, [r3, #24] - 8001a4e: 699b ldr r3, [r3, #24] - 8001a50: 9301 str r3, [sp, #4] - 8001a52: 2001 movs r0, #1 - 8001a54: f7ff fe0a bl 800166c - 8001a58: 6823 ldr r3, [r4, #0] - 8001a5a: 9a01 ldr r2, [sp, #4] - 8001a5c: f503 5380 add.w r3, r3, #4096 @ 0x1000 - 8001a60: 619a str r2, [r3, #24] - 8001a62: b002 add sp, #8 - 8001a64: bd10 pop {r4, pc} - ... - -08001a68 : - 8001a68: e92d 43f7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr} - 8001a6c: 6e87 ldr r7, [r0, #104] @ 0x68 - 8001a6e: 6ec6 ldr r6, [r0, #108] @ 0x6c - 8001a70: f8df 9070 ldr.w r9, [pc, #112] @ 8001ae4 - 8001a74: 2300 movs r3, #0 - 8001a76: 9301 str r3, [sp, #4] - 8001a78: f107 0312 add.w r3, r7, #18 - 8001a7c: 4604 mov r4, r0 - 8001a7e: f850 5023 ldr.w r5, [r0, r3, lsl #2] - 8001a82: f244 58f8 movw r8, #17912 @ 0x45f8 - 8001a86: b136 cbz r6, 8001a96 - 8001a88: 6a2b ldr r3, [r5, #32] - 8001a8a: b99b cbnz r3, 8001ab4 - 8001a8c: a801 add r0, sp, #4 - 8001a8e: f001 fdc7 bl 8003620 - 8001a92: 9b01 ldr r3, [sp, #4] - 8001a94: b963 cbnz r3, 8001ab0 - 8001a96: 6ee3 ldr r3, [r4, #108] @ 0x6c - 8001a98: 42b3 cmp r3, r6 - 8001a9a: d006 beq.n 8001aaa - 8001a9c: 6823 ldr r3, [r4, #0] - 8001a9e: f503 5380 add.w r3, r3, #4096 @ 0x1000 - 8001aa2: 2200 movs r2, #0 - 8001aa4: 609a str r2, [r3, #8] - 8001aa6: e9c4 761a strd r7, r6, [r4, #104] @ 0x68 - 8001aaa: b003 add sp, #12 - 8001aac: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} - 8001ab0: 622b str r3, [r5, #32] - 8001ab2: 60ab str r3, [r5, #8] - 8001ab4: 6da3 ldr r3, [r4, #88] @ 0x58 - 8001ab6: b993 cbnz r3, 8001ade - 8001ab8: f8c5 9004 str.w r9, [r5, #4] - 8001abc: f3bf 8f5f dmb sy - 8001ac0: 682b ldr r3, [r5, #0] - 8001ac2: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 - 8001ac6: 602b str r3, [r5, #0] - 8001ac8: 1c7b adds r3, r7, #1 - 8001aca: 2b03 cmp r3, #3 - 8001acc: bf88 it hi - 8001ace: 1efb subhi r3, r7, #3 - 8001ad0: f103 0212 add.w r2, r3, #18 - 8001ad4: 3e01 subs r6, #1 - 8001ad6: f854 5022 ldr.w r5, [r4, r2, lsl #2] - 8001ada: 461f mov r7, r3 - 8001adc: e7d3 b.n 8001a86 - 8001ade: f8c5 8004 str.w r8, [r5, #4] - 8001ae2: e7eb b.n 8001abc - 8001ae4: 800045f8 .word 0x800045f8 - -08001ae8 : - 8001ae8: b5f0 push {r4, r5, r6, r7, lr} - 8001aea: 4604 mov r4, r0 - 8001aec: b0a7 sub sp, #156 @ 0x9c - 8001aee: 2800 cmp r0, #0 - 8001af0: f000 80db beq.w 8001caa - 8001af4: f8d0 3084 ldr.w r3, [r0, #132] @ 0x84 - 8001af8: b923 cbnz r3, 8001b04 - 8001afa: 2323 movs r3, #35 @ 0x23 - 8001afc: f8c0 3084 str.w r3, [r0, #132] @ 0x84 - 8001b00: f001 fc36 bl 8003370 - 8001b04: 2300 movs r3, #0 - 8001b06: 9301 str r3, [sp, #4] - 8001b08: 4b69 ldr r3, [pc, #420] @ (8001cb0 ) - 8001b0a: 68a1 ldr r1, [r4, #8] - 8001b0c: 6c5a ldr r2, [r3, #68] @ 0x44 - 8001b0e: f442 4280 orr.w r2, r2, #16384 @ 0x4000 - 8001b12: 645a str r2, [r3, #68] @ 0x44 - 8001b14: 6c5b ldr r3, [r3, #68] @ 0x44 - 8001b16: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 8001b1a: 9301 str r3, [sp, #4] - 8001b1c: 9b01 ldr r3, [sp, #4] - 8001b1e: 4b65 ldr r3, [pc, #404] @ (8001cb4 ) - 8001b20: 685a ldr r2, [r3, #4] - 8001b22: f422 0200 bic.w r2, r2, #8388608 @ 0x800000 - 8001b26: 605a str r2, [r3, #4] - 8001b28: 685a ldr r2, [r3, #4] - 8001b2a: 430a orrs r2, r1 - 8001b2c: 605a str r2, [r3, #4] - 8001b2e: 685b ldr r3, [r3, #4] - 8001b30: 6823 ldr r3, [r4, #0] - 8001b32: f503 5380 add.w r3, r3, #4096 @ 0x1000 - 8001b36: 681a ldr r2, [r3, #0] - 8001b38: f042 0201 orr.w r2, r2, #1 - 8001b3c: 601a str r2, [r3, #0] - 8001b3e: f7ff fd8f bl 8001660 - 8001b42: 4606 mov r6, r0 - 8001b44: 6823 ldr r3, [r4, #0] - 8001b46: f503 5380 add.w r3, r3, #4096 @ 0x1000 - 8001b4a: 681d ldr r5, [r3, #0] - 8001b4c: f015 0501 ands.w r5, r5, #1 - 8001b50: f040 809e bne.w 8001c90 - 8001b54: 2601 movs r6, #1 - 8001b56: f44f 4280 mov.w r2, #16384 @ 0x4000 - 8001b5a: f240 1701 movw r7, #257 @ 0x101 - 8001b5e: f44f 6300 mov.w r3, #2048 @ 0x800 - 8001b62: a90d add r1, sp, #52 @ 0x34 - 8001b64: 4620 mov r0, r4 - 8001b66: e9cd 2312 strd r2, r3, [sp, #72] @ 0x48 - 8001b6a: f88d 6038 strb.w r6, [sp, #56] @ 0x38 - 8001b6e: f8ad 6052 strh.w r6, [sp, #82] @ 0x52 - 8001b72: 950f str r5, [sp, #60] @ 0x3c - 8001b74: f88d 5050 strb.w r5, [sp, #80] @ 0x50 - 8001b78: f88d 5054 strb.w r5, [sp, #84] @ 0x54 - 8001b7c: f88d 5043 strb.w r5, [sp, #67] @ 0x43 - 8001b80: f8ad 7044 strh.w r7, [sp, #68] @ 0x44 - 8001b84: 9516 str r5, [sp, #88] @ 0x58 - 8001b86: f88d 505c strb.w r5, [sp, #92] @ 0x5c - 8001b8a: 951f str r5, [sp, #124] @ 0x7c - 8001b8c: f88d 5080 strb.w r5, [sp, #128] @ 0x80 - 8001b90: 9521 str r5, [sp, #132] @ 0x84 - 8001b92: f8ad 5088 strh.w r5, [sp, #136] @ 0x88 - 8001b96: f88d 508a strb.w r5, [sp, #138] @ 0x8a - 8001b9a: f7ff fe89 bl 80018b0 - 8001b9e: f44f 3380 mov.w r3, #65536 @ 0x10000 - 8001ba2: 9304 str r3, [sp, #16] - 8001ba4: f44f 5300 mov.w r3, #8192 @ 0x2000 - 8001ba8: e9cd 3506 strd r3, r5, [sp, #24] - 8001bac: f44f 0380 mov.w r3, #4194304 @ 0x400000 - 8001bb0: 9308 str r3, [sp, #32] - 8001bb2: 4620 mov r0, r4 - 8001bb4: f44f 7380 mov.w r3, #256 @ 0x100 - 8001bb8: a902 add r1, sp, #8 - 8001bba: f88d 600c strb.w r6, [sp, #12] - 8001bbe: f88d 6016 strb.w r6, [sp, #22] - 8001bc2: f8ad 3024 strh.w r3, [sp, #36] @ 0x24 - 8001bc6: f8ad 7014 strh.w r7, [sp, #20] - 8001bca: f88d 5026 strb.w r5, [sp, #38] @ 0x26 - 8001bce: 950a str r5, [sp, #40] @ 0x28 - 8001bd0: f8ad 702c strh.w r7, [sp, #44] @ 0x2c - 8001bd4: 950c str r5, [sp, #48] @ 0x30 - 8001bd6: 9502 str r5, [sp, #8] - 8001bd8: f7ff fedc bl 8001994 - 8001bdc: 68e6 ldr r6, [r4, #12] - 8001bde: f104 0c14 add.w ip, r4, #20 - 8001be2: 4633 mov r3, r6 - 8001be4: 462a mov r2, r5 - 8001be6: 4628 mov r0, r5 - 8001be8: 6018 str r0, [r3, #0] - 8001bea: 6058 str r0, [r3, #4] - 8001bec: 6098 str r0, [r3, #8] - 8001bee: 60d8 str r0, [r3, #12] - 8001bf0: f84c 3f04 str.w r3, [ip, #4]! - 8001bf4: 681f ldr r7, [r3, #0] - 8001bf6: 4619 mov r1, r3 - 8001bf8: f447 1780 orr.w r7, r7, #1048576 @ 0x100000 - 8001bfc: f841 7b28 str.w r7, [r1], #40 - 8001c00: 2a03 cmp r2, #3 - 8001c02: bf14 ite ne - 8001c04: 60d9 strne r1, [r3, #12] - 8001c06: 60de streq r6, [r3, #12] - 8001c08: 681f ldr r7, [r3, #0] - 8001c0a: 3201 adds r2, #1 - 8001c0c: f447 0740 orr.w r7, r7, #12582912 @ 0xc00000 - 8001c10: 2a04 cmp r2, #4 - 8001c12: 601f str r7, [r3, #0] - 8001c14: 460b mov r3, r1 - 8001c16: d1e7 bne.n 8001be8 - 8001c18: 6821 ldr r1, [r4, #0] - 8001c1a: f501 5180 add.w r1, r1, #4096 @ 0x1000 - 8001c1e: 2200 movs r2, #0 - 8001c20: 62a2 str r2, [r4, #40] @ 0x28 - 8001c22: 610e str r6, [r1, #16] - 8001c24: 6926 ldr r6, [r4, #16] - 8001c26: f104 0744 add.w r7, r4, #68 @ 0x44 - 8001c2a: 4633 mov r3, r6 - 8001c2c: f04f 4c00 mov.w ip, #2147483648 @ 0x80000000 - 8001c30: f244 5ef8 movw lr, #17912 @ 0x45f8 - 8001c34: 601a str r2, [r3, #0] - 8001c36: 605a str r2, [r3, #4] - 8001c38: 609a str r2, [r3, #8] - 8001c3a: 60da str r2, [r3, #12] - 8001c3c: f8c3 c000 str.w ip, [r3] - 8001c40: f8c3 e004 str.w lr, [r3, #4] - 8001c44: 6858 ldr r0, [r3, #4] - 8001c46: f020 4000 bic.w r0, r0, #2147483648 @ 0x80000000 - 8001c4a: 6058 str r0, [r3, #4] - 8001c4c: 2d03 cmp r5, #3 - 8001c4e: f103 0028 add.w r0, r3, #40 @ 0x28 - 8001c52: f105 0501 add.w r5, r5, #1 - 8001c56: e9c3 2208 strd r2, r2, [r3, #32] - 8001c5a: f847 3f04 str.w r3, [r7, #4]! - 8001c5e: bf14 ite ne - 8001c60: 60d8 strne r0, [r3, #12] - 8001c62: 60de streq r6, [r3, #12] - 8001c64: 2d04 cmp r5, #4 - 8001c66: 4603 mov r3, r0 - 8001c68: d1e4 bne.n 8001c34 - 8001c6a: 2000 movs r0, #0 - 8001c6c: e9c4 0017 strd r0, r0, [r4, #92] @ 0x5c - 8001c70: e9c4 001a strd r0, r0, [r4, #104] @ 0x68 - 8001c74: 6862 ldr r2, [r4, #4] - 8001c76: 65a0 str r0, [r4, #88] @ 0x58 - 8001c78: 4b0f ldr r3, [pc, #60] @ (8001cb8 ) - 8001c7a: 60ce str r6, [r1, #12] - 8001c7c: 8891 ldrh r1, [r2, #4] - 8001c7e: 6419 str r1, [r3, #64] @ 0x40 - 8001c80: 6812 ldr r2, [r2, #0] - 8001c82: 645a str r2, [r3, #68] @ 0x44 - 8001c84: 2310 movs r3, #16 - 8001c86: f8c4 0088 str.w r0, [r4, #136] @ 0x88 - 8001c8a: f8c4 3084 str.w r3, [r4, #132] @ 0x84 - 8001c8e: e00d b.n 8001cac - 8001c90: f7ff fce6 bl 8001660 - 8001c94: 1b80 subs r0, r0, r6 - 8001c96: f5b0 7ffa cmp.w r0, #500 @ 0x1f4 - 8001c9a: f67f af53 bls.w 8001b44 - 8001c9e: 2304 movs r3, #4 - 8001ca0: f8c4 3088 str.w r3, [r4, #136] @ 0x88 - 8001ca4: 23e0 movs r3, #224 @ 0xe0 - 8001ca6: f8c4 3084 str.w r3, [r4, #132] @ 0x84 - 8001caa: 2001 movs r0, #1 - 8001cac: b027 add sp, #156 @ 0x9c - 8001cae: bdf0 pop {r4, r5, r6, r7, pc} - 8001cb0: 40023800 .word 0x40023800 - 8001cb4: 40013800 .word 0x40013800 - 8001cb8: 40028000 .word 0x40028000 - -08001cbc : - 8001cbc: f8d0 3084 ldr.w r3, [r0, #132] @ 0x84 - 8001cc0: 2b10 cmp r3, #16 - 8001cc2: b570 push {r4, r5, r6, lr} - 8001cc4: 4604 mov r4, r0 - 8001cc6: d12d bne.n 8001d24 - 8001cc8: 2304 movs r3, #4 - 8001cca: 2523 movs r5, #35 @ 0x23 - 8001ccc: 66c3 str r3, [r0, #108] @ 0x6c - 8001cce: f8c0 5084 str.w r5, [r0, #132] @ 0x84 - 8001cd2: f7ff fec9 bl 8001a68 - 8001cd6: 6823 ldr r3, [r4, #0] - 8001cd8: 681a ldr r2, [r3, #0] - 8001cda: f042 0208 orr.w r2, r2, #8 - 8001cde: 601a str r2, [r3, #0] - 8001ce0: 2001 movs r0, #1 - 8001ce2: 681e ldr r6, [r3, #0] - 8001ce4: f7ff fcc2 bl 800166c - 8001ce8: 6823 ldr r3, [r4, #0] - 8001cea: 601e str r6, [r3, #0] - 8001cec: 681a ldr r2, [r3, #0] - 8001cee: f042 0204 orr.w r2, r2, #4 - 8001cf2: 601a str r2, [r3, #0] - 8001cf4: 2001 movs r0, #1 - 8001cf6: 681e ldr r6, [r3, #0] - 8001cf8: f7ff fcb8 bl 800166c - 8001cfc: 6823 ldr r3, [r4, #0] - 8001cfe: 4620 mov r0, r4 - 8001d00: 601e str r6, [r3, #0] - 8001d02: f7ff fe99 bl 8001a38 - 8001d06: 6823 ldr r3, [r4, #0] - 8001d08: f503 5380 add.w r3, r3, #4096 @ 0x1000 - 8001d0c: 2000 movs r0, #0 - 8001d0e: 699a ldr r2, [r3, #24] - 8001d10: f442 5200 orr.w r2, r2, #8192 @ 0x2000 - 8001d14: 619a str r2, [r3, #24] - 8001d16: 699a ldr r2, [r3, #24] - 8001d18: f042 0202 orr.w r2, r2, #2 - 8001d1c: 619a str r2, [r3, #24] - 8001d1e: f8c4 5084 str.w r5, [r4, #132] @ 0x84 - 8001d22: bd70 pop {r4, r5, r6, pc} - 8001d24: 2001 movs r0, #1 - 8001d26: e7fc b.n 8001d22 - -08001d28 : - 8001d28: b538 push {r3, r4, r5, lr} - 8001d2a: f8d0 3084 ldr.w r3, [r0, #132] @ 0x84 - 8001d2e: 2b23 cmp r3, #35 @ 0x23 - 8001d30: 4604 mov r4, r0 - 8001d32: d129 bne.n 8001d88 - 8001d34: f8c0 3084 str.w r3, [r0, #132] @ 0x84 - 8001d38: 6803 ldr r3, [r0, #0] - 8001d3a: f503 5280 add.w r2, r3, #4096 @ 0x1000 - 8001d3e: 2001 movs r0, #1 - 8001d40: 6991 ldr r1, [r2, #24] - 8001d42: f421 5100 bic.w r1, r1, #8192 @ 0x2000 - 8001d46: 6191 str r1, [r2, #24] - 8001d48: 6991 ldr r1, [r2, #24] - 8001d4a: f021 0102 bic.w r1, r1, #2 - 8001d4e: 6191 str r1, [r2, #24] - 8001d50: 681a ldr r2, [r3, #0] - 8001d52: f022 0204 bic.w r2, r2, #4 - 8001d56: 601a str r2, [r3, #0] - 8001d58: 681d ldr r5, [r3, #0] - 8001d5a: f7ff fc87 bl 800166c - 8001d5e: 6823 ldr r3, [r4, #0] - 8001d60: 4620 mov r0, r4 - 8001d62: 601d str r5, [r3, #0] - 8001d64: f7ff fe68 bl 8001a38 - 8001d68: 6823 ldr r3, [r4, #0] - 8001d6a: 681a ldr r2, [r3, #0] - 8001d6c: f022 0208 bic.w r2, r2, #8 - 8001d70: 601a str r2, [r3, #0] - 8001d72: 2001 movs r0, #1 - 8001d74: 681d ldr r5, [r3, #0] - 8001d76: f7ff fc79 bl 800166c - 8001d7a: 6823 ldr r3, [r4, #0] - 8001d7c: 601d str r5, [r3, #0] - 8001d7e: 2310 movs r3, #16 - 8001d80: f8c4 3084 str.w r3, [r4, #132] @ 0x84 - 8001d84: 2000 movs r0, #0 - 8001d86: bd38 pop {r3, r4, r5, pc} - 8001d88: 2001 movs r0, #1 - 8001d8a: e7fc b.n 8001d86 - -08001d8c : - 8001d8c: b5f8 push {r3, r4, r5, r6, r7, lr} - 8001d8e: 4604 mov r4, r0 - 8001d90: 4615 mov r5, r2 - 8001d92: b939 cbnz r1, 8001da4 - 8001d94: f8d0 3088 ldr.w r3, [r0, #136] @ 0x88 - 8001d98: f043 0301 orr.w r3, r3, #1 - 8001d9c: f8c4 3088 str.w r3, [r4, #136] @ 0x88 - 8001da0: 2001 movs r0, #1 - 8001da2: bdf8 pop {r3, r4, r5, r6, r7, pc} - 8001da4: f8d0 3084 ldr.w r3, [r0, #132] @ 0x84 - 8001da8: 2b23 cmp r3, #35 @ 0x23 - 8001daa: d1f9 bne.n 8001da0 - 8001dac: 2200 movs r2, #0 - 8001dae: f7ff fcd7 bl 8001760 - 8001db2: b120 cbz r0, 8001dbe - 8001db4: f8d4 3088 ldr.w r3, [r4, #136] @ 0x88 - 8001db8: f043 0302 orr.w r3, r3, #2 - 8001dbc: e7ee b.n 8001d9c - 8001dbe: f3bf 8f4f dsb sy - 8001dc2: 6aa2 ldr r2, [r4, #40] @ 0x28 - 8001dc4: 1d93 adds r3, r2, #6 - 8001dc6: f854 7023 ldr.w r7, [r4, r3, lsl #2] - 8001dca: 1c53 adds r3, r2, #1 - 8001dcc: 2b03 cmp r3, #3 - 8001dce: bf88 it hi - 8001dd0: 1ed3 subhi r3, r2, #3 - 8001dd2: 6822 ldr r2, [r4, #0] - 8001dd4: 62a3 str r3, [r4, #40] @ 0x28 - 8001dd6: 3306 adds r3, #6 - 8001dd8: f502 5280 add.w r2, r2, #4096 @ 0x1000 - 8001ddc: f854 3023 ldr.w r3, [r4, r3, lsl #2] - 8001de0: 6053 str r3, [r2, #4] - 8001de2: f7ff fc3d bl 8001660 - 8001de6: 4606 mov r6, r0 - 8001de8: 683b ldr r3, [r7, #0] - 8001dea: 2b00 cmp r3, #0 - 8001dec: db01 blt.n 8001df2 - 8001dee: 2000 movs r0, #0 - 8001df0: e7d7 b.n 8001da2 - 8001df2: 6823 ldr r3, [r4, #0] - 8001df4: f503 5380 add.w r3, r3, #4096 @ 0x1000 - 8001df8: 695a ldr r2, [r3, #20] - 8001dfa: 0492 lsls r2, r2, #18 - 8001dfc: d509 bpl.n 8001e12 - 8001dfe: f8d4 2088 ldr.w r2, [r4, #136] @ 0x88 - 8001e02: f042 0208 orr.w r2, r2, #8 - 8001e06: f8c4 2088 str.w r2, [r4, #136] @ 0x88 - 8001e0a: 695b ldr r3, [r3, #20] - 8001e0c: f8c4 308c str.w r3, [r4, #140] @ 0x8c - 8001e10: e7c6 b.n 8001da0 - 8001e12: 1c6b adds r3, r5, #1 - 8001e14: d0e8 beq.n 8001de8 - 8001e16: f7ff fc23 bl 8001660 - 8001e1a: 1b80 subs r0, r0, r6 - 8001e1c: 42a8 cmp r0, r5 - 8001e1e: d801 bhi.n 8001e24 - 8001e20: 2d00 cmp r5, #0 - 8001e22: d1e1 bne.n 8001de8 - 8001e24: f8d4 3088 ldr.w r3, [r4, #136] @ 0x88 - 8001e28: f043 0304 orr.w r3, r3, #4 - 8001e2c: f8c4 3088 str.w r3, [r4, #136] @ 0x88 - 8001e30: f04f 5340 mov.w r3, #805306368 @ 0x30000000 - 8001e34: 603b str r3, [r7, #0] - 8001e36: e7b3 b.n 8001da0 - -08001e38 : - 8001e38: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8001e3c: 4604 mov r4, r0 - 8001e3e: b085 sub sp, #20 - 8001e40: 468a mov sl, r1 - 8001e42: b949 cbnz r1, 8001e58 - 8001e44: f8d0 3088 ldr.w r3, [r0, #136] @ 0x88 - 8001e48: f043 0301 orr.w r3, r3, #1 - 8001e4c: f8c0 3088 str.w r3, [r0, #136] @ 0x88 - 8001e50: 2001 movs r0, #1 - 8001e52: b005 add sp, #20 - 8001e54: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 8001e58: f8d0 3084 ldr.w r3, [r0, #132] @ 0x84 - 8001e5c: 2b23 cmp r3, #35 @ 0x23 - 8001e5e: d1f7 bne.n 8001e50 - 8001e60: f8d0 905c ldr.w r9, [r0, #92] @ 0x5c - 8001e64: f109 0312 add.w r3, r9, #18 - 8001e68: f04f 0800 mov.w r8, #0 - 8001e6c: f850 5023 ldr.w r5, [r0, r3, lsl #2] - 8001e70: 6ec3 ldr r3, [r0, #108] @ 0x6c - 8001e72: f1c3 0304 rsb r3, r3, #4 - 8001e76: f100 0180 add.w r1, r0, #128 @ 0x80 - 8001e7a: 9301 str r3, [sp, #4] - 8001e7c: 4646 mov r6, r8 - 8001e7e: 307c adds r0, #124 @ 0x7c - 8001e80: 46c3 mov fp, r8 - 8001e82: 682b ldr r3, [r5, #0] - 8001e84: 2b00 cmp r3, #0 - 8001e86: db05 blt.n 8001e94 - 8001e88: 9b01 ldr r3, [sp, #4] - 8001e8a: 429e cmp r6, r3 - 8001e8c: d002 beq.n 8001e94 - 8001e8e: f1b8 0f00 cmp.w r8, #0 - 8001e92: d011 beq.n 8001eb8 - 8001e94: 6ee3 ldr r3, [r4, #108] @ 0x6c - 8001e96: 441e add r6, r3 - 8001e98: 66e6 str r6, [r4, #108] @ 0x6c - 8001e9a: b116 cbz r6, 8001ea2 - 8001e9c: 4620 mov r0, r4 - 8001e9e: f7ff fde3 bl 8001a68 - 8001ea2: f8c4 905c str.w r9, [r4, #92] @ 0x5c - 8001ea6: f1b8 0f00 cmp.w r8, #0 - 8001eaa: d0d1 beq.n 8001e50 - 8001eac: 6fe3 ldr r3, [r4, #124] @ 0x7c - 8001eae: f8ca 3000 str.w r3, [sl] - 8001eb2: 2000 movs r0, #0 - 8001eb4: 67e0 str r0, [r4, #124] @ 0x7c - 8001eb6: e7cc b.n 8001e52 - 8001eb8: 682b ldr r3, [r5, #0] - 8001eba: 05db lsls r3, r3, #23 - 8001ebc: bf41 itttt mi - 8001ebe: 69ab ldrmi r3, [r5, #24] - 8001ec0: 67a3 strmi r3, [r4, #120] @ 0x78 - 8001ec2: 69eb ldrmi r3, [r5, #28] - 8001ec4: 6763 strmi r3, [r4, #116] @ 0x74 - 8001ec6: 682b ldr r3, [r5, #0] - 8001ec8: 059f lsls r7, r3, #22 - 8001eca: d401 bmi.n 8001ed0 - 8001ecc: 6fe3 ldr r3, [r4, #124] @ 0x7c - 8001ece: b30b cbz r3, 8001f14 - 8001ed0: 682b ldr r3, [r5, #0] - 8001ed2: 6967 ldr r7, [r4, #20] - 8001ed4: 059a lsls r2, r3, #22 - 8001ed6: 682b ldr r3, [r5, #0] - 8001ed8: bf48 it mi - 8001eda: e9c4 bb18 strdmi fp, fp, [r4, #96] @ 0x60 - 8001ede: 05db lsls r3, r3, #23 - 8001ee0: d507 bpl.n 8001ef2 - 8001ee2: 682f ldr r7, [r5, #0] - 8001ee4: 682b ldr r3, [r5, #0] - 8001ee6: 6723 str r3, [r4, #112] @ 0x70 - 8001ee8: f3c7 470d ubfx r7, r7, #16, #14 - 8001eec: 3f04 subs r7, #4 - 8001eee: f04f 0801 mov.w r8, #1 - 8001ef2: 68aa ldr r2, [r5, #8] - 8001ef4: 622a str r2, [r5, #32] - 8001ef6: b2bb uxth r3, r7 - 8001ef8: e9cd 0102 strd r0, r1, [sp, #8] - 8001efc: f001 fbb2 bl 8003664 - 8001f00: 6e23 ldr r3, [r4, #96] @ 0x60 - 8001f02: 3301 adds r3, #1 - 8001f04: 6623 str r3, [r4, #96] @ 0x60 - 8001f06: 6e63 ldr r3, [r4, #100] @ 0x64 - 8001f08: e9dd 0102 ldrd r0, r1, [sp, #8] - 8001f0c: 443b add r3, r7 - 8001f0e: 6663 str r3, [r4, #100] @ 0x64 - 8001f10: f8c5 b020 str.w fp, [r5, #32] - 8001f14: f109 0301 add.w r3, r9, #1 - 8001f18: 2b03 cmp r3, #3 - 8001f1a: bf88 it hi - 8001f1c: f1a9 0303 subhi.w r3, r9, #3 - 8001f20: f103 0212 add.w r2, r3, #18 - 8001f24: 3601 adds r6, #1 - 8001f26: f854 5022 ldr.w r5, [r4, r2, lsl #2] - 8001f2a: 4699 mov r9, r3 - 8001f2c: e7a9 b.n 8001e82 - -08001f2e : - 8001f2e: b5f8 push {r3, r4, r5, r6, r7, lr} - 8001f30: 4605 mov r5, r0 - 8001f32: 6800 ldr r0, [r0, #0] - 8001f34: 461e mov r6, r3 - 8001f36: 6903 ldr r3, [r0, #16] - 8001f38: 0192 lsls r2, r2, #6 - 8001f3a: f003 031c and.w r3, r3, #28 - 8001f3e: 02cc lsls r4, r1, #11 - 8001f40: f402 62f8 and.w r2, r2, #1984 @ 0x7c0 - 8001f44: 431a orrs r2, r3 - 8001f46: b2a4 uxth r4, r4 - 8001f48: 4314 orrs r4, r2 - 8001f4a: f044 0401 orr.w r4, r4, #1 - 8001f4e: 6104 str r4, [r0, #16] - 8001f50: f7ff fb86 bl 8001660 - 8001f54: 4607 mov r7, r0 - 8001f56: f014 0001 ands.w r0, r4, #1 - 8001f5a: d104 bne.n 8001f66 - 8001f5c: 682b ldr r3, [r5, #0] - 8001f5e: 695b ldr r3, [r3, #20] - 8001f60: b29b uxth r3, r3 - 8001f62: 6033 str r3, [r6, #0] - 8001f64: bdf8 pop {r3, r4, r5, r6, r7, pc} - 8001f66: f7ff fb7b bl 8001660 - 8001f6a: 1bc0 subs r0, r0, r7 - 8001f6c: f5b0 3f80 cmp.w r0, #65536 @ 0x10000 - 8001f70: d202 bcs.n 8001f78 - 8001f72: 682b ldr r3, [r5, #0] - 8001f74: 691c ldr r4, [r3, #16] - 8001f76: e7ee b.n 8001f56 - 8001f78: 2001 movs r0, #1 - 8001f7a: e7f3 b.n 8001f64 - -08001f7c : - 8001f7c: b570 push {r4, r5, r6, lr} - 8001f7e: 4605 mov r5, r0 - 8001f80: 6800 ldr r0, [r0, #0] - 8001f82: 6904 ldr r4, [r0, #16] - 8001f84: 0192 lsls r2, r2, #6 - 8001f86: f004 041c and.w r4, r4, #28 - 8001f8a: f402 62f8 and.w r2, r2, #1984 @ 0x7c0 - 8001f8e: 4322 orrs r2, r4 - 8001f90: 02cc lsls r4, r1, #11 - 8001f92: b2a4 uxth r4, r4 - 8001f94: 4314 orrs r4, r2 - 8001f96: b29b uxth r3, r3 - 8001f98: f044 0403 orr.w r4, r4, #3 - 8001f9c: 6143 str r3, [r0, #20] - 8001f9e: 6104 str r4, [r0, #16] - 8001fa0: f7ff fb5e bl 8001660 - 8001fa4: 4606 mov r6, r0 - 8001fa6: f014 0001 ands.w r0, r4, #1 - 8001faa: d100 bne.n 8001fae - 8001fac: bd70 pop {r4, r5, r6, pc} - 8001fae: f7ff fb57 bl 8001660 - 8001fb2: 1b80 subs r0, r0, r6 - 8001fb4: f5b0 3f80 cmp.w r0, #65536 @ 0x10000 - 8001fb8: d202 bcs.n 8001fc0 - 8001fba: 682b ldr r3, [r5, #0] - 8001fbc: 691c ldr r4, [r3, #16] - 8001fbe: e7f2 b.n 8001fa6 - 8001fc0: 2001 movs r0, #1 - 8001fc2: e7f3 b.n 8001fac - -08001fc4 : - 8001fc4: 2900 cmp r1, #0 - 8001fc6: d05d beq.n 8002084 - 8001fc8: 6803 ldr r3, [r0, #0] - 8001fca: 681a ldr r2, [r3, #0] - 8001fcc: f3c2 1200 ubfx r2, r2, #4, #1 - 8001fd0: f881 2028 strb.w r2, [r1, #40] @ 0x28 - 8001fd4: 681a ldr r2, [r3, #0] - 8001fd6: f002 0260 and.w r2, r2, #96 @ 0x60 - 8001fda: 624a str r2, [r1, #36] @ 0x24 - 8001fdc: 681a ldr r2, [r3, #0] - 8001fde: f482 7200 eor.w r2, r2, #512 @ 0x200 - 8001fe2: f3c2 2240 ubfx r2, r2, #9, #1 - 8001fe6: f881 2020 strb.w r2, [r1, #32] - 8001fea: 681a ldr r2, [r3, #0] - 8001fec: f3c2 4200 ubfx r2, r2, #16, #1 - 8001ff0: 77ca strb r2, [r1, #31] - 8001ff2: 681a ldr r2, [r3, #0] - 8001ff4: f482 5200 eor.w r2, r2, #8192 @ 0x2000 - 8001ff8: f3c2 3240 ubfx r2, r2, #13, #1 - 8001ffc: 778a strb r2, [r1, #30] - 8001ffe: 681a ldr r2, [r3, #0] - 8002000: f3c2 3200 ubfx r2, r2, #12, #1 - 8002004: 770a strb r2, [r1, #28] - 8002006: 681a ldr r2, [r3, #0] - 8002008: f402 6200 and.w r2, r2, #2048 @ 0x800 - 800200c: 618a str r2, [r1, #24] - 800200e: 681a ldr r2, [r3, #0] - 8002010: f402 4280 and.w r2, r2, #16384 @ 0x4000 - 8002014: 614a str r2, [r1, #20] - 8002016: 681a ldr r2, [r3, #0] - 8002018: f482 0280 eor.w r2, r2, #4194304 @ 0x400000 - 800201c: f3c2 5280 ubfx r2, r2, #22, #1 - 8002020: 744a strb r2, [r1, #17] - 8002022: 681a ldr r2, [r3, #0] - 8002024: f482 0200 eor.w r2, r2, #8388608 @ 0x800000 - 8002028: f3c2 52c0 ubfx r2, r2, #23, #1 - 800202c: 740a strb r2, [r1, #16] - 800202e: 681a ldr r2, [r3, #0] - 8002030: f3c2 12c0 ubfx r2, r2, #7, #1 - 8002034: 73ca strb r2, [r1, #15] - 8002036: 681a ldr r2, [r3, #0] - 8002038: f402 2260 and.w r2, r2, #917504 @ 0xe0000 - 800203c: 608a str r2, [r1, #8] - 800203e: 681a ldr r2, [r3, #0] - 8002040: f3c2 2280 ubfx r2, r2, #10, #1 - 8002044: 710a strb r2, [r1, #4] - 8002046: 699a ldr r2, [r3, #24] - 8002048: f3c2 0240 ubfx r2, r2, #1, #1 - 800204c: f881 2054 strb.w r2, [r1, #84] @ 0x54 - 8002050: 699a ldr r2, [r3, #24] - 8002052: f082 0280 eor.w r2, r2, #128 @ 0x80 - 8002056: f3c2 12c0 ubfx r2, r2, #7, #1 - 800205a: f881 204c strb.w r2, [r1, #76] @ 0x4c - 800205e: 699a ldr r2, [r3, #24] - 8002060: f002 0230 and.w r2, r2, #48 @ 0x30 - 8002064: 650a str r2, [r1, #80] @ 0x50 - 8002066: 699a ldr r2, [r3, #24] - 8002068: 0c12 lsrs r2, r2, #16 - 800206a: 648a str r2, [r1, #72] @ 0x48 - 800206c: 699a ldr r2, [r3, #24] - 800206e: f3c2 0280 ubfx r2, r2, #2, #1 - 8002072: f881 2056 strb.w r2, [r1, #86] @ 0x56 - 8002076: 699b ldr r3, [r3, #24] - 8002078: f3c3 03c0 ubfx r3, r3, #3, #1 - 800207c: f881 3055 strb.w r3, [r1, #85] @ 0x55 - 8002080: 2000 movs r0, #0 - 8002082: 4770 bx lr - 8002084: 2001 movs r0, #1 - 8002086: 4770 bx lr - -08002088 : - 8002088: b508 push {r3, lr} - 800208a: b139 cbz r1, 800209c - 800208c: f8d0 3084 ldr.w r3, [r0, #132] @ 0x84 - 8002090: 2b10 cmp r3, #16 - 8002092: d103 bne.n 800209c - 8002094: f7ff fc0c bl 80018b0 - 8002098: 2000 movs r0, #0 - 800209a: bd08 pop {r3, pc} - 800209c: 2001 movs r0, #1 - 800209e: e7fc b.n 800209a - -080020a0 : - 80020a0: b538 push {r3, r4, r5, lr} - 80020a2: 6803 ldr r3, [r0, #0] - 80020a4: 4605 mov r5, r0 - 80020a6: 691c ldr r4, [r3, #16] - 80020a8: f000 fd62 bl 8002b70 - 80020ac: 4b11 ldr r3, [pc, #68] @ (80020f4 ) - 80020ae: 4a12 ldr r2, [pc, #72] @ (80020f8 ) - 80020b0: 4403 add r3, r0 - 80020b2: 4293 cmp r3, r2 - 80020b4: f024 041c bic.w r4, r4, #28 - 80020b8: d204 bcs.n 80020c4 - 80020ba: f044 0408 orr.w r4, r4, #8 - 80020be: 682b ldr r3, [r5, #0] - 80020c0: 611c str r4, [r3, #16] - 80020c2: bd38 pop {r3, r4, r5, pc} - 80020c4: 4b0d ldr r3, [pc, #52] @ (80020fc ) - 80020c6: 4a0e ldr r2, [pc, #56] @ (8002100 ) - 80020c8: 4403 add r3, r0 - 80020ca: 4293 cmp r3, r2 - 80020cc: d802 bhi.n 80020d4 - 80020ce: f044 040c orr.w r4, r4, #12 - 80020d2: e7f4 b.n 80020be - 80020d4: 4b0b ldr r3, [pc, #44] @ (8002104 ) - 80020d6: 4a0c ldr r2, [pc, #48] @ (8002108 ) - 80020d8: 4403 add r3, r0 - 80020da: 4293 cmp r3, r2 - 80020dc: d3ef bcc.n 80020be - 80020de: 4b0b ldr r3, [pc, #44] @ (800210c ) - 80020e0: 4a0b ldr r2, [pc, #44] @ (8002110 ) - 80020e2: 4403 add r3, r0 - 80020e4: 4293 cmp r3, r2 - 80020e6: bf94 ite ls - 80020e8: f044 0404 orrls.w r4, r4, #4 - 80020ec: f044 0410 orrhi.w r4, r4, #16 - 80020f0: e7e5 b.n 80020be - 80020f2: bf00 nop - 80020f4: feced300 .word 0xfeced300 - 80020f8: 00e4e1c0 .word 0x00e4e1c0 - 80020fc: fde9f140 .word 0xfde9f140 - 8002100: 017d783f .word 0x017d783f - 8002104: fc6c7900 .word 0xfc6c7900 - 8002108: 02625a00 .word 0x02625a00 - 800210c: fa0a1f00 .word 0xfa0a1f00 - 8002110: 02faf07f .word 0x02faf07f - -08002114 : - 8002114: 4909 ldr r1, [pc, #36] @ (800213c ) - 8002116: b510 push {r4, lr} - 8002118: 690c ldr r4, [r1, #16] - 800211a: f424 7440 bic.w r4, r4, #768 @ 0x300 - 800211e: 610c str r4, [r1, #16] - 8002120: 690c ldr r4, [r1, #16] - 8002122: f444 7440 orr.w r4, r4, #768 @ 0x300 - 8002126: 610c str r4, [r1, #16] - 8002128: 690c ldr r4, [r1, #16] - 800212a: f044 0401 orr.w r4, r4, #1 - 800212e: 610c str r4, [r1, #16] - 8002130: 6002 str r2, [r0, #0] - 8002132: f3bf 8f6f isb sy - 8002136: 6043 str r3, [r0, #4] - 8002138: bd10 pop {r4, pc} - 800213a: bf00 nop - 800213c: 40023c00 .word 0x40023c00 - -08002140 : - 8002140: 4b07 ldr r3, [pc, #28] @ (8002160 ) - 8002142: 691a ldr r2, [r3, #16] - 8002144: f422 7240 bic.w r2, r2, #768 @ 0x300 - 8002148: 611a str r2, [r3, #16] - 800214a: 691a ldr r2, [r3, #16] - 800214c: f442 7200 orr.w r2, r2, #512 @ 0x200 - 8002150: 611a str r2, [r3, #16] - 8002152: 691a ldr r2, [r3, #16] - 8002154: f042 0201 orr.w r2, r2, #1 - 8002158: 611a str r2, [r3, #16] - 800215a: 6001 str r1, [r0, #0] - 800215c: 4770 bx lr - 800215e: bf00 nop - 8002160: 40023c00 .word 0x40023c00 - -08002164 : - 8002164: 4b07 ldr r3, [pc, #28] @ (8002184 ) - 8002166: 691a ldr r2, [r3, #16] - 8002168: f422 7240 bic.w r2, r2, #768 @ 0x300 - 800216c: 611a str r2, [r3, #16] - 800216e: 691a ldr r2, [r3, #16] - 8002170: f442 7280 orr.w r2, r2, #256 @ 0x100 - 8002174: 611a str r2, [r3, #16] - 8002176: 691a ldr r2, [r3, #16] - 8002178: f042 0201 orr.w r2, r2, #1 - 800217c: 611a str r2, [r3, #16] - 800217e: 8001 strh r1, [r0, #0] - 8002180: 4770 bx lr - 8002182: bf00 nop - 8002184: 40023c00 .word 0x40023c00 - -08002188 : - 8002188: 4b20 ldr r3, [pc, #128] @ (800220c ) - 800218a: 68da ldr r2, [r3, #12] - 800218c: 06d0 lsls r0, r2, #27 - 800218e: d506 bpl.n 800219e - 8002190: 491f ldr r1, [pc, #124] @ (8002210 ) - 8002192: 69ca ldr r2, [r1, #28] - 8002194: f042 0210 orr.w r2, r2, #16 - 8002198: 61ca str r2, [r1, #28] - 800219a: 2210 movs r2, #16 - 800219c: 60da str r2, [r3, #12] - 800219e: 68da ldr r2, [r3, #12] - 80021a0: 0691 lsls r1, r2, #26 - 80021a2: d506 bpl.n 80021b2 - 80021a4: 491a ldr r1, [pc, #104] @ (8002210 ) - 80021a6: 69ca ldr r2, [r1, #28] - 80021a8: f042 0208 orr.w r2, r2, #8 - 80021ac: 61ca str r2, [r1, #28] - 80021ae: 2220 movs r2, #32 - 80021b0: 60da str r2, [r3, #12] - 80021b2: 4b16 ldr r3, [pc, #88] @ (800220c ) - 80021b4: 68da ldr r2, [r3, #12] - 80021b6: 0652 lsls r2, r2, #25 - 80021b8: d506 bpl.n 80021c8 - 80021ba: 4915 ldr r1, [pc, #84] @ (8002210 ) - 80021bc: 69ca ldr r2, [r1, #28] - 80021be: f042 0204 orr.w r2, r2, #4 - 80021c2: 61ca str r2, [r1, #28] - 80021c4: 2240 movs r2, #64 @ 0x40 - 80021c6: 60da str r2, [r3, #12] - 80021c8: 68da ldr r2, [r3, #12] - 80021ca: 0610 lsls r0, r2, #24 - 80021cc: d506 bpl.n 80021dc - 80021ce: 4910 ldr r1, [pc, #64] @ (8002210 ) - 80021d0: 69ca ldr r2, [r1, #28] - 80021d2: f042 0202 orr.w r2, r2, #2 - 80021d6: 61ca str r2, [r1, #28] - 80021d8: 2280 movs r2, #128 @ 0x80 - 80021da: 60da str r2, [r3, #12] - 80021dc: 4b0b ldr r3, [pc, #44] @ (800220c ) - 80021de: 68da ldr r2, [r3, #12] - 80021e0: 05d1 lsls r1, r2, #23 - 80021e2: d507 bpl.n 80021f4 - 80021e4: 490a ldr r1, [pc, #40] @ (8002210 ) - 80021e6: 69ca ldr r2, [r1, #28] - 80021e8: f042 0201 orr.w r2, r2, #1 - 80021ec: 61ca str r2, [r1, #28] - 80021ee: f44f 7280 mov.w r2, #256 @ 0x100 - 80021f2: 60da str r2, [r3, #12] - 80021f4: 68da ldr r2, [r3, #12] - 80021f6: 0792 lsls r2, r2, #30 - 80021f8: d506 bpl.n 8002208 - 80021fa: 4905 ldr r1, [pc, #20] @ (8002210 ) - 80021fc: 69ca ldr r2, [r1, #28] - 80021fe: f042 0220 orr.w r2, r2, #32 - 8002202: 61ca str r2, [r1, #28] - 8002204: 2202 movs r2, #2 - 8002206: 60da str r2, [r3, #12] - 8002208: 4770 bx lr - 800220a: bf00 nop - 800220c: 40023c00 .word 0x40023c00 - 8002210: 20000efc .word 0x20000efc - -08002214 : - 8002214: 4b06 ldr r3, [pc, #24] @ (8002230 ) - 8002216: 691a ldr r2, [r3, #16] - 8002218: 2a00 cmp r2, #0 - 800221a: bfbf itttt lt - 800221c: 4a05 ldrlt r2, [pc, #20] @ (8002234 ) - 800221e: 605a strlt r2, [r3, #4] - 8002220: f102 3288 addlt.w r2, r2, #2290649224 @ 0x88888888 - 8002224: 605a strlt r2, [r3, #4] - 8002226: bfba itte lt - 8002228: 6918 ldrlt r0, [r3, #16] - 800222a: 0fc0 lsrlt r0, r0, #31 - 800222c: 2000 movge r0, #0 - 800222e: 4770 bx lr - 8002230: 40023c00 .word 0x40023c00 - 8002234: 45670123 .word 0x45670123 - -08002238 : - 8002238: 4a03 ldr r2, [pc, #12] @ (8002248 ) - 800223a: 6913 ldr r3, [r2, #16] - 800223c: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 - 8002240: 6113 str r3, [r2, #16] - 8002242: 2000 movs r0, #0 - 8002244: 4770 bx lr - 8002246: bf00 nop - 8002248: 40023c00 .word 0x40023c00 - -0800224c : - 800224c: 4b01 ldr r3, [pc, #4] @ (8002254 ) - 800224e: 69d8 ldr r0, [r3, #28] - 8002250: 4770 bx lr - 8002252: bf00 nop - 8002254: 20000efc .word 0x20000efc - -08002258 : - 8002258: 4b11 ldr r3, [pc, #68] @ (80022a0 ) - 800225a: b570 push {r4, r5, r6, lr} - 800225c: 2200 movs r2, #0 - 800225e: 4604 mov r4, r0 - 8002260: 61da str r2, [r3, #28] - 8002262: f7ff f9fd bl 8001660 - 8002266: 4d0f ldr r5, [pc, #60] @ (80022a4 ) - 8002268: 4606 mov r6, r0 - 800226a: 68eb ldr r3, [r5, #12] - 800226c: 03da lsls r2, r3, #15 - 800226e: d40c bmi.n 800228a - 8002270: 68eb ldr r3, [r5, #12] - 8002272: 07db lsls r3, r3, #31 - 8002274: bf44 itt mi - 8002276: 2301 movmi r3, #1 - 8002278: 60eb strmi r3, [r5, #12] - 800227a: 68e8 ldr r0, [r5, #12] - 800227c: f410 70f9 ands.w r0, r0, #498 @ 0x1f2 - 8002280: d007 beq.n 8002292 - 8002282: f7ff ff81 bl 8002188 - 8002286: 2001 movs r0, #1 - 8002288: e003 b.n 8002292 - 800228a: 1c61 adds r1, r4, #1 - 800228c: d0ed beq.n 800226a - 800228e: b90c cbnz r4, 8002294 - 8002290: 2003 movs r0, #3 - 8002292: bd70 pop {r4, r5, r6, pc} - 8002294: f7ff f9e4 bl 8001660 - 8002298: 1b80 subs r0, r0, r6 - 800229a: 42a0 cmp r0, r4 - 800229c: d9e5 bls.n 800226a - 800229e: e7f7 b.n 8002290 - 80022a0: 20000efc .word 0x20000efc - 80022a4: 40023c00 .word 0x40023c00 - -080022a8 : - 80022a8: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 80022ac: 4e1f ldr r6, [pc, #124] @ (800232c ) - 80022ae: 4698 mov r8, r3 - 80022b0: 7e33 ldrb r3, [r6, #24] - 80022b2: 2b01 cmp r3, #1 - 80022b4: 4607 mov r7, r0 - 80022b6: 460d mov r5, r1 - 80022b8: 4614 mov r4, r2 - 80022ba: d035 beq.n 8002328 - 80022bc: 2301 movs r3, #1 - 80022be: f24c 3050 movw r0, #50000 @ 0xc350 - 80022c2: 7633 strb r3, [r6, #24] - 80022c4: f7ff ffc8 bl 8002258 - 80022c8: b9b0 cbnz r0, 80022f8 - 80022ca: b9cf cbnz r7, 8002300 - 80022cc: 4b18 ldr r3, [pc, #96] @ (8002330 ) - 80022ce: 691a ldr r2, [r3, #16] - 80022d0: f422 7240 bic.w r2, r2, #768 @ 0x300 - 80022d4: 611a str r2, [r3, #16] - 80022d6: 691a ldr r2, [r3, #16] - 80022d8: 611a str r2, [r3, #16] - 80022da: 691a ldr r2, [r3, #16] - 80022dc: b2e4 uxtb r4, r4 - 80022de: f042 0201 orr.w r2, r2, #1 - 80022e2: 611a str r2, [r3, #16] - 80022e4: 702c strb r4, [r5, #0] - 80022e6: f24c 3050 movw r0, #50000 @ 0xc350 - 80022ea: f7ff ffb5 bl 8002258 - 80022ee: 4a10 ldr r2, [pc, #64] @ (8002330 ) - 80022f0: 6913 ldr r3, [r2, #16] - 80022f2: f023 0301 bic.w r3, r3, #1 - 80022f6: 6113 str r3, [r2, #16] - 80022f8: 2300 movs r3, #0 - 80022fa: 7633 strb r3, [r6, #24] - 80022fc: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 8002300: 2f01 cmp r7, #1 - 8002302: d104 bne.n 800230e - 8002304: b2a1 uxth r1, r4 - 8002306: 4628 mov r0, r5 - 8002308: f7ff ff2c bl 8002164 - 800230c: e7eb b.n 80022e6 - 800230e: 2f02 cmp r7, #2 - 8002310: d104 bne.n 800231c - 8002312: 4621 mov r1, r4 - 8002314: 4628 mov r0, r5 - 8002316: f7ff ff13 bl 8002140 - 800231a: e7e4 b.n 80022e6 - 800231c: 4622 mov r2, r4 - 800231e: 4643 mov r3, r8 - 8002320: 4628 mov r0, r5 - 8002322: f7ff fef7 bl 8002114 - 8002326: e7de b.n 80022e6 - 8002328: 2002 movs r0, #2 - 800232a: e7e7 b.n 80022fc - 800232c: 20000efc .word 0x20000efc - 8002330: 40023c00 .word 0x40023c00 - -08002334 : - 8002334: 4b0c ldr r3, [pc, #48] @ (8002368 ) - 8002336: 691a ldr r2, [r3, #16] - 8002338: f422 7240 bic.w r2, r2, #768 @ 0x300 - 800233c: 611a str r2, [r3, #16] - 800233e: 2903 cmp r1, #3 - 8002340: 691a ldr r2, [r3, #16] - 8002342: d10b bne.n 800235c - 8002344: f442 4200 orr.w r2, r2, #32768 @ 0x8000 - 8002348: f042 0204 orr.w r2, r2, #4 - 800234c: 611a str r2, [r3, #16] - 800234e: 691a ldr r2, [r3, #16] - 8002350: ea42 2000 orr.w r0, r2, r0, lsl #8 - 8002354: f440 3080 orr.w r0, r0, #65536 @ 0x10000 - 8002358: 6118 str r0, [r3, #16] - 800235a: 4770 bx lr - 800235c: 2901 cmp r1, #1 - 800235e: d0f3 beq.n 8002348 - 8002360: f442 4200 orr.w r2, r2, #32768 @ 0x8000 - 8002364: e7f2 b.n 800234c - 8002366: bf00 nop - 8002368: 40023c00 .word 0x40023c00 - -0800236c : - 800236c: 4b0f ldr r3, [pc, #60] @ (80023ac ) - 800236e: 691a ldr r2, [r3, #16] - 8002370: f422 7240 bic.w r2, r2, #768 @ 0x300 - 8002374: 611a str r2, [r3, #16] - 8002376: 691a ldr r2, [r3, #16] - 8002378: 2902 cmp r1, #2 - 800237a: bf94 ite ls - 800237c: 0209 lslls r1, r1, #8 - 800237e: f44f 7140 movhi.w r1, #768 @ 0x300 - 8002382: 430a orrs r2, r1 - 8002384: 611a str r2, [r3, #16] - 8002386: 691a ldr r2, [r3, #16] - 8002388: f022 02f8 bic.w r2, r2, #248 @ 0xf8 - 800238c: 611a str r2, [r3, #16] - 800238e: 691a ldr r2, [r3, #16] - 8002390: 280b cmp r0, #11 - 8002392: bf88 it hi - 8002394: 3004 addhi r0, #4 - 8002396: ea42 02c0 orr.w r2, r2, r0, lsl #3 - 800239a: f042 0202 orr.w r2, r2, #2 - 800239e: 611a str r2, [r3, #16] - 80023a0: 691a ldr r2, [r3, #16] - 80023a2: f442 3280 orr.w r2, r2, #65536 @ 0x10000 - 80023a6: 611a str r2, [r3, #16] - 80023a8: 4770 bx lr - 80023aa: bf00 nop - 80023ac: 40023c00 .word 0x40023c00 - -080023b0 : - 80023b0: 4b14 ldr r3, [pc, #80] @ (8002404 ) - 80023b2: 681a ldr r2, [r3, #0] - 80023b4: 0591 lsls r1, r2, #22 - 80023b6: d50f bpl.n 80023d8 - 80023b8: 681a ldr r2, [r3, #0] - 80023ba: f422 7200 bic.w r2, r2, #512 @ 0x200 - 80023be: 601a str r2, [r3, #0] - 80023c0: 681a ldr r2, [r3, #0] - 80023c2: f442 6200 orr.w r2, r2, #2048 @ 0x800 - 80023c6: 601a str r2, [r3, #0] - 80023c8: 681a ldr r2, [r3, #0] - 80023ca: f422 6200 bic.w r2, r2, #2048 @ 0x800 - 80023ce: 601a str r2, [r3, #0] - 80023d0: 681a ldr r2, [r3, #0] - 80023d2: f442 7200 orr.w r2, r2, #512 @ 0x200 - 80023d6: 601a str r2, [r3, #0] - 80023d8: 4b0a ldr r3, [pc, #40] @ (8002404 ) - 80023da: 681a ldr r2, [r3, #0] - 80023dc: 0552 lsls r2, r2, #21 - 80023de: d50f bpl.n 8002400 - 80023e0: 681a ldr r2, [r3, #0] - 80023e2: f422 6280 bic.w r2, r2, #1024 @ 0x400 - 80023e6: 601a str r2, [r3, #0] - 80023e8: 681a ldr r2, [r3, #0] - 80023ea: f442 5280 orr.w r2, r2, #4096 @ 0x1000 - 80023ee: 601a str r2, [r3, #0] - 80023f0: 681a ldr r2, [r3, #0] - 80023f2: f422 5280 bic.w r2, r2, #4096 @ 0x1000 - 80023f6: 601a str r2, [r3, #0] - 80023f8: 681a ldr r2, [r3, #0] - 80023fa: f442 6280 orr.w r2, r2, #1024 @ 0x400 - 80023fe: 601a str r2, [r3, #0] - 8002400: 4770 bx lr - 8002402: bf00 nop - 8002404: 40023c00 .word 0x40023c00 - -08002408 : - 8002408: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - 800240c: f8df 809c ldr.w r8, [pc, #156] @ 80024ac - 8002410: f898 3018 ldrb.w r3, [r8, #24] - 8002414: 2b01 cmp r3, #1 - 8002416: 4605 mov r5, r0 - 8002418: 460f mov r7, r1 - 800241a: d042 beq.n 80024a2 - 800241c: 2301 movs r3, #1 - 800241e: f24c 3050 movw r0, #50000 @ 0xc350 - 8002422: f888 3018 strb.w r3, [r8, #24] - 8002426: f7ff ff17 bl 8002258 - 800242a: 4604 mov r4, r0 - 800242c: b9b8 cbnz r0, 800245e - 800242e: f04f 33ff mov.w r3, #4294967295 - 8002432: 603b str r3, [r7, #0] - 8002434: 682b ldr r3, [r5, #0] - 8002436: 2b01 cmp r3, #1 - 8002438: d117 bne.n 800246a - 800243a: 6869 ldr r1, [r5, #4] - 800243c: 7c28 ldrb r0, [r5, #16] - 800243e: f7ff ff79 bl 8002334 - 8002442: f24c 3050 movw r0, #50000 @ 0xc350 - 8002446: f7ff ff07 bl 8002258 - 800244a: 4a17 ldr r2, [pc, #92] @ (80024a8 ) - 800244c: 6913 ldr r3, [r2, #16] - 800244e: f423 4300 bic.w r3, r3, #32768 @ 0x8000 - 8002452: f023 0304 bic.w r3, r3, #4 - 8002456: 4604 mov r4, r0 - 8002458: 6113 str r3, [r2, #16] - 800245a: f7ff ffa9 bl 80023b0 - 800245e: 2300 movs r3, #0 - 8002460: f888 3018 strb.w r3, [r8, #24] - 8002464: 4620 mov r0, r4 - 8002466: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} - 800246a: 68ae ldr r6, [r5, #8] - 800246c: f8df 9038 ldr.w r9, [pc, #56] @ 80024a8 - 8002470: e9d5 2302 ldrd r2, r3, [r5, #8] - 8002474: 4413 add r3, r2 - 8002476: 42b3 cmp r3, r6 - 8002478: d9ef bls.n 800245a - 800247a: 7c29 ldrb r1, [r5, #16] - 800247c: 4630 mov r0, r6 - 800247e: f7ff ff75 bl 800236c - 8002482: f24c 3050 movw r0, #50000 @ 0xc350 - 8002486: f7ff fee7 bl 8002258 - 800248a: f8d9 3010 ldr.w r3, [r9, #16] - 800248e: f023 03fa bic.w r3, r3, #250 @ 0xfa - 8002492: f8c9 3010 str.w r3, [r9, #16] - 8002496: b110 cbz r0, 800249e - 8002498: 603e str r6, [r7, #0] - 800249a: 4604 mov r4, r0 - 800249c: e7dd b.n 800245a - 800249e: 3601 adds r6, #1 - 80024a0: e7e6 b.n 8002470 - 80024a2: 2402 movs r4, #2 - 80024a4: e7de b.n 8002464 - 80024a6: bf00 nop - 80024a8: 40023c00 .word 0x40023c00 - 80024ac: 20000efc .word 0x20000efc - -080024b0 : - 80024b0: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} - 80024b4: f8df 91bc ldr.w r9, [pc, #444] @ 8002674 - 80024b8: 4a6c ldr r2, [pc, #432] @ (800266c ) - 80024ba: 2300 movs r3, #0 - 80024bc: 680d ldr r5, [r1, #0] - 80024be: 2401 movs r4, #1 - 80024c0: 409c lsls r4, r3 - 80024c2: ea04 0605 and.w r6, r4, r5 - 80024c6: 43ac bics r4, r5 - 80024c8: f040 80b7 bne.w 800263a - 80024cc: 684d ldr r5, [r1, #4] - 80024ce: 2703 movs r7, #3 - 80024d0: f005 0403 and.w r4, r5, #3 - 80024d4: ea4f 0843 mov.w r8, r3, lsl #1 - 80024d8: fa07 fc08 lsl.w ip, r7, r8 - 80024dc: 1e67 subs r7, r4, #1 - 80024de: 2f01 cmp r7, #1 - 80024e0: ea6f 0c0c mvn.w ip, ip - 80024e4: d834 bhi.n 8002550 - 80024e6: 6887 ldr r7, [r0, #8] - 80024e8: ea07 0e0c and.w lr, r7, ip - 80024ec: 68cf ldr r7, [r1, #12] - 80024ee: fa07 f708 lsl.w r7, r7, r8 - 80024f2: ea47 070e orr.w r7, r7, lr - 80024f6: 6087 str r7, [r0, #8] - 80024f8: 6847 ldr r7, [r0, #4] - 80024fa: ea27 0e06 bic.w lr, r7, r6 - 80024fe: f3c5 1700 ubfx r7, r5, #4, #1 - 8002502: 409f lsls r7, r3 - 8002504: ea47 070e orr.w r7, r7, lr - 8002508: 6047 str r7, [r0, #4] - 800250a: 68c7 ldr r7, [r0, #12] - 800250c: ea07 0e0c and.w lr, r7, ip - 8002510: 688f ldr r7, [r1, #8] - 8002512: fa07 f708 lsl.w r7, r7, r8 - 8002516: ea47 070e orr.w r7, r7, lr - 800251a: 2c02 cmp r4, #2 - 800251c: 60c7 str r7, [r0, #12] - 800251e: d119 bne.n 8002554 - 8002520: ea4f 0ad3 mov.w sl, r3, lsr #3 - 8002524: eb00 0a8a add.w sl, r0, sl, lsl #2 - 8002528: f003 0b07 and.w fp, r3, #7 - 800252c: f8da 7020 ldr.w r7, [sl, #32] - 8002530: ea4f 0b8b mov.w fp, fp, lsl #2 - 8002534: f04f 0e0f mov.w lr, #15 - 8002538: fa0e fe0b lsl.w lr, lr, fp - 800253c: ea27 0e0e bic.w lr, r7, lr - 8002540: 690f ldr r7, [r1, #16] - 8002542: fa07 f70b lsl.w r7, r7, fp - 8002546: ea47 070e orr.w r7, r7, lr - 800254a: f8ca 7020 str.w r7, [sl, #32] - 800254e: e001 b.n 8002554 - 8002550: 2c03 cmp r4, #3 - 8002552: d1da bne.n 800250a - 8002554: 6807 ldr r7, [r0, #0] - 8002556: fa04 f408 lsl.w r4, r4, r8 - 800255a: ea07 070c and.w r7, r7, ip - 800255e: 433c orrs r4, r7 - 8002560: f415 3f40 tst.w r5, #196608 @ 0x30000 - 8002564: 6004 str r4, [r0, #0] - 8002566: d068 beq.n 800263a - 8002568: 2400 movs r4, #0 - 800256a: 9401 str r4, [sp, #4] - 800256c: f8d9 4044 ldr.w r4, [r9, #68] @ 0x44 - 8002570: f444 4480 orr.w r4, r4, #16384 @ 0x4000 - 8002574: f8c9 4044 str.w r4, [r9, #68] @ 0x44 - 8002578: f8d9 4044 ldr.w r4, [r9, #68] @ 0x44 - 800257c: f023 0703 bic.w r7, r3, #3 - 8002580: f107 4780 add.w r7, r7, #1073741824 @ 0x40000000 - 8002584: f404 4480 and.w r4, r4, #16384 @ 0x4000 - 8002588: f507 379c add.w r7, r7, #79872 @ 0x13800 - 800258c: 9401 str r4, [sp, #4] - 800258e: f003 0c03 and.w ip, r3, #3 - 8002592: 9c01 ldr r4, [sp, #4] - 8002594: f8d7 e008 ldr.w lr, [r7, #8] - 8002598: ea4f 0c8c mov.w ip, ip, lsl #2 - 800259c: 240f movs r4, #15 - 800259e: fa04 f40c lsl.w r4, r4, ip - 80025a2: ea2e 0e04 bic.w lr, lr, r4 - 80025a6: 4c32 ldr r4, [pc, #200] @ (8002670 ) - 80025a8: 42a0 cmp r0, r4 - 80025aa: d04d beq.n 8002648 - 80025ac: f504 6480 add.w r4, r4, #1024 @ 0x400 - 80025b0: 42a0 cmp r0, r4 - 80025b2: d04b beq.n 800264c - 80025b4: f504 6480 add.w r4, r4, #1024 @ 0x400 - 80025b8: 42a0 cmp r0, r4 - 80025ba: d049 beq.n 8002650 - 80025bc: f504 6480 add.w r4, r4, #1024 @ 0x400 - 80025c0: 42a0 cmp r0, r4 - 80025c2: d047 beq.n 8002654 - 80025c4: f504 6480 add.w r4, r4, #1024 @ 0x400 - 80025c8: 42a0 cmp r0, r4 - 80025ca: d045 beq.n 8002658 - 80025cc: f504 6480 add.w r4, r4, #1024 @ 0x400 - 80025d0: 42a0 cmp r0, r4 - 80025d2: d043 beq.n 800265c - 80025d4: f504 6480 add.w r4, r4, #1024 @ 0x400 - 80025d8: 42a0 cmp r0, r4 - 80025da: d041 beq.n 8002660 - 80025dc: f504 6480 add.w r4, r4, #1024 @ 0x400 - 80025e0: 42a0 cmp r0, r4 - 80025e2: d03f beq.n 8002664 - 80025e4: f504 6480 add.w r4, r4, #1024 @ 0x400 - 80025e8: 42a0 cmp r0, r4 - 80025ea: d03d beq.n 8002668 - 80025ec: f504 6480 add.w r4, r4, #1024 @ 0x400 - 80025f0: 42a0 cmp r0, r4 - 80025f2: bf14 ite ne - 80025f4: 240a movne r4, #10 - 80025f6: 2409 moveq r4, #9 - 80025f8: fa04 f40c lsl.w r4, r4, ip - 80025fc: ea44 040e orr.w r4, r4, lr - 8002600: 60bc str r4, [r7, #8] - 8002602: 6894 ldr r4, [r2, #8] - 8002604: 43f7 mvns r7, r6 - 8002606: f415 1f80 tst.w r5, #1048576 @ 0x100000 - 800260a: bf0c ite eq - 800260c: 403c andeq r4, r7 - 800260e: 4334 orrne r4, r6 - 8002610: 6094 str r4, [r2, #8] - 8002612: 68d4 ldr r4, [r2, #12] - 8002614: f415 1f00 tst.w r5, #2097152 @ 0x200000 - 8002618: bf0c ite eq - 800261a: 403c andeq r4, r7 - 800261c: 4334 orrne r4, r6 - 800261e: 60d4 str r4, [r2, #12] - 8002620: 6854 ldr r4, [r2, #4] - 8002622: f415 3f00 tst.w r5, #131072 @ 0x20000 - 8002626: bf0c ite eq - 8002628: 403c andeq r4, r7 - 800262a: 4334 orrne r4, r6 - 800262c: 6054 str r4, [r2, #4] - 800262e: 6814 ldr r4, [r2, #0] - 8002630: 03ed lsls r5, r5, #15 - 8002632: bf54 ite pl - 8002634: 403c andpl r4, r7 - 8002636: 4334 orrmi r4, r6 - 8002638: 6014 str r4, [r2, #0] - 800263a: 3301 adds r3, #1 - 800263c: 2b10 cmp r3, #16 - 800263e: f47f af3d bne.w 80024bc - 8002642: b003 add sp, #12 - 8002644: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 8002648: 2400 movs r4, #0 - 800264a: e7d5 b.n 80025f8 - 800264c: 2401 movs r4, #1 - 800264e: e7d3 b.n 80025f8 - 8002650: 2402 movs r4, #2 - 8002652: e7d1 b.n 80025f8 - 8002654: 2403 movs r4, #3 - 8002656: e7cf b.n 80025f8 - 8002658: 2404 movs r4, #4 - 800265a: e7cd b.n 80025f8 - 800265c: 2405 movs r4, #5 - 800265e: e7cb b.n 80025f8 - 8002660: 2406 movs r4, #6 - 8002662: e7c9 b.n 80025f8 - 8002664: 2407 movs r4, #7 - 8002666: e7c7 b.n 80025f8 - 8002668: 2408 movs r4, #8 - 800266a: e7c5 b.n 80025f8 - 800266c: 40013c00 .word 0x40013c00 - 8002670: 40020000 .word 0x40020000 - 8002674: 40023800 .word 0x40023800 - -08002678 : - 8002678: b10a cbz r2, 800267e - 800267a: 6181 str r1, [r0, #24] - 800267c: 4770 bx lr - 800267e: 0409 lsls r1, r1, #16 - 8002680: e7fb b.n 800267a - ... - -08002684 : - 8002684: e92d 41f3 stmdb sp!, {r0, r1, r4, r5, r6, r7, r8, lr} - 8002688: 4604 mov r4, r0 - 800268a: b340 cbz r0, 80026de - 800268c: 6803 ldr r3, [r0, #0] - 800268e: 07de lsls r6, r3, #31 - 8002690: d410 bmi.n 80026b4 - 8002692: 6823 ldr r3, [r4, #0] - 8002694: 079d lsls r5, r3, #30 - 8002696: d45b bmi.n 8002750 - 8002698: 6823 ldr r3, [r4, #0] - 800269a: 0719 lsls r1, r3, #28 - 800269c: f100 809d bmi.w 80027da - 80026a0: 6823 ldr r3, [r4, #0] - 80026a2: 075a lsls r2, r3, #29 - 80026a4: f100 80bd bmi.w 8002822 - 80026a8: 69a3 ldr r3, [r4, #24] - 80026aa: 2b00 cmp r3, #0 - 80026ac: f040 8124 bne.w 80028f8 - 80026b0: 2000 movs r0, #0 - 80026b2: e02c b.n 800270e - 80026b4: 4b8d ldr r3, [pc, #564] @ (80028ec ) - 80026b6: 689a ldr r2, [r3, #8] - 80026b8: f002 020c and.w r2, r2, #12 - 80026bc: 2a04 cmp r2, #4 - 80026be: d007 beq.n 80026d0 - 80026c0: 689a ldr r2, [r3, #8] - 80026c2: f002 020c and.w r2, r2, #12 - 80026c6: 2a08 cmp r2, #8 - 80026c8: d10b bne.n 80026e2 - 80026ca: 685b ldr r3, [r3, #4] - 80026cc: 0259 lsls r1, r3, #9 - 80026ce: d508 bpl.n 80026e2 - 80026d0: 4b86 ldr r3, [pc, #536] @ (80028ec ) - 80026d2: 681b ldr r3, [r3, #0] - 80026d4: 039a lsls r2, r3, #14 - 80026d6: d5dc bpl.n 8002692 - 80026d8: 6863 ldr r3, [r4, #4] - 80026da: 2b00 cmp r3, #0 - 80026dc: d1d9 bne.n 8002692 - 80026de: 2001 movs r0, #1 - 80026e0: e015 b.n 800270e - 80026e2: 6863 ldr r3, [r4, #4] - 80026e4: 4d81 ldr r5, [pc, #516] @ (80028ec ) - 80026e6: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 80026ea: d113 bne.n 8002714 - 80026ec: 682b ldr r3, [r5, #0] - 80026ee: f443 3380 orr.w r3, r3, #65536 @ 0x10000 - 80026f2: 602b str r3, [r5, #0] - 80026f4: f7fe ffb4 bl 8001660 - 80026f8: 4e7c ldr r6, [pc, #496] @ (80028ec ) - 80026fa: 4605 mov r5, r0 - 80026fc: 6833 ldr r3, [r6, #0] - 80026fe: 039b lsls r3, r3, #14 - 8002700: d4c7 bmi.n 8002692 - 8002702: f7fe ffad bl 8001660 - 8002706: 1b40 subs r0, r0, r5 - 8002708: 2864 cmp r0, #100 @ 0x64 - 800270a: d9f7 bls.n 80026fc - 800270c: 2003 movs r0, #3 - 800270e: b002 add sp, #8 - 8002710: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 8002714: f5b3 2fa0 cmp.w r3, #327680 @ 0x50000 - 8002718: d104 bne.n 8002724 - 800271a: 682b ldr r3, [r5, #0] - 800271c: f443 2380 orr.w r3, r3, #262144 @ 0x40000 - 8002720: 602b str r3, [r5, #0] - 8002722: e7e3 b.n 80026ec - 8002724: 682a ldr r2, [r5, #0] - 8002726: f422 3280 bic.w r2, r2, #65536 @ 0x10000 - 800272a: 602a str r2, [r5, #0] - 800272c: 682a ldr r2, [r5, #0] - 800272e: f422 2280 bic.w r2, r2, #262144 @ 0x40000 - 8002732: 602a str r2, [r5, #0] - 8002734: 2b00 cmp r3, #0 - 8002736: d1dd bne.n 80026f4 - 8002738: f7fe ff92 bl 8001660 - 800273c: 4606 mov r6, r0 - 800273e: 682b ldr r3, [r5, #0] - 8002740: 039f lsls r7, r3, #14 - 8002742: d5a6 bpl.n 8002692 - 8002744: f7fe ff8c bl 8001660 - 8002748: 1b80 subs r0, r0, r6 - 800274a: 2864 cmp r0, #100 @ 0x64 - 800274c: d9f7 bls.n 800273e - 800274e: e7dd b.n 800270c - 8002750: 4b66 ldr r3, [pc, #408] @ (80028ec ) - 8002752: 689a ldr r2, [r3, #8] - 8002754: f012 0f0c tst.w r2, #12 - 8002758: d007 beq.n 800276a - 800275a: 689a ldr r2, [r3, #8] - 800275c: f002 020c and.w r2, r2, #12 - 8002760: 2a08 cmp r2, #8 - 8002762: d111 bne.n 8002788 - 8002764: 685b ldr r3, [r3, #4] - 8002766: 025d lsls r5, r3, #9 - 8002768: d40e bmi.n 8002788 - 800276a: 4a60 ldr r2, [pc, #384] @ (80028ec ) - 800276c: 6813 ldr r3, [r2, #0] - 800276e: 0799 lsls r1, r3, #30 - 8002770: d502 bpl.n 8002778 - 8002772: 68e3 ldr r3, [r4, #12] - 8002774: 2b01 cmp r3, #1 - 8002776: d1b2 bne.n 80026de - 8002778: 6813 ldr r3, [r2, #0] - 800277a: 6921 ldr r1, [r4, #16] - 800277c: f023 03f8 bic.w r3, r3, #248 @ 0xf8 - 8002780: ea43 03c1 orr.w r3, r3, r1, lsl #3 - 8002784: 6013 str r3, [r2, #0] - 8002786: e787 b.n 8002698 - 8002788: 68e2 ldr r2, [r4, #12] - 800278a: 4b59 ldr r3, [pc, #356] @ (80028f0 ) - 800278c: b1b2 cbz r2, 80027bc - 800278e: 2201 movs r2, #1 - 8002790: 601a str r2, [r3, #0] - 8002792: f7fe ff65 bl 8001660 - 8002796: 4d55 ldr r5, [pc, #340] @ (80028ec ) - 8002798: 4606 mov r6, r0 - 800279a: 682b ldr r3, [r5, #0] - 800279c: 079b lsls r3, r3, #30 - 800279e: d507 bpl.n 80027b0 - 80027a0: 682b ldr r3, [r5, #0] - 80027a2: 6922 ldr r2, [r4, #16] - 80027a4: f023 03f8 bic.w r3, r3, #248 @ 0xf8 - 80027a8: ea43 03c2 orr.w r3, r3, r2, lsl #3 - 80027ac: 602b str r3, [r5, #0] - 80027ae: e773 b.n 8002698 - 80027b0: f7fe ff56 bl 8001660 - 80027b4: 1b80 subs r0, r0, r6 - 80027b6: 2802 cmp r0, #2 - 80027b8: d9ef bls.n 800279a - 80027ba: e7a7 b.n 800270c - 80027bc: 601a str r2, [r3, #0] - 80027be: f7fe ff4f bl 8001660 - 80027c2: 4e4a ldr r6, [pc, #296] @ (80028ec ) - 80027c4: 4605 mov r5, r0 - 80027c6: 6833 ldr r3, [r6, #0] - 80027c8: 079f lsls r7, r3, #30 - 80027ca: f57f af65 bpl.w 8002698 - 80027ce: f7fe ff47 bl 8001660 - 80027d2: 1b40 subs r0, r0, r5 - 80027d4: 2802 cmp r0, #2 - 80027d6: d9f6 bls.n 80027c6 - 80027d8: e798 b.n 800270c - 80027da: 6962 ldr r2, [r4, #20] - 80027dc: 4b44 ldr r3, [pc, #272] @ (80028f0 ) - 80027de: b182 cbz r2, 8002802 - 80027e0: 2201 movs r2, #1 - 80027e2: f8c3 2e80 str.w r2, [r3, #3712] @ 0xe80 - 80027e6: f7fe ff3b bl 8001660 - 80027ea: 4e40 ldr r6, [pc, #256] @ (80028ec ) - 80027ec: 4605 mov r5, r0 - 80027ee: 6f73 ldr r3, [r6, #116] @ 0x74 - 80027f0: 079b lsls r3, r3, #30 - 80027f2: f53f af55 bmi.w 80026a0 - 80027f6: f7fe ff33 bl 8001660 - 80027fa: 1b40 subs r0, r0, r5 - 80027fc: 2802 cmp r0, #2 - 80027fe: d9f6 bls.n 80027ee - 8002800: e784 b.n 800270c - 8002802: f8c3 2e80 str.w r2, [r3, #3712] @ 0xe80 - 8002806: f7fe ff2b bl 8001660 - 800280a: 4e38 ldr r6, [pc, #224] @ (80028ec ) - 800280c: 4605 mov r5, r0 - 800280e: 6f73 ldr r3, [r6, #116] @ 0x74 - 8002810: 079f lsls r7, r3, #30 - 8002812: f57f af45 bpl.w 80026a0 - 8002816: f7fe ff23 bl 8001660 - 800281a: 1b40 subs r0, r0, r5 - 800281c: 2802 cmp r0, #2 - 800281e: d9f6 bls.n 800280e - 8002820: e774 b.n 800270c - 8002822: 4b32 ldr r3, [pc, #200] @ (80028ec ) - 8002824: 6c1a ldr r2, [r3, #64] @ 0x40 - 8002826: f012 5280 ands.w r2, r2, #268435456 @ 0x10000000 - 800282a: d128 bne.n 800287e - 800282c: 9201 str r2, [sp, #4] - 800282e: 6c1a ldr r2, [r3, #64] @ 0x40 - 8002830: f042 5280 orr.w r2, r2, #268435456 @ 0x10000000 - 8002834: 641a str r2, [r3, #64] @ 0x40 - 8002836: 6c1b ldr r3, [r3, #64] @ 0x40 - 8002838: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 800283c: 9301 str r3, [sp, #4] - 800283e: 9b01 ldr r3, [sp, #4] - 8002840: 2701 movs r7, #1 - 8002842: 4d2c ldr r5, [pc, #176] @ (80028f4 ) - 8002844: 682b ldr r3, [r5, #0] - 8002846: 05d8 lsls r0, r3, #23 - 8002848: d51b bpl.n 8002882 - 800284a: 68a3 ldr r3, [r4, #8] - 800284c: 4d27 ldr r5, [pc, #156] @ (80028ec ) - 800284e: 2b01 cmp r3, #1 - 8002850: d127 bne.n 80028a2 - 8002852: 6f2b ldr r3, [r5, #112] @ 0x70 - 8002854: f043 0301 orr.w r3, r3, #1 - 8002858: 672b str r3, [r5, #112] @ 0x70 - 800285a: f7fe ff01 bl 8001660 - 800285e: 4e23 ldr r6, [pc, #140] @ (80028ec ) - 8002860: 4605 mov r5, r0 - 8002862: f241 3888 movw r8, #5000 @ 0x1388 - 8002866: 6f33 ldr r3, [r6, #112] @ 0x70 - 8002868: 079a lsls r2, r3, #30 - 800286a: d539 bpl.n 80028e0 - 800286c: 2f00 cmp r7, #0 - 800286e: f43f af1b beq.w 80026a8 - 8002872: 4a1e ldr r2, [pc, #120] @ (80028ec ) - 8002874: 6c13 ldr r3, [r2, #64] @ 0x40 - 8002876: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 - 800287a: 6413 str r3, [r2, #64] @ 0x40 - 800287c: e714 b.n 80026a8 - 800287e: 2700 movs r7, #0 - 8002880: e7df b.n 8002842 - 8002882: 682b ldr r3, [r5, #0] - 8002884: f443 7380 orr.w r3, r3, #256 @ 0x100 - 8002888: 602b str r3, [r5, #0] - 800288a: f7fe fee9 bl 8001660 - 800288e: 4606 mov r6, r0 - 8002890: 682b ldr r3, [r5, #0] - 8002892: 05d9 lsls r1, r3, #23 - 8002894: d4d9 bmi.n 800284a - 8002896: f7fe fee3 bl 8001660 - 800289a: 1b80 subs r0, r0, r6 - 800289c: 2802 cmp r0, #2 - 800289e: d9f7 bls.n 8002890 - 80028a0: e734 b.n 800270c - 80028a2: 2b05 cmp r3, #5 - 80028a4: d104 bne.n 80028b0 - 80028a6: 6f2b ldr r3, [r5, #112] @ 0x70 - 80028a8: f043 0304 orr.w r3, r3, #4 - 80028ac: 672b str r3, [r5, #112] @ 0x70 - 80028ae: e7d0 b.n 8002852 - 80028b0: 6f2a ldr r2, [r5, #112] @ 0x70 - 80028b2: f022 0201 bic.w r2, r2, #1 - 80028b6: 672a str r2, [r5, #112] @ 0x70 - 80028b8: 6f2a ldr r2, [r5, #112] @ 0x70 - 80028ba: f022 0204 bic.w r2, r2, #4 - 80028be: 672a str r2, [r5, #112] @ 0x70 - 80028c0: 2b00 cmp r3, #0 - 80028c2: d1ca bne.n 800285a - 80028c4: f7fe fecc bl 8001660 - 80028c8: f241 3888 movw r8, #5000 @ 0x1388 - 80028cc: 4606 mov r6, r0 - 80028ce: 6f2b ldr r3, [r5, #112] @ 0x70 - 80028d0: 079b lsls r3, r3, #30 - 80028d2: d5cb bpl.n 800286c - 80028d4: f7fe fec4 bl 8001660 - 80028d8: 1b80 subs r0, r0, r6 - 80028da: 4540 cmp r0, r8 - 80028dc: d9f7 bls.n 80028ce - 80028de: e715 b.n 800270c - 80028e0: f7fe febe bl 8001660 - 80028e4: 1b40 subs r0, r0, r5 - 80028e6: 4540 cmp r0, r8 - 80028e8: d9bd bls.n 8002866 - 80028ea: e70f b.n 800270c - 80028ec: 40023800 .word 0x40023800 - 80028f0: 42470000 .word 0x42470000 - 80028f4: 40007000 .word 0x40007000 - 80028f8: 4d37 ldr r5, [pc, #220] @ (80029d8 ) - 80028fa: 68aa ldr r2, [r5, #8] - 80028fc: f002 020c and.w r2, r2, #12 - 8002900: 2a08 cmp r2, #8 - 8002902: d03e beq.n 8002982 - 8002904: 2b02 cmp r3, #2 - 8002906: 4b35 ldr r3, [pc, #212] @ (80029dc ) - 8002908: f04f 0200 mov.w r2, #0 - 800290c: 661a str r2, [r3, #96] @ 0x60 - 800290e: d12b bne.n 8002968 - 8002910: f7fe fea6 bl 8001660 - 8002914: 4606 mov r6, r0 - 8002916: 682b ldr r3, [r5, #0] - 8002918: 0199 lsls r1, r3, #6 - 800291a: d41f bmi.n 800295c - 800291c: e9d4 3207 ldrd r3, r2, [r4, #28] - 8002920: 4313 orrs r3, r2 - 8002922: 6a62 ldr r2, [r4, #36] @ 0x24 - 8002924: ea43 1382 orr.w r3, r3, r2, lsl #6 - 8002928: 6ae2 ldr r2, [r4, #44] @ 0x2c - 800292a: ea43 6302 orr.w r3, r3, r2, lsl #24 - 800292e: 6aa2 ldr r2, [r4, #40] @ 0x28 - 8002930: 0852 lsrs r2, r2, #1 - 8002932: 3a01 subs r2, #1 - 8002934: ea43 4302 orr.w r3, r3, r2, lsl #16 - 8002938: 606b str r3, [r5, #4] - 800293a: 4b28 ldr r3, [pc, #160] @ (80029dc ) - 800293c: 4d26 ldr r5, [pc, #152] @ (80029d8 ) - 800293e: 2201 movs r2, #1 - 8002940: 661a str r2, [r3, #96] @ 0x60 - 8002942: f7fe fe8d bl 8001660 - 8002946: 4604 mov r4, r0 - 8002948: 682b ldr r3, [r5, #0] - 800294a: 019a lsls r2, r3, #6 - 800294c: f53f aeb0 bmi.w 80026b0 - 8002950: f7fe fe86 bl 8001660 - 8002954: 1b00 subs r0, r0, r4 - 8002956: 2802 cmp r0, #2 - 8002958: d9f6 bls.n 8002948 - 800295a: e6d7 b.n 800270c - 800295c: f7fe fe80 bl 8001660 - 8002960: 1b80 subs r0, r0, r6 - 8002962: 2802 cmp r0, #2 - 8002964: d9d7 bls.n 8002916 - 8002966: e6d1 b.n 800270c - 8002968: f7fe fe7a bl 8001660 - 800296c: 4604 mov r4, r0 - 800296e: 682b ldr r3, [r5, #0] - 8002970: 019b lsls r3, r3, #6 - 8002972: f57f ae9d bpl.w 80026b0 - 8002976: f7fe fe73 bl 8001660 - 800297a: 1b00 subs r0, r0, r4 - 800297c: 2802 cmp r0, #2 - 800297e: d9f6 bls.n 800296e - 8002980: e6c4 b.n 800270c - 8002982: 2b01 cmp r3, #1 - 8002984: f43f aeab beq.w 80026de - 8002988: 686b ldr r3, [r5, #4] - 800298a: 69e2 ldr r2, [r4, #28] - 800298c: f403 0180 and.w r1, r3, #4194304 @ 0x400000 - 8002990: 4291 cmp r1, r2 - 8002992: f47f aea4 bne.w 80026de - 8002996: 6a21 ldr r1, [r4, #32] - 8002998: f003 023f and.w r2, r3, #63 @ 0x3f - 800299c: 428a cmp r2, r1 - 800299e: f47f ae9e bne.w 80026de - 80029a2: 6a61 ldr r1, [r4, #36] @ 0x24 - 80029a4: f647 72c0 movw r2, #32704 @ 0x7fc0 - 80029a8: 401a ands r2, r3 - 80029aa: ebb2 1f81 cmp.w r2, r1, lsl #6 - 80029ae: f47f ae96 bne.w 80026de - 80029b2: 6aa2 ldr r2, [r4, #40] @ 0x28 - 80029b4: 0852 lsrs r2, r2, #1 - 80029b6: f403 3140 and.w r1, r3, #196608 @ 0x30000 - 80029ba: 3a01 subs r2, #1 - 80029bc: ebb1 4f02 cmp.w r1, r2, lsl #16 - 80029c0: f47f ae8d bne.w 80026de - 80029c4: 6ae2 ldr r2, [r4, #44] @ 0x2c - 80029c6: f003 6370 and.w r3, r3, #251658240 @ 0xf000000 - 80029ca: ebb3 6f02 cmp.w r3, r2, lsl #24 - 80029ce: bf14 ite ne - 80029d0: 2001 movne r0, #1 - 80029d2: 2000 moveq r0, #0 - 80029d4: e69b b.n 800270e - 80029d6: bf00 nop - 80029d8: 40023800 .word 0x40023800 - 80029dc: 42470000 .word 0x42470000 - -080029e0 : - 80029e0: 4913 ldr r1, [pc, #76] @ (8002a30 ) - 80029e2: b508 push {r3, lr} - 80029e4: 688b ldr r3, [r1, #8] - 80029e6: f003 030c and.w r3, r3, #12 - 80029ea: 2b04 cmp r3, #4 - 80029ec: d01c beq.n 8002a28 - 80029ee: 2b08 cmp r3, #8 - 80029f0: d11c bne.n 8002a2c - 80029f2: 684a ldr r2, [r1, #4] - 80029f4: 684b ldr r3, [r1, #4] - 80029f6: 6849 ldr r1, [r1, #4] - 80029f8: f413 0380 ands.w r3, r3, #4194304 @ 0x400000 - 80029fc: bf14 ite ne - 80029fe: 480d ldrne r0, [pc, #52] @ (8002a34 ) - 8002a00: 480d ldreq r0, [pc, #52] @ (8002a38 ) - 8002a02: f3c1 1188 ubfx r1, r1, #6, #9 - 8002a06: bf18 it ne - 8002a08: 2300 movne r3, #0 - 8002a0a: f002 023f and.w r2, r2, #63 @ 0x3f - 8002a0e: fba1 0100 umull r0, r1, r1, r0 - 8002a12: f7fd fc3d bl 8000290 <__aeabi_uldivmod> - 8002a16: 4b06 ldr r3, [pc, #24] @ (8002a30 ) - 8002a18: 685b ldr r3, [r3, #4] - 8002a1a: f3c3 4301 ubfx r3, r3, #16, #2 - 8002a1e: 3301 adds r3, #1 - 8002a20: 005b lsls r3, r3, #1 - 8002a22: fbb0 f0f3 udiv r0, r0, r3 - 8002a26: bd08 pop {r3, pc} - 8002a28: 4802 ldr r0, [pc, #8] @ (8002a34 ) - 8002a2a: e7fc b.n 8002a26 - 8002a2c: 4802 ldr r0, [pc, #8] @ (8002a38 ) - 8002a2e: e7fa b.n 8002a26 - 8002a30: 40023800 .word 0x40023800 - 8002a34: 017d7840 .word 0x017d7840 - 8002a38: 00f42400 .word 0x00f42400 - -08002a3c : - 8002a3c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 8002a40: 460d mov r5, r1 - 8002a42: 4604 mov r4, r0 - 8002a44: b910 cbnz r0, 8002a4c - 8002a46: 2001 movs r0, #1 - 8002a48: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 8002a4c: 4b43 ldr r3, [pc, #268] @ (8002b5c ) - 8002a4e: 681a ldr r2, [r3, #0] - 8002a50: f002 020f and.w r2, r2, #15 - 8002a54: 428a cmp r2, r1 - 8002a56: d328 bcc.n 8002aaa - 8002a58: 6821 ldr r1, [r4, #0] - 8002a5a: 078f lsls r7, r1, #30 - 8002a5c: d42d bmi.n 8002aba - 8002a5e: 07c8 lsls r0, r1, #31 - 8002a60: d440 bmi.n 8002ae4 - 8002a62: 4b3e ldr r3, [pc, #248] @ (8002b5c ) - 8002a64: 681a ldr r2, [r3, #0] - 8002a66: f002 020f and.w r2, r2, #15 - 8002a6a: 42aa cmp r2, r5 - 8002a6c: d865 bhi.n 8002b3a - 8002a6e: 6822 ldr r2, [r4, #0] - 8002a70: 0751 lsls r1, r2, #29 - 8002a72: d46b bmi.n 8002b4c - 8002a74: 0713 lsls r3, r2, #28 - 8002a76: d507 bpl.n 8002a88 - 8002a78: 4a39 ldr r2, [pc, #228] @ (8002b60 ) - 8002a7a: 6921 ldr r1, [r4, #16] - 8002a7c: 6893 ldr r3, [r2, #8] - 8002a7e: f423 4360 bic.w r3, r3, #57344 @ 0xe000 - 8002a82: ea43 03c1 orr.w r3, r3, r1, lsl #3 - 8002a86: 6093 str r3, [r2, #8] - 8002a88: f7ff ffaa bl 80029e0 - 8002a8c: 4b34 ldr r3, [pc, #208] @ (8002b60 ) - 8002a8e: 4a35 ldr r2, [pc, #212] @ (8002b64 ) - 8002a90: 689b ldr r3, [r3, #8] - 8002a92: f3c3 1303 ubfx r3, r3, #4, #4 - 8002a96: 5cd3 ldrb r3, [r2, r3] - 8002a98: 40d8 lsrs r0, r3 - 8002a9a: 4b33 ldr r3, [pc, #204] @ (8002b68 ) - 8002a9c: 6018 str r0, [r3, #0] - 8002a9e: 4b33 ldr r3, [pc, #204] @ (8002b6c ) - 8002aa0: 6818 ldr r0, [r3, #0] - 8002aa2: f7fe fd93 bl 80015cc - 8002aa6: 2000 movs r0, #0 - 8002aa8: e7ce b.n 8002a48 - 8002aaa: b2ca uxtb r2, r1 - 8002aac: 701a strb r2, [r3, #0] - 8002aae: 681b ldr r3, [r3, #0] - 8002ab0: f003 030f and.w r3, r3, #15 - 8002ab4: 428b cmp r3, r1 - 8002ab6: d1c6 bne.n 8002a46 - 8002ab8: e7ce b.n 8002a58 - 8002aba: 4b29 ldr r3, [pc, #164] @ (8002b60 ) - 8002abc: f011 0f04 tst.w r1, #4 - 8002ac0: bf1e ittt ne - 8002ac2: 689a ldrne r2, [r3, #8] - 8002ac4: f442 52e0 orrne.w r2, r2, #7168 @ 0x1c00 - 8002ac8: 609a strne r2, [r3, #8] - 8002aca: 070e lsls r6, r1, #28 - 8002acc: bf42 ittt mi - 8002ace: 689a ldrmi r2, [r3, #8] - 8002ad0: f442 4260 orrmi.w r2, r2, #57344 @ 0xe000 - 8002ad4: 609a strmi r2, [r3, #8] - 8002ad6: 689a ldr r2, [r3, #8] - 8002ad8: 68a0 ldr r0, [r4, #8] - 8002ada: f022 02f0 bic.w r2, r2, #240 @ 0xf0 - 8002ade: 4302 orrs r2, r0 - 8002ae0: 609a str r2, [r3, #8] - 8002ae2: e7bc b.n 8002a5e - 8002ae4: 6862 ldr r2, [r4, #4] - 8002ae6: 4b1e ldr r3, [pc, #120] @ (8002b60 ) - 8002ae8: 2a01 cmp r2, #1 - 8002aea: d11c bne.n 8002b26 - 8002aec: 681b ldr r3, [r3, #0] - 8002aee: f413 3f00 tst.w r3, #131072 @ 0x20000 - 8002af2: d0a8 beq.n 8002a46 - 8002af4: 4e1a ldr r6, [pc, #104] @ (8002b60 ) - 8002af6: 68b3 ldr r3, [r6, #8] - 8002af8: f023 0303 bic.w r3, r3, #3 - 8002afc: 4313 orrs r3, r2 - 8002afe: 60b3 str r3, [r6, #8] - 8002b00: f7fe fdae bl 8001660 - 8002b04: f241 3888 movw r8, #5000 @ 0x1388 - 8002b08: 4607 mov r7, r0 - 8002b0a: 68b3 ldr r3, [r6, #8] - 8002b0c: 6862 ldr r2, [r4, #4] - 8002b0e: f003 030c and.w r3, r3, #12 - 8002b12: ebb3 0f82 cmp.w r3, r2, lsl #2 - 8002b16: d0a4 beq.n 8002a62 - 8002b18: f7fe fda2 bl 8001660 - 8002b1c: 1bc0 subs r0, r0, r7 - 8002b1e: 4540 cmp r0, r8 - 8002b20: d9f3 bls.n 8002b0a - 8002b22: 2003 movs r0, #3 - 8002b24: e790 b.n 8002a48 - 8002b26: 1e91 subs r1, r2, #2 - 8002b28: 2901 cmp r1, #1 - 8002b2a: 681b ldr r3, [r3, #0] - 8002b2c: d802 bhi.n 8002b34 - 8002b2e: f013 7f00 tst.w r3, #33554432 @ 0x2000000 - 8002b32: e7de b.n 8002af2 - 8002b34: f013 0f02 tst.w r3, #2 - 8002b38: e7db b.n 8002af2 - 8002b3a: b2ea uxtb r2, r5 - 8002b3c: 701a strb r2, [r3, #0] - 8002b3e: 681b ldr r3, [r3, #0] - 8002b40: f003 030f and.w r3, r3, #15 - 8002b44: 42ab cmp r3, r5 - 8002b46: f47f af7e bne.w 8002a46 - 8002b4a: e790 b.n 8002a6e - 8002b4c: 4904 ldr r1, [pc, #16] @ (8002b60 ) - 8002b4e: 68e0 ldr r0, [r4, #12] - 8002b50: 688b ldr r3, [r1, #8] - 8002b52: f423 53e0 bic.w r3, r3, #7168 @ 0x1c00 - 8002b56: 4303 orrs r3, r0 - 8002b58: 608b str r3, [r1, #8] - 8002b5a: e78b b.n 8002a74 - 8002b5c: 40023c00 .word 0x40023c00 - 8002b60: 40023800 .word 0x40023800 - 8002b64: 0800b724 .word 0x0800b724 - 8002b68: 20000000 .word 0x20000000 - 8002b6c: 20000008 .word 0x20000008 - -08002b70 : - 8002b70: 4b01 ldr r3, [pc, #4] @ (8002b78 ) - 8002b72: 6818 ldr r0, [r3, #0] - 8002b74: 4770 bx lr - 8002b76: bf00 nop - 8002b78: 20000000 .word 0x20000000 - -08002b7c : - 8002b7c: b570 push {r4, r5, r6, lr} - 8002b7e: 460e mov r6, r1 - 8002b80: 4615 mov r5, r2 - 8002b82: 4604 mov r4, r0 - 8002b84: b328 cbz r0, 8002bd2 - 8002b86: f890 3049 ldrb.w r3, [r0, #73] @ 0x49 - 8002b8a: f003 02ff and.w r2, r3, #255 @ 0xff - 8002b8e: b91b cbnz r3, 8002b98 - 8002b90: f880 2048 strb.w r2, [r0, #72] @ 0x48 - 8002b94: f7fe fbac bl 80012f0 - 8002b98: f104 0108 add.w r1, r4, #8 - 8002b9c: 6820 ldr r0, [r4, #0] - 8002b9e: f000 fa73 bl 8003088 - 8002ba2: 68a2 ldr r2, [r4, #8] - 8002ba4: 6820 ldr r0, [r4, #0] - 8002ba6: 4631 mov r1, r6 - 8002ba8: f000 faaa bl 8003100 - 8002bac: 6b23 ldr r3, [r4, #48] @ 0x30 - 8002bae: 68a2 ldr r2, [r4, #8] - 8002bb0: 6860 ldr r0, [r4, #4] - 8002bb2: 4629 mov r1, r5 - 8002bb4: f000 fad0 bl 8003158 - 8002bb8: 6822 ldr r2, [r4, #0] - 8002bba: 68a1 ldr r1, [r4, #8] - 8002bbc: f852 3021 ldr.w r3, [r2, r1, lsl #2] - 8002bc0: f043 0301 orr.w r3, r3, #1 - 8002bc4: f842 3021 str.w r3, [r2, r1, lsl #2] - 8002bc8: 2301 movs r3, #1 - 8002bca: f884 3049 strb.w r3, [r4, #73] @ 0x49 - 8002bce: 2000 movs r0, #0 - 8002bd0: bd70 pop {r4, r5, r6, pc} - 8002bd2: 2001 movs r0, #1 - 8002bd4: e7fc b.n 8002bd0 - ... - -08002bd8 : - 8002bd8: f890 303d ldrb.w r3, [r0, #61] @ 0x3d - 8002bdc: 2b01 cmp r3, #1 - 8002bde: d130 bne.n 8002c42 - 8002be0: 2302 movs r3, #2 - 8002be2: f880 303d strb.w r3, [r0, #61] @ 0x3d - 8002be6: 6803 ldr r3, [r0, #0] - 8002be8: 68da ldr r2, [r3, #12] - 8002bea: f042 0201 orr.w r2, r2, #1 - 8002bee: 60da str r2, [r3, #12] - 8002bf0: 4a15 ldr r2, [pc, #84] @ (8002c48 ) - 8002bf2: 4293 cmp r3, r2 - 8002bf4: d01a beq.n 8002c2c - 8002bf6: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8002bfa: d017 beq.n 8002c2c - 8002bfc: f5a2 427c sub.w r2, r2, #64512 @ 0xfc00 - 8002c00: 4293 cmp r3, r2 - 8002c02: d013 beq.n 8002c2c - 8002c04: f502 6280 add.w r2, r2, #1024 @ 0x400 - 8002c08: 4293 cmp r3, r2 - 8002c0a: d00f beq.n 8002c2c - 8002c0c: f502 6280 add.w r2, r2, #1024 @ 0x400 - 8002c10: 4293 cmp r3, r2 - 8002c12: d00b beq.n 8002c2c - 8002c14: f502 4278 add.w r2, r2, #63488 @ 0xf800 - 8002c18: 4293 cmp r3, r2 - 8002c1a: d007 beq.n 8002c2c - 8002c1c: f502 5270 add.w r2, r2, #15360 @ 0x3c00 - 8002c20: 4293 cmp r3, r2 - 8002c22: d003 beq.n 8002c2c - 8002c24: f5a2 3294 sub.w r2, r2, #75776 @ 0x12800 - 8002c28: 4293 cmp r3, r2 - 8002c2a: d104 bne.n 8002c36 - 8002c2c: 689a ldr r2, [r3, #8] - 8002c2e: f002 0207 and.w r2, r2, #7 - 8002c32: 2a06 cmp r2, #6 - 8002c34: d003 beq.n 8002c3e - 8002c36: 681a ldr r2, [r3, #0] - 8002c38: f042 0201 orr.w r2, r2, #1 - 8002c3c: 601a str r2, [r3, #0] - 8002c3e: 2000 movs r0, #0 - 8002c40: 4770 bx lr - 8002c42: 2001 movs r0, #1 - 8002c44: 4770 bx lr - 8002c46: bf00 nop - 8002c48: 40010000 .word 0x40010000 - -08002c4c : - 8002c4c: 4770 bx lr - -08002c4e : - 8002c4e: 4770 bx lr - -08002c50 : - 8002c50: 4770 bx lr - -08002c52 : - 8002c52: 4770 bx lr - -08002c54 : - 8002c54: 4770 bx lr - -08002c56 : - 8002c56: 6803 ldr r3, [r0, #0] - 8002c58: 691a ldr r2, [r3, #16] - 8002c5a: 0791 lsls r1, r2, #30 - 8002c5c: b510 push {r4, lr} - 8002c5e: 4604 mov r4, r0 - 8002c60: d50e bpl.n 8002c80 - 8002c62: 68da ldr r2, [r3, #12] - 8002c64: 0792 lsls r2, r2, #30 - 8002c66: d50b bpl.n 8002c80 - 8002c68: f06f 0202 mvn.w r2, #2 - 8002c6c: 611a str r2, [r3, #16] - 8002c6e: 2201 movs r2, #1 - 8002c70: 7702 strb r2, [r0, #28] - 8002c72: 699b ldr r3, [r3, #24] - 8002c74: 079b lsls r3, r3, #30 - 8002c76: d077 beq.n 8002d68 - 8002c78: f7ff ffea bl 8002c50 - 8002c7c: 2300 movs r3, #0 - 8002c7e: 7723 strb r3, [r4, #28] - 8002c80: 6823 ldr r3, [r4, #0] - 8002c82: 691a ldr r2, [r3, #16] - 8002c84: 0750 lsls r0, r2, #29 - 8002c86: d510 bpl.n 8002caa - 8002c88: 68da ldr r2, [r3, #12] - 8002c8a: 0751 lsls r1, r2, #29 - 8002c8c: d50d bpl.n 8002caa - 8002c8e: f06f 0204 mvn.w r2, #4 - 8002c92: 611a str r2, [r3, #16] - 8002c94: 2202 movs r2, #2 - 8002c96: 7722 strb r2, [r4, #28] - 8002c98: 699b ldr r3, [r3, #24] - 8002c9a: f413 7f40 tst.w r3, #768 @ 0x300 - 8002c9e: 4620 mov r0, r4 - 8002ca0: d068 beq.n 8002d74 - 8002ca2: f7ff ffd5 bl 8002c50 - 8002ca6: 2300 movs r3, #0 - 8002ca8: 7723 strb r3, [r4, #28] - 8002caa: 6823 ldr r3, [r4, #0] - 8002cac: 691a ldr r2, [r3, #16] - 8002cae: 0712 lsls r2, r2, #28 - 8002cb0: d50f bpl.n 8002cd2 - 8002cb2: 68da ldr r2, [r3, #12] - 8002cb4: 0710 lsls r0, r2, #28 - 8002cb6: d50c bpl.n 8002cd2 - 8002cb8: f06f 0208 mvn.w r2, #8 - 8002cbc: 611a str r2, [r3, #16] - 8002cbe: 2204 movs r2, #4 - 8002cc0: 7722 strb r2, [r4, #28] - 8002cc2: 69db ldr r3, [r3, #28] - 8002cc4: 0799 lsls r1, r3, #30 - 8002cc6: 4620 mov r0, r4 - 8002cc8: d05a beq.n 8002d80 - 8002cca: f7ff ffc1 bl 8002c50 - 8002cce: 2300 movs r3, #0 - 8002cd0: 7723 strb r3, [r4, #28] - 8002cd2: 6823 ldr r3, [r4, #0] - 8002cd4: 691a ldr r2, [r3, #16] - 8002cd6: 06d2 lsls r2, r2, #27 - 8002cd8: d510 bpl.n 8002cfc - 8002cda: 68da ldr r2, [r3, #12] - 8002cdc: 06d0 lsls r0, r2, #27 - 8002cde: d50d bpl.n 8002cfc - 8002ce0: f06f 0210 mvn.w r2, #16 - 8002ce4: 611a str r2, [r3, #16] - 8002ce6: 2208 movs r2, #8 - 8002ce8: 7722 strb r2, [r4, #28] - 8002cea: 69db ldr r3, [r3, #28] - 8002cec: f413 7f40 tst.w r3, #768 @ 0x300 - 8002cf0: 4620 mov r0, r4 - 8002cf2: d04b beq.n 8002d8c - 8002cf4: f7ff ffac bl 8002c50 - 8002cf8: 2300 movs r3, #0 - 8002cfa: 7723 strb r3, [r4, #28] - 8002cfc: 6823 ldr r3, [r4, #0] - 8002cfe: 691a ldr r2, [r3, #16] - 8002d00: 07d1 lsls r1, r2, #31 - 8002d02: d508 bpl.n 8002d16 - 8002d04: 68da ldr r2, [r3, #12] - 8002d06: 07d2 lsls r2, r2, #31 - 8002d08: d505 bpl.n 8002d16 - 8002d0a: f06f 0201 mvn.w r2, #1 - 8002d0e: 611a str r2, [r3, #16] - 8002d10: 4620 mov r0, r4 - 8002d12: f7ff ff9b bl 8002c4c - 8002d16: 6823 ldr r3, [r4, #0] - 8002d18: 691a ldr r2, [r3, #16] - 8002d1a: 0610 lsls r0, r2, #24 - 8002d1c: d508 bpl.n 8002d30 - 8002d1e: 68da ldr r2, [r3, #12] - 8002d20: 0611 lsls r1, r2, #24 - 8002d22: d505 bpl.n 8002d30 - 8002d24: f06f 0280 mvn.w r2, #128 @ 0x80 - 8002d28: 611a str r2, [r3, #16] - 8002d2a: 4620 mov r0, r4 - 8002d2c: f000 f9ab bl 8003086 - 8002d30: 6823 ldr r3, [r4, #0] - 8002d32: 691a ldr r2, [r3, #16] - 8002d34: 0652 lsls r2, r2, #25 - 8002d36: d508 bpl.n 8002d4a - 8002d38: 68da ldr r2, [r3, #12] - 8002d3a: 0650 lsls r0, r2, #25 - 8002d3c: d505 bpl.n 8002d4a - 8002d3e: f06f 0240 mvn.w r2, #64 @ 0x40 - 8002d42: 611a str r2, [r3, #16] - 8002d44: 4620 mov r0, r4 - 8002d46: f7ff ff85 bl 8002c54 - 8002d4a: 6823 ldr r3, [r4, #0] - 8002d4c: 691a ldr r2, [r3, #16] - 8002d4e: 0691 lsls r1, r2, #26 - 8002d50: d522 bpl.n 8002d98 - 8002d52: 68da ldr r2, [r3, #12] - 8002d54: 0692 lsls r2, r2, #26 - 8002d56: d51f bpl.n 8002d98 - 8002d58: f06f 0220 mvn.w r2, #32 - 8002d5c: 4620 mov r0, r4 - 8002d5e: 611a str r2, [r3, #16] - 8002d60: e8bd 4010 ldmia.w sp!, {r4, lr} - 8002d64: f000 b98e b.w 8003084 - 8002d68: f7ff ff71 bl 8002c4e - 8002d6c: 4620 mov r0, r4 - 8002d6e: f7ff ff70 bl 8002c52 - 8002d72: e783 b.n 8002c7c - 8002d74: f7ff ff6b bl 8002c4e - 8002d78: 4620 mov r0, r4 - 8002d7a: f7ff ff6a bl 8002c52 - 8002d7e: e792 b.n 8002ca6 - 8002d80: f7ff ff65 bl 8002c4e - 8002d84: 4620 mov r0, r4 - 8002d86: f7ff ff64 bl 8002c52 - 8002d8a: e7a0 b.n 8002cce - 8002d8c: f7ff ff5f bl 8002c4e - 8002d90: 4620 mov r0, r4 - 8002d92: f7ff ff5e bl 8002c52 - 8002d96: e7af b.n 8002cf8 - 8002d98: bd10 pop {r4, pc} - ... - -08002d9c : - 8002d9c: 4a30 ldr r2, [pc, #192] @ (8002e60 ) - 8002d9e: 6803 ldr r3, [r0, #0] - 8002da0: 4290 cmp r0, r2 - 8002da2: d012 beq.n 8002dca - 8002da4: f1b0 4f80 cmp.w r0, #1073741824 @ 0x40000000 - 8002da8: d00f beq.n 8002dca - 8002daa: f5a2 427c sub.w r2, r2, #64512 @ 0xfc00 - 8002dae: 4290 cmp r0, r2 - 8002db0: d00b beq.n 8002dca - 8002db2: f502 6280 add.w r2, r2, #1024 @ 0x400 - 8002db6: 4290 cmp r0, r2 - 8002db8: d007 beq.n 8002dca - 8002dba: f502 6280 add.w r2, r2, #1024 @ 0x400 - 8002dbe: 4290 cmp r0, r2 - 8002dc0: d003 beq.n 8002dca - 8002dc2: f502 4278 add.w r2, r2, #63488 @ 0xf800 - 8002dc6: 4290 cmp r0, r2 - 8002dc8: d119 bne.n 8002dfe - 8002dca: 684a ldr r2, [r1, #4] - 8002dcc: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8002dd0: 4313 orrs r3, r2 - 8002dd2: 4a23 ldr r2, [pc, #140] @ (8002e60 ) - 8002dd4: 4290 cmp r0, r2 - 8002dd6: d029 beq.n 8002e2c - 8002dd8: f1b0 4f80 cmp.w r0, #1073741824 @ 0x40000000 - 8002ddc: d026 beq.n 8002e2c - 8002dde: f5a2 427c sub.w r2, r2, #64512 @ 0xfc00 - 8002de2: 4290 cmp r0, r2 - 8002de4: d022 beq.n 8002e2c - 8002de6: f502 6280 add.w r2, r2, #1024 @ 0x400 - 8002dea: 4290 cmp r0, r2 - 8002dec: d01e beq.n 8002e2c - 8002dee: f502 6280 add.w r2, r2, #1024 @ 0x400 - 8002df2: 4290 cmp r0, r2 - 8002df4: d01a beq.n 8002e2c - 8002df6: f502 4278 add.w r2, r2, #63488 @ 0xf800 - 8002dfa: 4290 cmp r0, r2 - 8002dfc: d016 beq.n 8002e2c - 8002dfe: 4a19 ldr r2, [pc, #100] @ (8002e64 ) - 8002e00: 4290 cmp r0, r2 - 8002e02: d013 beq.n 8002e2c - 8002e04: f502 6280 add.w r2, r2, #1024 @ 0x400 - 8002e08: 4290 cmp r0, r2 - 8002e0a: d00f beq.n 8002e2c - 8002e0c: f502 6280 add.w r2, r2, #1024 @ 0x400 - 8002e10: 4290 cmp r0, r2 - 8002e12: d00b beq.n 8002e2c - 8002e14: f5a2 3298 sub.w r2, r2, #77824 @ 0x13000 - 8002e18: 4290 cmp r0, r2 - 8002e1a: d007 beq.n 8002e2c - 8002e1c: f502 6280 add.w r2, r2, #1024 @ 0x400 - 8002e20: 4290 cmp r0, r2 - 8002e22: d003 beq.n 8002e2c - 8002e24: f502 6280 add.w r2, r2, #1024 @ 0x400 - 8002e28: 4290 cmp r0, r2 - 8002e2a: d103 bne.n 8002e34 - 8002e2c: 68ca ldr r2, [r1, #12] - 8002e2e: f423 7340 bic.w r3, r3, #768 @ 0x300 - 8002e32: 4313 orrs r3, r2 - 8002e34: 694a ldr r2, [r1, #20] - 8002e36: f023 0380 bic.w r3, r3, #128 @ 0x80 - 8002e3a: 4313 orrs r3, r2 - 8002e3c: 6003 str r3, [r0, #0] - 8002e3e: 688b ldr r3, [r1, #8] - 8002e40: 62c3 str r3, [r0, #44] @ 0x2c - 8002e42: 680b ldr r3, [r1, #0] - 8002e44: 6283 str r3, [r0, #40] @ 0x28 - 8002e46: 4b06 ldr r3, [pc, #24] @ (8002e60 ) - 8002e48: 4298 cmp r0, r3 - 8002e4a: d003 beq.n 8002e54 - 8002e4c: f503 6380 add.w r3, r3, #1024 @ 0x400 - 8002e50: 4298 cmp r0, r3 - 8002e52: d101 bne.n 8002e58 - 8002e54: 690b ldr r3, [r1, #16] - 8002e56: 6303 str r3, [r0, #48] @ 0x30 - 8002e58: 2301 movs r3, #1 - 8002e5a: 6143 str r3, [r0, #20] - 8002e5c: 4770 bx lr - 8002e5e: bf00 nop - 8002e60: 40010000 .word 0x40010000 - 8002e64: 40014000 .word 0x40014000 - -08002e68 : - 8002e68: b510 push {r4, lr} - 8002e6a: 4604 mov r4, r0 - 8002e6c: b330 cbz r0, 8002ebc - 8002e6e: f890 303d ldrb.w r3, [r0, #61] @ 0x3d - 8002e72: f003 02ff and.w r2, r3, #255 @ 0xff - 8002e76: b91b cbnz r3, 8002e80 - 8002e78: f880 203c strb.w r2, [r0, #60] @ 0x3c - 8002e7c: f7fe fa16 bl 80012ac - 8002e80: 2302 movs r3, #2 - 8002e82: 6820 ldr r0, [r4, #0] - 8002e84: f884 303d strb.w r3, [r4, #61] @ 0x3d - 8002e88: 1d21 adds r1, r4, #4 - 8002e8a: f7ff ff87 bl 8002d9c - 8002e8e: 2301 movs r3, #1 - 8002e90: f884 3046 strb.w r3, [r4, #70] @ 0x46 - 8002e94: 2000 movs r0, #0 - 8002e96: f884 303e strb.w r3, [r4, #62] @ 0x3e - 8002e9a: f884 303f strb.w r3, [r4, #63] @ 0x3f - 8002e9e: f884 3040 strb.w r3, [r4, #64] @ 0x40 - 8002ea2: f884 3041 strb.w r3, [r4, #65] @ 0x41 - 8002ea6: f884 3042 strb.w r3, [r4, #66] @ 0x42 - 8002eaa: f884 3043 strb.w r3, [r4, #67] @ 0x43 - 8002eae: f884 3044 strb.w r3, [r4, #68] @ 0x44 - 8002eb2: f884 3045 strb.w r3, [r4, #69] @ 0x45 - 8002eb6: f884 303d strb.w r3, [r4, #61] @ 0x3d - 8002eba: bd10 pop {r4, pc} - 8002ebc: 2001 movs r0, #1 - 8002ebe: e7fc b.n 8002eba - -08002ec0 : - 8002ec0: b510 push {r4, lr} - 8002ec2: 6884 ldr r4, [r0, #8] - 8002ec4: 430a orrs r2, r1 - 8002ec6: f424 447f bic.w r4, r4, #65280 @ 0xff00 - 8002eca: ea42 2203 orr.w r2, r2, r3, lsl #8 - 8002ece: 4322 orrs r2, r4 - 8002ed0: 6082 str r2, [r0, #8] - 8002ed2: bd10 pop {r4, pc} - -08002ed4 : - 8002ed4: b538 push {r3, r4, r5, lr} - 8002ed6: f890 303c ldrb.w r3, [r0, #60] @ 0x3c - 8002eda: 2b01 cmp r3, #1 - 8002edc: 4604 mov r4, r0 - 8002ede: f04f 0002 mov.w r0, #2 - 8002ee2: f000 808e beq.w 8003002 - 8002ee6: f884 003d strb.w r0, [r4, #61] @ 0x3d - 8002eea: 2201 movs r2, #1 - 8002eec: 6820 ldr r0, [r4, #0] - 8002eee: f884 203c strb.w r2, [r4, #60] @ 0x3c - 8002ef2: 6883 ldr r3, [r0, #8] - 8002ef4: f423 437f bic.w r3, r3, #65280 @ 0xff00 - 8002ef8: f023 0377 bic.w r3, r3, #119 @ 0x77 - 8002efc: 6083 str r3, [r0, #8] - 8002efe: 680b ldr r3, [r1, #0] - 8002f00: 2b60 cmp r3, #96 @ 0x60 - 8002f02: d04f beq.n 8002fa4 - 8002f04: d832 bhi.n 8002f6c - 8002f06: 2b40 cmp r3, #64 @ 0x40 - 8002f08: d064 beq.n 8002fd4 - 8002f0a: d816 bhi.n 8002f3a - 8002f0c: 2b20 cmp r3, #32 - 8002f0e: d00d beq.n 8002f2c - 8002f10: d80a bhi.n 8002f28 - 8002f12: f033 0110 bics.w r1, r3, #16 - 8002f16: d009 beq.n 8002f2c - 8002f18: 2301 movs r3, #1 - 8002f1a: f884 303d strb.w r3, [r4, #61] @ 0x3d - 8002f1e: 2300 movs r3, #0 - 8002f20: f884 303c strb.w r3, [r4, #60] @ 0x3c - 8002f24: 4610 mov r0, r2 - 8002f26: bd38 pop {r3, r4, r5, pc} - 8002f28: 2b30 cmp r3, #48 @ 0x30 - 8002f2a: d1f5 bne.n 8002f18 - 8002f2c: 6882 ldr r2, [r0, #8] - 8002f2e: f022 0270 bic.w r2, r2, #112 @ 0x70 - 8002f32: 4313 orrs r3, r2 - 8002f34: f043 0307 orr.w r3, r3, #7 - 8002f38: e028 b.n 8002f8c - 8002f3a: 2b50 cmp r3, #80 @ 0x50 - 8002f3c: d1ec bne.n 8002f18 - 8002f3e: 684a ldr r2, [r1, #4] - 8002f40: 68cd ldr r5, [r1, #12] - 8002f42: 6a01 ldr r1, [r0, #32] - 8002f44: 6a03 ldr r3, [r0, #32] - 8002f46: f023 0301 bic.w r3, r3, #1 - 8002f4a: 6203 str r3, [r0, #32] - 8002f4c: 6983 ldr r3, [r0, #24] - 8002f4e: f021 010a bic.w r1, r1, #10 - 8002f52: f023 03f0 bic.w r3, r3, #240 @ 0xf0 - 8002f56: ea43 1305 orr.w r3, r3, r5, lsl #4 - 8002f5a: 430a orrs r2, r1 - 8002f5c: 6183 str r3, [r0, #24] - 8002f5e: 6202 str r2, [r0, #32] - 8002f60: 6883 ldr r3, [r0, #8] - 8002f62: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8002f66: f043 0357 orr.w r3, r3, #87 @ 0x57 - 8002f6a: e00f b.n 8002f8c - 8002f6c: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 - 8002f70: d00d beq.n 8002f8e - 8002f72: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 - 8002f76: d00c beq.n 8002f92 - 8002f78: 2b70 cmp r3, #112 @ 0x70 - 8002f7a: d1cd bne.n 8002f18 - 8002f7c: 68cb ldr r3, [r1, #12] - 8002f7e: e9d1 2101 ldrd r2, r1, [r1, #4] - 8002f82: f7ff ff9d bl 8002ec0 - 8002f86: 6883 ldr r3, [r0, #8] - 8002f88: f043 0377 orr.w r3, r3, #119 @ 0x77 - 8002f8c: 6083 str r3, [r0, #8] - 8002f8e: 2200 movs r2, #0 - 8002f90: e7c2 b.n 8002f18 - 8002f92: 68cb ldr r3, [r1, #12] - 8002f94: e9d1 2101 ldrd r2, r1, [r1, #4] - 8002f98: f7ff ff92 bl 8002ec0 - 8002f9c: 6883 ldr r3, [r0, #8] - 8002f9e: f443 4380 orr.w r3, r3, #16384 @ 0x4000 - 8002fa2: e7f3 b.n 8002f8c - 8002fa4: 6a03 ldr r3, [r0, #32] - 8002fa6: 684d ldr r5, [r1, #4] - 8002fa8: 68c9 ldr r1, [r1, #12] - 8002faa: f023 0310 bic.w r3, r3, #16 - 8002fae: 6203 str r3, [r0, #32] - 8002fb0: 6982 ldr r2, [r0, #24] - 8002fb2: 6a03 ldr r3, [r0, #32] - 8002fb4: f422 4270 bic.w r2, r2, #61440 @ 0xf000 - 8002fb8: f023 03a0 bic.w r3, r3, #160 @ 0xa0 - 8002fbc: ea43 1305 orr.w r3, r3, r5, lsl #4 - 8002fc0: ea42 3201 orr.w r2, r2, r1, lsl #12 - 8002fc4: 6182 str r2, [r0, #24] - 8002fc6: 6203 str r3, [r0, #32] - 8002fc8: 6883 ldr r3, [r0, #8] - 8002fca: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8002fce: f043 0367 orr.w r3, r3, #103 @ 0x67 - 8002fd2: e7db b.n 8002f8c - 8002fd4: 684a ldr r2, [r1, #4] - 8002fd6: 68cd ldr r5, [r1, #12] - 8002fd8: 6a01 ldr r1, [r0, #32] - 8002fda: 6a03 ldr r3, [r0, #32] - 8002fdc: f023 0301 bic.w r3, r3, #1 - 8002fe0: 6203 str r3, [r0, #32] - 8002fe2: 6983 ldr r3, [r0, #24] - 8002fe4: f021 010a bic.w r1, r1, #10 - 8002fe8: f023 03f0 bic.w r3, r3, #240 @ 0xf0 - 8002fec: ea43 1305 orr.w r3, r3, r5, lsl #4 - 8002ff0: 430a orrs r2, r1 - 8002ff2: 6183 str r3, [r0, #24] - 8002ff4: 6202 str r2, [r0, #32] - 8002ff6: 6883 ldr r3, [r0, #8] - 8002ff8: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8002ffc: f043 0347 orr.w r3, r3, #71 @ 0x47 - 8003000: e7c4 b.n 8002f8c - 8003002: 4602 mov r2, r0 - 8003004: e78e b.n 8002f24 - ... - -08003008 : - 8003008: b530 push {r4, r5, lr} - 800300a: f890 303c ldrb.w r3, [r0, #60] @ 0x3c - 800300e: 2b01 cmp r3, #1 - 8003010: 4602 mov r2, r0 - 8003012: f04f 0002 mov.w r0, #2 - 8003016: d032 beq.n 800307e - 8003018: 6813 ldr r3, [r2, #0] - 800301a: f882 003d strb.w r0, [r2, #61] @ 0x3d - 800301e: 685c ldr r4, [r3, #4] - 8003020: 680d ldr r5, [r1, #0] - 8003022: 6898 ldr r0, [r3, #8] - 8003024: f024 0470 bic.w r4, r4, #112 @ 0x70 - 8003028: 432c orrs r4, r5 - 800302a: 605c str r4, [r3, #4] - 800302c: 4c14 ldr r4, [pc, #80] @ (8003080 ) - 800302e: 42a3 cmp r3, r4 - 8003030: d01a beq.n 8003068 - 8003032: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8003036: d017 beq.n 8003068 - 8003038: f5a4 447c sub.w r4, r4, #64512 @ 0xfc00 - 800303c: 42a3 cmp r3, r4 - 800303e: d013 beq.n 8003068 - 8003040: f504 6480 add.w r4, r4, #1024 @ 0x400 - 8003044: 42a3 cmp r3, r4 - 8003046: d00f beq.n 8003068 - 8003048: f504 6480 add.w r4, r4, #1024 @ 0x400 - 800304c: 42a3 cmp r3, r4 - 800304e: d00b beq.n 8003068 - 8003050: f504 4478 add.w r4, r4, #63488 @ 0xf800 - 8003054: 42a3 cmp r3, r4 - 8003056: d007 beq.n 8003068 - 8003058: f504 5470 add.w r4, r4, #15360 @ 0x3c00 - 800305c: 42a3 cmp r3, r4 - 800305e: d003 beq.n 8003068 - 8003060: f5a4 3494 sub.w r4, r4, #75776 @ 0x12800 - 8003064: 42a3 cmp r3, r4 - 8003066: d104 bne.n 8003072 - 8003068: 6849 ldr r1, [r1, #4] - 800306a: f020 0080 bic.w r0, r0, #128 @ 0x80 - 800306e: 4301 orrs r1, r0 - 8003070: 6099 str r1, [r3, #8] - 8003072: 2301 movs r3, #1 - 8003074: 2000 movs r0, #0 - 8003076: f882 303d strb.w r3, [r2, #61] @ 0x3d - 800307a: f882 003c strb.w r0, [r2, #60] @ 0x3c - 800307e: bd30 pop {r4, r5, pc} - 8003080: 40010000 .word 0x40010000 - -08003084 : - 8003084: 4770 bx lr - -08003086 : - 8003086: 4770 bx lr - -08003088 : - 8003088: 680a ldr r2, [r1, #0] - 800308a: f850 3022 ldr.w r3, [r0, r2, lsl #2] - 800308e: f023 0301 bic.w r3, r3, #1 - 8003092: b5f0 push {r4, r5, r6, r7, lr} - 8003094: 688d ldr r5, [r1, #8] - 8003096: f840 3022 str.w r3, [r0, r2, lsl #2] - 800309a: 684b ldr r3, [r1, #4] - 800309c: 68cf ldr r7, [r1, #12] - 800309e: 6b4c ldr r4, [r1, #52] @ 0x34 - 80030a0: f850 6022 ldr.w r6, [r0, r2, lsl #2] - 80030a4: 432b orrs r3, r5 - 80030a6: 433b orrs r3, r7 - 80030a8: 690f ldr r7, [r1, #16] - 80030aa: 433b orrs r3, r7 - 80030ac: 694f ldr r7, [r1, #20] - 80030ae: 433b orrs r3, r7 - 80030b0: 69cf ldr r7, [r1, #28] - 80030b2: 433b orrs r3, r7 - 80030b4: 6a0f ldr r7, [r1, #32] - 80030b6: 433b orrs r3, r7 - 80030b8: 6a4f ldr r7, [r1, #36] @ 0x24 - 80030ba: 433b orrs r3, r7 - 80030bc: 6a8f ldr r7, [r1, #40] @ 0x28 - 80030be: 433b orrs r3, r7 - 80030c0: 6acf ldr r7, [r1, #44] @ 0x2c - 80030c2: 433b orrs r3, r7 - 80030c4: 6b0f ldr r7, [r1, #48] @ 0x30 - 80030c6: 433b orrs r3, r7 - 80030c8: 698f ldr r7, [r1, #24] - 80030ca: 6bc9 ldr r1, [r1, #60] @ 0x3c - 80030cc: 433b orrs r3, r7 - 80030ce: 4323 orrs r3, r4 - 80030d0: 430b orrs r3, r1 - 80030d2: 490a ldr r1, [pc, #40] @ (80030fc ) - 80030d4: 4031 ands r1, r6 - 80030d6: 430b orrs r3, r1 - 80030d8: f1a5 0108 sub.w r1, r5, #8 - 80030dc: 424d negs r5, r1 - 80030de: 414d adcs r5, r1 - 80030e0: ea43 1385 orr.w r3, r3, r5, lsl #6 - 80030e4: f5b4 1f80 cmp.w r4, #1048576 @ 0x100000 - 80030e8: f840 3022 str.w r3, [r0, r2, lsl #2] - 80030ec: d104 bne.n 80030f8 - 80030ee: b11a cbz r2, 80030f8 - 80030f0: 6803 ldr r3, [r0, #0] - 80030f2: f443 1380 orr.w r3, r3, #1048576 @ 0x100000 - 80030f6: 6003 str r3, [r0, #0] - 80030f8: 2000 movs r0, #0 - 80030fa: bdf0 pop {r4, r5, r6, r7, pc} - 80030fc: ffe00080 .word 0xffe00080 - -08003100 : - 8003100: b5f0 push {r4, r5, r6, r7, lr} - 8003102: 680b ldr r3, [r1, #0] - 8003104: 698f ldr r7, [r1, #24] - 8003106: 690d ldr r5, [r1, #16] - 8003108: 433b orrs r3, r7 - 800310a: 684f ldr r7, [r1, #4] - 800310c: ea43 1307 orr.w r3, r3, r7, lsl #4 - 8003110: 688f ldr r7, [r1, #8] - 8003112: eb00 0282 add.w r2, r0, r2, lsl #2 - 8003116: ea43 2307 orr.w r3, r3, r7, lsl #8 - 800311a: 68cf ldr r7, [r1, #12] - 800311c: 6949 ldr r1, [r1, #20] - 800311e: 6856 ldr r6, [r2, #4] - 8003120: 3d01 subs r5, #1 - 8003122: ea43 4307 orr.w r3, r3, r7, lsl #16 - 8003126: 3902 subs r1, #2 - 8003128: ea43 5305 orr.w r3, r3, r5, lsl #20 - 800312c: ea43 6301 orr.w r3, r3, r1, lsl #24 - 8003130: f006 4140 and.w r1, r6, #3221225472 @ 0xc0000000 - 8003134: 430b orrs r3, r1 - 8003136: 6053 str r3, [r2, #4] - 8003138: 6803 ldr r3, [r0, #0] - 800313a: 02db lsls r3, r3, #11 - 800313c: ea4f 5405 mov.w r4, r5, lsl #20 - 8003140: d508 bpl.n 8003154 - 8003142: 6842 ldr r2, [r0, #4] - 8003144: 6843 ldr r3, [r0, #4] - 8003146: f422 0270 bic.w r2, r2, #15728640 @ 0xf00000 - 800314a: f423 0370 bic.w r3, r3, #15728640 @ 0xf00000 - 800314e: 4314 orrs r4, r2 - 8003150: 4323 orrs r3, r4 - 8003152: 6043 str r3, [r0, #4] - 8003154: 2000 movs r0, #0 - 8003156: bdf0 pop {r4, r5, r6, r7, pc} - -08003158 : - 8003158: f5b3 4f80 cmp.w r3, #16384 @ 0x4000 - 800315c: b530 push {r4, r5, lr} - 800315e: d114 bne.n 800318a - 8003160: 698d ldr r5, [r1, #24] - 8003162: 680b ldr r3, [r1, #0] - 8003164: f850 4022 ldr.w r4, [r0, r2, lsl #2] - 8003168: 432b orrs r3, r5 - 800316a: 684d ldr r5, [r1, #4] - 800316c: ea43 1305 orr.w r3, r3, r5, lsl #4 - 8003170: 688d ldr r5, [r1, #8] - 8003172: 68c9 ldr r1, [r1, #12] - 8003174: ea43 2305 orr.w r3, r3, r5, lsl #8 - 8003178: ea43 4301 orr.w r3, r3, r1, lsl #16 - 800317c: 4904 ldr r1, [pc, #16] @ (8003190 ) - 800317e: 4021 ands r1, r4 - 8003180: 430b orrs r3, r1 - 8003182: f840 3022 str.w r3, [r0, r2, lsl #2] - 8003186: 2000 movs r0, #0 - 8003188: bd30 pop {r4, r5, pc} - 800318a: f06f 4370 mvn.w r3, #4026531840 @ 0xf0000000 - 800318e: e7f8 b.n 8003182 - 8003190: cff00000 .word 0xcff00000 - -08003194 : - 8003194: 4770 bx lr - ... - -08003198 : - 8003198: b57f push {r0, r1, r2, r3, r4, r5, r6, lr} - 800319a: f000 fa81 bl 80036a0 - 800319e: f7fd feef bl 8000f80 - 80031a2: 4d17 ldr r5, [pc, #92] @ (8003200 ) - 80031a4: 4e17 ldr r6, [pc, #92] @ (8003204 ) - 80031a6: 6028 str r0, [r5, #0] - 80031a8: 4817 ldr r0, [pc, #92] @ (8003208 ) - 80031aa: 4c18 ldr r4, [pc, #96] @ (800320c ) - 80031ac: f006 fd9c bl 8009ce8 - 80031b0: 6030 str r0, [r6, #0] - 80031b2: 4817 ldr r0, [pc, #92] @ (8003210 ) - 80031b4: f006 fd98 bl 8009ce8 - 80031b8: 4b16 ldr r3, [pc, #88] @ (8003214 ) - 80031ba: 4a17 ldr r2, [pc, #92] @ (8003218 ) - 80031bc: 6018 str r0, [r3, #0] - 80031be: 9202 str r2, [sp, #8] - 80031c0: 4a16 ldr r2, [pc, #88] @ (800321c ) - 80031c2: 9201 str r2, [sp, #4] - 80031c4: 2200 movs r2, #0 - 80031c6: 9200 str r2, [sp, #0] - 80031c8: 4629 mov r1, r5 - 80031ca: 4632 mov r2, r6 - 80031cc: 4620 mov r0, r4 - 80031ce: f000 fda1 bl 8003d14 - 80031d2: 4620 mov r0, r4 - 80031d4: f000 fe2c bl 8003e30 - 80031d8: f894 3031 ldrb.w r3, [r4, #49] @ 0x31 - 80031dc: 075b lsls r3, r3, #29 - 80031de: 4620 mov r0, r4 - 80031e0: d50b bpl.n 80031fa - 80031e2: f000 fe2b bl 8003e3c - 80031e6: 490e ldr r1, [pc, #56] @ (8003220 ) - 80031e8: 4808 ldr r0, [pc, #32] @ (800320c ) - 80031ea: f000 fe9f bl 8003f2c - 80031ee: 4807 ldr r0, [pc, #28] @ (800320c ) - 80031f0: b004 add sp, #16 - 80031f2: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 80031f6: f005 bd4b b.w 8008c90 - 80031fa: f000 fe39 bl 8003e70 - 80031fe: e7f2 b.n 80031e6 - 8003200: 20000f24 .word 0x20000f24 - 8003204: 20000f20 .word 0x20000f20 - 8003208: 0800b734 .word 0x0800b734 - 800320c: 20000f28 .word 0x20000f28 - 8003210: 0800b742 .word 0x0800b742 - 8003214: 20000f1c .word 0x20000f1c - 8003218: 0800a479 .word 0x0800a479 - 800321c: 08003519 .word 0x08003519 - 8003220: 08003195 .word 0x08003195 - -08003224 : - 8003224: b510 push {r4, lr} - 8003226: 480a ldr r0, [pc, #40] @ (8003250 ) - 8003228: 4c0a ldr r4, [pc, #40] @ (8003254 ) - 800322a: f000 f87d bl 8003328 - 800322e: f004 fab5 bl 800779c - 8003232: f7fe fa15 bl 8001660 - 8003236: 6823 ldr r3, [r4, #0] - 8003238: 1ac0 subs r0, r0, r3 - 800323a: 2863 cmp r0, #99 @ 0x63 - 800323c: d907 bls.n 800324e - 800323e: f7fe fa0f bl 8001660 - 8003242: 6020 str r0, [r4, #0] - 8003244: e8bd 4010 ldmia.w sp!, {r4, lr} - 8003248: 4801 ldr r0, [pc, #4] @ (8003250 ) - 800324a: f000 b91f b.w 800348c - 800324e: bd10 pop {r4, pc} - 8003250: 20000f28 .word 0x20000f28 - 8003254: 20000f60 .word 0x20000f60 - -08003258 : - 8003258: 2000 movs r0, #0 - 800325a: 4770 bx lr - -0800325c : - 800325c: b530 push {r4, r5, lr} - 800325e: b08d sub sp, #52 @ 0x34 - 8003260: 460d mov r5, r1 - 8003262: 2230 movs r2, #48 @ 0x30 - 8003264: 2100 movs r1, #0 - 8003266: 4668 mov r0, sp - 8003268: f007 faf3 bl 800a852 - 800326c: 462c mov r4, r5 - 800326e: 466b mov r3, sp - 8003270: 2200 movs r2, #0 - 8003272: b964 cbnz r4, 800328e - 8003274: 490f ldr r1, [pc, #60] @ (80032b4 ) - 8003276: 892b ldrh r3, [r5, #8] - 8003278: 480f ldr r0, [pc, #60] @ (80032b8 ) - 800327a: 604b str r3, [r1, #4] - 800327c: 2214 movs r2, #20 - 800327e: f8c1 d008 str.w sp, [r1, #8] - 8003282: 634d str r5, [r1, #52] @ 0x34 - 8003284: f7fe fd82 bl 8001d8c - 8003288: 4620 mov r0, r4 - 800328a: b00d add sp, #52 @ 0x34 - 800328c: bd30 pop {r4, r5, pc} - 800328e: 2a04 cmp r2, #4 - 8003290: d00c beq.n 80032ac - 8003292: 6861 ldr r1, [r4, #4] - 8003294: 6019 str r1, [r3, #0] - 8003296: 8961 ldrh r1, [r4, #10] - 8003298: 6059 str r1, [r3, #4] - 800329a: b10a cbz r2, 80032a0 - 800329c: f843 3c04 str.w r3, [r3, #-4] - 80032a0: 6824 ldr r4, [r4, #0] - 80032a2: b904 cbnz r4, 80032a6 - 80032a4: 609c str r4, [r3, #8] - 80032a6: 3201 adds r2, #1 - 80032a8: 330c adds r3, #12 - 80032aa: e7e2 b.n 8003272 - 80032ac: f06f 000b mvn.w r0, #11 - 80032b0: e7eb b.n 800328a - 80032b2: bf00 nop - 80032b4: 20000f84 .word 0x20000f84 - 80032b8: 20000fbc .word 0x20000fbc - -080032bc : - 80032bc: b508 push {r3, lr} - 80032be: 4601 mov r1, r0 - 80032c0: 4804 ldr r0, [pc, #16] @ (80032d4 ) - 80032c2: f000 fc8f bl 8003be4 - 80032c6: 4b04 ldr r3, [pc, #16] @ (80032d8 ) - 80032c8: 781a ldrb r2, [r3, #0] - 80032ca: 2a01 cmp r2, #1 - 80032cc: bf04 itt eq - 80032ce: 2200 moveq r2, #0 - 80032d0: 701a strbeq r2, [r3, #0] - 80032d2: bd08 pop {r3, pc} - 80032d4: 0800b7a0 .word 0x0800b7a0 - 80032d8: 200011ac .word 0x200011ac - -080032dc : - 80032dc: f7fe b9c0 b.w 8001660 - -080032e0 : - 80032e0: b508 push {r3, lr} - 80032e2: 4802 ldr r0, [pc, #8] @ (80032ec ) - 80032e4: f7fe fedc bl 80020a0 - 80032e8: 2000 movs r0, #0 - 80032ea: bd08 pop {r3, pc} - 80032ec: 20000fbc .word 0x20000fbc - -080032f0 : - 80032f0: b508 push {r3, lr} - 80032f2: 4613 mov r3, r2 - 80032f4: 460a mov r2, r1 - 80032f6: 4601 mov r1, r0 - 80032f8: 4803 ldr r0, [pc, #12] @ (8003308 ) - 80032fa: f7fe fe18 bl 8001f2e - 80032fe: 3800 subs r0, #0 - 8003300: bf18 it ne - 8003302: 2001 movne r0, #1 - 8003304: 4240 negs r0, r0 - 8003306: bd08 pop {r3, pc} - 8003308: 20000fbc .word 0x20000fbc - -0800330c : - 800330c: b508 push {r3, lr} - 800330e: 4613 mov r3, r2 - 8003310: 460a mov r2, r1 - 8003312: 4601 mov r1, r0 - 8003314: 4803 ldr r0, [pc, #12] @ (8003324 ) - 8003316: f7fe fe31 bl 8001f7c - 800331a: 3800 subs r0, #0 - 800331c: bf18 it ne - 800331e: 2001 movne r0, #1 - 8003320: 4240 negs r0, r0 - 8003322: bd08 pop {r3, pc} - 8003324: 20000fbc .word 0x20000fbc - -08003328 : - 8003328: e92d 41f3 stmdb sp!, {r0, r1, r4, r5, r6, r7, r8, lr} - 800332c: 4f0d ldr r7, [pc, #52] @ (8003364 ) - 800332e: f8df 8038 ldr.w r8, [pc, #56] @ 8003368 - 8003332: 4604 mov r4, r0 - 8003334: 2600 movs r6, #0 - 8003336: 783b ldrb r3, [r7, #0] - 8003338: 9601 str r6, [sp, #4] - 800333a: b91b cbnz r3, 8003344 - 800333c: a901 add r1, sp, #4 - 800333e: 4640 mov r0, r8 - 8003340: f7fe fd7a bl 8001e38 - 8003344: 9d01 ldr r5, [sp, #4] - 8003346: b14d cbz r5, 800335c - 8003348: 6923 ldr r3, [r4, #16] - 800334a: 4621 mov r1, r4 - 800334c: 4628 mov r0, r5 - 800334e: 4798 blx r3 - 8003350: 2800 cmp r0, #0 - 8003352: d0f0 beq.n 8003336 - 8003354: 4628 mov r0, r5 - 8003356: f000 febb bl 80040d0 - 800335a: e7ec b.n 8003336 - 800335c: b002 add sp, #8 - 800335e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 8003362: bf00 nop - 8003364: 200011ac .word 0x200011ac - 8003368: 20000fbc .word 0x20000fbc - -0800336c : - 800336c: f7fe b978 b.w 8001660 - -08003370 : - 8003370: b5f0 push {r4, r5, r6, r7, lr} - 8003372: 4604 mov r4, r0 - 8003374: b08d sub sp, #52 @ 0x34 - 8003376: 2214 movs r2, #20 - 8003378: 2100 movs r1, #0 - 800337a: a807 add r0, sp, #28 - 800337c: f007 fa69 bl 800a852 - 8003380: 6822 ldr r2, [r4, #0] - 8003382: 4b3d ldr r3, [pc, #244] @ (8003478 ) - 8003384: 429a cmp r2, r3 - 8003386: d174 bne.n 8003472 - 8003388: f5a3 4390 sub.w r3, r3, #18432 @ 0x4800 - 800338c: 2400 movs r4, #0 - 800338e: 9400 str r4, [sp, #0] - 8003390: 6b1a ldr r2, [r3, #48] @ 0x30 - 8003392: 483a ldr r0, [pc, #232] @ (800347c ) - 8003394: f042 7200 orr.w r2, r2, #33554432 @ 0x2000000 - 8003398: 631a str r2, [r3, #48] @ 0x30 - 800339a: 6b1a ldr r2, [r3, #48] @ 0x30 - 800339c: f002 7200 and.w r2, r2, #33554432 @ 0x2000000 - 80033a0: 9200 str r2, [sp, #0] - 80033a2: 9a00 ldr r2, [sp, #0] - 80033a4: 9401 str r4, [sp, #4] - 80033a6: 6b1a ldr r2, [r3, #48] @ 0x30 - 80033a8: f042 6280 orr.w r2, r2, #67108864 @ 0x4000000 - 80033ac: 631a str r2, [r3, #48] @ 0x30 - 80033ae: 6b1a ldr r2, [r3, #48] @ 0x30 - 80033b0: f002 6280 and.w r2, r2, #67108864 @ 0x4000000 - 80033b4: 9201 str r2, [sp, #4] - 80033b6: 9a01 ldr r2, [sp, #4] - 80033b8: 9402 str r4, [sp, #8] - 80033ba: 6b1a ldr r2, [r3, #48] @ 0x30 - 80033bc: f042 6200 orr.w r2, r2, #134217728 @ 0x8000000 - 80033c0: 631a str r2, [r3, #48] @ 0x30 - 80033c2: 6b1a ldr r2, [r3, #48] @ 0x30 - 80033c4: f002 6200 and.w r2, r2, #134217728 @ 0x8000000 - 80033c8: 9202 str r2, [sp, #8] - 80033ca: 9a02 ldr r2, [sp, #8] - 80033cc: 9403 str r4, [sp, #12] - 80033ce: 6b1a ldr r2, [r3, #48] @ 0x30 - 80033d0: f042 0204 orr.w r2, r2, #4 - 80033d4: 631a str r2, [r3, #48] @ 0x30 - 80033d6: 6b1a ldr r2, [r3, #48] @ 0x30 - 80033d8: f002 0204 and.w r2, r2, #4 - 80033dc: 9203 str r2, [sp, #12] - 80033de: 9a03 ldr r2, [sp, #12] - 80033e0: 9404 str r4, [sp, #16] - 80033e2: 6b1a ldr r2, [r3, #48] @ 0x30 - 80033e4: f042 0201 orr.w r2, r2, #1 - 80033e8: 631a str r2, [r3, #48] @ 0x30 - 80033ea: 6b1a ldr r2, [r3, #48] @ 0x30 - 80033ec: f002 0201 and.w r2, r2, #1 - 80033f0: 9204 str r2, [sp, #16] - 80033f2: 9a04 ldr r2, [sp, #16] - 80033f4: 9405 str r4, [sp, #20] - 80033f6: 6b1a ldr r2, [r3, #48] @ 0x30 - 80033f8: f042 0202 orr.w r2, r2, #2 - 80033fc: 631a str r2, [r3, #48] @ 0x30 - 80033fe: 6b1a ldr r2, [r3, #48] @ 0x30 - 8003400: f002 0202 and.w r2, r2, #2 - 8003404: 9205 str r2, [sp, #20] - 8003406: 9a05 ldr r2, [sp, #20] - 8003408: 9406 str r4, [sp, #24] - 800340a: 6b1a ldr r2, [r3, #48] @ 0x30 - 800340c: f042 0240 orr.w r2, r2, #64 @ 0x40 - 8003410: 631a str r2, [r3, #48] @ 0x30 - 8003412: 6b1b ldr r3, [r3, #48] @ 0x30 - 8003414: f003 0340 and.w r3, r3, #64 @ 0x40 - 8003418: 9306 str r3, [sp, #24] - 800341a: 2702 movs r7, #2 - 800341c: 2603 movs r6, #3 - 800341e: 250b movs r5, #11 - 8003420: 9b06 ldr r3, [sp, #24] - 8003422: a907 add r1, sp, #28 - 8003424: 2332 movs r3, #50 @ 0x32 - 8003426: e9cd 3707 strd r3, r7, [sp, #28] - 800342a: e9cd 650a strd r6, r5, [sp, #40] @ 0x28 - 800342e: f7ff f83f bl 80024b0 - 8003432: 2386 movs r3, #134 @ 0x86 - 8003434: 4812 ldr r0, [pc, #72] @ (8003480 ) - 8003436: 950b str r5, [sp, #44] @ 0x2c - 8003438: a907 add r1, sp, #28 - 800343a: e9cd 3707 strd r3, r7, [sp, #28] - 800343e: e9cd 4609 strd r4, r6, [sp, #36] @ 0x24 - 8003442: f7ff f835 bl 80024b0 - 8003446: f44f 53c0 mov.w r3, #6144 @ 0x1800 - 800344a: 480e ldr r0, [pc, #56] @ (8003484 ) - 800344c: 950b str r5, [sp, #44] @ 0x2c - 800344e: a907 add r1, sp, #28 - 8003450: e9cd 3707 strd r3, r7, [sp, #28] - 8003454: e9cd 4609 strd r4, r6, [sp, #36] @ 0x24 - 8003458: f7ff f82a bl 80024b0 - 800345c: f44f 4380 mov.w r3, #16384 @ 0x4000 - 8003460: 4809 ldr r0, [pc, #36] @ (8003488 ) - 8003462: 950b str r5, [sp, #44] @ 0x2c - 8003464: a907 add r1, sp, #28 - 8003466: e9cd 3707 strd r3, r7, [sp, #28] - 800346a: e9cd 4609 strd r4, r6, [sp, #36] @ 0x24 - 800346e: f7ff f81f bl 80024b0 - 8003472: b00d add sp, #52 @ 0x34 - 8003474: bdf0 pop {r4, r5, r6, r7, pc} - 8003476: bf00 nop - 8003478: 40028000 .word 0x40028000 - 800347c: 40020800 .word 0x40020800 - 8003480: 40020000 .word 0x40020000 - 8003484: 40020400 .word 0x40020400 - 8003488: 40021800 .word 0x40021800 - -0800348c : - 800348c: b570 push {r4, r5, r6, lr} - 800348e: b09a sub sp, #104 @ 0x68 - 8003490: 2264 movs r2, #100 @ 0x64 - 8003492: 4604 mov r4, r0 - 8003494: 2100 movs r1, #0 - 8003496: a801 add r0, sp, #4 - 8003498: f007 f9db bl 800a852 - 800349c: 481a ldr r0, [pc, #104] @ (8003508 ) - 800349e: f7fe f84b bl 8001538 - 80034a2: f894 3031 ldrb.w r3, [r4, #49] @ 0x31 - 80034a6: 075a lsls r2, r3, #29 - 80034a8: d50e bpl.n 80034c8 - 80034aa: 2801 cmp r0, #1 - 80034ac: dc0a bgt.n 80034c4 - 80034ae: 4817 ldr r0, [pc, #92] @ (800350c ) - 80034b0: f7fe fc3a bl 8001d28 - 80034b4: 4620 mov r0, r4 - 80034b6: f000 fcdb bl 8003e70 - 80034ba: 4620 mov r0, r4 - 80034bc: f000 fd1c bl 8003ef8 - 80034c0: b01a add sp, #104 @ 0x68 - 80034c2: bd70 pop {r4, r5, r6, pc} - 80034c4: 075b lsls r3, r3, #29 - 80034c6: d4fb bmi.n 80034c0 - 80034c8: 2801 cmp r0, #1 - 80034ca: ddf9 ble.n 80034c0 - 80034cc: 1e83 subs r3, r0, #2 - 80034ce: 2b03 cmp r3, #3 - 80034d0: d8f6 bhi.n 80034c0 - 80034d2: 4a0f ldr r2, [pc, #60] @ (8003510 ) - 80034d4: 480d ldr r0, [pc, #52] @ (800350c ) - 80034d6: f832 5013 ldrh.w r5, [r2, r3, lsl #1] - 80034da: 4a0e ldr r2, [pc, #56] @ (8003514 ) - 80034dc: a901 add r1, sp, #4 - 80034de: f832 6013 ldrh.w r6, [r2, r3, lsl #1] - 80034e2: f7fe fd6f bl 8001fc4 - 80034e6: a901 add r1, sp, #4 - 80034e8: 4808 ldr r0, [pc, #32] @ (800350c ) - 80034ea: e9cd 5606 strd r5, r6, [sp, #24] - 80034ee: f7fe fdcb bl 8002088 - 80034f2: 4806 ldr r0, [pc, #24] @ (800350c ) - 80034f4: f7fe fbe2 bl 8001cbc - 80034f8: 4620 mov r0, r4 - 80034fa: f000 fc9f bl 8003e3c - 80034fe: 4620 mov r0, r4 - 8003500: f000 fcd2 bl 8003ea8 - 8003504: e7dc b.n 80034c0 - 8003506: bf00 nop - 8003508: 20000f64 .word 0x20000f64 - 800350c: 20000fbc .word 0x20000fbc - 8003510: 0800b798 .word 0x0800b798 - 8003514: 0800b790 .word 0x0800b790 - -08003518 : - 8003518: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} - 800351a: 4604 mov r4, r0 - 800351c: b930 cbnz r0, 800352c - 800351e: 4b32 ldr r3, [pc, #200] @ (80035e8 ) - 8003520: 4932 ldr r1, [pc, #200] @ (80035ec ) - 8003522: 4833 ldr r0, [pc, #204] @ (80035f0 ) - 8003524: f240 126b movw r2, #363 @ 0x16b - 8003528: f007 f92e bl 800a788 - 800352c: f247 4373 movw r3, #29811 @ 0x7473 - 8003530: 8663 strh r3, [r4, #50] @ 0x32 - 8003532: 4b30 ldr r3, [pc, #192] @ (80035f4 ) - 8003534: 4d30 ldr r5, [pc, #192] @ (80035f8 ) - 8003536: 6163 str r3, [r4, #20] - 8003538: 4b30 ldr r3, [pc, #192] @ (80035fc ) - 800353a: 61a3 str r3, [r4, #24] - 800353c: 4b30 ldr r3, [pc, #192] @ (8003600 ) - 800353e: 602b str r3, [r5, #0] - 8003540: 4b30 ldr r3, [pc, #192] @ (8003604 ) - 8003542: 9300 str r3, [sp, #0] - 8003544: f44f 0300 mov.w r3, #8388608 @ 0x800000 - 8003548: 60ab str r3, [r5, #8] - 800354a: 4b2f ldr r3, [pc, #188] @ (8003608 ) - 800354c: 60eb str r3, [r5, #12] - 800354e: 4b2f ldr r3, [pc, #188] @ (800360c ) - 8003550: 612b str r3, [r5, #16] - 8003552: 2700 movs r7, #0 - 8003554: f44f 63c0 mov.w r3, #1536 @ 0x600 - 8003558: 4628 mov r0, r5 - 800355a: 616b str r3, [r5, #20] - 800355c: f8ad 7004 strh.w r7, [sp, #4] - 8003560: f8c5 d004 str.w sp, [r5, #4] - 8003564: f7fe fac0 bl 8001ae8 - 8003568: 4b29 ldr r3, [pc, #164] @ (8003610 ) - 800356a: 4639 mov r1, r7 - 800356c: 4606 mov r6, r0 - 800356e: 2234 movs r2, #52 @ 0x34 - 8003570: 4618 mov r0, r3 - 8003572: f007 f96e bl 800a852 - 8003576: 2221 movs r2, #33 @ 0x21 - 8003578: f840 2c04 str.w r2, [r0, #-4] - 800357c: f44f 0240 mov.w r2, #12582912 @ 0xc00000 - 8003580: 6102 str r2, [r0, #16] - 8003582: 4824 ldr r0, [pc, #144] @ (8003614 ) - 8003584: f000 fad8 bl 8003b38 - 8003588: 2306 movs r3, #6 - 800358a: f884 3030 strb.w r3, [r4, #48] @ 0x30 - 800358e: 686b ldr r3, [r5, #4] - 8003590: 4921 ldr r1, [pc, #132] @ (8003618 ) - 8003592: 781a ldrb r2, [r3, #0] - 8003594: f884 202a strb.w r2, [r4, #42] @ 0x2a - 8003598: 785a ldrb r2, [r3, #1] - 800359a: f884 202b strb.w r2, [r4, #43] @ 0x2b - 800359e: 789a ldrb r2, [r3, #2] - 80035a0: f884 202c strb.w r2, [r4, #44] @ 0x2c - 80035a4: 78da ldrb r2, [r3, #3] - 80035a6: f884 202d strb.w r2, [r4, #45] @ 0x2d - 80035aa: 791a ldrb r2, [r3, #4] - 80035ac: f884 202e strb.w r2, [r4, #46] @ 0x2e - 80035b0: 795b ldrb r3, [r3, #5] - 80035b2: f884 302f strb.w r3, [r4, #47] @ 0x2f - 80035b6: f240 53dc movw r3, #1500 @ 0x5dc - 80035ba: 8523 strh r3, [r4, #40] @ 0x28 - 80035bc: f894 3031 ldrb.w r3, [r4, #49] @ 0x31 - 80035c0: 4816 ldr r0, [pc, #88] @ (800361c ) - 80035c2: f043 030a orr.w r3, r3, #10 - 80035c6: f884 3031 strb.w r3, [r4, #49] @ 0x31 - 80035ca: f7fd ff40 bl 800144e - 80035ce: 4813 ldr r0, [pc, #76] @ (800361c ) - 80035d0: f7fd ff51 bl 8001476 - 80035d4: b92e cbnz r6, 80035e2 - 80035d6: 4620 mov r0, r4 - 80035d8: f7ff ff58 bl 800348c - 80035dc: 2000 movs r0, #0 - 80035de: b003 add sp, #12 - 80035e0: bdf0 pop {r4, r5, r6, r7, pc} - 80035e2: f7fd fccb bl 8000f7c - 80035e6: e7f9 b.n 80035dc - 80035e8: 0800b74b .word 0x0800b74b - 80035ec: 0800d0ae .word 0x0800d0ae - 80035f0: 0800b767 .word 0x0800b767 - 80035f4: 08009551 .word 0x08009551 - 80035f8: 20000fbc .word 0x20000fbc - 80035fc: 0800325d .word 0x0800325d - 8003600: 40028000 .word 0x40028000 - 8003604: 00e18000 .word 0x00e18000 - 8003608: 2000106c .word 0x2000106c - 800360c: 2000110c .word 0x2000110c - 8003610: 20000f88 .word 0x20000f88 - 8003614: 0800b7a0 .word 0x0800b7a0 - 8003618: 2000000c .word 0x2000000c - 800361c: 20000f64 .word 0x20000f64 - -08003620 : - 8003620: b513 push {r0, r1, r4, lr} - 8003622: 4604 mov r4, r0 - 8003624: 480c ldr r0, [pc, #48] @ (8003658 ) - 8003626: f000 faa9 bl 8003b7c - 800362a: 4603 mov r3, r0 - 800362c: b178 cbz r0, 800364e - 800362e: f100 0220 add.w r2, r0, #32 - 8003632: 490a ldr r1, [pc, #40] @ (800365c ) - 8003634: 6022 str r2, [r4, #0] - 8003636: 6101 str r1, [r0, #16] - 8003638: f44f 61c0 mov.w r1, #1536 @ 0x600 - 800363c: e9cd 2100 strd r2, r1, [sp] - 8003640: 2100 movs r1, #0 - 8003642: 2241 movs r2, #65 @ 0x41 - 8003644: 4608 mov r0, r1 - 8003646: f000 fcf1 bl 800402c - 800364a: b002 add sp, #8 - 800364c: bd10 pop {r4, pc} - 800364e: 4a04 ldr r2, [pc, #16] @ (8003660 ) - 8003650: 6020 str r0, [r4, #0] - 8003652: 2101 movs r1, #1 - 8003654: 7011 strb r1, [r2, #0] - 8003656: e7f8 b.n 800364a - 8003658: 0800b7a0 .word 0x0800b7a0 - 800365c: 080032bd .word 0x080032bd - 8003660: 200011ac .word 0x200011ac - -08003664 : - 8003664: b530 push {r4, r5, lr} - 8003666: 2500 movs r5, #0 - 8003668: f842 5c20 str.w r5, [r2, #-32] - 800366c: f1a2 0420 sub.w r4, r2, #32 - 8003670: f822 5c18 strh.w r5, [r2, #-24] - 8003674: f822 3c16 strh.w r3, [r2, #-22] - 8003678: 6802 ldr r2, [r0, #0] - 800367a: b922 cbnz r2, 8003686 - 800367c: 6004 str r4, [r0, #0] - 800367e: 600c str r4, [r1, #0] - 8003680: 6802 ldr r2, [r0, #0] - 8003682: b91a cbnz r2, 800368c - 8003684: bd30 pop {r4, r5, pc} - 8003686: 680a ldr r2, [r1, #0] - 8003688: 6014 str r4, [r2, #0] - 800368a: e7f8 b.n 800367e - 800368c: 8911 ldrh r1, [r2, #8] - 800368e: 4419 add r1, r3 - 8003690: 8111 strh r1, [r2, #8] - 8003692: 6812 ldr r2, [r2, #0] - 8003694: e7f5 b.n 8003682 - -08003696 : - 8003696: ba40 rev16 r0, r0 - 8003698: b280 uxth r0, r0 - 800369a: 4770 bx lr - -0800369c : - 800369c: ba00 rev r0, r0 - 800369e: 4770 bx lr - -080036a0 : - 80036a0: b508 push {r3, lr} - 80036a2: f000 f80d bl 80036c0 - 80036a6: f000 fa5b bl 8003b60 - 80036aa: f000 fb05 bl 8003cb8 - 80036ae: f004 f8a1 bl 80077f4 - 80036b2: f000 ffb3 bl 800461c - 80036b6: e8bd 4008 ldmia.w sp!, {r3, lr} - 80036ba: f004 b85d b.w 8007778 - ... - -080036c0 : - 80036c0: 4b0a ldr r3, [pc, #40] @ (80036ec ) - 80036c2: 4a0b ldr r2, [pc, #44] @ (80036f0 ) - 80036c4: 480b ldr r0, [pc, #44] @ (80036f4 ) - 80036c6: f023 0303 bic.w r3, r3, #3 - 80036ca: 6013 str r3, [r2, #0] - 80036cc: f44f 3180 mov.w r1, #65536 @ 0x10000 - 80036d0: 2200 movs r2, #0 - 80036d2: e9c3 1200 strd r1, r2, [r3] - 80036d6: 721a strb r2, [r3, #8] - 80036d8: 185a adds r2, r3, r1 - 80036da: 6002 str r2, [r0, #0] - 80036dc: 2001 movs r0, #1 - 80036de: e9c2 1100 strd r1, r1, [r2] - 80036e2: 7210 strb r0, [r2, #8] - 80036e4: 4a04 ldr r2, [pc, #16] @ (80036f8 ) - 80036e6: 6013 str r3, [r2, #0] - 80036e8: 4770 bx lr - 80036ea: bf00 nop - 80036ec: 20005b5f .word 0x20005b5f - 80036f0: 20005b58 .word 0x20005b58 - 80036f4: 20005b54 .word 0x20005b54 - 80036f8: 20005b50 .word 0x20005b50 - -080036fc : - 80036fc: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 8003700: 4604 mov r4, r0 - 8003702: 2800 cmp r0, #0 - 8003704: f000 8092 beq.w 800382c - 8003708: 0783 lsls r3, r0, #30 - 800370a: d008 beq.n 800371e - 800370c: 4b48 ldr r3, [pc, #288] @ (8003830 ) - 800370e: 4949 ldr r1, [pc, #292] @ (8003834 ) - 8003710: f240 2273 movw r2, #627 @ 0x273 - 8003714: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} - 8003718: 4847 ldr r0, [pc, #284] @ (8003838 ) - 800371a: f007 b835 b.w 800a788 - 800371e: f8df 813c ldr.w r8, [pc, #316] @ 800385c - 8003722: f8d8 3000 ldr.w r3, [r8] - 8003726: f1a0 050c sub.w r5, r0, #12 - 800372a: 42ab cmp r3, r5 - 800372c: d805 bhi.n 800373a - 800372e: 4f43 ldr r7, [pc, #268] @ (800383c ) - 8003730: 683a ldr r2, [r7, #0] - 8003732: f100 010c add.w r1, r0, #12 - 8003736: 428a cmp r2, r1 - 8003738: d204 bcs.n 8003744 - 800373a: 4b3d ldr r3, [pc, #244] @ (8003830 ) - 800373c: 4940 ldr r1, [pc, #256] @ (8003840 ) - 800373e: f240 227f movw r2, #639 @ 0x27f - 8003742: e7e7 b.n 8003714 - 8003744: f810 1c04 ldrb.w r1, [r0, #-4] - 8003748: b921 cbnz r1, 8003754 - 800374a: 4b39 ldr r3, [pc, #228] @ (8003830 ) - 800374c: 493d ldr r1, [pc, #244] @ (8003844 ) - 800374e: f44f 7223 mov.w r2, #652 @ 0x28c - 8003752: e7df b.n 8003714 - 8003754: e950 6003 ldrd r6, r0, [r0, #-12] - 8003758: f5b6 3f80 cmp.w r6, #65536 @ 0x10000 - 800375c: d80e bhi.n 800377c - 800375e: f5b0 3f80 cmp.w r0, #65536 @ 0x10000 - 8003762: d80b bhi.n 800377c - 8003764: 1ae9 subs r1, r5, r3 - 8003766: 4281 cmp r1, r0 - 8003768: d002 beq.n 8003770 - 800376a: 5818 ldr r0, [r3, r0] - 800376c: 4281 cmp r1, r0 - 800376e: d105 bne.n 800377c - 8003770: 4433 add r3, r6 - 8003772: 429a cmp r2, r3 - 8003774: d007 beq.n 8003786 - 8003776: 685b ldr r3, [r3, #4] - 8003778: 4299 cmp r1, r3 - 800377a: d004 beq.n 8003786 - 800377c: 4b2c ldr r3, [pc, #176] @ (8003830 ) - 800377e: 4932 ldr r1, [pc, #200] @ (8003848 ) - 8003780: f240 2295 movw r2, #661 @ 0x295 - 8003784: e7c6 b.n 8003714 - 8003786: 4e31 ldr r6, [pc, #196] @ (800384c ) - 8003788: 2300 movs r3, #0 - 800378a: f804 3c04 strb.w r3, [r4, #-4] - 800378e: 6833 ldr r3, [r6, #0] - 8003790: 42ab cmp r3, r5 - 8003792: bf88 it hi - 8003794: 6035 strhi r5, [r6, #0] - 8003796: 42aa cmp r2, r5 - 8003798: d81c bhi.n 80037d4 - 800379a: 4b25 ldr r3, [pc, #148] @ (8003830 ) - 800379c: 492c ldr r1, [pc, #176] @ (8003850 ) - 800379e: 4826 ldr r0, [pc, #152] @ (8003838 ) - 80037a0: f44f 72f0 mov.w r2, #480 @ 0x1e0 - 80037a4: f006 fff0 bl 800a788 - 80037a8: f814 3c04 ldrb.w r3, [r4, #-4] - 80037ac: b133 cbz r3, 80037bc - 80037ae: 4b20 ldr r3, [pc, #128] @ (8003830 ) - 80037b0: 4928 ldr r1, [pc, #160] @ (8003854 ) - 80037b2: 4821 ldr r0, [pc, #132] @ (8003838 ) - 80037b4: f240 12e1 movw r2, #481 @ 0x1e1 - 80037b8: f006 ffe6 bl 800a788 - 80037bc: f854 3c0c ldr.w r3, [r4, #-12] - 80037c0: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 80037c4: d906 bls.n 80037d4 - 80037c6: 4b1a ldr r3, [pc, #104] @ (8003830 ) - 80037c8: 4923 ldr r1, [pc, #140] @ (8003858 ) - 80037ca: 481b ldr r0, [pc, #108] @ (8003838 ) - 80037cc: f44f 72f2 mov.w r2, #484 @ 0x1e4 - 80037d0: f006 ffda bl 800a788 - 80037d4: f8d8 3000 ldr.w r3, [r8] - 80037d8: f854 1c0c ldr.w r1, [r4, #-12] - 80037dc: 185a adds r2, r3, r1 - 80037de: 4295 cmp r5, r2 - 80037e0: d011 beq.n 8003806 - 80037e2: 7a10 ldrb r0, [r2, #8] - 80037e4: b978 cbnz r0, 8003806 - 80037e6: 6838 ldr r0, [r7, #0] - 80037e8: 4282 cmp r2, r0 - 80037ea: d00c beq.n 8003806 - 80037ec: 6830 ldr r0, [r6, #0] - 80037ee: 4282 cmp r2, r0 - 80037f0: 585a ldr r2, [r3, r1] - 80037f2: bf08 it eq - 80037f4: 6035 streq r5, [r6, #0] - 80037f6: f5b2 3f80 cmp.w r2, #65536 @ 0x10000 - 80037fa: f844 2c0c str.w r2, [r4, #-12] - 80037fe: bf1e ittt ne - 8003800: 18d2 addne r2, r2, r3 - 8003802: 1ae9 subne r1, r5, r3 - 8003804: 6051 strne r1, [r2, #4] - 8003806: f854 2c08 ldr.w r2, [r4, #-8] - 800380a: 1899 adds r1, r3, r2 - 800380c: 428d cmp r5, r1 - 800380e: d00d beq.n 800382c - 8003810: 7a08 ldrb r0, [r1, #8] - 8003812: b958 cbnz r0, 800382c - 8003814: 6830 ldr r0, [r6, #0] - 8003816: 4285 cmp r5, r0 - 8003818: bf08 it eq - 800381a: 6031 streq r1, [r6, #0] - 800381c: f854 1c0c ldr.w r1, [r4, #-12] - 8003820: 5099 str r1, [r3, r2] - 8003822: f5b1 3f80 cmp.w r1, #65536 @ 0x10000 - 8003826: bf1c itt ne - 8003828: 185b addne r3, r3, r1 - 800382a: 605a strne r2, [r3, #4] - 800382c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 8003830: 0800b7ac .word 0x0800b7ac - 8003834: 0800b7db .word 0x0800b7db - 8003838: 0800b767 .word 0x0800b767 - 800383c: 20005b54 .word 0x20005b54 - 8003840: 0800b7fc .word 0x0800b7fc - 8003844: 0800b815 .word 0x0800b815 - 8003848: 0800b83b .word 0x0800b83b - 800384c: 20005b50 .word 0x20005b50 - 8003850: 0800b86d .word 0x0800b86d - 8003854: 0800b887 .word 0x0800b887 - 8003858: 0800b8a2 .word 0x0800b8a2 - 800385c: 20005b58 .word 0x20005b58 - -08003860 : - 8003860: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 8003864: 1ccd adds r5, r1, #3 - 8003866: f025 0503 bic.w r5, r5, #3 - 800386a: 2d0b cmp r5, #11 - 800386c: 4604 mov r4, r0 - 800386e: d906 bls.n 800387e - 8003870: f5b5 3f80 cmp.w r5, #65536 @ 0x10000 - 8003874: d904 bls.n 8003880 - 8003876: 2400 movs r4, #0 - 8003878: 4620 mov r0, r4 - 800387a: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 800387e: 250c movs r5, #12 - 8003880: 42a9 cmp r1, r5 - 8003882: d8f8 bhi.n 8003876 - 8003884: 4f3d ldr r7, [pc, #244] @ (800397c ) - 8003886: 683b ldr r3, [r7, #0] - 8003888: 42a3 cmp r3, r4 - 800388a: d803 bhi.n 8003894 - 800388c: 4b3c ldr r3, [pc, #240] @ (8003980 ) - 800388e: 681b ldr r3, [r3, #0] - 8003890: 42a3 cmp r3, r4 - 8003892: d806 bhi.n 80038a2 - 8003894: 4b3b ldr r3, [pc, #236] @ (8003984 ) - 8003896: 493c ldr r1, [pc, #240] @ (8003988 ) - 8003898: 483c ldr r0, [pc, #240] @ (800398c ) - 800389a: f240 22d1 movw r2, #721 @ 0x2d1 - 800389e: f006 ff73 bl 800a788 - 80038a2: f8d7 a000 ldr.w sl, [r7] - 80038a6: 45a2 cmp sl, r4 - 80038a8: d8e6 bhi.n 8003878 - 80038aa: 4b35 ldr r3, [pc, #212] @ (8003980 ) - 80038ac: 681b ldr r3, [r3, #0] - 80038ae: 42a3 cmp r3, r4 - 80038b0: d9e2 bls.n 8003878 - 80038b2: f854 9c0c ldr.w r9, [r4, #-12] - 80038b6: f1a4 060c sub.w r6, r4, #12 - 80038ba: eba6 060a sub.w r6, r6, sl - 80038be: f1a9 030c sub.w r3, r9, #12 - 80038c2: 1b9b subs r3, r3, r6 - 80038c4: 42ab cmp r3, r5 - 80038c6: d207 bcs.n 80038d8 - 80038c8: 4b2e ldr r3, [pc, #184] @ (8003984 ) - 80038ca: 4931 ldr r1, [pc, #196] @ (8003990 ) - 80038cc: 482f ldr r0, [pc, #188] @ (800398c ) - 80038ce: f44f 7239 mov.w r2, #740 @ 0x2e4 - 80038d2: f006 ff59 bl 800a788 - 80038d6: e7ce b.n 8003876 - 80038d8: d0ce beq.n 8003878 - 80038da: eb0a 0809 add.w r8, sl, r9 - 80038de: f898 2008 ldrb.w r2, [r8, #8] - 80038e2: bb1a cbnz r2, 800392c - 80038e4: f5b9 3f80 cmp.w r9, #65536 @ 0x10000 - 80038e8: d106 bne.n 80038f8 - 80038ea: 4b26 ldr r3, [pc, #152] @ (8003984 ) - 80038ec: 4929 ldr r1, [pc, #164] @ (8003994 ) - 80038ee: 4827 ldr r0, [pc, #156] @ (800398c ) - 80038f0: f240 22f5 movw r2, #757 @ 0x2f5 - 80038f4: f006 ff48 bl 800a788 - 80038f8: 4827 ldr r0, [pc, #156] @ (8003998 ) - 80038fa: 683a ldr r2, [r7, #0] - 80038fc: f85a c009 ldr.w ip, [sl, r9] - 8003900: f106 030c add.w r3, r6, #12 - 8003904: 442b add r3, r5 - 8003906: 6805 ldr r5, [r0, #0] - 8003908: 18d1 adds r1, r2, r3 - 800390a: 4545 cmp r5, r8 - 800390c: bf08 it eq - 800390e: 6001 streq r1, [r0, #0] - 8003910: 2000 movs r0, #0 - 8003912: 7208 strb r0, [r1, #8] - 8003914: f842 c003 str.w ip, [r2, r3] - 8003918: 604e str r6, [r1, #4] - 800391a: f844 3c0c str.w r3, [r4, #-12] - 800391e: 58d1 ldr r1, [r2, r3] - 8003920: f5b1 3f80 cmp.w r1, #65536 @ 0x10000 - 8003924: d0a8 beq.n 8003878 - 8003926: 440a add r2, r1 - 8003928: 6053 str r3, [r2, #4] - 800392a: e7a5 b.n 8003878 - 800392c: f105 0218 add.w r2, r5, #24 - 8003930: 429a cmp r2, r3 - 8003932: d8a1 bhi.n 8003878 - 8003934: f106 030c add.w r3, r6, #12 - 8003938: f5b9 3f80 cmp.w r9, #65536 @ 0x10000 - 800393c: 441d add r5, r3 - 800393e: d106 bne.n 800394e - 8003940: 4b10 ldr r3, [pc, #64] @ (8003984 ) - 8003942: 4914 ldr r1, [pc, #80] @ (8003994 ) - 8003944: 4811 ldr r0, [pc, #68] @ (800398c ) - 8003946: f240 3216 movw r2, #790 @ 0x316 - 800394a: f006 ff1d bl 800a788 - 800394e: 4912 ldr r1, [pc, #72] @ (8003998 ) - 8003950: 683b ldr r3, [r7, #0] - 8003952: 6808 ldr r0, [r1, #0] - 8003954: 195a adds r2, r3, r5 - 8003956: 4290 cmp r0, r2 - 8003958: bf88 it hi - 800395a: 600a strhi r2, [r1, #0] - 800395c: 2100 movs r1, #0 - 800395e: 7211 strb r1, [r2, #8] - 8003960: f854 1c0c ldr.w r1, [r4, #-12] - 8003964: 5159 str r1, [r3, r5] - 8003966: 6056 str r6, [r2, #4] - 8003968: f844 5c0c str.w r5, [r4, #-12] - 800396c: 595a ldr r2, [r3, r5] - 800396e: f5b2 3f80 cmp.w r2, #65536 @ 0x10000 - 8003972: bf1c itt ne - 8003974: 189b addne r3, r3, r2 - 8003976: 605d strne r5, [r3, #4] - 8003978: e77e b.n 8003878 - 800397a: bf00 nop - 800397c: 20005b58 .word 0x20005b58 - 8003980: 20005b54 .word 0x20005b54 - 8003984: 0800b7ac .word 0x0800b7ac - 8003988: 0800b8cc .word 0x0800b8cc - 800398c: 0800b767 .word 0x0800b767 - 8003990: 0800b8e3 .word 0x0800b8e3 - 8003994: 0800b903 .word 0x0800b903 - 8003998: 20005b50 .word 0x20005b50 - -0800399c : - 800399c: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - 80039a0: 2800 cmp r0, #0 - 80039a2: d07d beq.n 8003aa0 - 80039a4: 1cc3 adds r3, r0, #3 - 80039a6: f023 0303 bic.w r3, r3, #3 - 80039aa: 2b0b cmp r3, #11 - 80039ac: d904 bls.n 80039b8 - 80039ae: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 80039b2: d902 bls.n 80039ba - 80039b4: 2000 movs r0, #0 - 80039b6: e073 b.n 8003aa0 - 80039b8: 230c movs r3, #12 - 80039ba: 4298 cmp r0, r3 - 80039bc: d8fa bhi.n 80039b4 - 80039be: f8df 8118 ldr.w r8, [pc, #280] @ 8003ad8 - 80039c2: 4f3c ldr r7, [pc, #240] @ (8003ab4 ) - 80039c4: f8d8 1000 ldr.w r1, [r8] - 80039c8: 683d ldr r5, [r7, #0] - 80039ca: f5c3 3680 rsb r6, r3, #65536 @ 0x10000 - 80039ce: 1a6d subs r5, r5, r1 - 80039d0: f06f 0c0b mvn.w ip, #11 - 80039d4: 42ae cmp r6, r5 - 80039d6: d9ed bls.n 80039b4 - 80039d8: 194c adds r4, r1, r5 - 80039da: 5948 ldr r0, [r1, r5] - 80039dc: 7a22 ldrb r2, [r4, #8] - 80039de: 2a00 cmp r2, #0 - 80039e0: d166 bne.n 8003ab0 - 80039e2: ebac 0205 sub.w r2, ip, r5 - 80039e6: 4402 add r2, r0 - 80039e8: 429a cmp r2, r3 - 80039ea: d361 bcc.n 8003ab0 - 80039ec: f103 060c add.w r6, r3, #12 - 80039f0: 3318 adds r3, #24 - 80039f2: 429a cmp r2, r3 - 80039f4: d356 bcc.n 8003aa4 - 80039f6: eb06 0905 add.w r9, r6, r5 - 80039fa: f5b9 3f80 cmp.w r9, #65536 @ 0x10000 - 80039fe: d106 bne.n 8003a0e - 8003a00: 4b2d ldr r3, [pc, #180] @ (8003ab8 ) - 8003a02: 492e ldr r1, [pc, #184] @ (8003abc ) - 8003a04: 482e ldr r0, [pc, #184] @ (8003ac0 ) - 8003a06: f240 3287 movw r2, #903 @ 0x387 - 8003a0a: f006 febd bl 800a788 - 8003a0e: f8d8 3000 ldr.w r3, [r8] - 8003a12: eb03 0209 add.w r2, r3, r9 - 8003a16: 2100 movs r1, #0 - 8003a18: 7211 strb r1, [r2, #8] - 8003a1a: 6821 ldr r1, [r4, #0] - 8003a1c: f843 1009 str.w r1, [r3, r9] - 8003a20: 6055 str r5, [r2, #4] - 8003a22: 2201 movs r2, #1 - 8003a24: f8c4 9000 str.w r9, [r4] - 8003a28: 7222 strb r2, [r4, #8] - 8003a2a: f853 2009 ldr.w r2, [r3, r9] - 8003a2e: f5b2 3f80 cmp.w r2, #65536 @ 0x10000 - 8003a32: d002 beq.n 8003a3a - 8003a34: 4413 add r3, r2 - 8003a36: f8c3 9004 str.w r9, [r3, #4] - 8003a3a: 683b ldr r3, [r7, #0] - 8003a3c: 4d21 ldr r5, [pc, #132] @ (8003ac4 ) - 8003a3e: 42a3 cmp r3, r4 - 8003a40: 6829 ldr r1, [r5, #0] - 8003a42: d110 bne.n 8003a66 - 8003a44: f8d8 0000 ldr.w r0, [r8] - 8003a48: 7a1a ldrb r2, [r3, #8] - 8003a4a: b10a cbz r2, 8003a50 - 8003a4c: 4299 cmp r1, r3 - 8003a4e: d12c bne.n 8003aaa - 8003a50: 4299 cmp r1, r3 - 8003a52: 603b str r3, [r7, #0] - 8003a54: d007 beq.n 8003a66 - 8003a56: b132 cbz r2, 8003a66 - 8003a58: 4b17 ldr r3, [pc, #92] @ (8003ab8 ) - 8003a5a: 491b ldr r1, [pc, #108] @ (8003ac8 ) - 8003a5c: 4818 ldr r0, [pc, #96] @ (8003ac0 ) - 8003a5e: f240 32b5 movw r2, #949 @ 0x3b5 - 8003a62: f006 fe91 bl 800a788 - 8003a66: 682b ldr r3, [r5, #0] - 8003a68: 4426 add r6, r4 - 8003a6a: 42b3 cmp r3, r6 - 8003a6c: d206 bcs.n 8003a7c - 8003a6e: 4b12 ldr r3, [pc, #72] @ (8003ab8 ) - 8003a70: 4916 ldr r1, [pc, #88] @ (8003acc ) - 8003a72: 4813 ldr r0, [pc, #76] @ (8003ac0 ) - 8003a74: f240 32b9 movw r2, #953 @ 0x3b9 - 8003a78: f006 fe86 bl 800a788 - 8003a7c: 07a3 lsls r3, r4, #30 - 8003a7e: d00d beq.n 8003a9c - 8003a80: 4b0d ldr r3, [pc, #52] @ (8003ab8 ) - 8003a82: 4913 ldr r1, [pc, #76] @ (8003ad0 ) - 8003a84: 480e ldr r0, [pc, #56] @ (8003ac0 ) - 8003a86: f240 32bb movw r2, #955 @ 0x3bb - 8003a8a: f006 fe7d bl 800a788 - 8003a8e: 4b0a ldr r3, [pc, #40] @ (8003ab8 ) - 8003a90: 4910 ldr r1, [pc, #64] @ (8003ad4 ) - 8003a92: 480b ldr r0, [pc, #44] @ (8003ac0 ) - 8003a94: f240 32bd movw r2, #957 @ 0x3bd - 8003a98: f006 fe76 bl 800a788 - 8003a9c: f104 000c add.w r0, r4, #12 - 8003aa0: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} - 8003aa4: 2301 movs r3, #1 - 8003aa6: 7223 strb r3, [r4, #8] - 8003aa8: e7c7 b.n 8003a3a - 8003aaa: 681b ldr r3, [r3, #0] - 8003aac: 4403 add r3, r0 - 8003aae: e7cb b.n 8003a48 - 8003ab0: 4605 mov r5, r0 - 8003ab2: e78f b.n 80039d4 - 8003ab4: 20005b50 .word 0x20005b50 - 8003ab8: 0800b7ac .word 0x0800b7ac - 8003abc: 0800b903 .word 0x0800b903 - 8003ac0: 0800b767 .word 0x0800b767 - 8003ac4: 20005b54 .word 0x20005b54 - 8003ac8: 0800b914 .word 0x0800b914 - 8003acc: 0800b92d .word 0x0800b92d - 8003ad0: 0800b95d .word 0x0800b95d - 8003ad4: 0800b98c .word 0x0800b98c - 8003ad8: 20005b58 .word 0x20005b58 - -08003adc : - 8003adc: b538 push {r3, r4, r5, lr} - 8003ade: 078b lsls r3, r1, #30 - 8003ae0: 4605 mov r5, r0 - 8003ae2: 460c mov r4, r1 - 8003ae4: d006 beq.n 8003af4 - 8003ae6: 4b06 ldr r3, [pc, #24] @ (8003b00 ) - 8003ae8: 4906 ldr r1, [pc, #24] @ (8003b04 ) - 8003aea: 4807 ldr r0, [pc, #28] @ (8003b08 ) - 8003aec: f44f 72b6 mov.w r2, #364 @ 0x16c - 8003af0: f006 fe4a bl 800a788 - 8003af4: 68ab ldr r3, [r5, #8] - 8003af6: 681a ldr r2, [r3, #0] - 8003af8: 6022 str r2, [r4, #0] - 8003afa: 601c str r4, [r3, #0] - 8003afc: bd38 pop {r3, r4, r5, pc} - 8003afe: bf00 nop - 8003b00: 0800b9af .word 0x0800b9af - 8003b04: 0800b9df .word 0x0800b9df - 8003b08: 0800b767 .word 0x0800b767 - -08003b0c : - 8003b0c: b510 push {r4, lr} - 8003b0e: 6804 ldr r4, [r0, #0] - 8003b10: b154 cbz r4, 8003b28 - 8003b12: 6823 ldr r3, [r4, #0] - 8003b14: 6003 str r3, [r0, #0] - 8003b16: 07a3 lsls r3, r4, #30 - 8003b18: d006 beq.n 8003b28 - 8003b1a: 4b04 ldr r3, [pc, #16] @ (8003b2c ) - 8003b1c: 4904 ldr r1, [pc, #16] @ (8003b30 ) - 8003b1e: 4805 ldr r0, [pc, #20] @ (8003b34 ) - 8003b20: f44f 728c mov.w r2, #280 @ 0x118 - 8003b24: f006 fe30 bl 800a788 - 8003b28: 4620 mov r0, r4 - 8003b2a: bd10 pop {r4, pc} - 8003b2c: 0800b9af .word 0x0800b9af - 8003b30: 0800b9ff .word 0x0800b9ff - 8003b34: 0800b767 .word 0x0800b767 - -08003b38 : - 8003b38: 6843 ldr r3, [r0, #4] - 8003b3a: 6881 ldr r1, [r0, #8] - 8003b3c: b530 push {r4, r5, lr} - 8003b3e: 2200 movs r2, #0 - 8003b40: 3303 adds r3, #3 - 8003b42: 8844 ldrh r4, [r0, #2] - 8003b44: 600a str r2, [r1, #0] - 8003b46: f023 0303 bic.w r3, r3, #3 - 8003b4a: 4294 cmp r4, r2 - 8003b4c: dc00 bgt.n 8003b50 - 8003b4e: bd30 pop {r4, r5, pc} - 8003b50: 680d ldr r5, [r1, #0] - 8003b52: 601d str r5, [r3, #0] - 8003b54: 8805 ldrh r5, [r0, #0] - 8003b56: 600b str r3, [r1, #0] - 8003b58: 3201 adds r2, #1 - 8003b5a: 442b add r3, r5 - 8003b5c: e7f5 b.n 8003b4a - ... - -08003b60 : - 8003b60: b538 push {r3, r4, r5, lr} - 8003b62: 4d05 ldr r5, [pc, #20] @ (8003b78 ) - 8003b64: 2400 movs r4, #0 - 8003b66: 3401 adds r4, #1 - 8003b68: f855 0b04 ldr.w r0, [r5], #4 - 8003b6c: b2a4 uxth r4, r4 - 8003b6e: f7ff ffe3 bl 8003b38 - 8003b72: 2c09 cmp r4, #9 - 8003b74: d1f7 bne.n 8003b66 - 8003b76: bd38 pop {r3, r4, r5, pc} - 8003b78: 0800ba6c .word 0x0800ba6c - -08003b7c : - 8003b7c: b510 push {r4, lr} - 8003b7e: 4604 mov r4, r0 - 8003b80: b120 cbz r0, 8003b8c - 8003b82: e8bd 4010 ldmia.w sp!, {r4, lr} - 8003b86: 6880 ldr r0, [r0, #8] - 8003b88: f7ff bfc0 b.w 8003b0c - 8003b8c: 4b04 ldr r3, [pc, #16] @ (8003ba0 ) - 8003b8e: 4905 ldr r1, [pc, #20] @ (8003ba4 ) - 8003b90: 4805 ldr r0, [pc, #20] @ (8003ba8 ) - 8003b92: f44f 729e mov.w r2, #316 @ 0x13c - 8003b96: f006 fdf7 bl 800a788 - 8003b9a: 4620 mov r0, r4 - 8003b9c: bd10 pop {r4, pc} - 8003b9e: bf00 nop - 8003ba0: 0800b9af .word 0x0800b9af - 8003ba4: 0800ba22 .word 0x0800ba22 - 8003ba8: 0800b767 .word 0x0800b767 - -08003bac : - 8003bac: 2808 cmp r0, #8 - 8003bae: b508 push {r3, lr} - 8003bb0: d807 bhi.n 8003bc2 - 8003bb2: 4b08 ldr r3, [pc, #32] @ (8003bd4 ) - 8003bb4: f853 3020 ldr.w r3, [r3, r0, lsl #2] - 8003bb8: 6898 ldr r0, [r3, #8] - 8003bba: e8bd 4008 ldmia.w sp!, {r3, lr} - 8003bbe: f7ff bfa5 b.w 8003b0c - 8003bc2: 4b05 ldr r3, [pc, #20] @ (8003bd8 ) - 8003bc4: 4905 ldr r1, [pc, #20] @ (8003bdc ) - 8003bc6: 4806 ldr r0, [pc, #24] @ (8003be0 ) - 8003bc8: f240 1257 movw r2, #343 @ 0x157 - 8003bcc: f006 fddc bl 800a788 - 8003bd0: 2000 movs r0, #0 - 8003bd2: bd08 pop {r3, pc} - 8003bd4: 0800ba6c .word 0x0800ba6c - 8003bd8: 0800b9af .word 0x0800b9af - 8003bdc: 0800ba34 .word 0x0800ba34 - 8003be0: 0800b767 .word 0x0800b767 - -08003be4 : - 8003be4: b108 cbz r0, 8003bea - 8003be6: b939 cbnz r1, 8003bf8 - 8003be8: 4770 bx lr - 8003bea: 4b04 ldr r3, [pc, #16] @ (8003bfc ) - 8003bec: 4904 ldr r1, [pc, #16] @ (8003c00 ) - 8003bee: 4805 ldr r0, [pc, #20] @ (8003c04 ) - 8003bf0: f240 1295 movw r2, #405 @ 0x195 - 8003bf4: f006 bdc8 b.w 800a788 - 8003bf8: f7ff bf70 b.w 8003adc - 8003bfc: 0800b9af .word 0x0800b9af - 8003c00: 0800ba22 .word 0x0800ba22 - 8003c04: 0800b767 .word 0x0800b767 - -08003c08 : - 8003c08: 2808 cmp r0, #8 - 8003c0a: d906 bls.n 8003c1a - 8003c0c: 4b06 ldr r3, [pc, #24] @ (8003c28 ) - 8003c0e: 4907 ldr r1, [pc, #28] @ (8003c2c ) - 8003c10: 4807 ldr r0, [pc, #28] @ (8003c30 ) - 8003c12: f44f 72d5 mov.w r2, #426 @ 0x1aa - 8003c16: f006 bdb7 b.w 800a788 - 8003c1a: b121 cbz r1, 8003c26 - 8003c1c: 4b05 ldr r3, [pc, #20] @ (8003c34 ) - 8003c1e: f853 0020 ldr.w r0, [r3, r0, lsl #2] - 8003c22: f7ff bf5b b.w 8003adc - 8003c26: 4770 bx lr - 8003c28: 0800b9af .word 0x0800b9af - 8003c2c: 0800ba51 .word 0x0800ba51 - 8003c30: 0800b767 .word 0x0800b767 - 8003c34: 0800ba6c .word 0x0800ba6c - -08003c38 : - 8003c38: f06f 000b mvn.w r0, #11 - 8003c3c: 4770 bx lr - ... - -08003c40 : - 8003c40: b510 push {r4, lr} - 8003c42: 4604 mov r4, r0 - 8003c44: b930 cbnz r0, 8003c54 - 8003c46: 4b0c ldr r3, [pc, #48] @ (8003c78 ) - 8003c48: 490c ldr r1, [pc, #48] @ (8003c7c ) - 8003c4a: 480d ldr r0, [pc, #52] @ (8003c80 ) - 8003c4c: f240 326d movw r2, #877 @ 0x36d - 8003c50: f006 fd9a bl 800a788 - 8003c54: f894 3031 ldrb.w r3, [r4, #49] @ 0x31 - 8003c58: f003 0205 and.w r2, r3, #5 - 8003c5c: 2a05 cmp r2, #5 - 8003c5e: d109 bne.n 8003c74 - 8003c60: 6862 ldr r2, [r4, #4] - 8003c62: b13a cbz r2, 8003c74 - 8003c64: 071b lsls r3, r3, #28 - 8003c66: d505 bpl.n 8003c74 - 8003c68: 1d21 adds r1, r4, #4 - 8003c6a: 4620 mov r0, r4 - 8003c6c: e8bd 4010 ldmia.w sp!, {r4, lr} - 8003c70: f005 bb3c b.w 80092ec - 8003c74: bd10 pop {r4, pc} - 8003c76: bf00 nop - 8003c78: 0800bafc .word 0x0800bafc - 8003c7c: 0800bb2d .word 0x0800bb2d - 8003c80: 0800b767 .word 0x0800b767 - -08003c84 : - 8003c84: b573 push {r0, r1, r4, r5, r6, lr} - 8003c86: 6843 ldr r3, [r0, #4] - 8003c88: 4615 mov r5, r2 - 8003c8a: 680a ldr r2, [r1, #0] - 8003c8c: 429a cmp r2, r3 - 8003c8e: 4604 mov r4, r0 - 8003c90: 460e mov r6, r1 - 8003c92: d00f beq.n 8003cb4 - 8003c94: 602b str r3, [r5, #0] - 8003c96: a901 add r1, sp, #4 - 8003c98: 4628 mov r0, r5 - 8003c9a: 9201 str r2, [sp, #4] - 8003c9c: f000 ff12 bl 8004ac4 - 8003ca0: a901 add r1, sp, #4 - 8003ca2: 4628 mov r0, r5 - 8003ca4: f004 f888 bl 8007db8 - 8003ca8: 6833 ldr r3, [r6, #0] - 8003caa: 6063 str r3, [r4, #4] - 8003cac: 2101 movs r1, #1 - 8003cae: 4620 mov r0, r4 - 8003cb0: f7ff ffc6 bl 8003c40 - 8003cb4: b002 add sp, #8 - 8003cb6: bd70 pop {r4, r5, r6, pc} - -08003cb8 : - 8003cb8: 4770 bx lr - ... - -08003cbc : - 8003cbc: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} - 8003cbe: 4e14 ldr r6, [pc, #80] @ (8003d10 ) - 8003cc0: 2900 cmp r1, #0 - 8003cc2: bf14 ite ne - 8003cc4: 460d movne r5, r1 - 8003cc6: 4635 moveq r5, r6 - 8003cc8: 2a00 cmp r2, #0 - 8003cca: bf14 ite ne - 8003ccc: 4617 movne r7, r2 - 8003cce: 4637 moveq r7, r6 - 8003cd0: 2b00 cmp r3, #0 - 8003cd2: bf18 it ne - 8003cd4: 461e movne r6, r3 - 8003cd6: 682b ldr r3, [r5, #0] - 8003cd8: 4604 mov r4, r0 - 8003cda: b9b3 cbnz r3, 8003d0a - 8003cdc: aa01 add r2, sp, #4 - 8003cde: 4629 mov r1, r5 - 8003ce0: f7ff ffd0 bl 8003c84 - 8003ce4: 2301 movs r3, #1 - 8003ce6: 683a ldr r2, [r7, #0] - 8003ce8: 68a1 ldr r1, [r4, #8] - 8003cea: 428a cmp r2, r1 - 8003cec: bf18 it ne - 8003cee: 60a2 strne r2, [r4, #8] - 8003cf0: 6832 ldr r2, [r6, #0] - 8003cf2: 68e1 ldr r1, [r4, #12] - 8003cf4: 428a cmp r2, r1 - 8003cf6: bf18 it ne - 8003cf8: 60e2 strne r2, [r4, #12] - 8003cfa: b923 cbnz r3, 8003d06 - 8003cfc: aa01 add r2, sp, #4 - 8003cfe: 4629 mov r1, r5 - 8003d00: 4620 mov r0, r4 - 8003d02: f7ff ffbf bl 8003c84 - 8003d06: b003 add sp, #12 - 8003d08: bdf0 pop {r4, r5, r6, r7, pc} - 8003d0a: 2300 movs r3, #0 - 8003d0c: e7eb b.n 8003ce6 - 8003d0e: bf00 nop - 8003d10: 0800d510 .word 0x0800d510 - -08003d14 : - 8003d14: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8003d18: 9e0b ldr r6, [sp, #44] @ 0x2c - 8003d1a: 4604 mov r4, r0 - 8003d1c: b950 cbnz r0, 8003d34 - 8003d1e: 4b3a ldr r3, [pc, #232] @ (8003e08 ) - 8003d20: 493a ldr r1, [pc, #232] @ (8003e0c ) - 8003d22: f240 1227 movw r2, #295 @ 0x127 - 8003d26: 483a ldr r0, [pc, #232] @ (8003e10 ) - 8003d28: f006 fd2e bl 800a788 - 8003d2c: 2400 movs r4, #0 - 8003d2e: 4620 mov r0, r4 - 8003d30: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} - 8003d34: b926 cbnz r6, 8003d40 - 8003d36: 4b34 ldr r3, [pc, #208] @ (8003e08 ) - 8003d38: 4936 ldr r1, [pc, #216] @ (8003e14 ) - 8003d3a: f44f 7294 mov.w r2, #296 @ 0x128 - 8003d3e: e7f2 b.n 8003d26 - 8003d40: 2500 movs r5, #0 - 8003d42: f8df 80e0 ldr.w r8, [pc, #224] @ 8003e24 - 8003d46: 60c5 str r5, [r0, #12] - 8003d48: e9c0 5501 strd r5, r5, [r0, #4] - 8003d4c: 8505 strh r5, [r0, #40] @ 0x28 - 8003d4e: f880 5031 strb.w r5, [r0, #49] @ 0x31 - 8003d52: 6245 str r5, [r0, #36] @ 0x24 - 8003d54: 61c5 str r5, [r0, #28] - 8003d56: 9d0a ldr r5, [sp, #40] @ 0x28 - 8003d58: 4f2f ldr r7, [pc, #188] @ (8003e18 ) - 8003d5a: 6205 str r5, [r0, #32] - 8003d5c: f898 5000 ldrb.w r5, [r8] - 8003d60: f880 5034 strb.w r5, [r0, #52] @ 0x34 - 8003d64: f8df c0c0 ldr.w ip, [pc, #192] @ 8003e28 - 8003d68: 9d0c ldr r5, [sp, #48] @ 0x30 - 8003d6a: f8c0 c014 str.w ip, [r0, #20] - 8003d6e: 6105 str r5, [r0, #16] - 8003d70: 2b00 cmp r3, #0 - 8003d72: bf08 it eq - 8003d74: 463b moveq r3, r7 - 8003d76: 2a00 cmp r2, #0 - 8003d78: bf08 it eq - 8003d7a: 463a moveq r2, r7 - 8003d7c: 2900 cmp r1, #0 - 8003d7e: bf08 it eq - 8003d80: 4639 moveq r1, r7 - 8003d82: f7ff ff9b bl 8003cbc - 8003d86: 4620 mov r0, r4 - 8003d88: 47b0 blx r6 - 8003d8a: 2800 cmp r0, #0 - 8003d8c: d1ce bne.n 8003d2c - 8003d8e: 4e23 ldr r6, [pc, #140] @ (8003e1c ) - 8003d90: f8df 9074 ldr.w r9, [pc, #116] @ 8003e08 - 8003d94: f894 3034 ldrb.w r3, [r4, #52] @ 0x34 - 8003d98: 6835 ldr r5, [r6, #0] - 8003d9a: f8df b090 ldr.w fp, [pc, #144] @ 8003e2c - 8003d9e: f8df a070 ldr.w sl, [pc, #112] @ 8003e10 - 8003da2: 2bff cmp r3, #255 @ 0xff - 8003da4: bf04 itt eq - 8003da6: 2300 moveq r3, #0 - 8003da8: f884 3034 strbeq.w r3, [r4, #52] @ 0x34 - 8003dac: 2700 movs r7, #0 - 8003dae: b95d cbnz r5, 8003dc8 - 8003db0: f894 3034 ldrb.w r3, [r4, #52] @ 0x34 - 8003db4: 2bfe cmp r3, #254 @ 0xfe - 8003db6: bf1c itt ne - 8003db8: 3301 addne r3, #1 - 8003dba: b2dd uxtbne r5, r3 - 8003dbc: 6833 ldr r3, [r6, #0] - 8003dbe: 6023 str r3, [r4, #0] - 8003dc0: f888 5000 strb.w r5, [r8] - 8003dc4: 6034 str r4, [r6, #0] - 8003dc6: e7b2 b.n 8003d2e - 8003dc8: 42a5 cmp r5, r4 - 8003dca: d106 bne.n 8003dda - 8003dcc: 464b mov r3, r9 - 8003dce: f240 128b movw r2, #395 @ 0x18b - 8003dd2: 4659 mov r1, fp - 8003dd4: 4650 mov r0, sl - 8003dd6: f006 fcd7 bl 800a788 - 8003dda: 3701 adds r7, #1 - 8003ddc: 2fff cmp r7, #255 @ 0xff - 8003dde: dd06 ble.n 8003dee - 8003de0: 490f ldr r1, [pc, #60] @ (8003e20 ) - 8003de2: 464b mov r3, r9 - 8003de4: f240 128d movw r2, #397 @ 0x18d - 8003de8: 4650 mov r0, sl - 8003dea: f006 fccd bl 800a788 - 8003dee: f894 2034 ldrb.w r2, [r4, #52] @ 0x34 - 8003df2: f895 3034 ldrb.w r3, [r5, #52] @ 0x34 - 8003df6: 4293 cmp r3, r2 - 8003df8: d103 bne.n 8003e02 - 8003dfa: 3301 adds r3, #1 - 8003dfc: f884 3034 strb.w r3, [r4, #52] @ 0x34 - 8003e00: e7c8 b.n 8003d94 - 8003e02: 682d ldr r5, [r5, #0] - 8003e04: e7d3 b.n 8003dae - 8003e06: bf00 nop - 8003e08: 0800bafc .word 0x0800bafc - 8003e0c: 0800bb50 .word 0x0800bb50 - 8003e10: 0800b767 .word 0x0800b767 - 8003e14: 0800bb69 .word 0x0800bb69 - 8003e18: 0800d510 .word 0x0800d510 - 8003e1c: 20018a88 .word 0x20018a88 - 8003e20: 0800bb9f .word 0x0800bb9f - 8003e24: 20018a83 .word 0x20018a83 - 8003e28: 08003c39 .word 0x08003c39 - 8003e2c: 0800bb8b .word 0x0800bb8b - -08003e30 : - 8003e30: 4b01 ldr r3, [pc, #4] @ (8003e38 ) - 8003e32: 6018 str r0, [r3, #0] - 8003e34: 4770 bx lr - 8003e36: bf00 nop - 8003e38: 20018a84 .word 0x20018a84 - -08003e3c : - 8003e3c: b930 cbnz r0, 8003e4c - 8003e3e: 4b09 ldr r3, [pc, #36] @ (8003e64 ) - 8003e40: 4909 ldr r1, [pc, #36] @ (8003e68 ) - 8003e42: 480a ldr r0, [pc, #40] @ (8003e6c ) - 8003e44: f44f 7254 mov.w r2, #848 @ 0x350 - 8003e48: f006 bc9e b.w 800a788 - 8003e4c: f890 2031 ldrb.w r2, [r0, #49] @ 0x31 - 8003e50: 07d1 lsls r1, r2, #31 - 8003e52: d406 bmi.n 8003e62 - 8003e54: f042 0201 orr.w r2, r2, #1 - 8003e58: f880 2031 strb.w r2, [r0, #49] @ 0x31 - 8003e5c: 2103 movs r1, #3 - 8003e5e: f7ff beef b.w 8003c40 - 8003e62: 4770 bx lr - 8003e64: 0800bafc .word 0x0800bafc - 8003e68: 0800bbcd .word 0x0800bbcd - 8003e6c: 0800b767 .word 0x0800b767 - -08003e70 : - 8003e70: b930 cbnz r0, 8003e80 - 8003e72: 4b0a ldr r3, [pc, #40] @ (8003e9c ) - 8003e74: 490a ldr r1, [pc, #40] @ (8003ea0 ) - 8003e76: 480b ldr r0, [pc, #44] @ (8003ea4 ) - 8003e78: f240 329b movw r2, #923 @ 0x39b - 8003e7c: f006 bc84 b.w 800a788 - 8003e80: f890 2031 ldrb.w r2, [r0, #49] @ 0x31 - 8003e84: 07d1 lsls r1, r2, #31 - 8003e86: d507 bpl.n 8003e98 - 8003e88: f022 0101 bic.w r1, r2, #1 - 8003e8c: 0713 lsls r3, r2, #28 - 8003e8e: f880 1031 strb.w r1, [r0, #49] @ 0x31 - 8003e92: d501 bpl.n 8003e98 - 8003e94: f005 b966 b.w 8009164 - 8003e98: 4770 bx lr - 8003e9a: bf00 nop - 8003e9c: 0800bafc .word 0x0800bafc - 8003ea0: 0800bbe9 .word 0x0800bbe9 - 8003ea4: 0800b767 .word 0x0800b767 - -08003ea8 : - 8003ea8: b510 push {r4, lr} - 8003eaa: 4604 mov r4, r0 - 8003eac: b940 cbnz r0, 8003ec0 - 8003eae: e8bd 4010 ldmia.w sp!, {r4, lr} - 8003eb2: 4b0e ldr r3, [pc, #56] @ (8003eec ) - 8003eb4: 490e ldr r1, [pc, #56] @ (8003ef0 ) - 8003eb6: 480f ldr r0, [pc, #60] @ (8003ef4 ) - 8003eb8: f44f 7278 mov.w r2, #992 @ 0x3e0 - 8003ebc: f006 bc64 b.w 800a788 - 8003ec0: f890 3031 ldrb.w r3, [r0, #49] @ 0x31 - 8003ec4: 075a lsls r2, r3, #29 - 8003ec6: d40f bmi.n 8003ee8 - 8003ec8: f043 0304 orr.w r3, r3, #4 - 8003ecc: f880 3031 strb.w r3, [r0, #49] @ 0x31 - 8003ed0: f004 fd7c bl 80089cc - 8003ed4: 2103 movs r1, #3 - 8003ed6: 4620 mov r0, r4 - 8003ed8: f7ff feb2 bl 8003c40 - 8003edc: 69e3 ldr r3, [r4, #28] - 8003ede: b11b cbz r3, 8003ee8 - 8003ee0: 4620 mov r0, r4 - 8003ee2: e8bd 4010 ldmia.w sp!, {r4, lr} - 8003ee6: 4718 bx r3 - 8003ee8: bd10 pop {r4, pc} - 8003eea: bf00 nop - 8003eec: 0800bafc .word 0x0800bafc - 8003ef0: 0800bc07 .word 0x0800bc07 - 8003ef4: 0800b767 .word 0x0800b767 - -08003ef8 : - 8003ef8: b930 cbnz r0, 8003f08 - 8003efa: 4b09 ldr r3, [pc, #36] @ (8003f20 ) - 8003efc: 4909 ldr r1, [pc, #36] @ (8003f24 ) - 8003efe: 480a ldr r0, [pc, #40] @ (8003f28 ) - 8003f00: f240 4206 movw r2, #1030 @ 0x406 - 8003f04: f006 bc40 b.w 800a788 - 8003f08: f890 2031 ldrb.w r2, [r0, #49] @ 0x31 - 8003f0c: 0751 lsls r1, r2, #29 - 8003f0e: d506 bpl.n 8003f1e - 8003f10: 69c3 ldr r3, [r0, #28] - 8003f12: f022 0204 bic.w r2, r2, #4 - 8003f16: f880 2031 strb.w r2, [r0, #49] @ 0x31 - 8003f1a: b103 cbz r3, 8003f1e - 8003f1c: 4718 bx r3 - 8003f1e: 4770 bx lr - 8003f20: 0800bafc .word 0x0800bafc - 8003f24: 0800bc28 .word 0x0800bc28 - 8003f28: 0800b767 .word 0x0800b767 - -08003f2c : - 8003f2c: b100 cbz r0, 8003f30 - 8003f2e: 61c1 str r1, [r0, #28] - 8003f30: 4770 bx lr - ... - -08003f34 : - 8003f34: 4603 mov r3, r0 - 8003f36: b158 cbz r0, 8003f50 - 8003f38: 4a06 ldr r2, [pc, #24] @ (8003f54 ) - 8003f3a: 6810 ldr r0, [r2, #0] - 8003f3c: b900 cbnz r0, 8003f40 - 8003f3e: 4770 bx lr - 8003f40: f890 2034 ldrb.w r2, [r0, #52] @ 0x34 - 8003f44: 3201 adds r2, #1 - 8003f46: b2d2 uxtb r2, r2 - 8003f48: 429a cmp r2, r3 - 8003f4a: d001 beq.n 8003f50 - 8003f4c: 6800 ldr r0, [r0, #0] - 8003f4e: e7f5 b.n 8003f3c - 8003f50: 4770 bx lr - 8003f52: bf00 nop - 8003f54: 20018a88 .word 0x20018a88 - -08003f58 : - 8003f58: b538 push {r3, r4, r5, lr} - 8003f5a: b120 cbz r0, 8003f66 - 8003f5c: f5b1 3f80 cmp.w r1, #65536 @ 0x10000 - 8003f60: d309 bcc.n 8003f76 - 8003f62: 2001 movs r0, #1 - 8003f64: bd38 pop {r3, r4, r5, pc} - 8003f66: 4b13 ldr r3, [pc, #76] @ (8003fb4 ) - 8003f68: 4913 ldr r1, [pc, #76] @ (8003fb8 ) - 8003f6a: 4814 ldr r0, [pc, #80] @ (8003fbc ) - 8003f6c: f240 12df movw r2, #479 @ 0x1df - 8003f70: f006 fc0a bl 800a788 - 8003f74: e7f5 b.n 8003f62 - 8003f76: b1a9 cbz r1, 8003fa4 - 8003f78: 8903 ldrh r3, [r0, #8] - 8003f7a: fa13 f381 uxtah r3, r3, r1 - 8003f7e: b28c uxth r4, r1 - 8003f80: b29b uxth r3, r3 - 8003f82: 42a3 cmp r3, r4 - 8003f84: d3ed bcc.n 8003f62 - 8003f86: f990 500c ldrsb.w r5, [r0, #12] - 8003f8a: 2d00 cmp r5, #0 - 8003f8c: da0c bge.n 8003fa8 - 8003f8e: 6842 ldr r2, [r0, #4] - 8003f90: 1a51 subs r1, r2, r1 - 8003f92: f100 0210 add.w r2, r0, #16 - 8003f96: 4291 cmp r1, r2 - 8003f98: d3e3 bcc.n 8003f62 - 8003f9a: 8942 ldrh r2, [r0, #10] - 8003f9c: 6041 str r1, [r0, #4] - 8003f9e: 4414 add r4, r2 - 8003fa0: 8144 strh r4, [r0, #10] - 8003fa2: 8103 strh r3, [r0, #8] - 8003fa4: 2000 movs r0, #0 - 8003fa6: e7dd b.n 8003f64 - 8003fa8: 2a00 cmp r2, #0 - 8003faa: d0da beq.n 8003f62 - 8003fac: 6842 ldr r2, [r0, #4] - 8003fae: 1a51 subs r1, r2, r1 - 8003fb0: e7f3 b.n 8003f9a - 8003fb2: bf00 nop - 8003fb4: 0800bc4b .word 0x0800bc4b - 8003fb8: 0800bd1d .word 0x0800bd1d - 8003fbc: 0800b767 .word 0x0800b767 - -08003fc0 : - 8003fc0: 4b06 ldr r3, [pc, #24] @ (8003fdc ) - 8003fc2: 2200 movs r2, #0 - 8003fc4: 701a strb r2, [r3, #0] - 8003fc6: 4b06 ldr r3, [pc, #24] @ (8003fe0 ) - 8003fc8: 6818 ldr r0, [r3, #0] - 8003fca: b900 cbnz r0, 8003fce - 8003fcc: 4770 bx lr - 8003fce: 6f43 ldr r3, [r0, #116] @ 0x74 - 8003fd0: b10b cbz r3, 8003fd6 - 8003fd2: f000 bc2d b.w 8004830 - 8003fd6: 68c0 ldr r0, [r0, #12] - 8003fd8: e7f7 b.n 8003fca - 8003fda: bf00 nop - 8003fdc: 20018a8c .word 0x20018a8c - 8003fe0: 20018a94 .word 0x20018a94 - -08003fe4 : - 8003fe4: f022 0340 bic.w r3, r2, #64 @ 0x40 - 8003fe8: 2b01 cmp r3, #1 - 8003fea: b570 push {r4, r5, r6, lr} - 8003fec: 4606 mov r6, r0 - 8003fee: 460d mov r5, r1 - 8003ff0: 4614 mov r4, r2 - 8003ff2: d006 beq.n 8004002 - 8003ff4: 4b0a ldr r3, [pc, #40] @ (8004020 ) - 8003ff6: 490b ldr r1, [pc, #44] @ (8004024 ) - 8003ff8: 480b ldr r0, [pc, #44] @ (8004028 ) - 8003ffa: f44f 72a5 mov.w r2, #330 @ 0x14a - 8003ffe: f006 fbc3 bl 800a788 - 8004002: 2007 movs r0, #7 - 8004004: f7ff fdd2 bl 8003bac - 8004008: b140 cbz r0, 800401c - 800400a: 2300 movs r3, #0 - 800400c: e9c0 3600 strd r3, r6, [r0] - 8004010: 7343 strb r3, [r0, #13] - 8004012: 2301 movs r3, #1 - 8004014: 8105 strh r5, [r0, #8] - 8004016: 8145 strh r5, [r0, #10] - 8004018: 7304 strb r4, [r0, #12] - 800401a: 81c3 strh r3, [r0, #14] - 800401c: bd70 pop {r4, r5, r6, pc} - 800401e: bf00 nop - 8004020: 0800bc4b .word 0x0800bc4b - 8004024: 0800bc7b .word 0x0800bc7b - 8004028: 0800b767 .word 0x0800b767 - -0800402c : - 800402c: b570 push {r4, r5, r6, lr} - 800402e: 3003 adds r0, #3 - 8004030: f8bd 5014 ldrh.w r5, [sp, #20] - 8004034: 9c04 ldr r4, [sp, #16] - 8004036: f020 0003 bic.w r0, r0, #3 - 800403a: 180e adds r6, r1, r0 - 800403c: 42ae cmp r6, r5 - 800403e: d80d bhi.n 800405c - 8004040: b104 cbz r4, 8004044 - 8004042: 4404 add r4, r0 - 8004044: 4618 mov r0, r3 - 8004046: 2300 movs r3, #0 - 8004048: e9c0 3400 strd r3, r4, [r0] - 800404c: 2302 movs r3, #2 - 800404e: 7343 strb r3, [r0, #13] - 8004050: 2301 movs r3, #1 - 8004052: 8101 strh r1, [r0, #8] - 8004054: 8141 strh r1, [r0, #10] - 8004056: 7302 strb r2, [r0, #12] - 8004058: 81c3 strh r3, [r0, #14] - 800405a: bd70 pop {r4, r5, r6, pc} - 800405c: 2000 movs r0, #0 - 800405e: e7fc b.n 800405a - -08004060 : - 8004060: 2200 movs r2, #0 - 8004062: f7ff bf79 b.w 8003f58 - ... - -08004068 : - 8004068: b510 push {r4, lr} - 800406a: b120 cbz r0, 8004076 - 800406c: f5b1 3f80 cmp.w r1, #65536 @ 0x10000 - 8004070: d309 bcc.n 8004086 - 8004072: 2001 movs r0, #1 - 8004074: bd10 pop {r4, pc} - 8004076: 4b0e ldr r3, [pc, #56] @ (80040b0 ) - 8004078: 490e ldr r1, [pc, #56] @ (80040b4 ) - 800407a: f240 224b movw r2, #587 @ 0x24b - 800407e: 480e ldr r0, [pc, #56] @ (80040b8 ) - 8004080: f006 fb82 bl 800a788 - 8004084: e7f5 b.n 8004072 - 8004086: b181 cbz r1, 80040aa - 8004088: 8943 ldrh r3, [r0, #10] - 800408a: b28a uxth r2, r1 - 800408c: 4293 cmp r3, r2 - 800408e: d204 bcs.n 800409a - 8004090: 4b07 ldr r3, [pc, #28] @ (80040b0 ) - 8004092: 490a ldr r1, [pc, #40] @ (80040bc ) - 8004094: f240 2255 movw r2, #597 @ 0x255 - 8004098: e7f1 b.n 800407e - 800409a: 1a9b subs r3, r3, r2 - 800409c: 6844 ldr r4, [r0, #4] - 800409e: 8143 strh r3, [r0, #10] - 80040a0: 8903 ldrh r3, [r0, #8] - 80040a2: 440c add r4, r1 - 80040a4: 1a9b subs r3, r3, r2 - 80040a6: 6044 str r4, [r0, #4] - 80040a8: 8103 strh r3, [r0, #8] - 80040aa: 2000 movs r0, #0 - 80040ac: e7e2 b.n 8004074 - 80040ae: bf00 nop - 80040b0: 0800bc4b .word 0x0800bc4b - 80040b4: 0800bd1d .word 0x0800bd1d - 80040b8: 0800b767 .word 0x0800b767 - 80040bc: 0800bc8d .word 0x0800bc8d - -080040c0 : - 80040c0: 1e0b subs r3, r1, #0 - 80040c2: da02 bge.n 80040ca - 80040c4: 4259 negs r1, r3 - 80040c6: f7ff bfcf b.w 8004068 - 80040ca: 2201 movs r2, #1 - 80040cc: f7ff bf44 b.w 8003f58 - -080040d0 : - 80040d0: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - 80040d4: 4604 mov r4, r0 - 80040d6: b950 cbnz r0, 80040ee - 80040d8: 4b29 ldr r3, [pc, #164] @ (8004180 ) - 80040da: 492a ldr r1, [pc, #168] @ (8004184 ) - 80040dc: 482a ldr r0, [pc, #168] @ (8004188 ) - 80040de: f44f 7237 mov.w r2, #732 @ 0x2dc - 80040e2: f006 fb51 bl 800a788 - 80040e6: 4625 mov r5, r4 - 80040e8: 4628 mov r0, r5 - 80040ea: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} - 80040ee: 4e24 ldr r6, [pc, #144] @ (8004180 ) - 80040f0: f8df 80a0 ldr.w r8, [pc, #160] @ 8004194 - 80040f4: 4f24 ldr r7, [pc, #144] @ (8004188 ) - 80040f6: 2500 movs r5, #0 - 80040f8: 7ba3 ldrb r3, [r4, #14] - 80040fa: b933 cbnz r3, 800410a - 80040fc: 4633 mov r3, r6 - 80040fe: f240 22f1 movw r2, #753 @ 0x2f1 - 8004102: 4641 mov r1, r8 - 8004104: 4638 mov r0, r7 - 8004106: f006 fb3f bl 800a788 - 800410a: 7ba3 ldrb r3, [r4, #14] - 800410c: 3b01 subs r3, #1 - 800410e: b2db uxtb r3, r3 - 8004110: 73a3 strb r3, [r4, #14] - 8004112: 2b00 cmp r3, #0 - 8004114: d1e8 bne.n 80040e8 - 8004116: 7b62 ldrb r2, [r4, #13] - 8004118: f8d4 9000 ldr.w r9, [r4] - 800411c: 7b23 ldrb r3, [r4, #12] - 800411e: 0792 lsls r2, r2, #30 - 8004120: d512 bpl.n 8004148 - 8004122: 6923 ldr r3, [r4, #16] - 8004124: b933 cbnz r3, 8004134 - 8004126: 4b16 ldr r3, [pc, #88] @ (8004180 ) - 8004128: 4918 ldr r1, [pc, #96] @ (800418c ) - 800412a: 4817 ldr r0, [pc, #92] @ (8004188 ) - 800412c: f240 22ff movw r2, #767 @ 0x2ff - 8004130: f006 fb2a bl 800a788 - 8004134: 6923 ldr r3, [r4, #16] - 8004136: 4620 mov r0, r4 - 8004138: 4798 blx r3 - 800413a: 3501 adds r5, #1 - 800413c: b2ed uxtb r5, r5 - 800413e: f1b9 0f00 cmp.w r9, #0 - 8004142: d0d1 beq.n 80040e8 - 8004144: 464c mov r4, r9 - 8004146: e7d7 b.n 80040f8 - 8004148: f003 030f and.w r3, r3, #15 - 800414c: 2b02 cmp r3, #2 - 800414e: d104 bne.n 800415a - 8004150: 4621 mov r1, r4 - 8004152: 2008 movs r0, #8 - 8004154: f7ff fd58 bl 8003c08 - 8004158: e7ef b.n 800413a - 800415a: 2b01 cmp r3, #1 - 800415c: d102 bne.n 8004164 - 800415e: 4621 mov r1, r4 - 8004160: 2007 movs r0, #7 - 8004162: e7f7 b.n 8004154 - 8004164: b91b cbnz r3, 800416e - 8004166: 4620 mov r0, r4 - 8004168: f7ff fac8 bl 80036fc - 800416c: e7e5 b.n 800413a - 800416e: 4908 ldr r1, [pc, #32] @ (8004190 ) - 8004170: 4633 mov r3, r6 - 8004172: f240 320f movw r2, #783 @ 0x30f - 8004176: 4638 mov r0, r7 - 8004178: f006 fb06 bl 800a788 - 800417c: e7dd b.n 800413a - 800417e: bf00 nop - 8004180: 0800bc4b .word 0x0800bc4b - 8004184: 0800bd1d .word 0x0800bd1d - 8004188: 0800b767 .word 0x0800b767 - 800418c: 0800bcc1 .word 0x0800bcc1 - 8004190: 0800bce2 .word 0x0800bce2 - 8004194: 0800bcab .word 0x0800bcab - -08004198 : - 8004198: f5b2 7fc1 cmp.w r2, #386 @ 0x182 - 800419c: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - 80041a0: 4607 mov r7, r0 - 80041a2: 460d mov r5, r1 - 80041a4: 4606 mov r6, r0 - 80041a6: d014 beq.n 80041d2 - 80041a8: d808 bhi.n 80041bc - 80041aa: f022 0340 bic.w r3, r2, #64 @ 0x40 - 80041ae: 2b01 cmp r3, #1 - 80041b0: d107 bne.n 80041c2 - 80041b2: e8bd 43f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - 80041b6: 2000 movs r0, #0 - 80041b8: f7ff bf14 b.w 8003fe4 - 80041bc: f5b2 7f20 cmp.w r2, #640 @ 0x280 - 80041c0: d03c beq.n 800423c - 80041c2: 4b2c ldr r3, [pc, #176] @ (8004274 ) - 80041c4: 492c ldr r1, [pc, #176] @ (8004278 ) - 80041c6: 482d ldr r0, [pc, #180] @ (800427c ) - 80041c8: f240 1227 movw r2, #295 @ 0x127 - 80041cc: f006 fadc bl 800a788 - 80041d0: e00d b.n 80041ee - 80041d2: 2000 movs r0, #0 - 80041d4: f8df 80b0 ldr.w r8, [pc, #176] @ 8004288 - 80041d8: 4604 mov r4, r0 - 80041da: 4607 mov r7, r0 - 80041dc: 4681 mov r9, r0 - 80041de: 2008 movs r0, #8 - 80041e0: f7ff fce4 bl 8003bac - 80041e4: b958 cbnz r0, 80041fe - 80041e6: 4b26 ldr r3, [pc, #152] @ (8004280 ) - 80041e8: 2201 movs r2, #1 - 80041ea: 701a strb r2, [r3, #0] - 80041ec: b91c cbnz r4, 80041f6 - 80041ee: 2400 movs r4, #0 - 80041f0: 4620 mov r0, r4 - 80041f2: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} - 80041f6: 4620 mov r0, r4 - 80041f8: f7ff ff6a bl 80040d0 - 80041fc: e7f7 b.n 80041ee - 80041fe: 1cf3 adds r3, r6, #3 - 8004200: f023 0303 bic.w r3, r3, #3 - 8004204: f5c3 7314 rsb r3, r3, #592 @ 0x250 - 8004208: b29b uxth r3, r3 - 800420a: 4406 add r6, r0 - 800420c: 42ab cmp r3, r5 - 800420e: f106 0613 add.w r6, r6, #19 - 8004212: bf28 it cs - 8004214: 462b movcs r3, r5 - 8004216: f026 0603 bic.w r6, r6, #3 - 800421a: 6007 str r7, [r0, #0] - 800421c: 6046 str r6, [r0, #4] - 800421e: 8105 strh r5, [r0, #8] - 8004220: 8143 strh r3, [r0, #10] - 8004222: f8c0 800c str.w r8, [r0, #12] - 8004226: b13c cbz r4, 8004238 - 8004228: f8c9 0000 str.w r0, [r9] - 800422c: 1aeb subs r3, r5, r3 - 800422e: b29d uxth r5, r3 - 8004230: 2600 movs r6, #0 - 8004232: 2d00 cmp r5, #0 - 8004234: d1d2 bne.n 80041dc - 8004236: e7db b.n 80041f0 - 8004238: 4604 mov r4, r0 - 800423a: e7f7 b.n 800422c - 800423c: 3003 adds r0, #3 - 800423e: 1ccb adds r3, r1, #3 - 8004240: f023 0303 bic.w r3, r3, #3 - 8004244: f020 0003 bic.w r0, r0, #3 - 8004248: 4418 add r0, r3 - 800424a: b280 uxth r0, r0 - 800424c: 4298 cmp r0, r3 - 800424e: d3ce bcc.n 80041ee - 8004250: 3010 adds r0, #16 - 8004252: f7ff fba3 bl 800399c - 8004256: 4604 mov r4, r0 - 8004258: 2800 cmp r0, #0 - 800425a: d0c9 beq.n 80041f0 - 800425c: 4407 add r7, r0 - 800425e: 2300 movs r3, #0 - 8004260: 3713 adds r7, #19 - 8004262: 6003 str r3, [r0, #0] - 8004264: f027 0703 bic.w r7, r7, #3 - 8004268: 4b06 ldr r3, [pc, #24] @ (8004284 ) - 800426a: 6047 str r7, [r0, #4] - 800426c: 8105 strh r5, [r0, #8] - 800426e: 8145 strh r5, [r0, #10] - 8004270: 60c3 str r3, [r0, #12] - 8004272: e7bd b.n 80041f0 - 8004274: 0800bc4b .word 0x0800bc4b - 8004278: 0800bcf4 .word 0x0800bcf4 - 800427c: 0800b767 .word 0x0800b767 - 8004280: 20018a8c .word 0x20018a8c - 8004284: 00010080 .word 0x00010080 - 8004288: 00010082 .word 0x00010082 - -0800428c : - 800428c: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 8004290: 460e mov r6, r1 - 8004292: 4604 mov r4, r0 - 8004294: b930 cbnz r0, 80042a4 - 8004296: 4b24 ldr r3, [pc, #144] @ (8004328 ) - 8004298: 4924 ldr r1, [pc, #144] @ (800432c ) - 800429a: 4825 ldr r0, [pc, #148] @ (8004330 ) - 800429c: f44f 72cc mov.w r2, #408 @ 0x198 - 80042a0: f006 fa72 bl 800a788 - 80042a4: 8927 ldrh r7, [r4, #8] - 80042a6: 42b7 cmp r7, r6 - 80042a8: d93b bls.n 8004322 - 80042aa: f8df 807c ldr.w r8, [pc, #124] @ 8004328 - 80042ae: f8df a088 ldr.w sl, [pc, #136] @ 8004338 - 80042b2: f8df 907c ldr.w r9, [pc, #124] @ 8004330 - 80042b6: 4635 mov r5, r6 - 80042b8: 8962 ldrh r2, [r4, #10] - 80042ba: 42aa cmp r2, r5 - 80042bc: d318 bcc.n 80042f0 - 80042be: 7b23 ldrb r3, [r4, #12] - 80042c0: 0719 lsls r1, r3, #28 - 80042c2: d126 bne.n 8004312 - 80042c4: 42aa cmp r2, r5 - 80042c6: d024 beq.n 8004312 - 80042c8: 7b63 ldrb r3, [r4, #13] - 80042ca: 079b lsls r3, r3, #30 - 80042cc: d421 bmi.n 8004312 - 80042ce: 6861 ldr r1, [r4, #4] - 80042d0: 1b09 subs r1, r1, r4 - 80042d2: 4620 mov r0, r4 - 80042d4: 4429 add r1, r5 - 80042d6: f7ff fac3 bl 8003860 - 80042da: 4604 mov r4, r0 - 80042dc: b9c8 cbnz r0, 8004312 - 80042de: 4b12 ldr r3, [pc, #72] @ (8004328 ) - 80042e0: 4914 ldr r1, [pc, #80] @ (8004334 ) - 80042e2: 4813 ldr r0, [pc, #76] @ (8004330 ) - 80042e4: f240 12bd movw r2, #445 @ 0x1bd - 80042e8: f006 fa4e bl 800a788 - 80042ec: 8164 strh r4, [r4, #10] - 80042ee: deff udf #255 @ 0xff - 80042f0: 1aaa subs r2, r5, r2 - 80042f2: b295 uxth r5, r2 - 80042f4: 8922 ldrh r2, [r4, #8] - 80042f6: 1bf3 subs r3, r6, r7 - 80042f8: 4413 add r3, r2 - 80042fa: 8123 strh r3, [r4, #8] - 80042fc: 6824 ldr r4, [r4, #0] - 80042fe: 2c00 cmp r4, #0 - 8004300: d1da bne.n 80042b8 - 8004302: 4643 mov r3, r8 - 8004304: f240 12af movw r2, #431 @ 0x1af - 8004308: 4651 mov r1, sl - 800430a: 4648 mov r0, r9 - 800430c: f006 fa3c bl 800a788 - 8004310: e7d2 b.n 80042b8 - 8004312: 6820 ldr r0, [r4, #0] - 8004314: 8165 strh r5, [r4, #10] - 8004316: 8125 strh r5, [r4, #8] - 8004318: b108 cbz r0, 800431e - 800431a: f7ff fed9 bl 80040d0 - 800431e: 2300 movs r3, #0 - 8004320: 6023 str r3, [r4, #0] - 8004322: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 8004326: bf00 nop - 8004328: 0800bc4b .word 0x0800bc4b - 800432c: 0800bd0f .word 0x0800bd0f - 8004330: 0800b767 .word 0x0800b767 - 8004334: 0800bd3f .word 0x0800bd3f - 8004338: 0800bd27 .word 0x0800bd27 - -0800433c : - 800433c: 2300 movs r3, #0 - 800433e: 1c5a adds r2, r3, #1 - 8004340: b908 cbnz r0, 8004346 - 8004342: b298 uxth r0, r3 - 8004344: 4770 bx lr - 8004346: 6800 ldr r0, [r0, #0] - 8004348: 4613 mov r3, r2 - 800434a: e7f8 b.n 800433e - -0800434c : - 800434c: b158 cbz r0, 8004366 - 800434e: 7b83 ldrb r3, [r0, #14] - 8004350: 3301 adds r3, #1 - 8004352: b2db uxtb r3, r3 - 8004354: 7383 strb r3, [r0, #14] - 8004356: b933 cbnz r3, 8004366 - 8004358: 4b03 ldr r3, [pc, #12] @ (8004368 ) - 800435a: 4904 ldr r1, [pc, #16] @ (800436c ) - 800435c: 4804 ldr r0, [pc, #16] @ (8004370 ) - 800435e: f240 3242 movw r2, #834 @ 0x342 - 8004362: f006 ba11 b.w 800a788 - 8004366: 4770 bx lr - 8004368: 0800bc4b .word 0x0800bc4b - 800436c: 0800bd5b .word 0x0800bd5b - 8004370: 0800b767 .word 0x0800b767 - -08004374 : - 8004374: b570 push {r4, r5, r6, lr} - 8004376: 460d mov r5, r1 - 8004378: 4604 mov r4, r0 - 800437a: b100 cbz r0, 800437e - 800437c: b961 cbnz r1, 8004398 - 800437e: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 8004382: 4b14 ldr r3, [pc, #80] @ (80043d4 ) - 8004384: 4914 ldr r1, [pc, #80] @ (80043d8 ) - 8004386: 4815 ldr r0, [pc, #84] @ (80043dc ) - 8004388: f240 3259 movw r2, #857 @ 0x359 - 800438c: f006 b9fc b.w 800a788 - 8004390: 8929 ldrh r1, [r5, #8] - 8004392: 440b add r3, r1 - 8004394: 8123 strh r3, [r4, #8] - 8004396: 4614 mov r4, r2 - 8004398: 6822 ldr r2, [r4, #0] - 800439a: 8923 ldrh r3, [r4, #8] - 800439c: 2a00 cmp r2, #0 - 800439e: d1f7 bne.n 8004390 - 80043a0: 8962 ldrh r2, [r4, #10] - 80043a2: 429a cmp r2, r3 - 80043a4: d00f beq.n 80043c6 - 80043a6: 4b0b ldr r3, [pc, #44] @ (80043d4 ) - 80043a8: 490d ldr r1, [pc, #52] @ (80043e0 ) - 80043aa: 480c ldr r0, [pc, #48] @ (80043dc ) - 80043ac: f240 3262 movw r2, #866 @ 0x362 - 80043b0: f006 f9ea bl 800a788 - 80043b4: 6823 ldr r3, [r4, #0] - 80043b6: b133 cbz r3, 80043c6 - 80043b8: 4b06 ldr r3, [pc, #24] @ (80043d4 ) - 80043ba: 490a ldr r1, [pc, #40] @ (80043e4 ) - 80043bc: 4807 ldr r0, [pc, #28] @ (80043dc ) - 80043be: f240 3263 movw r2, #867 @ 0x363 - 80043c2: f006 f9e1 bl 800a788 - 80043c6: 892a ldrh r2, [r5, #8] - 80043c8: 8923 ldrh r3, [r4, #8] - 80043ca: 6025 str r5, [r4, #0] - 80043cc: 4413 add r3, r2 - 80043ce: 8123 strh r3, [r4, #8] - 80043d0: bd70 pop {r4, r5, r6, pc} - 80043d2: bf00 nop - 80043d4: 0800bc4b .word 0x0800bc4b - 80043d8: 0800bd6d .word 0x0800bd6d - 80043dc: 0800b767 .word 0x0800b767 - 80043e0: 0800bda2 .word 0x0800bda2 - 80043e4: 0800bdcf .word 0x0800bdcf - -080043e8 : - 80043e8: b510 push {r4, lr} - 80043ea: 460c mov r4, r1 - 80043ec: f7ff ffc2 bl 8004374 - 80043f0: 4620 mov r0, r4 - 80043f2: e8bd 4010 ldmia.w sp!, {r4, lr} - 80043f6: f7ff bfa9 b.w 800434c - ... - -080043fc : - 80043fc: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8004400: 460c mov r4, r1 - 8004402: 4605 mov r5, r0 - 8004404: b120 cbz r0, 8004410 - 8004406: b119 cbz r1, 8004410 - 8004408: 8902 ldrh r2, [r0, #8] - 800440a: 890b ldrh r3, [r1, #8] - 800440c: 429a cmp r2, r3 - 800440e: d20a bcs.n 8004426 - 8004410: 4b34 ldr r3, [pc, #208] @ (80044e4 ) - 8004412: 4935 ldr r1, [pc, #212] @ (80044e8 ) - 8004414: f240 32c9 movw r2, #969 @ 0x3c9 - 8004418: 4834 ldr r0, [pc, #208] @ (80044ec ) - 800441a: f006 f9b5 bl 800a788 - 800441e: f06f 000f mvn.w r0, #15 - 8004422: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} - 8004426: 2600 movs r6, #0 - 8004428: f8df 90b8 ldr.w r9, [pc, #184] @ 80044e4 - 800442c: f8df b0cc ldr.w fp, [pc, #204] @ 80044fc - 8004430: f8df a0b8 ldr.w sl, [pc, #184] @ 80044ec - 8004434: 4637 mov r7, r6 - 8004436: f8b5 800a ldrh.w r8, [r5, #10] - 800443a: 8963 ldrh r3, [r4, #10] - 800443c: 6868 ldr r0, [r5, #4] - 800443e: 6861 ldr r1, [r4, #4] - 8004440: eba8 0807 sub.w r8, r8, r7 - 8004444: 1b9b subs r3, r3, r6 - 8004446: 4598 cmp r8, r3 - 8004448: bf28 it cs - 800444a: 4698 movcs r8, r3 - 800444c: 4431 add r1, r6 - 800444e: 4438 add r0, r7 - 8004450: 4642 mov r2, r8 - 8004452: f006 fa74 bl 800a93e - 8004456: 896b ldrh r3, [r5, #10] - 8004458: 4447 add r7, r8 - 800445a: 42bb cmp r3, r7 - 800445c: 4446 add r6, r8 - 800445e: d206 bcs.n 800446e - 8004460: 464b mov r3, r9 - 8004462: f240 32d9 movw r2, #985 @ 0x3d9 - 8004466: 4659 mov r1, fp - 8004468: 4650 mov r0, sl - 800446a: f006 f98d bl 800a788 - 800446e: 8963 ldrh r3, [r4, #10] - 8004470: 42b3 cmp r3, r6 - 8004472: d206 bcs.n 8004482 - 8004474: 491e ldr r1, [pc, #120] @ (80044f0 ) - 8004476: 464b mov r3, r9 - 8004478: f240 32da movw r2, #986 @ 0x3da - 800447c: 4650 mov r0, sl - 800447e: f006 f983 bl 800a788 - 8004482: 8963 ldrh r3, [r4, #10] - 8004484: 42b3 cmp r3, r6 - 8004486: 896b ldrh r3, [r5, #10] - 8004488: bf9c itt ls - 800448a: 6824 ldrls r4, [r4, #0] - 800448c: 2600 movls r6, #0 - 800448e: 42bb cmp r3, r7 - 8004490: d108 bne.n 80044a4 - 8004492: 682d ldr r5, [r5, #0] - 8004494: b92d cbnz r5, 80044a2 - 8004496: b314 cbz r4, 80044de - 8004498: 4b12 ldr r3, [pc, #72] @ (80044e4 ) - 800449a: 4916 ldr r1, [pc, #88] @ (80044f4 ) - 800449c: f44f 7279 mov.w r2, #996 @ 0x3e4 - 80044a0: e7ba b.n 8004418 - 80044a2: 2700 movs r7, #0 - 80044a4: b17c cbz r4, 80044c6 - 80044a6: 8962 ldrh r2, [r4, #10] - 80044a8: 8923 ldrh r3, [r4, #8] - 80044aa: 429a cmp r2, r3 - 80044ac: d10b bne.n 80044c6 - 80044ae: 6823 ldr r3, [r4, #0] - 80044b0: b14b cbz r3, 80044c6 - 80044b2: 4b0c ldr r3, [pc, #48] @ (80044e4 ) - 80044b4: f240 32e9 movw r2, #1001 @ 0x3e9 - 80044b8: 490f ldr r1, [pc, #60] @ (80044f8 ) - 80044ba: 480c ldr r0, [pc, #48] @ (80044ec ) - 80044bc: f006 f964 bl 800a788 - 80044c0: f06f 0005 mvn.w r0, #5 - 80044c4: e7ad b.n 8004422 - 80044c6: 896a ldrh r2, [r5, #10] - 80044c8: 892b ldrh r3, [r5, #8] - 80044ca: 429a cmp r2, r3 - 80044cc: d105 bne.n 80044da - 80044ce: 682b ldr r3, [r5, #0] - 80044d0: b11b cbz r3, 80044da - 80044d2: 4b04 ldr r3, [pc, #16] @ (80044e4 ) - 80044d4: f240 32ee movw r2, #1006 @ 0x3ee - 80044d8: e7ee b.n 80044b8 - 80044da: 2c00 cmp r4, #0 - 80044dc: d1ab bne.n 8004436 - 80044de: 4620 mov r0, r4 - 80044e0: e79f b.n 8004422 - 80044e2: bf00 nop - 80044e4: 0800bc4b .word 0x0800bc4b - 80044e8: 0800bddf .word 0x0800bddf - 80044ec: 0800b767 .word 0x0800b767 - 80044f0: 0800be26 .word 0x0800be26 - 80044f4: 0800be41 .word 0x0800be41 - 80044f8: 0800be4e .word 0x0800be4e - 80044fc: 0800be0f .word 0x0800be0f - -08004500 : - 8004500: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 8004504: 460f mov r7, r1 - 8004506: 4690 mov r8, r2 - 8004508: 4605 mov r5, r0 - 800450a: b950 cbnz r0, 8004522 - 800450c: 4b19 ldr r3, [pc, #100] @ (8004574 ) - 800450e: 491a ldr r1, [pc, #104] @ (8004578 ) - 8004510: f240 420a movw r2, #1034 @ 0x40a - 8004514: 4819 ldr r0, [pc, #100] @ (800457c ) - 8004516: f006 f937 bl 800a788 - 800451a: 2600 movs r6, #0 - 800451c: 4630 mov r0, r6 - 800451e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 8004522: bb21 cbnz r1, 800456e - 8004524: 4b13 ldr r3, [pc, #76] @ (8004574 ) - 8004526: 4916 ldr r1, [pc, #88] @ (8004580 ) - 8004528: f240 420b movw r2, #1035 @ 0x40b - 800452c: e7f2 b.n 8004514 - 800452e: 896c ldrh r4, [r5, #10] - 8004530: b153 cbz r3, 8004548 - 8004532: 429c cmp r4, r3 - 8004534: d808 bhi.n 8004548 - 8004536: 1b1b subs r3, r3, r4 - 8004538: b29b uxth r3, r3 - 800453a: 682d ldr r5, [r5, #0] - 800453c: f1b8 0f00 cmp.w r8, #0 - 8004540: d0ec beq.n 800451c - 8004542: 2d00 cmp r5, #0 - 8004544: d1f3 bne.n 800452e - 8004546: e7e9 b.n 800451c - 8004548: 1ae4 subs r4, r4, r3 - 800454a: b2a4 uxth r4, r4 - 800454c: 4544 cmp r4, r8 - 800454e: 6869 ldr r1, [r5, #4] - 8004550: bf28 it cs - 8004552: 4644 movcs r4, r8 - 8004554: 4622 mov r2, r4 - 8004556: 4419 add r1, r3 - 8004558: 19b8 adds r0, r7, r6 - 800455a: 4426 add r6, r4 - 800455c: eba8 0404 sub.w r4, r8, r4 - 8004560: f006 f9ed bl 800a93e - 8004564: b2b6 uxth r6, r6 - 8004566: fa1f f884 uxth.w r8, r4 - 800456a: 2300 movs r3, #0 - 800456c: e7e5 b.n 800453a - 800456e: 2600 movs r6, #0 - 8004570: e7e4 b.n 800453c - 8004572: bf00 nop - 8004574: 0800bc4b .word 0x0800bc4b - 8004578: 0800be78 .word 0x0800be78 - 800457c: 0800b767 .word 0x0800b767 - 8004580: 0800be97 .word 0x0800be97 - -08004584 : - 8004584: b538 push {r3, r4, r5, lr} - 8004586: 4615 mov r5, r2 - 8004588: 460a mov r2, r1 - 800458a: 8929 ldrh r1, [r5, #8] - 800458c: f7ff fe04 bl 8004198 - 8004590: 4604 mov r4, r0 - 8004592: b150 cbz r0, 80045aa - 8004594: 4629 mov r1, r5 - 8004596: f7ff ff31 bl 80043fc - 800459a: b130 cbz r0, 80045aa - 800459c: 4b04 ldr r3, [pc, #16] @ (80045b0 ) - 800459e: 4905 ldr r1, [pc, #20] @ (80045b4 ) - 80045a0: 4805 ldr r0, [pc, #20] @ (80045b8 ) - 80045a2: f240 5224 movw r2, #1316 @ 0x524 - 80045a6: f006 f8ef bl 800a788 - 80045aa: 4620 mov r0, r4 - 80045ac: bd38 pop {r3, r4, r5, pc} - 80045ae: bf00 nop - 80045b0: 0800bc4b .word 0x0800bc4b - 80045b4: 0800beba .word 0x0800beba - 80045b8: 0800b767 .word 0x0800b767 - -080045bc : - 80045bc: b510 push {r4, lr} - 80045be: 4604 mov r4, r0 - 80045c0: b930 cbnz r0, 80045d0 - 80045c2: 4b13 ldr r3, [pc, #76] @ (8004610 ) - 80045c4: 4913 ldr r1, [pc, #76] @ (8004614 ) - 80045c6: 4814 ldr r0, [pc, #80] @ (8004618 ) - 80045c8: f44f 72ce mov.w r2, #412 @ 0x19c - 80045cc: f006 f8dc bl 800a788 - 80045d0: 7d23 ldrb r3, [r4, #20] - 80045d2: 2b04 cmp r3, #4 - 80045d4: d003 beq.n 80045de - 80045d6: 2b07 cmp r3, #7 - 80045d8: d00c beq.n 80045f4 - 80045da: 2b03 cmp r3, #3 - 80045dc: d108 bne.n 80045f0 - 80045de: 4620 mov r0, r4 - 80045e0: f002 fc5c bl 8006e9c - 80045e4: b960 cbnz r0, 8004600 - 80045e6: 2305 movs r3, #5 - 80045e8: 7523 strb r3, [r4, #20] - 80045ea: 4620 mov r0, r4 - 80045ec: f002 fdb8 bl 8007160 - 80045f0: 2000 movs r0, #0 - 80045f2: bd10 pop {r4, pc} - 80045f4: 4620 mov r0, r4 - 80045f6: f002 fc51 bl 8006e9c - 80045fa: b908 cbnz r0, 8004600 - 80045fc: 2309 movs r3, #9 - 80045fe: e7f3 b.n 80045e8 - 8004600: 1c43 adds r3, r0, #1 - 8004602: d1f6 bne.n 80045f2 - 8004604: 8b63 ldrh r3, [r4, #26] - 8004606: f043 0308 orr.w r3, r3, #8 - 800460a: 8363 strh r3, [r4, #26] - 800460c: e7f0 b.n 80045f0 - 800460e: bf00 nop - 8004610: 0800becb .word 0x0800becb - 8004614: 0800befa .word 0x0800befa - 8004618: 0800b767 .word 0x0800b767 - -0800461c : - 800461c: b508 push {r3, lr} - 800461e: f005 ffb3 bl 800a588 - 8004622: 4b03 ldr r3, [pc, #12] @ (8004630 ) - 8004624: ea6f 4080 mvn.w r0, r0, lsl #18 - 8004628: ea6f 4090 mvn.w r0, r0, lsr #18 - 800462c: 8018 strh r0, [r3, #0] - 800462e: bd08 pop {r3, pc} - 8004630: 20000024 .word 0x20000024 - -08004634 : - 8004634: b510 push {r4, lr} - 8004636: 7d03 ldrb r3, [r0, #20] - 8004638: 2b01 cmp r3, #1 - 800463a: 4604 mov r4, r0 - 800463c: d105 bne.n 800464a - 800463e: 4b06 ldr r3, [pc, #24] @ (8004658 ) - 8004640: 4906 ldr r1, [pc, #24] @ (800465c ) - 8004642: 4807 ldr r0, [pc, #28] @ (8004660 ) - 8004644: 22d4 movs r2, #212 @ 0xd4 - 8004646: f006 f89f bl 800a788 - 800464a: 4621 mov r1, r4 - 800464c: 2001 movs r0, #1 - 800464e: e8bd 4010 ldmia.w sp!, {r4, lr} - 8004652: f7ff bad9 b.w 8003c08 - 8004656: bf00 nop - 8004658: 0800becb .word 0x0800becb - 800465c: 0800bf06 .word 0x0800bf06 - 8004660: 0800b767 .word 0x0800b767 - -08004664 : - 8004664: b570 push {r4, r5, r6, lr} - 8004666: 4604 mov r4, r0 - 8004668: b930 cbnz r0, 8004678 - 800466a: 4b15 ldr r3, [pc, #84] @ (80046c0 ) - 800466c: 4915 ldr r1, [pc, #84] @ (80046c4 ) - 800466e: 4816 ldr r0, [pc, #88] @ (80046c8 ) - 8004670: f240 32a6 movw r2, #934 @ 0x3a6 - 8004674: f006 f888 bl 800a788 - 8004678: 8d23 ldrh r3, [r4, #40] @ 0x28 - 800467a: 6ae1 ldr r1, [r4, #44] @ 0x2c - 800467c: 8e66 ldrh r6, [r4, #50] @ 0x32 - 800467e: 6a62 ldr r2, [r4, #36] @ 0x24 - 8004680: 1a58 subs r0, r3, r1 - 8004682: f5b6 6f86 cmp.w r6, #1072 @ 0x430 - 8004686: 4410 add r0, r2 - 8004688: bf94 ite ls - 800468a: 1b85 subls r5, r0, r6 - 800468c: f5a0 6586 subhi.w r5, r0, #1072 @ 0x430 - 8004690: 2d00 cmp r5, #0 - 8004692: da0f bge.n 80046b4 - 8004694: 1a53 subs r3, r2, r1 - 8004696: 2b00 cmp r3, #0 - 8004698: dc0e bgt.n 80046b8 - 800469a: 1a8d subs r5, r1, r2 - 800469c: f5b5 3f80 cmp.w r5, #65536 @ 0x10000 - 80046a0: d306 bcc.n 80046b0 - 80046a2: 4b07 ldr r3, [pc, #28] @ (80046c0 ) - 80046a4: 4909 ldr r1, [pc, #36] @ (80046cc ) - 80046a6: 4808 ldr r0, [pc, #32] @ (80046c8 ) - 80046a8: f240 32b6 movw r2, #950 @ 0x3b6 - 80046ac: f006 f86c bl 800a788 - 80046b0: b2ab uxth r3, r5 - 80046b2: 2000 movs r0, #0 - 80046b4: 8563 strh r3, [r4, #42] @ 0x2a - 80046b6: bd70 pop {r4, r5, r6, pc} - 80046b8: 2300 movs r3, #0 - 80046ba: 4618 mov r0, r3 - 80046bc: e7fa b.n 80046b4 - 80046be: bf00 nop - 80046c0: 0800becb .word 0x0800becb - 80046c4: 0800bf17 .word 0x0800bf17 - 80046c8: 0800b767 .word 0x0800b767 - 80046cc: 0800bf3b .word 0x0800bf3b - -080046d0 : - 80046d0: b570 push {r4, r5, r6, lr} - 80046d2: 460c mov r4, r1 - 80046d4: 4605 mov r5, r0 - 80046d6: b940 cbnz r0, 80046ea - 80046d8: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 80046dc: 4b17 ldr r3, [pc, #92] @ (800473c ) - 80046de: 4918 ldr r1, [pc, #96] @ (8004740 ) - 80046e0: 4818 ldr r0, [pc, #96] @ (8004744 ) - 80046e2: f240 32cf movw r2, #975 @ 0x3cf - 80046e6: f006 b84f b.w 800a788 - 80046ea: 7d03 ldrb r3, [r0, #20] - 80046ec: 2b01 cmp r3, #1 - 80046ee: d106 bne.n 80046fe - 80046f0: 4b12 ldr r3, [pc, #72] @ (800473c ) - 80046f2: 4915 ldr r1, [pc, #84] @ (8004748 ) - 80046f4: 4813 ldr r0, [pc, #76] @ (8004744 ) - 80046f6: f240 32d2 movw r2, #978 @ 0x3d2 - 80046fa: f006 f845 bl 800a788 - 80046fe: 8d2b ldrh r3, [r5, #40] @ 0x28 - 8004700: 1919 adds r1, r3, r4 - 8004702: b289 uxth r1, r1 - 8004704: f5b1 6f06 cmp.w r1, #2144 @ 0x860 - 8004708: d813 bhi.n 8004732 - 800470a: 428b cmp r3, r1 - 800470c: bf88 it hi - 800470e: f44f 6106 movhi.w r1, #2144 @ 0x860 - 8004712: 8529 strh r1, [r5, #40] @ 0x28 - 8004714: 4628 mov r0, r5 - 8004716: f7ff ffa5 bl 8004664 - 800471a: f5b0 7f06 cmp.w r0, #536 @ 0x218 - 800471e: d30b bcc.n 8004738 - 8004720: 8b6b ldrh r3, [r5, #26] - 8004722: f043 0302 orr.w r3, r3, #2 - 8004726: 836b strh r3, [r5, #26] - 8004728: 4628 mov r0, r5 - 800472a: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 800472e: f002 bd17 b.w 8007160 - 8004732: f44f 6106 mov.w r1, #2144 @ 0x860 - 8004736: e7ec b.n 8004712 - 8004738: bd70 pop {r4, r5, r6, pc} - 800473a: bf00 nop - 800473c: 0800becb .word 0x0800becb - 8004740: 0800bf55 .word 0x0800bf55 - 8004744: 0800b767 .word 0x0800b767 - 8004748: 0800bf6d .word 0x0800bf6d - -0800474c : - 800474c: b510 push {r4, lr} - 800474e: 4604 mov r4, r0 - 8004750: b148 cbz r0, 8004766 - 8004752: 6840 ldr r0, [r0, #4] - 8004754: b108 cbz r0, 800475a - 8004756: f7ff fcbb bl 80040d0 - 800475a: 4621 mov r1, r4 - 800475c: 2003 movs r0, #3 - 800475e: e8bd 4010 ldmia.w sp!, {r4, lr} - 8004762: f7ff ba51 b.w 8003c08 - 8004766: bd10 pop {r4, pc} - -08004768 : - 8004768: b510 push {r4, lr} - 800476a: b900 cbnz r0, 800476e - 800476c: bd10 pop {r4, pc} - 800476e: 6804 ldr r4, [r0, #0] - 8004770: f7ff ffec bl 800474c - 8004774: 4620 mov r0, r4 - 8004776: e7f8 b.n 800476a - -08004778 : - 8004778: b538 push {r3, r4, r5, lr} - 800477a: 4604 mov r4, r0 - 800477c: b930 cbnz r0, 800478c - 800477e: 4b0d ldr r3, [pc, #52] @ (80047b4 ) - 8004780: 490d ldr r1, [pc, #52] @ (80047b8 ) - 8004782: 480e ldr r0, [pc, #56] @ (80047bc ) - 8004784: f240 6282 movw r2, #1666 @ 0x682 - 8004788: f005 fffe bl 800a788 - 800478c: 2003 movs r0, #3 - 800478e: f7ff fa0d bl 8003bac - 8004792: 4605 mov r5, r0 - 8004794: b160 cbz r0, 80047b0 - 8004796: 4623 mov r3, r4 - 8004798: 4602 mov r2, r0 - 800479a: f104 0110 add.w r1, r4, #16 - 800479e: f853 0b04 ldr.w r0, [r3], #4 - 80047a2: f842 0b04 str.w r0, [r2], #4 - 80047a6: 428b cmp r3, r1 - 80047a8: d1f9 bne.n 800479e - 80047aa: 6868 ldr r0, [r5, #4] - 80047ac: f7ff fdce bl 800434c - 80047b0: 4628 mov r0, r5 - 80047b2: bd38 pop {r3, r4, r5, pc} - 80047b4: 0800becb .word 0x0800becb - 80047b8: 0800bf93 .word 0x0800bf93 - 80047bc: 0800b767 .word 0x0800b767 - -080047c0 : - 80047c0: b508 push {r3, lr} - 80047c2: b930 cbnz r0, 80047d2 - 80047c4: 4b06 ldr r3, [pc, #24] @ (80047e0 ) - 80047c6: 4907 ldr r1, [pc, #28] @ (80047e4 ) - 80047c8: 4807 ldr r0, [pc, #28] @ (80047e8 ) - 80047ca: f640 02af movw r2, #2223 @ 0x8af - 80047ce: f005 ffdb bl 800a788 - 80047d2: 4b06 ldr r3, [pc, #24] @ (80047ec ) - 80047d4: 4a06 ldr r2, [pc, #24] @ (80047f0 ) - 80047d6: 6818 ldr r0, [r3, #0] - 80047d8: 6812 ldr r2, [r2, #0] - 80047da: 4410 add r0, r2 - 80047dc: 6018 str r0, [r3, #0] - 80047de: bd08 pop {r3, pc} - 80047e0: 0800becb .word 0x0800becb - 80047e4: 0800bfad .word 0x0800bfad - 80047e8: 0800b767 .word 0x0800b767 - 80047ec: 20000020 .word 0x20000020 - 80047f0: 20018aa0 .word 0x20018aa0 - -080047f4 : - 80047f4: b538 push {r3, r4, r5, lr} - 80047f6: 4604 mov r4, r0 - 80047f8: 460d mov r5, r1 - 80047fa: b932 cbnz r2, 800480a - 80047fc: 4b09 ldr r3, [pc, #36] @ (8004824 ) - 80047fe: 490a ldr r1, [pc, #40] @ (8004828 ) - 8004800: 480a ldr r0, [pc, #40] @ (800482c ) - 8004802: f640 02c5 movw r2, #2245 @ 0x8c5 - 8004806: f005 ffbf bl 800a788 - 800480a: b14d cbz r5, 8004820 - 800480c: 8d2b ldrh r3, [r5, #40] @ 0x28 - 800480e: b13b cbz r3, 8004820 - 8004810: 2b28 cmp r3, #40 @ 0x28 - 8004812: bf38 it cc - 8004814: 2328 movcc r3, #40 @ 0x28 - 8004816: 3b28 subs r3, #40 @ 0x28 - 8004818: b29b uxth r3, r3 - 800481a: 429c cmp r4, r3 - 800481c: bf28 it cs - 800481e: 461c movcs r4, r3 - 8004820: 4620 mov r0, r4 - 8004822: bd38 pop {r3, r4, r5, pc} - 8004824: 0800becb .word 0x0800becb - 8004828: 0800bfc7 .word 0x0800bfc7 - 800482c: 0800b767 .word 0x0800b767 - -08004830 : - 8004830: b510 push {r4, lr} - 8004832: 4604 mov r4, r0 - 8004834: 6f40 ldr r0, [r0, #116] @ 0x74 - 8004836: b118 cbz r0, 8004840 - 8004838: f7ff ff96 bl 8004768 - 800483c: 2300 movs r3, #0 - 800483e: 6763 str r3, [r4, #116] @ 0x74 - 8004840: bd10 pop {r4, pc} - ... - -08004844 : - 8004844: b510 push {r4, lr} - 8004846: 4604 mov r4, r0 - 8004848: b940 cbnz r0, 800485c - 800484a: e8bd 4010 ldmia.w sp!, {r4, lr} - 800484e: 4b13 ldr r3, [pc, #76] @ (800489c ) - 8004850: 4913 ldr r1, [pc, #76] @ (80048a0 ) - 8004852: 4814 ldr r0, [pc, #80] @ (80048a4 ) - 8004854: f640 0251 movw r2, #2129 @ 0x851 - 8004858: f005 bf96 b.w 800a788 - 800485c: 7d03 ldrb r3, [r0, #20] - 800485e: 2b01 cmp r3, #1 - 8004860: d91a bls.n 8004898 - 8004862: 2b0a cmp r3, #10 - 8004864: d018 beq.n 8004898 - 8004866: 6f80 ldr r0, [r0, #120] @ 0x78 - 8004868: b118 cbz r0, 8004872 - 800486a: f7ff fc31 bl 80040d0 - 800486e: 2300 movs r3, #0 - 8004870: 67a3 str r3, [r4, #120] @ 0x78 - 8004872: 6f63 ldr r3, [r4, #116] @ 0x74 - 8004874: b113 cbz r3, 800487c - 8004876: 4620 mov r0, r4 - 8004878: f7ff ffda bl 8004830 - 800487c: f64f 73ff movw r3, #65535 @ 0xffff - 8004880: 8623 strh r3, [r4, #48] @ 0x30 - 8004882: 6ee0 ldr r0, [r4, #108] @ 0x6c - 8004884: f7ff ff70 bl 8004768 - 8004888: 6f20 ldr r0, [r4, #112] @ 0x70 - 800488a: f7ff ff6d bl 8004768 - 800488e: 2300 movs r3, #0 - 8004890: e9c4 331b strd r3, r3, [r4, #108] @ 0x6c - 8004894: f8a4 3068 strh.w r3, [r4, #104] @ 0x68 - 8004898: bd10 pop {r4, pc} - 800489a: bf00 nop - 800489c: 0800becb .word 0x0800becb - 80048a0: 0800bfee .word 0x0800bfee - 80048a4: 0800b767 .word 0x0800b767 - -080048a8 : - 80048a8: b538 push {r3, r4, r5, lr} - 80048aa: 4605 mov r5, r0 - 80048ac: 460c mov r4, r1 - 80048ae: b931 cbnz r1, 80048be - 80048b0: 4b29 ldr r3, [pc, #164] @ (8004958 ) - 80048b2: 492a ldr r1, [pc, #168] @ (800495c ) - 80048b4: 482a ldr r0, [pc, #168] @ (8004960 ) - 80048b6: f640 0283 movw r2, #2179 @ 0x883 - 80048ba: f005 ff65 bl 800a788 - 80048be: b935 cbnz r5, 80048ce - 80048c0: 4b25 ldr r3, [pc, #148] @ (8004958 ) - 80048c2: 4928 ldr r1, [pc, #160] @ (8004964 ) - 80048c4: 4826 ldr r0, [pc, #152] @ (8004960 ) - 80048c6: f640 0284 movw r2, #2180 @ 0x884 - 80048ca: f005 ff5d bl 800a788 - 80048ce: 682b ldr r3, [r5, #0] - 80048d0: 42a3 cmp r3, r4 - 80048d2: d11f bne.n 8004914 - 80048d4: 68e3 ldr r3, [r4, #12] - 80048d6: 602b str r3, [r5, #0] - 80048d8: 2300 movs r3, #0 - 80048da: 60e3 str r3, [r4, #12] - 80048dc: 4620 mov r0, r4 - 80048de: f7ff ffb1 bl 8004844 - 80048e2: 7d23 ldrb r3, [r4, #20] - 80048e4: 2b0a cmp r3, #10 - 80048e6: d11d bne.n 8004924 - 80048e8: 6ee3 ldr r3, [r4, #108] @ 0x6c - 80048ea: bb6b cbnz r3, 8004948 - 80048ec: 6f23 ldr r3, [r4, #112] @ 0x70 - 80048ee: b133 cbz r3, 80048fe - 80048f0: 4b19 ldr r3, [pc, #100] @ (8004958 ) - 80048f2: 491d ldr r1, [pc, #116] @ (8004968 ) - 80048f4: 481a ldr r0, [pc, #104] @ (8004960 ) - 80048f6: f640 0294 movw r2, #2196 @ 0x894 - 80048fa: f005 ff45 bl 800a788 - 80048fe: 6f63 ldr r3, [r4, #116] @ 0x74 - 8004900: b1f3 cbz r3, 8004940 - 8004902: 4b15 ldr r3, [pc, #84] @ (8004958 ) - 8004904: 4919 ldr r1, [pc, #100] @ (800496c ) - 8004906: 4816 ldr r0, [pc, #88] @ (8004960 ) - 8004908: f640 0296 movw r2, #2198 @ 0x896 - 800490c: f005 ff3c bl 800a788 - 8004910: e016 b.n 8004940 - 8004912: 4613 mov r3, r2 - 8004914: 2b00 cmp r3, #0 - 8004916: d0df beq.n 80048d8 - 8004918: 68da ldr r2, [r3, #12] - 800491a: 42a2 cmp r2, r4 - 800491c: d1f9 bne.n 8004912 - 800491e: 68e2 ldr r2, [r4, #12] - 8004920: 60da str r2, [r3, #12] - 8004922: e7d9 b.n 80048d8 - 8004924: 2b01 cmp r3, #1 - 8004926: d00b beq.n 8004940 - 8004928: 8b63 ldrh r3, [r4, #26] - 800492a: 07da lsls r2, r3, #31 - 800492c: d5dc bpl.n 80048e8 - 800492e: f043 0302 orr.w r3, r3, #2 - 8004932: 8363 strh r3, [r4, #26] - 8004934: 4620 mov r0, r4 - 8004936: f002 fc13 bl 8007160 - 800493a: 7d23 ldrb r3, [r4, #20] - 800493c: 2b01 cmp r3, #1 - 800493e: d1d3 bne.n 80048e8 - 8004940: 2300 movs r3, #0 - 8004942: 7523 strb r3, [r4, #20] - 8004944: 82e3 strh r3, [r4, #22] - 8004946: bd38 pop {r3, r4, r5, pc} - 8004948: 4b03 ldr r3, [pc, #12] @ (8004958 ) - 800494a: 4909 ldr r1, [pc, #36] @ (8004970 ) - 800494c: 4804 ldr r0, [pc, #16] @ (8004960 ) - 800494e: f640 0293 movw r2, #2195 @ 0x893 - 8004952: f005 ff19 bl 800a788 - 8004956: e7c9 b.n 80048ec - 8004958: 0800becb .word 0x0800becb - 800495c: 0800c009 .word 0x0800c009 - 8004960: 0800b767 .word 0x0800b767 - 8004964: 0800c025 .word 0x0800c025 - 8004968: 0800c05d .word 0x0800c05d - 800496c: 0800c076 .word 0x0800c076 - 8004970: 0800c045 .word 0x0800c045 - -08004974 : - 8004974: e92d 47ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, lr} - 8004978: 460e mov r6, r1 - 800497a: 4604 mov r4, r0 - 800497c: b948 cbnz r0, 8004992 - 800497e: 4b38 ldr r3, [pc, #224] @ (8004a60 ) - 8004980: 4938 ldr r1, [pc, #224] @ (8004a64 ) - 8004982: 4839 ldr r0, [pc, #228] @ (8004a68 ) - 8004984: f240 223d movw r2, #573 @ 0x23d - 8004988: b004 add sp, #16 - 800498a: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 800498e: f005 befb b.w 800a788 - 8004992: 7d03 ldrb r3, [r0, #20] - 8004994: 2b01 cmp r3, #1 - 8004996: d106 bne.n 80049a6 - 8004998: 4b31 ldr r3, [pc, #196] @ (8004a60 ) - 800499a: 4934 ldr r1, [pc, #208] @ (8004a6c ) - 800499c: 4832 ldr r0, [pc, #200] @ (8004a68 ) - 800499e: f44f 7210 mov.w r2, #576 @ 0x240 - 80049a2: f005 fef1 bl 800a788 - 80049a6: 7d23 ldrb r3, [r4, #20] - 80049a8: 2b0a cmp r3, #10 - 80049aa: d109 bne.n 80049c0 - 80049ac: 4830 ldr r0, [pc, #192] @ (8004a70 ) - 80049ae: 4621 mov r1, r4 - 80049b0: f7ff ff7a bl 80048a8 - 80049b4: 4620 mov r0, r4 - 80049b6: b004 add sp, #16 - 80049b8: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 80049bc: f7ff be3a b.w 8004634 - 80049c0: f8d4 9050 ldr.w r9, [r4, #80] @ 0x50 - 80049c4: f8d4 a024 ldr.w sl, [r4, #36] @ 0x24 - 80049c8: f8d4 7090 ldr.w r7, [r4, #144] @ 0x90 - 80049cc: f8d4 8010 ldr.w r8, [r4, #16] - 80049d0: 8ae5 ldrh r5, [r4, #22] - 80049d2: 2b00 cmp r3, #0 - 80049d4: d138 bne.n 8004a48 - 80049d6: bb2d cbnz r5, 8004a24 - 80049d8: 2500 movs r5, #0 - 80049da: 462e mov r6, r5 - 80049dc: 6f20 ldr r0, [r4, #112] @ 0x70 - 80049de: b108 cbz r0, 80049e4 - 80049e0: f7ff fec2 bl 8004768 - 80049e4: 6ee0 ldr r0, [r4, #108] @ 0x6c - 80049e6: b108 cbz r0, 80049ec - 80049e8: f7ff febe bl 8004768 - 80049ec: 6f60 ldr r0, [r4, #116] @ 0x74 - 80049ee: b108 cbz r0, 80049f4 - 80049f0: f7ff feba bl 8004768 - 80049f4: b156 cbz r6, 8004a0c - 80049f6: 8b23 ldrh r3, [r4, #24] - 80049f8: e9cd 5301 strd r5, r3, [sp, #4] - 80049fc: 1d23 adds r3, r4, #4 - 80049fe: 9300 str r3, [sp, #0] - 8004a00: 4652 mov r2, sl - 8004a02: 4623 mov r3, r4 - 8004a04: 4649 mov r1, r9 - 8004a06: 4620 mov r0, r4 - 8004a08: f002 fb32 bl 8007070 - 8004a0c: 4620 mov r0, r4 - 8004a0e: f7ff fe11 bl 8004634 - 8004a12: b30f cbz r7, 8004a58 - 8004a14: f06f 010c mvn.w r1, #12 - 8004a18: 4640 mov r0, r8 - 8004a1a: 463b mov r3, r7 - 8004a1c: b004 add sp, #16 - 8004a1e: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 8004a22: 4718 bx r3 - 8004a24: 4a13 ldr r2, [pc, #76] @ (8004a74 ) - 8004a26: 6813 ldr r3, [r2, #0] - 8004a28: 42a3 cmp r3, r4 - 8004a2a: d105 bne.n 8004a38 - 8004a2c: 68e3 ldr r3, [r4, #12] - 8004a2e: 6013 str r3, [r2, #0] - 8004a30: 2300 movs r3, #0 - 8004a32: 60e3 str r3, [r4, #12] - 8004a34: e7d0 b.n 80049d8 - 8004a36: 4613 mov r3, r2 - 8004a38: 2b00 cmp r3, #0 - 8004a3a: d0f9 beq.n 8004a30 - 8004a3c: 68da ldr r2, [r3, #12] - 8004a3e: 42a2 cmp r2, r4 - 8004a40: d1f9 bne.n 8004a36 - 8004a42: 68e2 ldr r2, [r4, #12] - 8004a44: 60da str r2, [r3, #12] - 8004a46: e7f3 b.n 8004a30 - 8004a48: 480b ldr r0, [pc, #44] @ (8004a78 ) - 8004a4a: 4621 mov r1, r4 - 8004a4c: f7ff ff2c bl 80048a8 - 8004a50: 4b0a ldr r3, [pc, #40] @ (8004a7c ) - 8004a52: 2201 movs r2, #1 - 8004a54: 701a strb r2, [r3, #0] - 8004a56: e7c1 b.n 80049dc - 8004a58: b004 add sp, #16 - 8004a5a: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 8004a5e: bf00 nop - 8004a60: 0800becb .word 0x0800becb - 8004a64: 0800c08d .word 0x0800c08d - 8004a68: 0800b767 .word 0x0800b767 - 8004a6c: 0800c0a6 .word 0x0800c0a6 - 8004a70: 20018a90 .word 0x20018a90 - 8004a74: 20018a9c .word 0x20018a9c - 8004a78: 20018a94 .word 0x20018a94 - 8004a7c: 20018a8f .word 0x20018a8f - -08004a80 : - 8004a80: 2101 movs r1, #1 - 8004a82: f7ff bf77 b.w 8004974 - ... - -08004a88 : - 8004a88: b570 push {r4, r5, r6, lr} - 8004a8a: 460c mov r4, r1 - 8004a8c: 4605 mov r5, r0 - 8004a8e: b930 cbnz r0, 8004a9e - 8004a90: 4b09 ldr r3, [pc, #36] @ (8004ab8 ) - 8004a92: 490a ldr r1, [pc, #40] @ (8004abc ) - 8004a94: 480a ldr r0, [pc, #40] @ (8004ac0 ) - 8004a96: f44f 6210 mov.w r2, #2304 @ 0x900 - 8004a9a: f005 fe75 bl 800a788 - 8004a9e: b904 cbnz r4, 8004aa2 - 8004aa0: bd70 pop {r4, r5, r6, pc} - 8004aa2: 6822 ldr r2, [r4, #0] - 8004aa4: 682b ldr r3, [r5, #0] - 8004aa6: 68e6 ldr r6, [r4, #12] - 8004aa8: 429a cmp r2, r3 - 8004aaa: d102 bne.n 8004ab2 - 8004aac: 4620 mov r0, r4 - 8004aae: f7ff ffe7 bl 8004a80 - 8004ab2: 4634 mov r4, r6 - 8004ab4: e7f3 b.n 8004a9e - 8004ab6: bf00 nop - 8004ab8: 0800becb .word 0x0800becb - 8004abc: 0800c0d7 .word 0x0800c0d7 - 8004ac0: 0800b767 .word 0x0800b767 - -08004ac4 : - 8004ac4: b538 push {r3, r4, r5, lr} - 8004ac6: 460d mov r5, r1 - 8004ac8: 4604 mov r4, r0 - 8004aca: b180 cbz r0, 8004aee - 8004acc: 6803 ldr r3, [r0, #0] - 8004ace: b173 cbz r3, 8004aee - 8004ad0: 4b0b ldr r3, [pc, #44] @ (8004b00 ) - 8004ad2: 6819 ldr r1, [r3, #0] - 8004ad4: f7ff ffd8 bl 8004a88 - 8004ad8: 4b0a ldr r3, [pc, #40] @ (8004b04 ) - 8004ada: 4620 mov r0, r4 - 8004adc: 6819 ldr r1, [r3, #0] - 8004ade: f7ff ffd3 bl 8004a88 - 8004ae2: b125 cbz r5, 8004aee - 8004ae4: 682b ldr r3, [r5, #0] - 8004ae6: b113 cbz r3, 8004aee - 8004ae8: 4b07 ldr r3, [pc, #28] @ (8004b08 ) - 8004aea: 681b ldr r3, [r3, #0] - 8004aec: b903 cbnz r3, 8004af0 - 8004aee: bd38 pop {r3, r4, r5, pc} - 8004af0: 6819 ldr r1, [r3, #0] - 8004af2: 6822 ldr r2, [r4, #0] - 8004af4: 4291 cmp r1, r2 - 8004af6: bf04 itt eq - 8004af8: 682a ldreq r2, [r5, #0] - 8004afa: 601a streq r2, [r3, #0] - 8004afc: 68db ldr r3, [r3, #12] - 8004afe: e7f5 b.n 8004aec - 8004b00: 20018a94 .word 0x20018a94 - 8004b04: 20018a9c .word 0x20018a9c - 8004b08: 20018a98 .word 0x20018a98 - -08004b0c : - 8004b0c: 4b0c ldr r3, [pc, #48] @ (8004b40 ) - 8004b0e: 6819 ldr r1, [r3, #0] - 8004b10: 4b0c ldr r3, [pc, #48] @ (8004b44 ) - 8004b12: b430 push {r4, r5} - 8004b14: 2200 movs r2, #0 - 8004b16: 681d ldr r5, [r3, #0] - 8004b18: 4604 mov r4, r0 - 8004b1a: 4610 mov r0, r2 - 8004b1c: b919 cbnz r1, 8004b26 - 8004b1e: b168 cbz r0, 8004b3c - 8004b20: bc30 pop {r4, r5} - 8004b22: f7ff bf27 b.w 8004974 - 8004b26: 7d0b ldrb r3, [r1, #20] - 8004b28: 42a3 cmp r3, r4 - 8004b2a: d105 bne.n 8004b38 - 8004b2c: 6a0b ldr r3, [r1, #32] - 8004b2e: 1aeb subs r3, r5, r3 - 8004b30: 4293 cmp r3, r2 - 8004b32: bf24 itt cs - 8004b34: 461a movcs r2, r3 - 8004b36: 4608 movcs r0, r1 - 8004b38: 68c9 ldr r1, [r1, #12] - 8004b3a: e7ef b.n 8004b1c - 8004b3c: bc30 pop {r4, r5} - 8004b3e: 4770 bx lr - 8004b40: 20018a94 .word 0x20018a94 - 8004b44: 20018aa0 .word 0x20018aa0 - -08004b48 : - 8004b48: b5f8 push {r3, r4, r5, r6, r7, lr} - 8004b4a: 4604 mov r4, r0 - 8004b4c: 2001 movs r0, #1 - 8004b4e: f7ff f82d bl 8003bac - 8004b52: 4603 mov r3, r0 - 8004b54: 2800 cmp r0, #0 - 8004b56: d136 bne.n 8004bc6 - 8004b58: 4e3f ldr r6, [pc, #252] @ (8004c58 ) - 8004b5a: 6830 ldr r0, [r6, #0] - 8004b5c: 2800 cmp r0, #0 - 8004b5e: d157 bne.n 8004c10 - 8004b60: 4b3e ldr r3, [pc, #248] @ (8004c5c ) - 8004b62: 4d3f ldr r5, [pc, #252] @ (8004c60 ) - 8004b64: 681b ldr r3, [r3, #0] - 8004b66: 682f ldr r7, [r5, #0] - 8004b68: 4601 mov r1, r0 - 8004b6a: 2b00 cmp r3, #0 - 8004b6c: d15b bne.n 8004c26 - 8004b6e: b108 cbz r0, 8004b74 - 8004b70: f7ff ff86 bl 8004a80 - 8004b74: 2001 movs r0, #1 - 8004b76: f7ff f819 bl 8003bac - 8004b7a: 4603 mov r3, r0 - 8004b7c: bb18 cbnz r0, 8004bc6 - 8004b7e: 2009 movs r0, #9 - 8004b80: f7ff ffc4 bl 8004b0c - 8004b84: 2001 movs r0, #1 - 8004b86: f7ff f811 bl 8003bac - 8004b8a: 4603 mov r3, r0 - 8004b8c: b9d8 cbnz r0, 8004bc6 - 8004b8e: 2008 movs r0, #8 - 8004b90: f7ff ffbc bl 8004b0c - 8004b94: 2001 movs r0, #1 - 8004b96: f7ff f809 bl 8003bac - 8004b9a: 4603 mov r3, r0 - 8004b9c: b998 cbnz r0, 8004bc6 - 8004b9e: 0622 lsls r2, r4, #24 - 8004ba0: d449 bmi.n 8004c36 - 8004ba2: b15c cbz r4, 8004bbc - 8004ba4: 4621 mov r1, r4 - 8004ba6: 6832 ldr r2, [r6, #0] - 8004ba8: 682e ldr r6, [r5, #0] - 8004baa: 3901 subs r1, #1 - 8004bac: b2c9 uxtb r1, r1 - 8004bae: 2000 movs r0, #0 - 8004bb0: 2a00 cmp r2, #0 - 8004bb2: d142 bne.n 8004c3a - 8004bb4: b113 cbz r3, 8004bbc - 8004bb6: 4618 mov r0, r3 - 8004bb8: f7ff ff62 bl 8004a80 - 8004bbc: 2001 movs r0, #1 - 8004bbe: f7fe fff5 bl 8003bac - 8004bc2: 4603 mov r3, r0 - 8004bc4: b310 cbz r0, 8004c0c - 8004bc6: 229c movs r2, #156 @ 0x9c - 8004bc8: 4618 mov r0, r3 - 8004bca: 2100 movs r1, #0 - 8004bcc: f005 fe41 bl 800a852 - 8004bd0: f44f 6286 mov.w r2, #1072 @ 0x430 - 8004bd4: f8a0 2064 strh.w r2, [r0, #100] @ 0x64 - 8004bd8: 4a22 ldr r2, [pc, #136] @ (8004c64 ) - 8004bda: 6282 str r2, [r0, #40] @ 0x28 - 8004bdc: 22ff movs r2, #255 @ 0xff - 8004bde: 72c2 strb r2, [r0, #11] - 8004be0: 2206 movs r2, #6 - 8004be2: f8a0 2040 strh.w r2, [r0, #64] @ 0x40 - 8004be6: 87c2 strh r2, [r0, #62] @ 0x3e - 8004be8: 4a1f ldr r2, [pc, #124] @ (8004c68 ) - 8004bea: 6302 str r2, [r0, #48] @ 0x30 - 8004bec: 4a1c ldr r2, [pc, #112] @ (8004c60 ) - 8004bee: 7544 strb r4, [r0, #21] - 8004bf0: 6812 ldr r2, [r2, #0] - 8004bf2: 6202 str r2, [r0, #32] - 8004bf4: 4a1d ldr r2, [pc, #116] @ (8004c6c ) - 8004bf6: 7812 ldrb r2, [r2, #0] - 8004bf8: 7782 strb r2, [r0, #30] - 8004bfa: 4a1d ldr r2, [pc, #116] @ (8004c70 ) - 8004bfc: 6482 str r2, [r0, #72] @ 0x48 - 8004bfe: 4a1d ldr r2, [pc, #116] @ (8004c74 ) - 8004c00: f8c0 2084 str.w r2, [r0, #132] @ 0x84 - 8004c04: 4a1c ldr r2, [pc, #112] @ (8004c78 ) - 8004c06: f8c0 2094 str.w r2, [r0, #148] @ 0x94 - 8004c0a: 4603 mov r3, r0 - 8004c0c: 4618 mov r0, r3 - 8004c0e: bdf8 pop {r3, r4, r5, r6, r7, pc} - 8004c10: 8b43 ldrh r3, [r0, #26] - 8004c12: 68c5 ldr r5, [r0, #12] - 8004c14: 0719 lsls r1, r3, #28 - 8004c16: d504 bpl.n 8004c22 - 8004c18: f023 0308 bic.w r3, r3, #8 - 8004c1c: 8343 strh r3, [r0, #26] - 8004c1e: f7ff fccd bl 80045bc - 8004c22: 4628 mov r0, r5 - 8004c24: e79a b.n 8004b5c - 8004c26: 6a1a ldr r2, [r3, #32] - 8004c28: 1aba subs r2, r7, r2 - 8004c2a: 428a cmp r2, r1 - 8004c2c: bf24 itt cs - 8004c2e: 4618 movcs r0, r3 - 8004c30: 4611 movcs r1, r2 - 8004c32: 68db ldr r3, [r3, #12] - 8004c34: e799 b.n 8004b6a - 8004c36: 217f movs r1, #127 @ 0x7f - 8004c38: e7b5 b.n 8004ba6 - 8004c3a: 7d57 ldrb r7, [r2, #21] - 8004c3c: 428f cmp r7, r1 - 8004c3e: d304 bcc.n 8004c4a - 8004c40: d107 bne.n 8004c52 - 8004c42: 6a15 ldr r5, [r2, #32] - 8004c44: 1b75 subs r5, r6, r5 - 8004c46: 4285 cmp r5, r0 - 8004c48: d303 bcc.n 8004c52 - 8004c4a: 6a10 ldr r0, [r2, #32] - 8004c4c: 4639 mov r1, r7 - 8004c4e: 1a30 subs r0, r6, r0 - 8004c50: 4613 mov r3, r2 - 8004c52: 68d2 ldr r2, [r2, #12] - 8004c54: e7ac b.n 8004bb0 - 8004c56: bf00 nop - 8004c58: 20018a94 .word 0x20018a94 - 8004c5c: 20018a90 .word 0x20018a90 - 8004c60: 20018aa0 .word 0x20018aa0 - 8004c64: 08600860 .word 0x08600860 - 8004c68: 0218ffff .word 0x0218ffff - 8004c6c: 20018a8d .word 0x20018a8d - 8004c70: 04300001 .word 0x04300001 - 8004c74: 08004e1d .word 0x08004e1d - 8004c78: 006ddd00 .word 0x006ddd00 - -08004c7c : - 8004c7c: b530 push {r4, r5, lr} - 8004c7e: 460d mov r5, r1 - 8004c80: b085 sub sp, #20 - 8004c82: 4604 mov r4, r0 - 8004c84: b930 cbnz r0, 8004c94 - 8004c86: 4b4b ldr r3, [pc, #300] @ (8004db4 ) - 8004c88: 494b ldr r1, [pc, #300] @ (8004db8 ) - 8004c8a: 484c ldr r0, [pc, #304] @ (8004dbc ) - 8004c8c: f44f 72af mov.w r2, #350 @ 0x15e - 8004c90: f005 fd7a bl 800a788 - 8004c94: 7d23 ldrb r3, [r4, #20] - 8004c96: 2d00 cmp r5, #0 - 8004c98: d03f beq.n 8004d1a - 8004c9a: 2b04 cmp r3, #4 - 8004c9c: d001 beq.n 8004ca2 - 8004c9e: 2b07 cmp r3, #7 - 8004ca0: d13b bne.n 8004d1a - 8004ca2: 6fa2 ldr r2, [r4, #120] @ 0x78 - 8004ca4: b91a cbnz r2, 8004cae - 8004ca6: 8d22 ldrh r2, [r4, #40] @ 0x28 - 8004ca8: f5b2 6f06 cmp.w r2, #2144 @ 0x860 - 8004cac: d035 beq.n 8004d1a - 8004cae: 8b63 ldrh r3, [r4, #26] - 8004cb0: 06db lsls r3, r3, #27 - 8004cb2: d406 bmi.n 8004cc2 - 8004cb4: 4b3f ldr r3, [pc, #252] @ (8004db4 ) - 8004cb6: 4942 ldr r1, [pc, #264] @ (8004dc0 ) - 8004cb8: 4840 ldr r0, [pc, #256] @ (8004dbc ) - 8004cba: f44f 72b2 mov.w r2, #356 @ 0x164 - 8004cbe: f005 fd63 bl 800a788 - 8004cc2: 8b23 ldrh r3, [r4, #24] - 8004cc4: 9302 str r3, [sp, #8] - 8004cc6: 8ae3 ldrh r3, [r4, #22] - 8004cc8: 9301 str r3, [sp, #4] - 8004cca: 1d23 adds r3, r4, #4 - 8004ccc: 9300 str r3, [sp, #0] - 8004cce: 6a62 ldr r2, [r4, #36] @ 0x24 - 8004cd0: 6d21 ldr r1, [r4, #80] @ 0x50 - 8004cd2: 4623 mov r3, r4 - 8004cd4: 4620 mov r0, r4 - 8004cd6: f002 f9cb bl 8007070 - 8004cda: 4620 mov r0, r4 - 8004cdc: f7ff fdb2 bl 8004844 - 8004ce0: 4a38 ldr r2, [pc, #224] @ (8004dc4 ) - 8004ce2: 6813 ldr r3, [r2, #0] - 8004ce4: 42a3 cmp r3, r4 - 8004ce6: d110 bne.n 8004d0a - 8004ce8: 68e3 ldr r3, [r4, #12] - 8004cea: 6013 str r3, [r2, #0] - 8004cec: 2300 movs r3, #0 - 8004cee: 60e3 str r3, [r4, #12] - 8004cf0: 4b35 ldr r3, [pc, #212] @ (8004dc8 ) - 8004cf2: 2201 movs r2, #1 - 8004cf4: 701a strb r2, [r3, #0] - 8004cf6: 4b35 ldr r3, [pc, #212] @ (8004dcc ) - 8004cf8: 681b ldr r3, [r3, #0] - 8004cfa: 42a3 cmp r3, r4 - 8004cfc: d11d bne.n 8004d3a - 8004cfe: f001 fe31 bl 8006964 - 8004d02: 2000 movs r0, #0 - 8004d04: b005 add sp, #20 - 8004d06: bd30 pop {r4, r5, pc} - 8004d08: 4613 mov r3, r2 - 8004d0a: 2b00 cmp r3, #0 - 8004d0c: d0ee beq.n 8004cec - 8004d0e: 68da ldr r2, [r3, #12] - 8004d10: 42a2 cmp r2, r4 - 8004d12: d1f9 bne.n 8004d08 - 8004d14: 68e2 ldr r2, [r4, #12] - 8004d16: 60da str r2, [r3, #12] - 8004d18: e7e8 b.n 8004cec - 8004d1a: 2b01 cmp r3, #1 - 8004d1c: d01a beq.n 8004d54 - 8004d1e: 2b02 cmp r3, #2 - 8004d20: d039 beq.n 8004d96 - 8004d22: 2b00 cmp r3, #0 - 8004d24: d13f bne.n 8004da6 - 8004d26: 8ae3 ldrh r3, [r4, #22] - 8004d28: b13b cbz r3, 8004d3a - 8004d2a: 4a29 ldr r2, [pc, #164] @ (8004dd0 ) - 8004d2c: 6813 ldr r3, [r2, #0] - 8004d2e: 42a3 cmp r3, r4 - 8004d30: d108 bne.n 8004d44 - 8004d32: 68e3 ldr r3, [r4, #12] - 8004d34: 6013 str r3, [r2, #0] - 8004d36: 2300 movs r3, #0 - 8004d38: 60e3 str r3, [r4, #12] - 8004d3a: 4620 mov r0, r4 - 8004d3c: f7ff fc7a bl 8004634 - 8004d40: e7df b.n 8004d02 - 8004d42: 4613 mov r3, r2 - 8004d44: 2b00 cmp r3, #0 - 8004d46: d0f6 beq.n 8004d36 - 8004d48: 68da ldr r2, [r3, #12] - 8004d4a: 42a2 cmp r2, r4 - 8004d4c: d1f9 bne.n 8004d42 - 8004d4e: 68e2 ldr r2, [r4, #12] - 8004d50: 60da str r2, [r3, #12] - 8004d52: e7f0 b.n 8004d36 - 8004d54: 491f ldr r1, [pc, #124] @ (8004dd4 ) - 8004d56: 2000 movs r0, #0 - 8004d58: f851 2f04 ldr.w r2, [r1, #4]! - 8004d5c: 6812 ldr r2, [r2, #0] - 8004d5e: b9a2 cbnz r2, 8004d8a - 8004d60: 3301 adds r3, #1 - 8004d62: 2b04 cmp r3, #4 - 8004d64: d1f8 bne.n 8004d58 - 8004d66: 481c ldr r0, [pc, #112] @ (8004dd8 ) - 8004d68: 4621 mov r1, r4 - 8004d6a: f7ff fd9d bl 80048a8 - 8004d6e: 7d23 ldrb r3, [r4, #20] - 8004d70: 2b01 cmp r3, #1 - 8004d72: d105 bne.n 8004d80 - 8004d74: 4b0f ldr r3, [pc, #60] @ (8004db4 ) - 8004d76: 4919 ldr r1, [pc, #100] @ (8004ddc ) - 8004d78: 4810 ldr r0, [pc, #64] @ (8004dbc ) - 8004d7a: 22df movs r2, #223 @ 0xdf - 8004d7c: f005 fd04 bl 800a788 - 8004d80: 4621 mov r1, r4 - 8004d82: 2002 movs r0, #2 - 8004d84: f7fe ff40 bl 8003c08 - 8004d88: e7bb b.n 8004d02 - 8004d8a: 6fd5 ldr r5, [r2, #124] @ 0x7c - 8004d8c: 42ac cmp r4, r5 - 8004d8e: bf08 it eq - 8004d90: 67d0 streq r0, [r2, #124] @ 0x7c - 8004d92: 68d2 ldr r2, [r2, #12] - 8004d94: e7e3 b.n 8004d5e - 8004d96: 480b ldr r0, [pc, #44] @ (8004dc4 ) - 8004d98: 4621 mov r1, r4 - 8004d9a: f7ff fd85 bl 80048a8 - 8004d9e: 4b0a ldr r3, [pc, #40] @ (8004dc8 ) - 8004da0: 2201 movs r2, #1 - 8004da2: 701a strb r2, [r3, #0] - 8004da4: e7c9 b.n 8004d3a - 8004da6: 4620 mov r0, r4 - 8004da8: b005 add sp, #20 - 8004daa: e8bd 4030 ldmia.w sp!, {r4, r5, lr} - 8004dae: f7ff bc05 b.w 80045bc - 8004db2: bf00 nop - 8004db4: 0800becb .word 0x0800becb - 8004db8: 0800c10b .word 0x0800c10b - 8004dbc: 0800b767 .word 0x0800b767 - 8004dc0: 0800c12b .word 0x0800c12b - 8004dc4: 20018a94 .word 0x20018a94 - 8004dc8: 20018a8f .word 0x20018a8f - 8004dcc: 20018aa4 .word 0x20018aa4 - 8004dd0: 20018a9c .word 0x20018a9c - 8004dd4: 0800c370 .word 0x0800c370 - 8004dd8: 20018a98 .word 0x20018a98 - 8004ddc: 0800c144 .word 0x0800c144 - -08004de0 : - 8004de0: b508 push {r3, lr} - 8004de2: b158 cbz r0, 8004dfc - 8004de4: 7d03 ldrb r3, [r0, #20] - 8004de6: 2b01 cmp r3, #1 - 8004de8: bf1e ittt ne - 8004dea: 8b43 ldrhne r3, [r0, #26] - 8004dec: f043 0310 orrne.w r3, r3, #16 - 8004df0: 8343 strhne r3, [r0, #26] - 8004df2: 2101 movs r1, #1 - 8004df4: e8bd 4008 ldmia.w sp!, {r3, lr} - 8004df8: f7ff bf40 b.w 8004c7c - 8004dfc: 4b04 ldr r3, [pc, #16] @ (8004e10 ) - 8004dfe: 4905 ldr r1, [pc, #20] @ (8004e14 ) - 8004e00: 4805 ldr r0, [pc, #20] @ (8004e18 ) - 8004e02: f44f 72f4 mov.w r2, #488 @ 0x1e8 - 8004e06: f005 fcbf bl 800a788 - 8004e0a: f06f 000f mvn.w r0, #15 - 8004e0e: bd08 pop {r3, pc} - 8004e10: 0800becb .word 0x0800becb - 8004e14: 0800c15d .word 0x0800c15d - 8004e18: 0800b767 .word 0x0800b767 - -08004e1c : - 8004e1c: b510 push {r4, lr} - 8004e1e: 4608 mov r0, r1 - 8004e20: 4614 mov r4, r2 - 8004e22: b949 cbnz r1, 8004e38 - 8004e24: 4b0c ldr r3, [pc, #48] @ (8004e58 ) - 8004e26: 490d ldr r1, [pc, #52] @ (8004e5c ) - 8004e28: 480d ldr r0, [pc, #52] @ (8004e60 ) - 8004e2a: f44f 62d3 mov.w r2, #1688 @ 0x698 - 8004e2e: f005 fcab bl 800a788 - 8004e32: f06f 000f mvn.w r0, #15 - 8004e36: bd10 pop {r4, pc} - 8004e38: b13a cbz r2, 8004e4a - 8004e3a: 8911 ldrh r1, [r2, #8] - 8004e3c: f7ff fc48 bl 80046d0 - 8004e40: 4620 mov r0, r4 - 8004e42: f7ff f945 bl 80040d0 - 8004e46: 2000 movs r0, #0 - 8004e48: e7f5 b.n 8004e36 - 8004e4a: 2b00 cmp r3, #0 - 8004e4c: d1fb bne.n 8004e46 - 8004e4e: e8bd 4010 ldmia.w sp!, {r4, lr} - 8004e52: f7ff bfc5 b.w 8004de0 - 8004e56: bf00 nop - 8004e58: 0800becb .word 0x0800becb - 8004e5c: 0800c174 .word 0x0800c174 - 8004e60: 0800b767 .word 0x0800b767 - -08004e64 : - 8004e64: b5f8 push {r3, r4, r5, r6, r7, lr} - 8004e66: 4604 mov r4, r0 - 8004e68: b950 cbnz r0, 8004e80 - 8004e6a: 4b1d ldr r3, [pc, #116] @ (8004ee0 ) - 8004e6c: 491d ldr r1, [pc, #116] @ (8004ee4 ) - 8004e6e: 481e ldr r0, [pc, #120] @ (8004ee8 ) - 8004e70: f240 6209 movw r2, #1545 @ 0x609 - 8004e74: f005 fc88 bl 800a788 - 8004e78: f06f 050f mvn.w r5, #15 - 8004e7c: 4628 mov r0, r5 - 8004e7e: bdf8 pop {r3, r4, r5, r6, r7, pc} - 8004e80: 6f86 ldr r6, [r0, #120] @ 0x78 - 8004e82: f8d0 5084 ldr.w r5, [r0, #132] @ 0x84 - 8004e86: 7b77 ldrb r7, [r6, #13] - 8004e88: 2300 movs r3, #0 - 8004e8a: 6783 str r3, [r0, #120] @ 0x78 - 8004e8c: b1dd cbz r5, 8004ec6 - 8004e8e: 4601 mov r1, r0 - 8004e90: 4632 mov r2, r6 - 8004e92: 6900 ldr r0, [r0, #16] - 8004e94: 47a8 blx r5 - 8004e96: 4605 mov r5, r0 - 8004e98: b9e0 cbnz r0, 8004ed4 - 8004e9a: 06bb lsls r3, r7, #26 - 8004e9c: d5ee bpl.n 8004e7c - 8004e9e: 8d23 ldrh r3, [r4, #40] @ 0x28 - 8004ea0: f8d4 6084 ldr.w r6, [r4, #132] @ 0x84 - 8004ea4: f5b3 6f06 cmp.w r3, #2144 @ 0x860 - 8004ea8: bf1c itt ne - 8004eaa: 3301 addne r3, #1 - 8004eac: 8523 strhne r3, [r4, #40] @ 0x28 - 8004eae: 2e00 cmp r6, #0 - 8004eb0: d0e4 beq.n 8004e7c - 8004eb2: 2300 movs r3, #0 - 8004eb4: 6920 ldr r0, [r4, #16] - 8004eb6: 461a mov r2, r3 - 8004eb8: 4621 mov r1, r4 - 8004eba: 47b0 blx r6 - 8004ebc: 300d adds r0, #13 - 8004ebe: d1dd bne.n 8004e7c - 8004ec0: f06f 050c mvn.w r5, #12 - 8004ec4: e7da b.n 8004e7c - 8004ec6: 4601 mov r1, r0 - 8004ec8: 462b mov r3, r5 - 8004eca: 4632 mov r2, r6 - 8004ecc: 4628 mov r0, r5 - 8004ece: f7ff ffa5 bl 8004e1c - 8004ed2: e7e0 b.n 8004e96 - 8004ed4: 350d adds r5, #13 - 8004ed6: d0f3 beq.n 8004ec0 - 8004ed8: 67a6 str r6, [r4, #120] @ 0x78 - 8004eda: f06f 0504 mvn.w r5, #4 - 8004ede: e7cd b.n 8004e7c - 8004ee0: 0800becb .word 0x0800becb - 8004ee4: 0800c18f .word 0x0800c18f - 8004ee8: 0800b767 .word 0x0800b767 - -08004eec : - 8004eec: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - 8004ef0: 4d1b ldr r5, [pc, #108] @ (8004f60 ) - 8004ef2: 4f1c ldr r7, [pc, #112] @ (8004f64 ) - 8004ef4: 782b ldrb r3, [r5, #0] - 8004ef6: 4e1c ldr r6, [pc, #112] @ (8004f68 ) - 8004ef8: 3301 adds r3, #1 - 8004efa: 702b strb r3, [r5, #0] - 8004efc: 683c ldr r4, [r7, #0] - 8004efe: f04f 0800 mov.w r8, #0 - 8004f02: b90c cbnz r4, 8004f08 - 8004f04: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} - 8004f08: 782b ldrb r3, [r5, #0] - 8004f0a: 7fa2 ldrb r2, [r4, #30] - 8004f0c: 429a cmp r2, r3 - 8004f0e: d024 beq.n 8004f5a - 8004f10: 77a3 strb r3, [r4, #30] - 8004f12: 8b63 ldrh r3, [r4, #26] - 8004f14: 07d9 lsls r1, r3, #31 - 8004f16: d509 bpl.n 8004f2c - 8004f18: f043 0302 orr.w r3, r3, #2 - 8004f1c: 8363 strh r3, [r4, #26] - 8004f1e: 4620 mov r0, r4 - 8004f20: f002 f91e bl 8007160 - 8004f24: 8b63 ldrh r3, [r4, #26] - 8004f26: f023 0303 bic.w r3, r3, #3 - 8004f2a: 8363 strh r3, [r4, #26] - 8004f2c: 8b63 ldrh r3, [r4, #26] - 8004f2e: 071a lsls r2, r3, #28 - 8004f30: d505 bpl.n 8004f3e - 8004f32: f023 0308 bic.w r3, r3, #8 - 8004f36: 8363 strh r3, [r4, #26] - 8004f38: 4620 mov r0, r4 - 8004f3a: f7ff fb3f bl 80045bc - 8004f3e: 6fa3 ldr r3, [r4, #120] @ 0x78 - 8004f40: f8d4 900c ldr.w r9, [r4, #12] - 8004f44: b13b cbz r3, 8004f56 - 8004f46: 4620 mov r0, r4 - 8004f48: f886 8000 strb.w r8, [r6] - 8004f4c: f7ff ff8a bl 8004e64 - 8004f50: 7833 ldrb r3, [r6, #0] - 8004f52: 2b00 cmp r3, #0 - 8004f54: d1d2 bne.n 8004efc - 8004f56: 464c mov r4, r9 - 8004f58: e7d3 b.n 8004f02 - 8004f5a: 68e4 ldr r4, [r4, #12] - 8004f5c: e7d1 b.n 8004f02 - 8004f5e: bf00 nop - 8004f60: 20018a8d .word 0x20018a8d - 8004f64: 20018a94 .word 0x20018a94 - 8004f68: 20018a8f .word 0x20018a8f - -08004f6c : - 8004f6c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8004f70: 4dab ldr r5, [pc, #684] @ (8005220 ) - 8004f72: 4aac ldr r2, [pc, #688] @ (8005224 ) - 8004f74: 682b ldr r3, [r5, #0] - 8004f76: f8df 82e0 ldr.w r8, [pc, #736] @ 8005258 - 8004f7a: 4eab ldr r6, [pc, #684] @ (8005228 ) - 8004f7c: 3301 adds r3, #1 - 8004f7e: 602b str r3, [r5, #0] - 8004f80: 7813 ldrb r3, [r2, #0] - 8004f82: 3301 adds r3, #1 - 8004f84: b087 sub sp, #28 - 8004f86: 7013 strb r3, [r2, #0] - 8004f88: f8d8 4000 ldr.w r4, [r8] - 8004f8c: f8df 92b0 ldr.w r9, [pc, #688] @ 8005240 - 8004f90: 2700 movs r7, #0 - 8004f92: b96c cbnz r4, 8004fb0 - 8004f94: 4fa5 ldr r7, [pc, #660] @ (800522c ) - 8004f96: f8df 8290 ldr.w r8, [pc, #656] @ 8005228 - 8004f9a: 683e ldr r6, [r7, #0] - 8004f9c: f8df 92bc ldr.w r9, [pc, #700] @ 800525c - 8004fa0: f8df a29c ldr.w sl, [pc, #668] @ 8005240 - 8004fa4: 2e00 cmp r6, #0 - 8004fa6: f040 81be bne.w 8005326 - 8004faa: b007 add sp, #28 - 8004fac: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 8004fb0: 7d23 ldrb r3, [r4, #20] - 8004fb2: b933 cbnz r3, 8004fc2 - 8004fb4: 499e ldr r1, [pc, #632] @ (8005230 ) - 8004fb6: 4633 mov r3, r6 - 8004fb8: f240 42be movw r2, #1214 @ 0x4be - 8004fbc: 4648 mov r0, r9 - 8004fbe: f005 fbe3 bl 800a788 - 8004fc2: 7d23 ldrb r3, [r4, #20] - 8004fc4: 2b01 cmp r3, #1 - 8004fc6: d106 bne.n 8004fd6 - 8004fc8: 499a ldr r1, [pc, #616] @ (8005234 ) - 8004fca: 4633 mov r3, r6 - 8004fcc: f240 42bf movw r2, #1215 @ 0x4bf - 8004fd0: 4648 mov r0, r9 - 8004fd2: f005 fbd9 bl 800a788 - 8004fd6: 7d23 ldrb r3, [r4, #20] - 8004fd8: 2b0a cmp r3, #10 - 8004fda: d106 bne.n 8004fea - 8004fdc: 4996 ldr r1, [pc, #600] @ (8005238 ) - 8004fde: 4633 mov r3, r6 - 8004fe0: f44f 6298 mov.w r2, #1216 @ 0x4c0 - 8004fe4: 4648 mov r0, r9 - 8004fe6: f005 fbcf bl 800a788 - 8004fea: 4b8e ldr r3, [pc, #568] @ (8005224 ) - 8004fec: 7fa2 ldrb r2, [r4, #30] - 8004fee: 781b ldrb r3, [r3, #0] - 8004ff0: 429a cmp r2, r3 - 8004ff2: d104 bne.n 8004ffe - 8004ff4: f8d4 a00c ldr.w sl, [r4, #12] - 8004ff8: 4627 mov r7, r4 - 8004ffa: 4654 mov r4, sl - 8004ffc: e7c9 b.n 8004f92 - 8004ffe: 7d22 ldrb r2, [r4, #20] - 8005000: 77a3 strb r3, [r4, #30] - 8005002: 2a02 cmp r2, #2 - 8005004: f894 3042 ldrb.w r3, [r4, #66] @ 0x42 - 8005008: d174 bne.n 80050f4 - 800500a: 2b05 cmp r3, #5 - 800500c: d974 bls.n 80050f8 - 800500e: f04f 0b01 mov.w fp, #1 - 8005012: 7d23 ldrb r3, [r4, #20] - 8005014: 2b06 cmp r3, #6 - 8005016: d10b bne.n 8005030 - 8005018: 8b62 ldrh r2, [r4, #26] - 800501a: 06d1 lsls r1, r2, #27 - 800501c: d508 bpl.n 8005030 - 800501e: 682a ldr r2, [r5, #0] - 8005020: 6a21 ldr r1, [r4, #32] - 8005022: 1a52 subs r2, r2, r1 - 8005024: 2a28 cmp r2, #40 @ 0x28 - 8005026: bf84 itt hi - 8005028: f10b 0b01 addhi.w fp, fp, #1 - 800502c: fa5f fb8b uxtbhi.w fp, fp - 8005030: 7a62 ldrb r2, [r4, #9] - 8005032: 0712 lsls r2, r2, #28 - 8005034: d505 bpl.n 8005042 - 8005036: 2b04 cmp r3, #4 - 8005038: f000 8112 beq.w 8005260 - 800503c: 2b07 cmp r3, #7 - 800503e: f000 810f beq.w 8005260 - 8005042: f04f 0a00 mov.w sl, #0 - 8005046: 6f63 ldr r3, [r4, #116] @ 0x74 - 8005048: b163 cbz r3, 8005064 - 800504a: 682b ldr r3, [r5, #0] - 800504c: 6a22 ldr r2, [r4, #32] - 800504e: 1a9a subs r2, r3, r2 - 8005050: f9b4 3040 ldrsh.w r3, [r4, #64] @ 0x40 - 8005054: eb03 0343 add.w r3, r3, r3, lsl #1 - 8005058: ebb2 0f43 cmp.w r2, r3, lsl #1 - 800505c: d302 bcc.n 8005064 - 800505e: 4620 mov r0, r4 - 8005060: f7ff fbe6 bl 8004830 - 8005064: 7d23 ldrb r3, [r4, #20] - 8005066: 2b03 cmp r3, #3 - 8005068: f040 8127 bne.w 80052ba - 800506c: 682b ldr r3, [r5, #0] - 800506e: 6a22 ldr r2, [r4, #32] - 8005070: 1a9b subs r3, r3, r2 - 8005072: 2b28 cmp r3, #40 @ 0x28 - 8005074: d803 bhi.n 800507e - 8005076: f1bb 0f00 cmp.w fp, #0 - 800507a: f000 8133 beq.w 80052e4 - 800507e: 4620 mov r0, r4 - 8005080: f8d4 b090 ldr.w fp, [r4, #144] @ 0x90 - 8005084: f7ff fbde bl 8004844 - 8005088: f8d8 3000 ldr.w r3, [r8] - 800508c: 2f00 cmp r7, #0 - 800508e: f000 811c beq.w 80052ca - 8005092: 42a3 cmp r3, r4 - 8005094: d106 bne.n 80050a4 - 8005096: 4b64 ldr r3, [pc, #400] @ (8005228 ) - 8005098: 4968 ldr r1, [pc, #416] @ (800523c ) - 800509a: 4869 ldr r0, [pc, #420] @ (8005240 ) - 800509c: f240 526d movw r2, #1389 @ 0x56d - 80050a0: f005 fb72 bl 800a788 - 80050a4: 68e3 ldr r3, [r4, #12] - 80050a6: 60fb str r3, [r7, #12] - 80050a8: f1ba 0f00 cmp.w sl, #0 - 80050ac: d00b beq.n 80050c6 - 80050ae: 8b23 ldrh r3, [r4, #24] - 80050b0: 9302 str r3, [sp, #8] - 80050b2: 8ae3 ldrh r3, [r4, #22] - 80050b4: 9301 str r3, [sp, #4] - 80050b6: 1d23 adds r3, r4, #4 - 80050b8: 9300 str r3, [sp, #0] - 80050ba: 6a62 ldr r2, [r4, #36] @ 0x24 - 80050bc: 6d21 ldr r1, [r4, #80] @ 0x50 - 80050be: 4623 mov r3, r4 - 80050c0: 4620 mov r0, r4 - 80050c2: f001 ffd5 bl 8007070 - 80050c6: 6923 ldr r3, [r4, #16] - 80050c8: f8d4 a00c ldr.w sl, [r4, #12] - 80050cc: 9305 str r3, [sp, #20] - 80050ce: 4620 mov r0, r4 - 80050d0: 4c5c ldr r4, [pc, #368] @ (8005244 ) - 80050d2: f7ff faaf bl 8004634 - 80050d6: 2300 movs r3, #0 - 80050d8: 7023 strb r3, [r4, #0] - 80050da: f1bb 0f00 cmp.w fp, #0 - 80050de: d007 beq.n 80050f0 - 80050e0: 9805 ldr r0, [sp, #20] - 80050e2: f06f 010c mvn.w r1, #12 - 80050e6: 47d8 blx fp - 80050e8: 7823 ldrb r3, [r4, #0] - 80050ea: 2b00 cmp r3, #0 - 80050ec: f47f af4c bne.w 8004f88 - 80050f0: 463c mov r4, r7 - 80050f2: e781 b.n 8004ff8 - 80050f4: 2b0b cmp r3, #11 - 80050f6: e789 b.n 800500c - 80050f8: f894 3099 ldrb.w r3, [r4, #153] @ 0x99 - 80050fc: 2b00 cmp r3, #0 - 80050fe: d045 beq.n 800518c - 8005100: 6f23 ldr r3, [r4, #112] @ 0x70 - 8005102: b133 cbz r3, 8005112 - 8005104: 4950 ldr r1, [pc, #320] @ (8005248 ) - 8005106: 4633 mov r3, r6 - 8005108: f240 42d4 movw r2, #1236 @ 0x4d4 - 800510c: 4648 mov r0, r9 - 800510e: f005 fb3b bl 800a788 - 8005112: 6ee3 ldr r3, [r4, #108] @ 0x6c - 8005114: b933 cbnz r3, 8005124 - 8005116: 4b44 ldr r3, [pc, #272] @ (8005228 ) - 8005118: 494c ldr r1, [pc, #304] @ (800524c ) - 800511a: 4849 ldr r0, [pc, #292] @ (8005240 ) - 800511c: f240 42d5 movw r2, #1237 @ 0x4d5 - 8005120: f005 fb32 bl 800a788 - 8005124: f894 309a ldrb.w r3, [r4, #154] @ 0x9a - 8005128: 2b0b cmp r3, #11 - 800512a: f63f af70 bhi.w 800500e - 800512e: f894 2099 ldrb.w r2, [r4, #153] @ 0x99 - 8005132: 4b47 ldr r3, [pc, #284] @ (8005250 ) - 8005134: 4413 add r3, r2 - 8005136: f813 2c01 ldrb.w r2, [r3, #-1] - 800513a: f894 3098 ldrb.w r3, [r4, #152] @ 0x98 - 800513e: 4293 cmp r3, r2 - 8005140: d30b bcc.n 800515a - 8005142: f8b4 1060 ldrh.w r1, [r4, #96] @ 0x60 - 8005146: b189 cbz r1, 800516c - 8005148: 4620 mov r0, r4 - 800514a: f001 fd47 bl 8006bdc - 800514e: b990 cbnz r0, 8005176 - 8005150: 4620 mov r0, r4 - 8005152: f002 f805 bl 8007160 - 8005156: b130 cbz r0, 8005166 - 8005158: e00d b.n 8005176 - 800515a: 3301 adds r3, #1 - 800515c: b2db uxtb r3, r3 - 800515e: 4293 cmp r3, r2 - 8005160: f884 3098 strb.w r3, [r4, #152] @ 0x98 - 8005164: d2ed bcs.n 8005142 - 8005166: f04f 0b00 mov.w fp, #0 - 800516a: e752 b.n 8005012 - 800516c: 4620 mov r0, r4 - 800516e: f002 f9ff bl 8007570 - 8005172: 2800 cmp r0, #0 - 8005174: d1f7 bne.n 8005166 - 8005176: 2300 movs r3, #0 - 8005178: f884 3098 strb.w r3, [r4, #152] @ 0x98 - 800517c: f894 3099 ldrb.w r3, [r4, #153] @ 0x99 - 8005180: 2b06 cmp r3, #6 - 8005182: d8f0 bhi.n 8005166 - 8005184: 3301 adds r3, #1 - 8005186: f884 3099 strb.w r3, [r4, #153] @ 0x99 - 800518a: e7ec b.n 8005166 - 800518c: 8e23 ldrh r3, [r4, #48] @ 0x30 - 800518e: f647 72fe movw r2, #32766 @ 0x7ffe - 8005192: 4293 cmp r3, r2 - 8005194: bf9c itt ls - 8005196: 3301 addls r3, #1 - 8005198: 8623 strhls r3, [r4, #48] @ 0x30 - 800519a: f9b4 2030 ldrsh.w r2, [r4, #48] @ 0x30 - 800519e: f9b4 3040 ldrsh.w r3, [r4, #64] @ 0x40 - 80051a2: 429a cmp r2, r3 - 80051a4: dbdf blt.n 8005166 - 80051a6: 4620 mov r0, r4 - 80051a8: f001 fea8 bl 8006efc - 80051ac: b128 cbz r0, 80051ba - 80051ae: 6f23 ldr r3, [r4, #112] @ 0x70 - 80051b0: 2b00 cmp r3, #0 - 80051b2: d1d8 bne.n 8005166 - 80051b4: 6ee3 ldr r3, [r4, #108] @ 0x6c - 80051b6: 2b00 cmp r3, #0 - 80051b8: d0d5 beq.n 8005166 - 80051ba: 7d23 ldrb r3, [r4, #20] - 80051bc: 2b02 cmp r3, #2 - 80051be: d014 beq.n 80051ea - 80051c0: f9b4 203c ldrsh.w r2, [r4, #60] @ 0x3c - 80051c4: f9b4 303e ldrsh.w r3, [r4, #62] @ 0x3e - 80051c8: 4922 ldr r1, [pc, #136] @ (8005254 ) - 80051ca: eb03 03e2 add.w r3, r3, r2, asr #3 - 80051ce: f894 2042 ldrb.w r2, [r4, #66] @ 0x42 - 80051d2: 2a0c cmp r2, #12 - 80051d4: bf28 it cs - 80051d6: 220c movcs r2, #12 - 80051d8: 5c8a ldrb r2, [r1, r2] - 80051da: 4093 lsls r3, r2 - 80051dc: f647 72ff movw r2, #32767 @ 0x7fff - 80051e0: 4293 cmp r3, r2 - 80051e2: bfa8 it ge - 80051e4: 4613 movge r3, r2 - 80051e6: f8a4 3040 strh.w r3, [r4, #64] @ 0x40 - 80051ea: f8b4 0048 ldrh.w r0, [r4, #72] @ 0x48 - 80051ee: f8b4 3060 ldrh.w r3, [r4, #96] @ 0x60 - 80051f2: 8e61 ldrh r1, [r4, #50] @ 0x32 - 80051f4: f8a4 1048 strh.w r1, [r4, #72] @ 0x48 - 80051f8: 4283 cmp r3, r0 - 80051fa: bf28 it cs - 80051fc: 4603 movcs r3, r0 - 80051fe: 0048 lsls r0, r1, #1 - 8005200: 085b lsrs r3, r3, #1 - 8005202: b280 uxth r0, r0 - 8005204: 4283 cmp r3, r0 - 8005206: f04f 0200 mov.w r2, #0 - 800520a: bf38 it cc - 800520c: 4603 movcc r3, r0 - 800520e: 8622 strh r2, [r4, #48] @ 0x30 - 8005210: f8a4 304a strh.w r3, [r4, #74] @ 0x4a - 8005214: f8a4 206a strh.w r2, [r4, #106] @ 0x6a - 8005218: 4620 mov r0, r4 - 800521a: f002 f94b bl 80074b4 - 800521e: e7a2 b.n 8005166 - 8005220: 20018aa0 .word 0x20018aa0 - 8005224: 20018a8d .word 0x20018a8d - 8005228: 0800becb .word 0x0800becb - 800522c: 20018a90 .word 0x20018a90 - 8005230: 0800c1b5 .word 0x0800c1b5 - 8005234: 0800c1df .word 0x0800c1df - 8005238: 0800c209 .word 0x0800c209 - 800523c: 0800c29d .word 0x0800c29d - 8005240: 0800b767 .word 0x0800b767 - 8005244: 20018a8f .word 0x20018a8f - 8005248: 0800c236 .word 0x0800c236 - 800524c: 0800c268 .word 0x0800c268 - 8005250: 0800c380 .word 0x0800c380 - 8005254: 0800c387 .word 0x0800c387 - 8005258: 20018a94 .word 0x20018a94 - 800525c: 0800c2f2 .word 0x0800c2f2 - 8005260: 6a23 ldr r3, [r4, #32] - 8005262: 6829 ldr r1, [r5, #0] - 8005264: 1ac9 subs r1, r1, r3 - 8005266: f8d4 3094 ldr.w r3, [r4, #148] @ 0x94 - 800526a: f503 2224 add.w r2, r3, #671744 @ 0xa4000 - 800526e: f602 42b8 addw r2, r2, #3256 @ 0xcb8 - 8005272: f44f 70fa mov.w r0, #500 @ 0x1f4 - 8005276: fbb2 f2f0 udiv r2, r2, r0 - 800527a: 4291 cmp r1, r2 - 800527c: d906 bls.n 800528c - 800527e: f10b 0b01 add.w fp, fp, #1 - 8005282: fa5f fb8b uxtb.w fp, fp - 8005286: f04f 0a01 mov.w sl, #1 - 800528a: e6dc b.n 8005046 - 800528c: f894 209b ldrb.w r2, [r4, #155] @ 0x9b - 8005290: f8df c118 ldr.w ip, [pc, #280] @ 80053ac - 8005294: fb0c 3302 mla r3, ip, r2, r3 - 8005298: fbb3 f3f0 udiv r3, r3, r0 - 800529c: 4299 cmp r1, r3 - 800529e: f67f aed0 bls.w 8005042 - 80052a2: 4620 mov r0, r4 - 80052a4: f002 f93c bl 8007520 - 80052a8: 2800 cmp r0, #0 - 80052aa: f47f aeca bne.w 8005042 - 80052ae: f894 309b ldrb.w r3, [r4, #155] @ 0x9b - 80052b2: 3301 adds r3, #1 - 80052b4: f884 309b strb.w r3, [r4, #155] @ 0x9b - 80052b8: e6c3 b.n 8005042 - 80052ba: 2b09 cmp r3, #9 - 80052bc: f47f aedb bne.w 8005076 - 80052c0: 682b ldr r3, [r5, #0] - 80052c2: 6a22 ldr r2, [r4, #32] - 80052c4: 1a9b subs r3, r3, r2 - 80052c6: 2bf0 cmp r3, #240 @ 0xf0 - 80052c8: e6d4 b.n 8005074 - 80052ca: 42a3 cmp r3, r4 - 80052cc: d006 beq.n 80052dc - 80052ce: 4931 ldr r1, [pc, #196] @ (8005394 ) - 80052d0: 4831 ldr r0, [pc, #196] @ (8005398 ) - 80052d2: 4633 mov r3, r6 - 80052d4: f240 5271 movw r2, #1393 @ 0x571 - 80052d8: f005 fa56 bl 800a788 - 80052dc: 68e3 ldr r3, [r4, #12] - 80052de: f8c8 3000 str.w r3, [r8] - 80052e2: e6e1 b.n 80050a8 - 80052e4: 7f23 ldrb r3, [r4, #28] - 80052e6: 7f62 ldrb r2, [r4, #29] - 80052e8: f8d4 a00c ldr.w sl, [r4, #12] - 80052ec: 3301 adds r3, #1 - 80052ee: b2db uxtb r3, r3 - 80052f0: 429a cmp r2, r3 - 80052f2: 7723 strb r3, [r4, #28] - 80052f4: f63f ae80 bhi.w 8004ff8 - 80052f8: 4f28 ldr r7, [pc, #160] @ (800539c ) - 80052fa: f8d4 308c ldr.w r3, [r4, #140] @ 0x8c - 80052fe: f884 b01c strb.w fp, [r4, #28] - 8005302: f887 b000 strb.w fp, [r7] - 8005306: b91b cbnz r3, 8005310 - 8005308: 4620 mov r0, r4 - 800530a: f001 ff29 bl 8007160 - 800530e: e673 b.n 8004ff8 - 8005310: 6920 ldr r0, [r4, #16] - 8005312: 4621 mov r1, r4 - 8005314: 4798 blx r3 - 8005316: 783b ldrb r3, [r7, #0] - 8005318: 2b00 cmp r3, #0 - 800531a: f47f ae35 bne.w 8004f88 - 800531e: 2800 cmp r0, #0 - 8005320: f47f ae6a bne.w 8004ff8 - 8005324: e7f0 b.n 8005308 - 8005326: 7d33 ldrb r3, [r6, #20] - 8005328: 2b0a cmp r3, #10 - 800532a: d006 beq.n 800533a - 800532c: 4643 mov r3, r8 - 800532e: f240 52a1 movw r2, #1441 @ 0x5a1 - 8005332: 4649 mov r1, r9 - 8005334: 4650 mov r0, sl - 8005336: f005 fa27 bl 800a788 - 800533a: 682b ldr r3, [r5, #0] - 800533c: 6a32 ldr r2, [r6, #32] - 800533e: 1a9b subs r3, r3, r2 - 8005340: 2bf0 cmp r3, #240 @ 0xf0 - 8005342: d910 bls.n 8005366 - 8005344: 4630 mov r0, r6 - 8005346: f7ff fa7d bl 8004844 - 800534a: b97c cbnz r4, 800536c - 800534c: 683b ldr r3, [r7, #0] - 800534e: 42b3 cmp r3, r6 - 8005350: d006 beq.n 8005360 - 8005352: 4b13 ldr r3, [pc, #76] @ (80053a0 ) - 8005354: 4913 ldr r1, [pc, #76] @ (80053a4 ) - 8005356: 4810 ldr r0, [pc, #64] @ (8005398 ) - 8005358: f240 52b3 movw r2, #1459 @ 0x5b3 - 800535c: f005 fa14 bl 800a788 - 8005360: 68f3 ldr r3, [r6, #12] - 8005362: 603b str r3, [r7, #0] - 8005364: e00e b.n 8005384 - 8005366: 4634 mov r4, r6 - 8005368: 68f6 ldr r6, [r6, #12] - 800536a: e61b b.n 8004fa4 - 800536c: 683b ldr r3, [r7, #0] - 800536e: 42b3 cmp r3, r6 - 8005370: d106 bne.n 8005380 - 8005372: 4b0b ldr r3, [pc, #44] @ (80053a0 ) - 8005374: 490c ldr r1, [pc, #48] @ (80053a8 ) - 8005376: 4808 ldr r0, [pc, #32] @ (8005398 ) - 8005378: f240 52af movw r2, #1455 @ 0x5af - 800537c: f005 fa04 bl 800a788 - 8005380: 68f3 ldr r3, [r6, #12] - 8005382: 60e3 str r3, [r4, #12] - 8005384: f8d6 b00c ldr.w fp, [r6, #12] - 8005388: 4630 mov r0, r6 - 800538a: f7ff f953 bl 8004634 - 800538e: 465e mov r6, fp - 8005390: e608 b.n 8004fa4 - 8005392: bf00 nop - 8005394: 0800c2c8 .word 0x0800c2c8 - 8005398: 0800b767 .word 0x0800b767 - 800539c: 20018a8f .word 0x20018a8f - 80053a0: 0800becb .word 0x0800becb - 80053a4: 0800c348 .word 0x0800c348 - 80053a8: 0800c321 .word 0x0800c321 - 80053ac: 000124f8 .word 0x000124f8 - -080053b0 : - 80053b0: b508 push {r3, lr} - 80053b2: f7ff fd9b bl 8004eec - 80053b6: 4a06 ldr r2, [pc, #24] @ (80053d0 ) - 80053b8: 7813 ldrb r3, [r2, #0] - 80053ba: 3301 adds r3, #1 - 80053bc: b2db uxtb r3, r3 - 80053be: 7013 strb r3, [r2, #0] - 80053c0: 07db lsls r3, r3, #31 - 80053c2: d503 bpl.n 80053cc - 80053c4: e8bd 4008 ldmia.w sp!, {r3, lr} - 80053c8: f7ff bdd0 b.w 8004f6c - 80053cc: bd08 pop {r3, pc} - 80053ce: bf00 nop - 80053d0: 20018a8e .word 0x20018a8e - -080053d4 : - 80053d4: 4a09 ldr r2, [pc, #36] @ (80053fc ) - 80053d6: 8813 ldrh r3, [r2, #0] - 80053d8: 1c59 adds r1, r3, #1 - 80053da: 8011 strh r1, [r2, #0] - 80053dc: 4a08 ldr r2, [pc, #32] @ (8005400 ) - 80053de: 6812 ldr r2, [r2, #0] - 80053e0: b11a cbz r2, 80053ea - 80053e2: 4908 ldr r1, [pc, #32] @ (8005404 ) - 80053e4: 8809 ldrh r1, [r1, #0] - 80053e6: 428b cmp r3, r1 - 80053e8: d204 bcs.n 80053f4 - 80053ea: 4a07 ldr r2, [pc, #28] @ (8005408 ) - 80053ec: 6812 ldr r2, [r2, #0] - 80053ee: 4413 add r3, r2 - 80053f0: 7d18 ldrb r0, [r3, #20] - 80053f2: 4770 bx lr - 80053f4: 1a5b subs r3, r3, r1 - 80053f6: b2db uxtb r3, r3 - 80053f8: 5cd0 ldrb r0, [r2, r3] - 80053fa: 4770 bx lr - 80053fc: 20018abc .word 0x20018abc - 8005400: 20018ac0 .word 0x20018ac0 - 8005404: 20018ac4 .word 0x20018ac4 - 8005408: 20018ac8 .word 0x20018ac8 - -0800540c : - 800540c: b5f8 push {r3, r4, r5, r6, r7, lr} - 800540e: 460d mov r5, r1 - 8005410: 4604 mov r4, r0 - 8005412: b930 cbnz r0, 8005422 - 8005414: 4b1d ldr r3, [pc, #116] @ (800548c ) - 8005416: 491e ldr r1, [pc, #120] @ (8005490 ) - 8005418: 481e ldr r0, [pc, #120] @ (8005494 ) - 800541a: f240 421f movw r2, #1055 @ 0x41f - 800541e: f005 f9b3 bl 800a788 - 8005422: 68e3 ldr r3, [r4, #12] - 8005424: 8998 ldrh r0, [r3, #12] - 8005426: f7fe f936 bl 8003696 - 800542a: 07c2 lsls r2, r0, #31 - 800542c: d413 bmi.n 8005456 - 800542e: 4e1a ldr r6, [pc, #104] @ (8005498 ) - 8005430: 68ef ldr r7, [r5, #12] - 8005432: 8923 ldrh r3, [r4, #8] - 8005434: 6830 ldr r0, [r6, #0] - 8005436: 6879 ldr r1, [r7, #4] - 8005438: 892a ldrh r2, [r5, #8] - 800543a: 4403 add r3, r0 - 800543c: 1a5b subs r3, r3, r1 - 800543e: 1a9a subs r2, r3, r2 - 8005440: 2a00 cmp r2, #0 - 8005442: da0e bge.n 8005462 - 8005444: 2b00 cmp r3, #0 - 8005446: dd0a ble.n 800545e - 8005448: 1a09 subs r1, r1, r0 - 800544a: b289 uxth r1, r1 - 800544c: 6860 ldr r0, [r4, #4] - 800544e: 8121 strh r1, [r4, #8] - 8005450: f7fe ff1c bl 800428c - 8005454: e003 b.n 800545e - 8005456: 4628 mov r0, r5 - 8005458: f7ff f986 bl 8004768 - 800545c: 2500 movs r5, #0 - 800545e: 6025 str r5, [r4, #0] - 8005460: bdf8 pop {r3, r4, r5, r6, r7, pc} - 8005462: 89b8 ldrh r0, [r7, #12] - 8005464: f7fe f917 bl 8003696 - 8005468: 07c3 lsls r3, r0, #31 - 800546a: d507 bpl.n 800547c - 800546c: 68e3 ldr r3, [r4, #12] - 800546e: 2001 movs r0, #1 - 8005470: 899f ldrh r7, [r3, #12] - 8005472: f7fe f910 bl 8003696 - 8005476: 68e3 ldr r3, [r4, #12] - 8005478: 4307 orrs r7, r0 - 800547a: 819f strh r7, [r3, #12] - 800547c: 682f ldr r7, [r5, #0] - 800547e: 4628 mov r0, r5 - 8005480: f7ff f964 bl 800474c - 8005484: 2f00 cmp r7, #0 - 8005486: d0e9 beq.n 800545c - 8005488: 463d mov r5, r7 - 800548a: e7d1 b.n 8005430 - 800548c: 0800c394 .word 0x0800c394 - 8005490: 0800c3c6 .word 0x0800c3c6 - 8005494: 0800b767 .word 0x0800b767 - 8005498: 20018ab8 .word 0x20018ab8 - -0800549c : - 800549c: b5f8 push {r3, r4, r5, r6, r7, lr} - 800549e: 4605 mov r5, r0 - 80054a0: b930 cbnz r0, 80054b0 - 80054a2: 4b1c ldr r3, [pc, #112] @ (8005514 ) - 80054a4: 491c ldr r1, [pc, #112] @ (8005518 ) - 80054a6: 481d ldr r0, [pc, #116] @ (800551c ) - 80054a8: f240 727d movw r2, #1917 @ 0x77d - 80054ac: f005 f96c bl 800a788 - 80054b0: 4b1b ldr r3, [pc, #108] @ (8005520 ) - 80054b2: 881e ldrh r6, [r3, #0] - 80054b4: b32e cbz r6, 8005502 - 80054b6: 4c1b ldr r4, [pc, #108] @ (8005524 ) - 80054b8: 2300 movs r3, #0 - 80054ba: 8023 strh r3, [r4, #0] - 80054bc: e017 b.n 80054ee - 80054be: f7ff ff89 bl 80053d4 - 80054c2: 2804 cmp r0, #4 - 80054c4: d11d bne.n 8005502 - 80054c6: 8823 ldrh r3, [r4, #0] - 80054c8: 3301 adds r3, #1 - 80054ca: 42b3 cmp r3, r6 - 80054cc: da19 bge.n 8005502 - 80054ce: f7ff ff81 bl 80053d4 - 80054d2: 0207 lsls r7, r0, #8 - 80054d4: f7ff ff7e bl 80053d4 - 80054d8: b2bf uxth r7, r7 - 80054da: ea40 0307 orr.w r3, r0, r7 - 80054de: b29b uxth r3, r3 - 80054e0: 1e5a subs r2, r3, #1 - 80054e2: f5b2 7f06 cmp.w r2, #536 @ 0x218 - 80054e6: bf28 it cs - 80054e8: f44f 7306 movcs.w r3, #536 @ 0x218 - 80054ec: 866b strh r3, [r5, #50] @ 0x32 - 80054ee: 8823 ldrh r3, [r4, #0] - 80054f0: 42b3 cmp r3, r6 - 80054f2: d206 bcs.n 8005502 - 80054f4: f7ff ff6e bl 80053d4 - 80054f8: 2801 cmp r0, #1 - 80054fa: d0f8 beq.n 80054ee - 80054fc: 2802 cmp r0, #2 - 80054fe: d0de beq.n 80054be - 8005500: b900 cbnz r0, 8005504 - 8005502: bdf8 pop {r3, r4, r5, r6, r7, pc} - 8005504: f7ff ff66 bl 80053d4 - 8005508: 2801 cmp r0, #1 - 800550a: d9fa bls.n 8005502 - 800550c: 8823 ldrh r3, [r4, #0] - 800550e: 3b02 subs r3, #2 - 8005510: 4403 add r3, r0 - 8005512: e7d2 b.n 80054ba - 8005514: 0800c394 .word 0x0800c394 - 8005518: 0800c3eb .word 0x0800c3eb - 800551c: 0800b767 .word 0x0800b767 - 8005520: 20018ac6 .word 0x20018ac6 - 8005524: 20018abc .word 0x20018abc - -08005528 : - 8005528: b510 push {r4, lr} - 800552a: 4b0c ldr r3, [pc, #48] @ (800555c ) - 800552c: 781b ldrb r3, [r3, #0] - 800552e: 4604 mov r4, r0 - 8005530: f013 0010 ands.w r0, r3, #16 - 8005534: d011 beq.n 800555a - 8005536: 8b63 ldrh r3, [r4, #26] - 8005538: 06db lsls r3, r3, #27 - 800553a: d406 bmi.n 800554a - 800553c: f8d4 3090 ldr.w r3, [r4, #144] @ 0x90 - 8005540: b11b cbz r3, 800554a - 8005542: 6920 ldr r0, [r4, #16] - 8005544: f06f 010e mvn.w r1, #14 - 8005548: 4798 blx r3 - 800554a: 4805 ldr r0, [pc, #20] @ (8005560 ) - 800554c: 4621 mov r1, r4 - 800554e: f7ff f9ab bl 80048a8 - 8005552: 4620 mov r0, r4 - 8005554: f7ff f86e bl 8004634 - 8005558: 2001 movs r0, #1 - 800555a: bd10 pop {r4, pc} - 800555c: 20018aac .word 0x20018aac - 8005560: 20018a94 .word 0x20018a94 - -08005564 : - 8005564: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8005568: f8df a0b0 ldr.w sl, [pc, #176] @ 800561c - 800556c: f8df 90b0 ldr.w r9, [pc, #176] @ 8005620 - 8005570: 4607 mov r7, r0 - 8005572: 460c mov r4, r1 - 8005574: 4690 mov r8, r2 - 8005576: 2c00 cmp r4, #0 - 8005578: d044 beq.n 8005604 - 800557a: 68e3 ldr r3, [r4, #12] - 800557c: 6858 ldr r0, [r3, #4] - 800557e: f7fe f88d bl 800369c - 8005582: 68e3 ldr r3, [r4, #12] - 8005584: 8925 ldrh r5, [r4, #8] - 8005586: 4683 mov fp, r0 - 8005588: 8998 ldrh r0, [r3, #12] - 800558a: f7fe f884 bl 8003696 - 800558e: f8da 3000 ldr.w r3, [sl] - 8005592: f010 0003 ands.w r0, r0, #3 - 8005596: eba5 0503 sub.w r5, r5, r3 - 800559a: bf18 it ne - 800559c: 2001 movne r0, #1 - 800559e: 445d add r5, fp - 80055a0: 4405 add r5, r0 - 80055a2: 2d00 cmp r5, #0 - 80055a4: 4626 mov r6, r4 - 80055a6: dc2e bgt.n 8005606 - 80055a8: 6870 ldr r0, [r6, #4] - 80055aa: 6824 ldr r4, [r4, #0] - 80055ac: f7fe fec6 bl 800433c - 80055b0: f8b7 3066 ldrh.w r3, [r7, #102] @ 0x66 - 80055b4: 4283 cmp r3, r0 - 80055b6: 4605 mov r5, r0 - 80055b8: d206 bcs.n 80055c8 - 80055ba: 4b14 ldr r3, [pc, #80] @ (800560c ) - 80055bc: 4914 ldr r1, [pc, #80] @ (8005610 ) - 80055be: 4815 ldr r0, [pc, #84] @ (8005614 ) - 80055c0: f240 4257 movw r2, #1111 @ 0x457 - 80055c4: f005 f8e0 bl 800a788 - 80055c8: f8b7 3066 ldrh.w r3, [r7, #102] @ 0x66 - 80055cc: f8b9 2000 ldrh.w r2, [r9] - 80055d0: 1b5b subs r3, r3, r5 - 80055d2: f8a7 3066 strh.w r3, [r7, #102] @ 0x66 - 80055d6: 8933 ldrh r3, [r6, #8] - 80055d8: 4630 mov r0, r6 - 80055da: 4413 add r3, r2 - 80055dc: f8a9 3000 strh.w r3, [r9] - 80055e0: f7ff f8b4 bl 800474c - 80055e4: f8b7 3066 ldrh.w r3, [r7, #102] @ 0x66 - 80055e8: 2b00 cmp r3, #0 - 80055ea: d0c4 beq.n 8005576 - 80055ec: 2c00 cmp r4, #0 - 80055ee: d1c4 bne.n 800557a - 80055f0: f1b8 0f00 cmp.w r8, #0 - 80055f4: d106 bne.n 8005604 - 80055f6: 4b05 ldr r3, [pc, #20] @ (800560c ) - 80055f8: 4907 ldr r1, [pc, #28] @ (8005618 ) - 80055fa: 4806 ldr r0, [pc, #24] @ (8005614 ) - 80055fc: f240 4261 movw r2, #1121 @ 0x461 - 8005600: f005 f8c2 bl 800a788 - 8005604: 2600 movs r6, #0 - 8005606: 4630 mov r0, r6 - 8005608: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} - 800560c: 0800c394 .word 0x0800c394 - 8005610: 0800c405 .word 0x0800c405 - 8005614: 0800b767 .word 0x0800b767 - 8005618: 0800c42d .word 0x0800c42d - 800561c: 20018ab4 .word 0x20018ab4 - 8005620: 20018ab0 .word 0x20018ab0 - -08005624 : - 8005624: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8005628: 7d03 ldrb r3, [r0, #20] - 800562a: 2b03 cmp r3, #3 - 800562c: 4604 mov r4, r0 - 800562e: d806 bhi.n 800563e - 8005630: 4b35 ldr r3, [pc, #212] @ (8005708 ) - 8005632: 4936 ldr r1, [pc, #216] @ (800570c ) - 8005634: 4836 ldr r0, [pc, #216] @ (8005710 ) - 8005636: f240 427c movw r2, #1148 @ 0x47c - 800563a: f005 f8a5 bl 800a788 - 800563e: 4a35 ldr r2, [pc, #212] @ (8005714 ) - 8005640: 4e35 ldr r6, [pc, #212] @ (8005718 ) - 8005642: 7812 ldrb r2, [r2, #0] - 8005644: 6833 ldr r3, [r6, #0] - 8005646: 4f35 ldr r7, [pc, #212] @ (800571c ) - 8005648: f012 0f10 tst.w r2, #16 - 800564c: f000 8096 beq.w 800577c - 8005650: e9d4 0c15 ldrd r0, ip, [r4, #84] @ 0x54 - 8005654: f8df 90cc ldr.w r9, [pc, #204] @ 8005724 - 8005658: f8b4 1060 ldrh.w r1, [r4, #96] @ 0x60 - 800565c: f8d9 2000 ldr.w r2, [r9] - 8005660: eba0 0e03 sub.w lr, r0, r3 - 8005664: f1be 0f00 cmp.w lr, #0 - 8005668: db0c blt.n 8005684 - 800566a: 4298 cmp r0, r3 - 800566c: d103 bne.n 8005676 - 800566e: ebac 0002 sub.w r0, ip, r2 - 8005672: 2800 cmp r0, #0 - 8005674: db06 blt.n 8005684 - 8005676: 4594 cmp ip, r2 - 8005678: d113 bne.n 80056a2 - 800567a: 4829 ldr r0, [pc, #164] @ (8005720 ) - 800567c: 6800 ldr r0, [r0, #0] - 800567e: 89c0 ldrh r0, [r0, #14] - 8005680: 4288 cmp r0, r1 - 8005682: d90e bls.n 80056a2 - 8005684: 4826 ldr r0, [pc, #152] @ (8005720 ) - 8005686: f8b4 8062 ldrh.w r8, [r4, #98] @ 0x62 - 800568a: 6800 ldr r0, [r0, #0] - 800568c: 89c0 ldrh r0, [r0, #14] - 800568e: f8a4 0060 strh.w r0, [r4, #96] @ 0x60 - 8005692: fa1f fe80 uxth.w lr, r0 - 8005696: e9c4 3215 strd r3, r2, [r4, #84] @ 0x54 - 800569a: 45f0 cmp r8, lr - 800569c: bf38 it cc - 800569e: f8a4 0062 strhcc.w r0, [r4, #98] @ 0x62 - 80056a2: 6c60 ldr r0, [r4, #68] @ 0x44 - 80056a4: 1a13 subs r3, r2, r0 - 80056a6: 2b00 cmp r3, #0 - 80056a8: f300 8176 bgt.w 8005998 - 80056ac: 883b ldrh r3, [r7, #0] - 80056ae: 2b00 cmp r3, #0 - 80056b0: f040 816e bne.w 8005990 - 80056b4: f8b4 3060 ldrh.w r3, [r4, #96] @ 0x60 - 80056b8: 6da5 ldr r5, [r4, #88] @ 0x58 - 80056ba: 4461 add r1, ip - 80056bc: 442b add r3, r5 - 80056be: 428b cmp r3, r1 - 80056c0: f040 8166 bne.w 8005990 - 80056c4: f9b4 3030 ldrsh.w r3, [r4, #48] @ 0x30 - 80056c8: 2b00 cmp r3, #0 - 80056ca: f2c0 8161 blt.w 8005990 - 80056ce: 4290 cmp r0, r2 - 80056d0: f040 815e bne.w 8005990 - 80056d4: f894 3043 ldrb.w r3, [r4, #67] @ 0x43 - 80056d8: 2bff cmp r3, #255 @ 0xff - 80056da: bf1c itt ne - 80056dc: 3301 addne r3, #1 - 80056de: f884 3043 strbne.w r3, [r4, #67] @ 0x43 - 80056e2: f894 3043 ldrb.w r3, [r4, #67] @ 0x43 - 80056e6: 2b03 cmp r3, #3 - 80056e8: d91e bls.n 8005728 - 80056ea: f8b4 2048 ldrh.w r2, [r4, #72] @ 0x48 - 80056ee: 8e63 ldrh r3, [r4, #50] @ 0x32 - 80056f0: 4413 add r3, r2 - 80056f2: b29b uxth r3, r3 - 80056f4: 429a cmp r2, r3 - 80056f6: bf88 it hi - 80056f8: f64f 73ff movwhi r3, #65535 @ 0xffff - 80056fc: f8a4 3048 strh.w r3, [r4, #72] @ 0x48 - 8005700: 4620 mov r0, r4 - 8005702: f001 fc81 bl 8007008 - 8005706: e010 b.n 800572a - 8005708: 0800c394 .word 0x0800c394 - 800570c: 0800c44d .word 0x0800c44d - 8005710: 0800b767 .word 0x0800b767 - 8005714: 20018aad .word 0x20018aad - 8005718: 20018ab8 .word 0x20018ab8 - 800571c: 20018aae .word 0x20018aae - 8005720: 20018ac8 .word 0x20018ac8 - 8005724: 20018ab4 .word 0x20018ab4 - 8005728: d0ea beq.n 8005700 - 800572a: 6b63 ldr r3, [r4, #52] @ 0x34 - 800572c: b333 cbz r3, 800577c - 800572e: 6ba2 ldr r2, [r4, #56] @ 0x38 - 8005730: f8d9 1000 ldr.w r1, [r9] - 8005734: 1a52 subs r2, r2, r1 - 8005736: 2a00 cmp r2, #0 - 8005738: da20 bge.n 800577c - 800573a: 4ab6 ldr r2, [pc, #728] @ (8005a14 ) - 800573c: f9b4 c03c ldrsh.w ip, [r4, #60] @ 0x3c - 8005740: 8815 ldrh r5, [r2, #0] - 8005742: b29b uxth r3, r3 - 8005744: f3cc 01cf ubfx r1, ip, #3, #16 - 8005748: 1aea subs r2, r5, r3 - 800574a: 1a52 subs r2, r2, r1 - 800574c: b210 sxth r0, r2 - 800574e: 2800 cmp r0, #0 - 8005750: bfbc itt lt - 8005752: 1b5b sublt r3, r3, r5 - 8005754: 18c9 addlt r1, r1, r3 - 8005756: f9b4 303e ldrsh.w r3, [r4, #62] @ 0x3e - 800575a: bfb8 it lt - 800575c: b208 sxthlt r0, r1 - 800575e: eba3 03a3 sub.w r3, r3, r3, asr #2 - 8005762: fa1c f282 uxtah r2, ip, r2 - 8005766: 4403 add r3, r0 - 8005768: b212 sxth r2, r2 - 800576a: b29b uxth r3, r3 - 800576c: 87e3 strh r3, [r4, #62] @ 0x3e - 800576e: eb03 03e2 add.w r3, r3, r2, asr #3 - 8005772: f8a4 3040 strh.w r3, [r4, #64] @ 0x40 - 8005776: 2300 movs r3, #0 - 8005778: 87a2 strh r2, [r4, #60] @ 0x3c - 800577a: 6363 str r3, [r4, #52] @ 0x34 - 800577c: 8838 ldrh r0, [r7, #0] - 800577e: 6833 ldr r3, [r6, #0] - 8005780: 6a62 ldr r2, [r4, #36] @ 0x24 - 8005782: 2800 cmp r0, #0 - 8005784: f000 835d beq.w 8005e42 - 8005788: 7d21 ldrb r1, [r4, #20] - 800578a: 2906 cmp r1, #6 - 800578c: f200 8359 bhi.w 8005e42 - 8005790: 1ad5 subs r5, r2, r3 - 8005792: 2d01 cmp r5, #1 - 8005794: f100 81aa bmi.w 8005aec - 8005798: f1c3 0101 rsb r1, r3, #1 - 800579c: 1a09 subs r1, r1, r0 - 800579e: 4411 add r1, r2 - 80057a0: 2900 cmp r1, #0 - 80057a2: f300 81a3 bgt.w 8005aec - 80057a6: f8df 9284 ldr.w r9, [pc, #644] @ 8005a2c - 80057aa: f8d9 8004 ldr.w r8, [r9, #4] - 80057ae: f1b8 0f00 cmp.w r8, #0 - 80057b2: d106 bne.n 80057c2 - 80057b4: 4b98 ldr r3, [pc, #608] @ (8005a18 ) - 80057b6: 4999 ldr r1, [pc, #612] @ (8005a1c ) - 80057b8: 4899 ldr r0, [pc, #612] @ (8005a20 ) - 80057ba: f240 5294 movw r2, #1428 @ 0x594 - 80057be: f004 ffe3 bl 800a788 - 80057c2: f64f 73fe movw r3, #65534 @ 0xfffe - 80057c6: 429d cmp r5, r3 - 80057c8: d906 bls.n 80057d8 - 80057ca: 4b93 ldr r3, [pc, #588] @ (8005a18 ) - 80057cc: 4995 ldr r1, [pc, #596] @ (8005a24 ) - 80057ce: 4894 ldr r0, [pc, #592] @ (8005a20 ) - 80057d0: f240 5295 movw r2, #1429 @ 0x595 - 80057d4: f004 ffd8 bl 800a788 - 80057d8: f8d9 3004 ldr.w r3, [r9, #4] - 80057dc: 891b ldrh r3, [r3, #8] - 80057de: b2ad uxth r5, r5 - 80057e0: 42ab cmp r3, r5 - 80057e2: d206 bcs.n 80057f2 - 80057e4: 4b8c ldr r3, [pc, #560] @ (8005a18 ) - 80057e6: 4990 ldr r1, [pc, #576] @ (8005a28 ) - 80057e8: 488d ldr r0, [pc, #564] @ (8005a20 ) - 80057ea: f240 5297 movw r2, #1431 @ 0x597 - 80057ee: f004 ffcb bl 800a788 - 80057f2: f8b9 3008 ldrh.w r3, [r9, #8] - 80057f6: 1b5b subs r3, r3, r5 - 80057f8: f8a9 3008 strh.w r3, [r9, #8] - 80057fc: f8d9 3004 ldr.w r3, [r9, #4] - 8005800: 891b ldrh r3, [r3, #8] - 8005802: 1b5b subs r3, r3, r5 - 8005804: b29b uxth r3, r3 - 8005806: 2100 movs r1, #0 - 8005808: f8b8 200a ldrh.w r2, [r8, #10] - 800580c: 42aa cmp r2, r5 - 800580e: f0c0 8164 bcc.w 8005ada - 8005812: 4629 mov r1, r5 - 8005814: 4640 mov r0, r8 - 8005816: f7fe fc27 bl 8004068 - 800581a: f8d9 200c ldr.w r2, [r9, #12] - 800581e: 6a63 ldr r3, [r4, #36] @ 0x24 - 8005820: 6033 str r3, [r6, #0] - 8005822: 6053 str r3, [r2, #4] - 8005824: 6833 ldr r3, [r6, #0] - 8005826: 6a62 ldr r2, [r4, #36] @ 0x24 - 8005828: 1a99 subs r1, r3, r2 - 800582a: 2900 cmp r1, #0 - 800582c: f2c0 8233 blt.w 8005c96 - 8005830: 8d25 ldrh r5, [r4, #40] @ 0x28 - 8005832: 1c58 adds r0, r3, #1 - 8005834: 1a81 subs r1, r0, r2 - 8005836: 1b49 subs r1, r1, r5 - 8005838: 2900 cmp r1, #0 - 800583a: f300 822c bgt.w 8005c96 - 800583e: 4293 cmp r3, r2 - 8005840: f040 8223 bne.w 8005c8a - 8005844: 4d79 ldr r5, [pc, #484] @ (8005a2c ) - 8005846: 68eb ldr r3, [r5, #12] - 8005848: f8b5 8008 ldrh.w r8, [r5, #8] - 800584c: 8998 ldrh r0, [r3, #12] - 800584e: f7fd ff22 bl 8003696 - 8005852: f010 0003 ands.w r0, r0, #3 - 8005856: bf18 it ne - 8005858: 2001 movne r0, #1 - 800585a: 8d22 ldrh r2, [r4, #40] @ 0x28 - 800585c: eb08 0300 add.w r3, r8, r0 - 8005860: b29b uxth r3, r3 - 8005862: 429a cmp r2, r3 - 8005864: 803b strh r3, [r7, #0] - 8005866: d242 bcs.n 80058ee - 8005868: 68eb ldr r3, [r5, #12] - 800586a: 8998 ldrh r0, [r3, #12] - 800586c: f7fd ff13 bl 8003696 - 8005870: 07c2 lsls r2, r0, #31 - 8005872: d50f bpl.n 8005894 - 8005874: 68eb ldr r3, [r5, #12] - 8005876: f8b3 800c ldrh.w r8, [r3, #12] - 800587a: 4640 mov r0, r8 - 800587c: f7fd ff0b bl 8003696 - 8005880: f000 003e and.w r0, r0, #62 @ 0x3e - 8005884: f7fd ff07 bl 8003696 - 8005888: f428 587c bic.w r8, r8, #16128 @ 0x3f00 - 800588c: 68eb ldr r3, [r5, #12] - 800588e: ea40 0008 orr.w r0, r0, r8 - 8005892: 8198 strh r0, [r3, #12] - 8005894: 8d23 ldrh r3, [r4, #40] @ 0x28 - 8005896: 812b strh r3, [r5, #8] - 8005898: 68eb ldr r3, [r5, #12] - 800589a: 8998 ldrh r0, [r3, #12] - 800589c: f7fd fefb bl 8003696 - 80058a0: 0783 lsls r3, r0, #30 - 80058a2: bf48 it mi - 80058a4: 892b ldrhmi r3, [r5, #8] - 80058a6: 6868 ldr r0, [r5, #4] - 80058a8: bf44 itt mi - 80058aa: f103 33ff addmi.w r3, r3, #4294967295 - 80058ae: 812b strhmi r3, [r5, #8] - 80058b0: 8929 ldrh r1, [r5, #8] - 80058b2: f7fe fceb bl 800428c - 80058b6: 68eb ldr r3, [r5, #12] - 80058b8: f8b5 8008 ldrh.w r8, [r5, #8] - 80058bc: 8998 ldrh r0, [r3, #12] - 80058be: f7fd feea bl 8003696 - 80058c2: f010 0003 ands.w r0, r0, #3 - 80058c6: bf18 it ne - 80058c8: 2001 movne r0, #1 - 80058ca: 6832 ldr r2, [r6, #0] - 80058cc: 6a61 ldr r1, [r4, #36] @ 0x24 - 80058ce: eb08 0300 add.w r3, r8, r0 - 80058d2: b29b uxth r3, r3 - 80058d4: 803b strh r3, [r7, #0] - 80058d6: 4413 add r3, r2 - 80058d8: 8d22 ldrh r2, [r4, #40] @ 0x28 - 80058da: 440a add r2, r1 - 80058dc: 4293 cmp r3, r2 - 80058de: d006 beq.n 80058ee - 80058e0: 4b4d ldr r3, [pc, #308] @ (8005a18 ) - 80058e2: 4953 ldr r1, [pc, #332] @ (8005a30 ) - 80058e4: 484e ldr r0, [pc, #312] @ (8005a20 ) - 80058e6: f240 52cb movw r2, #1483 @ 0x5cb - 80058ea: f004 ff4d bl 800a788 - 80058ee: 6f63 ldr r3, [r4, #116] @ 0x74 - 80058f0: 2b00 cmp r3, #0 - 80058f2: f000 810a beq.w 8005b0a - 80058f6: 68eb ldr r3, [r5, #12] - 80058f8: 8998 ldrh r0, [r3, #12] - 80058fa: f7fd fecc bl 8003696 - 80058fe: 07c0 lsls r0, r0, #31 - 8005900: f100 8100 bmi.w 8005b04 - 8005904: f8d4 8074 ldr.w r8, [r4, #116] @ 0x74 - 8005908: 6830 ldr r0, [r6, #0] - 800590a: 883b ldrh r3, [r7, #0] - 800590c: 4403 add r3, r0 - 800590e: f1b8 0f00 cmp.w r8, #0 - 8005912: d03a beq.n 800598a - 8005914: f8d8 c00c ldr.w ip, [r8, #12] - 8005918: f8b8 1008 ldrh.w r1, [r8, #8] - 800591c: f8dc 2004 ldr.w r2, [ip, #4] - 8005920: 4411 add r1, r2 - 8005922: 1a59 subs r1, r3, r1 - 8005924: 2900 cmp r1, #0 - 8005926: f280 811d bge.w 8005b64 - 800592a: 1a9b subs r3, r3, r2 - 800592c: 2b00 cmp r3, #0 - 800592e: dd2c ble.n 800598a - 8005930: 68eb ldr r3, [r5, #12] - 8005932: 1a12 subs r2, r2, r0 - 8005934: 812a strh r2, [r5, #8] - 8005936: 8998 ldrh r0, [r3, #12] - 8005938: f7fd fead bl 8003696 - 800593c: 0783 lsls r3, r0, #30 - 800593e: bf48 it mi - 8005940: 892b ldrhmi r3, [r5, #8] - 8005942: 6868 ldr r0, [r5, #4] - 8005944: bf44 itt mi - 8005946: f103 33ff addmi.w r3, r3, #4294967295 - 800594a: 812b strhmi r3, [r5, #8] - 800594c: 8929 ldrh r1, [r5, #8] - 800594e: f7fe fc9d bl 800428c - 8005952: 68eb ldr r3, [r5, #12] - 8005954: f8b5 9008 ldrh.w r9, [r5, #8] - 8005958: 8998 ldrh r0, [r3, #12] - 800595a: f7fd fe9c bl 8003696 - 800595e: f010 0003 ands.w r0, r0, #3 - 8005962: bf18 it ne - 8005964: 2001 movne r0, #1 - 8005966: 6832 ldr r2, [r6, #0] - 8005968: eb09 0300 add.w r3, r9, r0 - 800596c: b29b uxth r3, r3 - 800596e: 803b strh r3, [r7, #0] - 8005970: 4413 add r3, r2 - 8005972: f8d8 200c ldr.w r2, [r8, #12] - 8005976: 6852 ldr r2, [r2, #4] - 8005978: 4293 cmp r3, r2 - 800597a: d006 beq.n 800598a - 800597c: 4b26 ldr r3, [pc, #152] @ (8005a18 ) - 800597e: 492d ldr r1, [pc, #180] @ (8005a34 ) - 8005980: 4827 ldr r0, [pc, #156] @ (8005a20 ) - 8005982: f240 52fc movw r2, #1532 @ 0x5fc - 8005986: f004 feff bl 800a788 - 800598a: f8c4 8074 str.w r8, [r4, #116] @ 0x74 - 800598e: e0bc b.n 8005b0a - 8005990: 2300 movs r3, #0 - 8005992: f884 3043 strb.w r3, [r4, #67] @ 0x43 - 8005996: e6c8 b.n 800572a - 8005998: 6d21 ldr r1, [r4, #80] @ 0x50 - 800599a: 1a51 subs r1, r2, r1 - 800599c: 2900 cmp r1, #0 - 800599e: f300 8098 bgt.w 8005ad2 - 80059a2: 8b61 ldrh r1, [r4, #26] - 80059a4: 0748 lsls r0, r1, #29 - 80059a6: d509 bpl.n 80059bc - 80059a8: f021 0104 bic.w r1, r1, #4 - 80059ac: 8361 strh r1, [r4, #26] - 80059ae: f8b4 104a ldrh.w r1, [r4, #74] @ 0x4a - 80059b2: f8a4 1048 strh.w r1, [r4, #72] @ 0x48 - 80059b6: 2100 movs r1, #0 - 80059b8: f8a4 106a strh.w r1, [r4, #106] @ 0x6a - 80059bc: f9b4 003c ldrsh.w r0, [r4, #60] @ 0x3c - 80059c0: 8fe1 ldrh r1, [r4, #62] @ 0x3e - 80059c2: 6462 str r2, [r4, #68] @ 0x44 - 80059c4: 7d22 ldrb r2, [r4, #20] - 80059c6: eb01 01e0 add.w r1, r1, r0, asr #3 - 80059ca: f8a4 1040 strh.w r1, [r4, #64] @ 0x40 - 80059ce: 2a03 cmp r2, #3 - 80059d0: f04f 0100 mov.w r1, #0 - 80059d4: f8a4 1042 strh.w r1, [r4, #66] @ 0x42 - 80059d8: d938 bls.n 8005a4c - 80059da: f8b4 2048 ldrh.w r2, [r4, #72] @ 0x48 - 80059de: f8b4 104a ldrh.w r1, [r4, #74] @ 0x4a - 80059e2: 4291 cmp r1, r2 - 80059e4: b29b uxth r3, r3 - 80059e6: d927 bls.n 8005a38 - 80059e8: 8b61 ldrh r1, [r4, #26] - 80059ea: f411 6f00 tst.w r1, #2048 @ 0x800 - 80059ee: 8e61 ldrh r1, [r4, #50] @ 0x32 - 80059f0: bf0c ite eq - 80059f2: 2002 moveq r0, #2 - 80059f4: 2001 movne r0, #1 - 80059f6: fb11 f100 smulbb r1, r1, r0 - 80059fa: b289 uxth r1, r1 - 80059fc: 4299 cmp r1, r3 - 80059fe: bf94 ite ls - 8005a00: 1850 addls r0, r2, r1 - 8005a02: 18d0 addhi r0, r2, r3 - 8005a04: b283 uxth r3, r0 - 8005a06: 429a cmp r2, r3 - 8005a08: d901 bls.n 8005a0e - 8005a0a: f64f 73ff movw r3, #65535 @ 0xffff - 8005a0e: f8a4 3048 strh.w r3, [r4, #72] @ 0x48 - 8005a12: e01b b.n 8005a4c - 8005a14: 20018aa0 .word 0x20018aa0 - 8005a18: 0800c394 .word 0x0800c394 - 8005a1c: 0800c466 .word 0x0800c466 - 8005a20: 0800b767 .word 0x0800b767 - 8005a24: 0800c476 .word 0x0800c476 - 8005a28: 0800c485 .word 0x0800c485 - 8005a2c: 20018acc .word 0x20018acc - 8005a30: 0800c495 .word 0x0800c495 - 8005a34: 0800c4cc .word 0x0800c4cc - 8005a38: f8b4 106a ldrh.w r1, [r4, #106] @ 0x6a - 8005a3c: 440b add r3, r1 - 8005a3e: b29b uxth r3, r3 - 8005a40: 4299 cmp r1, r3 - 8005a42: d82c bhi.n 8005a9e - 8005a44: 429a cmp r2, r3 - 8005a46: d92c bls.n 8005aa2 - 8005a48: f8a4 306a strh.w r3, [r4, #106] @ 0x6a - 8005a4c: e9d4 211b ldrd r2, r1, [r4, #108] @ 0x6c - 8005a50: 4620 mov r0, r4 - 8005a52: f7ff fd87 bl 8005564 - 8005a56: 6ee1 ldr r1, [r4, #108] @ 0x6c - 8005a58: 6720 str r0, [r4, #112] @ 0x70 - 8005a5a: 4602 mov r2, r0 - 8005a5c: 4620 mov r0, r4 - 8005a5e: f7ff fd81 bl 8005564 - 8005a62: 6f22 ldr r2, [r4, #112] @ 0x70 - 8005a64: 66e0 str r0, [r4, #108] @ 0x6c - 8005a66: fab2 f382 clz r3, r2 - 8005a6a: 095b lsrs r3, r3, #5 - 8005a6c: 425b negs r3, r3 - 8005a6e: 8623 strh r3, [r4, #48] @ 0x30 - 8005a70: 2300 movs r3, #0 - 8005a72: 7723 strb r3, [r4, #28] - 8005a74: b908 cbnz r0, 8005a7a - 8005a76: f8a4 0068 strh.w r0, [r4, #104] @ 0x68 - 8005a7a: 49a0 ldr r1, [pc, #640] @ (8005cfc ) - 8005a7c: f8b4 3064 ldrh.w r3, [r4, #100] @ 0x64 - 8005a80: 8809 ldrh r1, [r1, #0] - 8005a82: 440b add r3, r1 - 8005a84: f8a4 3064 strh.w r3, [r4, #100] @ 0x64 - 8005a88: 8b63 ldrh r3, [r4, #26] - 8005a8a: 0519 lsls r1, r3, #20 - 8005a8c: f57f ae4d bpl.w 800572a - 8005a90: b9da cbnz r2, 8005aca - 8005a92: b968 cbnz r0, 8005ab0 - 8005a94: 8b63 ldrh r3, [r4, #26] - 8005a96: f423 6300 bic.w r3, r3, #2048 @ 0x800 - 8005a9a: 8363 strh r3, [r4, #26] - 8005a9c: e645 b.n 800572a - 8005a9e: f64f 73ff movw r3, #65535 @ 0xffff - 8005aa2: 1a9b subs r3, r3, r2 - 8005aa4: f8a4 306a strh.w r3, [r4, #106] @ 0x6a - 8005aa8: 8e63 ldrh r3, [r4, #50] @ 0x32 - 8005aaa: 4413 add r3, r2 - 8005aac: b29b uxth r3, r3 - 8005aae: e7aa b.n 8005a06 - 8005ab0: f8d4 804c ldr.w r8, [r4, #76] @ 0x4c - 8005ab4: 68c3 ldr r3, [r0, #12] - 8005ab6: 6858 ldr r0, [r3, #4] - 8005ab8: f7fd fdf0 bl 800369c - 8005abc: eba8 0800 sub.w r8, r8, r0 - 8005ac0: f1b8 0f00 cmp.w r8, #0 - 8005ac4: f73f ae31 bgt.w 800572a - 8005ac8: e7e4 b.n 8005a94 - 8005aca: f8d4 804c ldr.w r8, [r4, #76] @ 0x4c - 8005ace: 68d3 ldr r3, [r2, #12] - 8005ad0: e7f1 b.n 8005ab6 - 8005ad2: 4620 mov r0, r4 - 8005ad4: f001 fb12 bl 80070fc - 8005ad8: e627 b.n 800572a - 8005ada: 1aaa subs r2, r5, r2 - 8005adc: f8a8 3008 strh.w r3, [r8, #8] - 8005ae0: f8a8 100a strh.w r1, [r8, #10] - 8005ae4: b295 uxth r5, r2 - 8005ae6: f8d8 8000 ldr.w r8, [r8] - 8005aea: e68d b.n 8005808 - 8005aec: 1a9b subs r3, r3, r2 - 8005aee: 2b00 cmp r3, #0 - 8005af0: bfbe ittt lt - 8005af2: 8b63 ldrhlt r3, [r4, #26] - 8005af4: f043 0302 orrlt.w r3, r3, #2 - 8005af8: 8363 strhlt r3, [r4, #26] - 8005afa: e693 b.n 8005824 - 8005afc: 6803 ldr r3, [r0, #0] - 8005afe: 6763 str r3, [r4, #116] @ 0x74 - 8005b00: f7fe fe24 bl 800474c - 8005b04: 6f60 ldr r0, [r4, #116] @ 0x74 - 8005b06: 2800 cmp r0, #0 - 8005b08: d1f8 bne.n 8005afc - 8005b0a: 883a ldrh r2, [r7, #0] - 8005b0c: 6833 ldr r3, [r6, #0] - 8005b0e: 4413 add r3, r2 - 8005b10: 6263 str r3, [r4, #36] @ 0x24 - 8005b12: 8d23 ldrh r3, [r4, #40] @ 0x28 - 8005b14: 4293 cmp r3, r2 - 8005b16: d206 bcs.n 8005b26 - 8005b18: 4b79 ldr r3, [pc, #484] @ (8005d00 ) - 8005b1a: 497a ldr r1, [pc, #488] @ (8005d04 ) - 8005b1c: 487a ldr r0, [pc, #488] @ (8005d08 ) - 8005b1e: f240 6207 movw r2, #1543 @ 0x607 - 8005b22: f004 fe31 bl 800a788 - 8005b26: 8d23 ldrh r3, [r4, #40] @ 0x28 - 8005b28: 883a ldrh r2, [r7, #0] - 8005b2a: 1a9b subs r3, r3, r2 - 8005b2c: 8523 strh r3, [r4, #40] @ 0x28 - 8005b2e: 4620 mov r0, r4 - 8005b30: f7fe fd98 bl 8004664 - 8005b34: 686b ldr r3, [r5, #4] - 8005b36: 891a ldrh r2, [r3, #8] - 8005b38: b11a cbz r2, 8005b42 - 8005b3a: 4a74 ldr r2, [pc, #464] @ (8005d0c ) - 8005b3c: 6013 str r3, [r2, #0] - 8005b3e: 2300 movs r3, #0 - 8005b40: 606b str r3, [r5, #4] - 8005b42: 68eb ldr r3, [r5, #12] - 8005b44: 8998 ldrh r0, [r3, #12] - 8005b46: f7fd fda6 bl 8003696 - 8005b4a: 07c5 lsls r5, r0, #31 - 8005b4c: d504 bpl.n 8005b58 - 8005b4e: 4a70 ldr r2, [pc, #448] @ (8005d10 ) - 8005b50: 7813 ldrb r3, [r2, #0] - 8005b52: f043 0320 orr.w r3, r3, #32 - 8005b56: 7013 strb r3, [r2, #0] - 8005b58: 4f69 ldr r7, [pc, #420] @ (8005d00 ) - 8005b5a: f8df 81bc ldr.w r8, [pc, #444] @ 8005d18 - 8005b5e: f8df 91a8 ldr.w r9, [pc, #424] @ 8005d08 - 8005b62: e07c b.n 8005c5e - 8005b64: f8bc 000c ldrh.w r0, [ip, #12] - 8005b68: f7fd fd95 bl 8003696 - 8005b6c: 07c1 lsls r1, r0, #31 - 8005b6e: d51b bpl.n 8005ba8 - 8005b70: 68eb ldr r3, [r5, #12] - 8005b72: 8998 ldrh r0, [r3, #12] - 8005b74: f7fd fd8f bl 8003696 - 8005b78: 0782 lsls r2, r0, #30 - 8005b7a: d415 bmi.n 8005ba8 - 8005b7c: 68eb ldr r3, [r5, #12] - 8005b7e: 2001 movs r0, #1 - 8005b80: f8b3 900c ldrh.w r9, [r3, #12] - 8005b84: f7fd fd87 bl 8003696 - 8005b88: 68eb ldr r3, [r5, #12] - 8005b8a: ea49 0000 orr.w r0, r9, r0 - 8005b8e: 8198 strh r0, [r3, #12] - 8005b90: b280 uxth r0, r0 - 8005b92: f8b5 9008 ldrh.w r9, [r5, #8] - 8005b96: f7fd fd7e bl 8003696 - 8005b9a: f010 0003 ands.w r0, r0, #3 - 8005b9e: bf18 it ne - 8005ba0: 2001 movne r0, #1 - 8005ba2: 4481 add r9, r0 - 8005ba4: f8a7 9000 strh.w r9, [r7] - 8005ba8: f8d8 9000 ldr.w r9, [r8] - 8005bac: 4640 mov r0, r8 - 8005bae: f7fe fdcd bl 800474c - 8005bb2: 46c8 mov r8, r9 - 8005bb4: e6a8 b.n 8005908 - 8005bb6: 6033 str r3, [r6, #0] - 8005bb8: 8990 ldrh r0, [r2, #12] - 8005bba: f8b5 a008 ldrh.w sl, [r5, #8] - 8005bbe: f7fd fd6a bl 8003696 - 8005bc2: 6a63 ldr r3, [r4, #36] @ 0x24 - 8005bc4: f8b5 b008 ldrh.w fp, [r5, #8] - 8005bc8: f010 0003 ands.w r0, r0, #3 - 8005bcc: bf18 it ne - 8005bce: 2001 movne r0, #1 - 8005bd0: 449a add sl, r3 - 8005bd2: 4450 add r0, sl - 8005bd4: 68eb ldr r3, [r5, #12] - 8005bd6: 6260 str r0, [r4, #36] @ 0x24 - 8005bd8: 8998 ldrh r0, [r3, #12] - 8005bda: f8b4 a028 ldrh.w sl, [r4, #40] @ 0x28 - 8005bde: f7fd fd5a bl 8003696 - 8005be2: f010 0003 ands.w r0, r0, #3 - 8005be6: bf18 it ne - 8005be8: 2001 movne r0, #1 - 8005bea: 4458 add r0, fp - 8005bec: 4582 cmp sl, r0 - 8005bee: d206 bcs.n 8005bfe - 8005bf0: 463b mov r3, r7 - 8005bf2: f240 622b movw r2, #1579 @ 0x62b - 8005bf6: 4641 mov r1, r8 - 8005bf8: 4648 mov r0, r9 - 8005bfa: f004 fdc5 bl 800a788 - 8005bfe: 68eb ldr r3, [r5, #12] - 8005c00: f8b5 a008 ldrh.w sl, [r5, #8] - 8005c04: 8998 ldrh r0, [r3, #12] - 8005c06: f7fd fd46 bl 8003696 - 8005c0a: f010 0003 ands.w r0, r0, #3 - 8005c0e: 8d23 ldrh r3, [r4, #40] @ 0x28 - 8005c10: bf18 it ne - 8005c12: 2001 movne r0, #1 - 8005c14: 4450 add r0, sl - 8005c16: 1a1b subs r3, r3, r0 - 8005c18: 8523 strh r3, [r4, #40] @ 0x28 - 8005c1a: 4620 mov r0, r4 - 8005c1c: f7fe fd22 bl 8004664 - 8005c20: 6869 ldr r1, [r5, #4] - 8005c22: 890b ldrh r3, [r1, #8] - 8005c24: b133 cbz r3, 8005c34 - 8005c26: 4b39 ldr r3, [pc, #228] @ (8005d0c ) - 8005c28: 6818 ldr r0, [r3, #0] - 8005c2a: b338 cbz r0, 8005c7c - 8005c2c: f7fe fba2 bl 8004374 - 8005c30: 2300 movs r3, #0 - 8005c32: 606b str r3, [r5, #4] - 8005c34: 68eb ldr r3, [r5, #12] - 8005c36: 8998 ldrh r0, [r3, #12] - 8005c38: f7fd fd2d bl 8003696 - 8005c3c: 07c0 lsls r0, r0, #31 - 8005c3e: d509 bpl.n 8005c54 - 8005c40: 4a33 ldr r2, [pc, #204] @ (8005d10 ) - 8005c42: 7813 ldrb r3, [r2, #0] - 8005c44: f043 0320 orr.w r3, r3, #32 - 8005c48: 7013 strb r3, [r2, #0] - 8005c4a: 7d23 ldrb r3, [r4, #20] - 8005c4c: 2b04 cmp r3, #4 - 8005c4e: bf04 itt eq - 8005c50: 2307 moveq r3, #7 - 8005c52: 7523 strbeq r3, [r4, #20] - 8005c54: 682b ldr r3, [r5, #0] - 8005c56: 6763 str r3, [r4, #116] @ 0x74 - 8005c58: 4628 mov r0, r5 - 8005c5a: f7fe fd77 bl 800474c - 8005c5e: 6f65 ldr r5, [r4, #116] @ 0x74 - 8005c60: b125 cbz r5, 8005c6c - 8005c62: 68ea ldr r2, [r5, #12] - 8005c64: 6a61 ldr r1, [r4, #36] @ 0x24 - 8005c66: 6853 ldr r3, [r2, #4] - 8005c68: 428b cmp r3, r1 - 8005c6a: d0a4 beq.n 8005bb6 - 8005c6c: 8b63 ldrh r3, [r4, #26] - 8005c6e: 07d9 lsls r1, r3, #31 - 8005c70: d506 bpl.n 8005c80 - 8005c72: f023 0301 bic.w r3, r3, #1 - 8005c76: f043 0302 orr.w r3, r3, #2 - 8005c7a: e003 b.n 8005c84 - 8005c7c: 6019 str r1, [r3, #0] - 8005c7e: e7d7 b.n 8005c30 - 8005c80: f043 0301 orr.w r3, r3, #1 - 8005c84: 8363 strh r3, [r4, #26] - 8005c86: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} - 8005c8a: 6f65 ldr r5, [r4, #116] @ 0x74 - 8005c8c: b945 cbnz r5, 8005ca0 - 8005c8e: 4821 ldr r0, [pc, #132] @ (8005d14 ) - 8005c90: f7fe fd72 bl 8004778 - 8005c94: 6760 str r0, [r4, #116] @ 0x74 - 8005c96: 4620 mov r0, r4 - 8005c98: e8bd 4ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8005c9c: f001 ba2e b.w 80070fc - 8005ca0: f04f 0800 mov.w r8, #0 - 8005ca4: f103 3eff add.w lr, r3, #4294967295 - 8005ca8: f8d5 c00c ldr.w ip, [r5, #12] - 8005cac: f8dc 2004 ldr.w r2, [ip, #4] - 8005cb0: 4293 cmp r3, r2 - 8005cb2: d115 bne.n 8005ce0 - 8005cb4: 4817 ldr r0, [pc, #92] @ (8005d14 ) - 8005cb6: 892b ldrh r3, [r5, #8] - 8005cb8: 8902 ldrh r2, [r0, #8] - 8005cba: 429a cmp r2, r3 - 8005cbc: d9eb bls.n 8005c96 - 8005cbe: f7fe fd5b bl 8004778 - 8005cc2: 2800 cmp r0, #0 - 8005cc4: d0e7 beq.n 8005c96 - 8005cc6: f1b8 0f00 cmp.w r8, #0 - 8005cca: d007 beq.n 8005cdc - 8005ccc: f8c8 0000 str.w r0, [r8] - 8005cd0: 4629 mov r1, r5 - 8005cd2: f7ff fb9b bl 800540c - 8005cd6: e7de b.n 8005c96 - 8005cd8: 460d mov r5, r1 - 8005cda: e7e5 b.n 8005ca8 - 8005cdc: 6760 str r0, [r4, #116] @ 0x74 - 8005cde: e7f7 b.n 8005cd0 - 8005ce0: f1b8 0f00 cmp.w r8, #0 - 8005ce4: d11a bne.n 8005d1c - 8005ce6: 1a99 subs r1, r3, r2 - 8005ce8: 2900 cmp r1, #0 - 8005cea: da3e bge.n 8005d6a - 8005cec: 4809 ldr r0, [pc, #36] @ (8005d14 ) - 8005cee: f7fe fd43 bl 8004778 - 8005cf2: 2800 cmp r0, #0 - 8005cf4: d0cf beq.n 8005c96 - 8005cf6: 6760 str r0, [r4, #116] @ 0x74 - 8005cf8: e7ea b.n 8005cd0 - 8005cfa: bf00 nop - 8005cfc: 20018ab0 .word 0x20018ab0 - 8005d00: 0800c394 .word 0x0800c394 - 8005d04: 0800c507 .word 0x0800c507 - 8005d08: 0800b767 .word 0x0800b767 - 8005d0c: 20018aa8 .word 0x20018aa8 - 8005d10: 20018aac .word 0x20018aac - 8005d14: 20018acc .word 0x20018acc - 8005d18: 0800c526 .word 0x0800c526 - 8005d1c: f8d8 100c ldr.w r1, [r8, #12] - 8005d20: 6849 ldr r1, [r1, #4] - 8005d22: ebae 0101 sub.w r1, lr, r1 - 8005d26: 2900 cmp r1, #0 - 8005d28: db1f blt.n 8005d6a - 8005d2a: 1a81 subs r1, r0, r2 - 8005d2c: 2900 cmp r1, #0 - 8005d2e: dc1c bgt.n 8005d6a - 8005d30: 484a ldr r0, [pc, #296] @ (8005e5c ) - 8005d32: f7fe fd21 bl 8004778 - 8005d36: 4607 mov r7, r0 - 8005d38: 2800 cmp r0, #0 - 8005d3a: d0ac beq.n 8005c96 - 8005d3c: f8d8 300c ldr.w r3, [r8, #12] - 8005d40: 6831 ldr r1, [r6, #0] - 8005d42: 685a ldr r2, [r3, #4] - 8005d44: f8b8 3008 ldrh.w r3, [r8, #8] - 8005d48: 4413 add r3, r2 - 8005d4a: 1a5b subs r3, r3, r1 - 8005d4c: 2b00 cmp r3, #0 - 8005d4e: dd07 ble.n 8005d60 - 8005d50: 1a89 subs r1, r1, r2 - 8005d52: b289 uxth r1, r1 - 8005d54: f8d8 0004 ldr.w r0, [r8, #4] - 8005d58: f8a8 1008 strh.w r1, [r8, #8] - 8005d5c: f7fe fa96 bl 800428c - 8005d60: f8c8 7000 str.w r7, [r8] - 8005d64: 4629 mov r1, r5 - 8005d66: 4638 mov r0, r7 - 8005d68: e7b3 b.n 8005cd2 - 8005d6a: 6829 ldr r1, [r5, #0] - 8005d6c: 46a8 mov r8, r5 - 8005d6e: 2900 cmp r1, #0 - 8005d70: d1b2 bne.n 8005cd8 - 8005d72: 1a9b subs r3, r3, r2 - 8005d74: 2b00 cmp r3, #0 - 8005d76: dd8e ble.n 8005c96 - 8005d78: f8bc 000c ldrh.w r0, [ip, #12] - 8005d7c: f7fd fc8b bl 8003696 - 8005d80: 07c2 lsls r2, r0, #31 - 8005d82: d488 bmi.n 8005c96 - 8005d84: 4835 ldr r0, [pc, #212] @ (8005e5c ) - 8005d86: f7fe fcf7 bl 8004778 - 8005d8a: 6028 str r0, [r5, #0] - 8005d8c: 2800 cmp r0, #0 - 8005d8e: d082 beq.n 8005c96 - 8005d90: 68eb ldr r3, [r5, #12] - 8005d92: 6831 ldr r1, [r6, #0] - 8005d94: 685a ldr r2, [r3, #4] - 8005d96: 892b ldrh r3, [r5, #8] - 8005d98: 4413 add r3, r2 - 8005d9a: 1a5b subs r3, r3, r1 - 8005d9c: 2b00 cmp r3, #0 - 8005d9e: dd05 ble.n 8005dac - 8005da0: 1a89 subs r1, r1, r2 - 8005da2: b289 uxth r1, r1 - 8005da4: 6868 ldr r0, [r5, #4] - 8005da6: 8129 strh r1, [r5, #8] - 8005da8: f7fe fa70 bl 800428c - 8005dac: 6832 ldr r2, [r6, #0] - 8005dae: 883b ldrh r3, [r7, #0] - 8005db0: 4413 add r3, r2 - 8005db2: 6a62 ldr r2, [r4, #36] @ 0x24 - 8005db4: 1a9b subs r3, r3, r2 - 8005db6: 8d22 ldrh r2, [r4, #40] @ 0x28 - 8005db8: 1a9b subs r3, r3, r2 - 8005dba: 2b00 cmp r3, #0 - 8005dbc: f77f af6b ble.w 8005c96 - 8005dc0: 682b ldr r3, [r5, #0] - 8005dc2: 68db ldr r3, [r3, #12] - 8005dc4: 8998 ldrh r0, [r3, #12] - 8005dc6: f7fd fc66 bl 8003696 - 8005dca: 07c3 lsls r3, r0, #31 - 8005dcc: d511 bpl.n 8005df2 - 8005dce: 682b ldr r3, [r5, #0] - 8005dd0: 68db ldr r3, [r3, #12] - 8005dd2: f8b3 800c ldrh.w r8, [r3, #12] - 8005dd6: 4640 mov r0, r8 - 8005dd8: f7fd fc5d bl 8003696 - 8005ddc: f000 003e and.w r0, r0, #62 @ 0x3e - 8005de0: f7fd fc59 bl 8003696 - 8005de4: 682b ldr r3, [r5, #0] - 8005de6: f428 587c bic.w r8, r8, #16128 @ 0x3f00 - 8005dea: 68db ldr r3, [r3, #12] - 8005dec: ea40 0008 orr.w r0, r0, r8 - 8005df0: 8198 strh r0, [r3, #12] - 8005df2: 6832 ldr r2, [r6, #0] - 8005df4: 8d21 ldrh r1, [r4, #40] @ 0x28 - 8005df6: 682b ldr r3, [r5, #0] - 8005df8: 1a89 subs r1, r1, r2 - 8005dfa: 6a62 ldr r2, [r4, #36] @ 0x24 - 8005dfc: 6858 ldr r0, [r3, #4] - 8005dfe: 4411 add r1, r2 - 8005e00: b289 uxth r1, r1 - 8005e02: 8119 strh r1, [r3, #8] - 8005e04: f7fe fa42 bl 800428c - 8005e08: 682b ldr r3, [r5, #0] - 8005e0a: 891d ldrh r5, [r3, #8] - 8005e0c: 68db ldr r3, [r3, #12] - 8005e0e: 8998 ldrh r0, [r3, #12] - 8005e10: f7fd fc41 bl 8003696 - 8005e14: f010 0003 ands.w r0, r0, #3 - 8005e18: bf18 it ne - 8005e1a: 2001 movne r0, #1 - 8005e1c: 6832 ldr r2, [r6, #0] - 8005e1e: 6a61 ldr r1, [r4, #36] @ 0x24 - 8005e20: 182b adds r3, r5, r0 - 8005e22: b29b uxth r3, r3 - 8005e24: 803b strh r3, [r7, #0] - 8005e26: 4413 add r3, r2 - 8005e28: 8d22 ldrh r2, [r4, #40] @ 0x28 - 8005e2a: 440a add r2, r1 - 8005e2c: 4293 cmp r3, r2 - 8005e2e: f43f af32 beq.w 8005c96 - 8005e32: 4b0b ldr r3, [pc, #44] @ (8005e60 ) - 8005e34: 490b ldr r1, [pc, #44] @ (8005e64 ) - 8005e36: 480c ldr r0, [pc, #48] @ (8005e68 ) - 8005e38: f44f 62df mov.w r2, #1784 @ 0x6f8 - 8005e3c: f004 fca4 bl 800a788 - 8005e40: e729 b.n 8005c96 - 8005e42: 1a99 subs r1, r3, r2 - 8005e44: 2900 cmp r1, #0 - 8005e46: db06 blt.n 8005e56 - 8005e48: 3301 adds r3, #1 - 8005e4a: 1a9b subs r3, r3, r2 - 8005e4c: 8d22 ldrh r2, [r4, #40] @ 0x28 - 8005e4e: 1a9b subs r3, r3, r2 - 8005e50: 2b00 cmp r3, #0 - 8005e52: f77f af18 ble.w 8005c86 - 8005e56: 8b63 ldrh r3, [r4, #26] - 8005e58: e70d b.n 8005c76 - 8005e5a: bf00 nop - 8005e5c: 20018acc .word 0x20018acc - 8005e60: 0800c394 .word 0x0800c394 - 8005e64: 0800c495 .word 0x0800c495 - 8005e68: 0800b767 .word 0x0800b767 - -08005e6c : - 8005e6c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8005e70: 4605 mov r5, r0 - 8005e72: b085 sub sp, #20 - 8005e74: b928 cbnz r0, 8005e82 - 8005e76: 4b72 ldr r3, [pc, #456] @ (8006040 ) - 8005e78: 4972 ldr r1, [pc, #456] @ (8006044 ) - 8005e7a: 4873 ldr r0, [pc, #460] @ (8006048 ) - 8005e7c: 2283 movs r2, #131 @ 0x83 - 8005e7e: f004 fc83 bl 800a788 - 8005e82: 4e72 ldr r6, [pc, #456] @ (800604c ) - 8005e84: 686b ldr r3, [r5, #4] - 8005e86: 6033 str r3, [r6, #0] - 8005e88: 896b ldrh r3, [r5, #10] - 8005e8a: 2b13 cmp r3, #19 - 8005e8c: f240 80d2 bls.w 8006034 - 8005e90: f8df 81e4 ldr.w r8, [pc, #484] @ 8006078 - 8005e94: f8d8 1000 ldr.w r1, [r8] - 8005e98: f8d8 0014 ldr.w r0, [r8, #20] - 8005e9c: f003 fe75 bl 8009b8a - 8005ea0: 4604 mov r4, r0 - 8005ea2: 2800 cmp r0, #0 - 8005ea4: f040 80c6 bne.w 8006034 - 8005ea8: f8d8 3014 ldr.w r3, [r8, #20] - 8005eac: f003 03f0 and.w r3, r3, #240 @ 0xf0 - 8005eb0: 2be0 cmp r3, #224 @ 0xe0 - 8005eb2: f000 80bf beq.w 8006034 - 8005eb6: 6833 ldr r3, [r6, #0] - 8005eb8: 8998 ldrh r0, [r3, #12] - 8005eba: f7fd fbec bl 8003696 - 8005ebe: 0a81 lsrs r1, r0, #10 - 8005ec0: f001 01fc and.w r1, r1, #252 @ 0xfc - 8005ec4: 2913 cmp r1, #19 - 8005ec6: f240 80b5 bls.w 8006034 - 8005eca: 892b ldrh r3, [r5, #8] - 8005ecc: 428b cmp r3, r1 - 8005ece: f0c0 80b1 bcc.w 8006034 - 8005ed2: 896a ldrh r2, [r5, #10] - 8005ed4: 4f5e ldr r7, [pc, #376] @ (8006050 ) - 8005ed6: f8df a1a4 ldr.w sl, [pc, #420] @ 800607c - 8005eda: f8df 91a4 ldr.w r9, [pc, #420] @ 8006080 - 8005ede: f8ca 4000 str.w r4, [sl] - 8005ee2: f1a1 0314 sub.w r3, r1, #20 - 8005ee6: b29b uxth r3, r3 - 8005ee8: 428a cmp r2, r1 - 8005eea: 803b strh r3, [r7, #0] - 8005eec: d360 bcc.n 8005fb0 - 8005eee: 4628 mov r0, r5 - 8005ef0: f8a9 3000 strh.w r3, [r9] - 8005ef4: f7fe f8b8 bl 8004068 - 8005ef8: 6834 ldr r4, [r6, #0] - 8005efa: f8df b188 ldr.w fp, [pc, #392] @ 8006084 - 8005efe: 8820 ldrh r0, [r4, #0] - 8005f00: f8df a184 ldr.w sl, [pc, #388] @ 8006088 - 8005f04: f7fd fbc7 bl 8003696 - 8005f08: 8020 strh r0, [r4, #0] - 8005f0a: 6834 ldr r4, [r6, #0] - 8005f0c: 8860 ldrh r0, [r4, #2] - 8005f0e: f7fd fbc2 bl 8003696 - 8005f12: 8060 strh r0, [r4, #2] - 8005f14: 6834 ldr r4, [r6, #0] - 8005f16: 6860 ldr r0, [r4, #4] - 8005f18: f7fd fbc0 bl 800369c - 8005f1c: 6060 str r0, [r4, #4] - 8005f1e: 6834 ldr r4, [r6, #0] - 8005f20: f8cb 0000 str.w r0, [fp] - 8005f24: 68a0 ldr r0, [r4, #8] - 8005f26: f7fd fbb9 bl 800369c - 8005f2a: 60a0 str r0, [r4, #8] - 8005f2c: 6834 ldr r4, [r6, #0] - 8005f2e: f8ca 0000 str.w r0, [sl] - 8005f32: 89e0 ldrh r0, [r4, #14] - 8005f34: f7fd fbaf bl 8003696 - 8005f38: 6833 ldr r3, [r6, #0] - 8005f3a: 81e0 strh r0, [r4, #14] - 8005f3c: 8998 ldrh r0, [r3, #12] - 8005f3e: f7fd fbaa bl 8003696 - 8005f42: 4a44 ldr r2, [pc, #272] @ (8006054 ) - 8005f44: f000 033f and.w r3, r0, #63 @ 0x3f - 8005f48: 7013 strb r3, [r2, #0] - 8005f4a: 0783 lsls r3, r0, #30 - 8005f4c: 892a ldrh r2, [r5, #8] - 8005f4e: d16b bne.n 8006028 - 8005f50: 4b41 ldr r3, [pc, #260] @ (8006058 ) - 8005f52: 801a strh r2, [r3, #0] - 8005f54: 4f41 ldr r7, [pc, #260] @ (800605c ) - 8005f56: 683c ldr r4, [r7, #0] - 8005f58: f04f 0900 mov.w r9, #0 - 8005f5c: 2c00 cmp r4, #0 - 8005f5e: f040 8095 bne.w 800608c - 8005f62: 4b3f ldr r3, [pc, #252] @ (8006060 ) - 8005f64: 4c38 ldr r4, [pc, #224] @ (8006048 ) - 8005f66: f8d3 9000 ldr.w r9, [r3] - 8005f6a: f1b9 0f00 cmp.w r9, #0 - 8005f6e: f040 8124 bne.w 80061ba - 8005f72: 4b3c ldr r3, [pc, #240] @ (8006064 ) - 8005f74: f8d8 c004 ldr.w ip, [r8, #4] - 8005f78: 681a ldr r2, [r3, #0] - 8005f7a: 6831 ldr r1, [r6, #0] - 8005f7c: f8d8 e014 ldr.w lr, [r8, #20] - 8005f80: 4614 mov r4, r2 - 8005f82: 2c00 cmp r4, #0 - 8005f84: f040 817c bne.w 8006280 - 8005f88: 8988 ldrh r0, [r1, #12] - 8005f8a: f7fd fb84 bl 8003696 - 8005f8e: 0743 lsls r3, r0, #29 - 8005f90: d450 bmi.n 8006034 - 8005f92: 6833 ldr r3, [r6, #0] - 8005f94: 4a30 ldr r2, [pc, #192] @ (8006058 ) - 8005f96: 8818 ldrh r0, [r3, #0] - 8005f98: 8811 ldrh r1, [r2, #0] - 8005f9a: f8db 2000 ldr.w r2, [fp] - 8005f9e: 9002 str r0, [sp, #8] - 8005fa0: 885b ldrh r3, [r3, #2] - 8005fa2: 9301 str r3, [sp, #4] - 8005fa4: 4b30 ldr r3, [pc, #192] @ (8006068 ) - 8005fa6: 9300 str r3, [sp, #0] - 8005fa8: 440a add r2, r1 - 8005faa: 3304 adds r3, #4 - 8005fac: f000 bccd b.w 800694a - 8005fb0: 682b ldr r3, [r5, #0] - 8005fb2: b92b cbnz r3, 8005fc0 - 8005fb4: 4b22 ldr r3, [pc, #136] @ (8006040 ) - 8005fb6: 492d ldr r1, [pc, #180] @ (800606c ) - 8005fb8: 4823 ldr r0, [pc, #140] @ (8006048 ) - 8005fba: 22c2 movs r2, #194 @ 0xc2 - 8005fbc: f004 fbe4 bl 800a788 - 8005fc0: 2114 movs r1, #20 - 8005fc2: 4628 mov r0, r5 - 8005fc4: f7fe f850 bl 8004068 - 8005fc8: 896c ldrh r4, [r5, #10] - 8005fca: f8a9 4000 strh.w r4, [r9] - 8005fce: 4621 mov r1, r4 - 8005fd0: 4628 mov r0, r5 - 8005fd2: f8b7 9000 ldrh.w r9, [r7] - 8005fd6: f7fe f847 bl 8004068 - 8005fda: 6828 ldr r0, [r5, #0] - 8005fdc: eba9 0704 sub.w r7, r9, r4 - 8005fe0: 8943 ldrh r3, [r0, #10] - 8005fe2: b2bf uxth r7, r7 - 8005fe4: 42bb cmp r3, r7 - 8005fe6: d325 bcc.n 8006034 - 8005fe8: 6843 ldr r3, [r0, #4] - 8005fea: f8ca 3000 str.w r3, [sl] - 8005fee: 4639 mov r1, r7 - 8005ff0: f7fe f83a bl 8004068 - 8005ff4: 892b ldrh r3, [r5, #8] - 8005ff6: 441c add r4, r3 - 8005ff8: 896b ldrh r3, [r5, #10] - 8005ffa: eba4 0409 sub.w r4, r4, r9 - 8005ffe: 812c strh r4, [r5, #8] - 8006000: b12b cbz r3, 800600e - 8006002: 4b0f ldr r3, [pc, #60] @ (8006040 ) - 8006004: 491a ldr r1, [pc, #104] @ (8006070 ) - 8006006: 4810 ldr r0, [pc, #64] @ (8006048 ) - 8006008: 22df movs r2, #223 @ 0xdf - 800600a: f004 fbbd bl 800a788 - 800600e: 682b ldr r3, [r5, #0] - 8006010: 892a ldrh r2, [r5, #8] - 8006012: 891b ldrh r3, [r3, #8] - 8006014: 429a cmp r2, r3 - 8006016: f43f af6f beq.w 8005ef8 - 800601a: 4b09 ldr r3, [pc, #36] @ (8006040 ) - 800601c: 4915 ldr r1, [pc, #84] @ (8006074 ) - 800601e: 480a ldr r0, [pc, #40] @ (8006048 ) - 8006020: 22e0 movs r2, #224 @ 0xe0 - 8006022: f004 fbb1 bl 800a788 - 8006026: e767 b.n 8005ef8 - 8006028: 1c53 adds r3, r2, #1 - 800602a: b29b uxth r3, r3 - 800602c: 490a ldr r1, [pc, #40] @ (8006058 ) - 800602e: 429a cmp r2, r3 - 8006030: 800b strh r3, [r1, #0] - 8006032: d98f bls.n 8005f54 - 8006034: 4628 mov r0, r5 - 8006036: b005 add sp, #20 - 8006038: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 800603c: f7fe b848 b.w 80040d0 - 8006040: 0800c394 .word 0x0800c394 - 8006044: 0800c54b .word 0x0800c54b - 8006048: 0800b767 .word 0x0800b767 - 800604c: 20018ac8 .word 0x20018ac8 - 8006050: 20018ac6 .word 0x20018ac6 - 8006054: 20018aad .word 0x20018aad - 8006058: 20018aae .word 0x20018aae - 800605c: 20018a94 .word 0x20018a94 - 8006060: 20018a90 .word 0x20018a90 - 8006064: 20018a98 .word 0x20018a98 - 8006068: 20005b48 .word 0x20005b48 - 800606c: 0800c563 .word 0x0800c563 - 8006070: 0800c573 .word 0x0800c573 - 8006074: 0800c57f .word 0x0800c57f - 8006078: 20005b38 .word 0x20005b38 - 800607c: 20018ac0 .word 0x20018ac0 - 8006080: 20018ac4 .word 0x20018ac4 - 8006084: 20018ab8 .word 0x20018ab8 - 8006088: 20018ab4 .word 0x20018ab4 - 800608c: 7d23 ldrb r3, [r4, #20] - 800608e: b92b cbnz r3, 800609c - 8006090: 4b8f ldr r3, [pc, #572] @ (80062d0 ) - 8006092: 4990 ldr r1, [pc, #576] @ (80062d4 ) - 8006094: 4890 ldr r0, [pc, #576] @ (80062d8 ) - 8006096: 22fb movs r2, #251 @ 0xfb - 8006098: f004 fb76 bl 800a788 - 800609c: 7d23 ldrb r3, [r4, #20] - 800609e: 2b0a cmp r3, #10 - 80060a0: d105 bne.n 80060ae - 80060a2: 4b8b ldr r3, [pc, #556] @ (80062d0 ) - 80060a4: 498d ldr r1, [pc, #564] @ (80062dc ) - 80060a6: 488c ldr r0, [pc, #560] @ (80062d8 ) - 80060a8: 22fc movs r2, #252 @ 0xfc - 80060aa: f004 fb6d bl 800a788 - 80060ae: 7d23 ldrb r3, [r4, #20] - 80060b0: 2b01 cmp r3, #1 - 80060b2: d105 bne.n 80060c0 - 80060b4: 4b86 ldr r3, [pc, #536] @ (80062d0 ) - 80060b6: 498a ldr r1, [pc, #552] @ (80062e0 ) - 80060b8: 4887 ldr r0, [pc, #540] @ (80062d8 ) - 80060ba: 22fd movs r2, #253 @ 0xfd - 80060bc: f004 fb64 bl 800a788 - 80060c0: 7a21 ldrb r1, [r4, #8] - 80060c2: 68e2 ldr r2, [r4, #12] - 80060c4: b139 cbz r1, 80060d6 - 80060c6: f8d8 3004 ldr.w r3, [r8, #4] - 80060ca: f893 3034 ldrb.w r3, [r3, #52] @ 0x34 - 80060ce: 3301 adds r3, #1 - 80060d0: b2db uxtb r3, r3 - 80060d2: 4299 cmp r1, r3 - 80060d4: d16e bne.n 80061b4 - 80060d6: 6833 ldr r3, [r6, #0] - 80060d8: 8b20 ldrh r0, [r4, #24] - 80060da: 8819 ldrh r1, [r3, #0] - 80060dc: 4288 cmp r0, r1 - 80060de: d169 bne.n 80061b4 - 80060e0: 8ae1 ldrh r1, [r4, #22] - 80060e2: 885b ldrh r3, [r3, #2] - 80060e4: 4299 cmp r1, r3 - 80060e6: d165 bne.n 80061b4 - 80060e8: 6861 ldr r1, [r4, #4] - 80060ea: f8d8 3010 ldr.w r3, [r8, #16] - 80060ee: 4299 cmp r1, r3 - 80060f0: d160 bne.n 80061b4 - 80060f2: 6821 ldr r1, [r4, #0] - 80060f4: f8d8 3014 ldr.w r3, [r8, #20] - 80060f8: 4299 cmp r1, r3 - 80060fa: d15b bne.n 80061b4 - 80060fc: 42a2 cmp r2, r4 - 80060fe: f040 8401 bne.w 8006904 - 8006102: 4b73 ldr r3, [pc, #460] @ (80062d0 ) - 8006104: 4977 ldr r1, [pc, #476] @ (80062e4 ) - 8006106: 4874 ldr r0, [pc, #464] @ (80062d8 ) - 8006108: f240 120d movw r2, #269 @ 0x10d - 800610c: f004 fb3c bl 800a788 - 8006110: f1b9 0f00 cmp.w r9, #0 - 8006114: d005 beq.n 8006122 - 8006116: 68e3 ldr r3, [r4, #12] - 8006118: f8c9 300c str.w r3, [r9, #12] - 800611c: 683b ldr r3, [r7, #0] - 800611e: 60e3 str r3, [r4, #12] - 8006120: 603c str r4, [r7, #0] - 8006122: 68e3 ldr r3, [r4, #12] - 8006124: 42a3 cmp r3, r4 - 8006126: d106 bne.n 8006136 - 8006128: 4b69 ldr r3, [pc, #420] @ (80062d0 ) - 800612a: 496f ldr r1, [pc, #444] @ (80062e8 ) - 800612c: 486a ldr r0, [pc, #424] @ (80062d8 ) - 800612e: f240 1215 movw r2, #277 @ 0x115 - 8006132: f004 fb29 bl 800a788 - 8006136: 496d ldr r1, [pc, #436] @ (80062ec ) - 8006138: 892a ldrh r2, [r5, #8] - 800613a: 810a strh r2, [r1, #8] - 800613c: 6832 ldr r2, [r6, #0] - 800613e: 60ca str r2, [r1, #12] - 8006140: f8df 91c8 ldr.w r9, [pc, #456] @ 800630c - 8006144: f8df 81c8 ldr.w r8, [pc, #456] @ 8006310 - 8006148: 4a69 ldr r2, [pc, #420] @ (80062f0 ) - 800614a: 604d str r5, [r1, #4] - 800614c: 2300 movs r3, #0 - 800614e: 600b str r3, [r1, #0] - 8006150: f8c9 3000 str.w r3, [r9] - 8006154: f888 3000 strb.w r3, [r8] - 8006158: 8013 strh r3, [r2, #0] - 800615a: 4b66 ldr r3, [pc, #408] @ (80062f4 ) - 800615c: 781b ldrb r3, [r3, #0] - 800615e: 0718 lsls r0, r3, #28 - 8006160: bf42 ittt mi - 8006162: 7b6b ldrbmi r3, [r5, #13] - 8006164: f043 0301 orrmi.w r3, r3, #1 - 8006168: 736b strbmi r3, [r5, #13] - 800616a: 6fa3 ldr r3, [r4, #120] @ 0x78 - 800616c: 4d62 ldr r5, [pc, #392] @ (80062f8 ) - 800616e: 2b00 cmp r3, #0 - 8006170: f000 812e beq.w 80063d0 - 8006174: 4620 mov r0, r4 - 8006176: f7fe fe75 bl 8004e64 - 800617a: 300d adds r0, #13 - 800617c: d008 beq.n 8006190 - 800617e: 6fa3 ldr r3, [r4, #120] @ 0x78 - 8006180: 2b00 cmp r3, #0 - 8006182: f000 8125 beq.w 80063d0 - 8006186: 4b5d ldr r3, [pc, #372] @ (80062fc ) - 8006188: 881b ldrh r3, [r3, #0] - 800618a: 2b00 cmp r3, #0 - 800618c: f000 8120 beq.w 80063d0 - 8006190: 8d63 ldrh r3, [r4, #42] @ 0x2a - 8006192: b913 cbnz r3, 800619a - 8006194: 4620 mov r0, r4 - 8006196: f000 ffb1 bl 80070fc - 800619a: 2400 movs r4, #0 - 800619c: 602c str r4, [r5, #0] - 800619e: 4d53 ldr r5, [pc, #332] @ (80062ec ) - 80061a0: f8c9 4000 str.w r4, [r9] - 80061a4: 6868 ldr r0, [r5, #4] - 80061a6: b110 cbz r0, 80061ae - 80061a8: f7fd ff92 bl 80040d0 - 80061ac: 606c str r4, [r5, #4] - 80061ae: b005 add sp, #20 - 80061b0: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 80061b4: 46a1 mov r9, r4 - 80061b6: 4614 mov r4, r2 - 80061b8: e6d0 b.n 8005f5c - 80061ba: f899 3014 ldrb.w r3, [r9, #20] - 80061be: 2b0a cmp r3, #10 - 80061c0: d006 beq.n 80061d0 - 80061c2: 4b43 ldr r3, [pc, #268] @ (80062d0 ) - 80061c4: 494e ldr r1, [pc, #312] @ (8006300 ) - 80061c6: f240 121f movw r2, #287 @ 0x11f - 80061ca: 4620 mov r0, r4 - 80061cc: f004 fadc bl 800a788 - 80061d0: f899 2008 ldrb.w r2, [r9, #8] - 80061d4: b13a cbz r2, 80061e6 - 80061d6: f8d8 3004 ldr.w r3, [r8, #4] - 80061da: f893 3034 ldrb.w r3, [r3, #52] @ 0x34 - 80061de: 3301 adds r3, #1 - 80061e0: b2db uxtb r3, r3 - 80061e2: 429a cmp r2, r3 - 80061e4: d149 bne.n 800627a - 80061e6: 6833 ldr r3, [r6, #0] - 80061e8: f8b9 1018 ldrh.w r1, [r9, #24] - 80061ec: 881a ldrh r2, [r3, #0] - 80061ee: 4291 cmp r1, r2 - 80061f0: d143 bne.n 800627a - 80061f2: 885a ldrh r2, [r3, #2] - 80061f4: f8b9 3016 ldrh.w r3, [r9, #22] - 80061f8: 4293 cmp r3, r2 - 80061fa: d13e bne.n 800627a - 80061fc: f8d9 0004 ldr.w r0, [r9, #4] - 8006200: f8d8 2010 ldr.w r2, [r8, #16] - 8006204: 4290 cmp r0, r2 - 8006206: d138 bne.n 800627a - 8006208: f8d9 0000 ldr.w r0, [r9] - 800620c: f8d8 2014 ldr.w r2, [r8, #20] - 8006210: 4290 cmp r0, r2 - 8006212: d132 bne.n 800627a - 8006214: 4a37 ldr r2, [pc, #220] @ (80062f4 ) - 8006216: 7810 ldrb r0, [r2, #0] - 8006218: 0747 lsls r7, r0, #29 - 800621a: f53f af0b bmi.w 8006034 - 800621e: 4a37 ldr r2, [pc, #220] @ (80062fc ) - 8006220: 0786 lsls r6, r0, #30 - 8006222: 8814 ldrh r4, [r2, #0] - 8006224: d516 bpl.n 8006254 - 8006226: f8db 2000 ldr.w r2, [fp] - 800622a: f8d9 0024 ldr.w r0, [r9, #36] @ 0x24 - 800622e: 1a10 subs r0, r2, r0 - 8006230: d416 bmi.n 8006260 - 8006232: f8b9 6028 ldrh.w r6, [r9, #40] @ 0x28 - 8006236: 1b80 subs r0, r0, r6 - 8006238: 2800 cmp r0, #0 - 800623a: dc11 bgt.n 8006260 - 800623c: e9cd 3101 strd r3, r1, [sp, #4] - 8006240: 4b30 ldr r3, [pc, #192] @ (8006304 ) - 8006242: 9300 str r3, [sp, #0] - 8006244: f8da 1000 ldr.w r1, [sl] - 8006248: 3304 adds r3, #4 - 800624a: 4422 add r2, r4 - 800624c: 4648 mov r0, r9 - 800624e: f000 ff0f bl 8007070 - 8006252: e6ef b.n 8006034 - 8006254: 07c1 lsls r1, r0, #31 - 8006256: bf42 ittt mi - 8006258: 4b2b ldrmi r3, [pc, #172] @ (8006308 ) - 800625a: 681b ldrmi r3, [r3, #0] - 800625c: f8c9 3020 strmi.w r3, [r9, #32] - 8006260: 2c00 cmp r4, #0 - 8006262: f43f aee7 beq.w 8006034 - 8006266: f8b9 301a ldrh.w r3, [r9, #26] - 800626a: f043 0302 orr.w r3, r3, #2 - 800626e: f8a9 301a strh.w r3, [r9, #26] - 8006272: 4648 mov r0, r9 - 8006274: f000 ff74 bl 8007160 - 8006278: e6dc b.n 8006034 - 800627a: f8d9 900c ldr.w r9, [r9, #12] - 800627e: e674 b.n 8005f6a - 8006280: 7a20 ldrb r0, [r4, #8] - 8006282: b128 cbz r0, 8006290 - 8006284: f89c 3034 ldrb.w r3, [ip, #52] @ 0x34 - 8006288: 3301 adds r3, #1 - 800628a: b2db uxtb r3, r3 - 800628c: 4298 cmp r0, r3 - 800628e: d10a bne.n 80062a6 - 8006290: 8ae0 ldrh r0, [r4, #22] - 8006292: 884b ldrh r3, [r1, #2] - 8006294: 4298 cmp r0, r3 - 8006296: d106 bne.n 80062a6 - 8006298: 6823 ldr r3, [r4, #0] - 800629a: 4573 cmp r3, lr - 800629c: f000 8337 beq.w 800690e - 80062a0: 2b00 cmp r3, #0 - 80062a2: f000 8334 beq.w 800690e - 80062a6: 46a1 mov r9, r4 - 80062a8: 68e4 ldr r4, [r4, #12] - 80062aa: e66a b.n 8005f82 - 80062ac: 079b lsls r3, r3, #30 - 80062ae: f57f aec1 bpl.w 8006034 - 80062b2: 7d60 ldrb r0, [r4, #21] - 80062b4: f7fe fc48 bl 8004b48 - 80062b8: 4682 mov sl, r0 - 80062ba: bb58 cbnz r0, 8006314 - 80062bc: 69a3 ldr r3, [r4, #24] - 80062be: 2b00 cmp r3, #0 - 80062c0: f43f aeb8 beq.w 8006034 - 80062c4: 4601 mov r1, r0 - 80062c6: f04f 32ff mov.w r2, #4294967295 - 80062ca: 6920 ldr r0, [r4, #16] - 80062cc: 4798 blx r3 - 80062ce: e6b1 b.n 8006034 - 80062d0: 0800c394 .word 0x0800c394 - 80062d4: 0800c59e .word 0x0800c59e - 80062d8: 0800b767 .word 0x0800b767 - 80062dc: 0800c5c5 .word 0x0800c5c5 - 80062e0: 0800c5ef .word 0x0800c5ef - 80062e4: 0800c616 .word 0x0800c616 - 80062e8: 0800c641 .word 0x0800c641 - 80062ec: 20018acc .word 0x20018acc - 80062f0: 20018ab0 .word 0x20018ab0 - 80062f4: 20018aad .word 0x20018aad - 80062f8: 20018aa4 .word 0x20018aa4 - 80062fc: 20018aae .word 0x20018aae - 8006300: 0800c66b .word 0x0800c66b - 8006304: 20005b48 .word 0x20005b48 - 8006308: 20018aa0 .word 0x20018aa0 - 800630c: 20018aa8 .word 0x20018aa8 - 8006310: 20018aac .word 0x20018aac - 8006314: f8d8 3014 ldr.w r3, [r8, #20] - 8006318: 6832 ldr r2, [r6, #0] - 800631a: 6003 str r3, [r0, #0] - 800631c: f8d8 3010 ldr.w r3, [r8, #16] - 8006320: 6043 str r3, [r0, #4] - 8006322: 8ae3 ldrh r3, [r4, #22] - 8006324: 82c3 strh r3, [r0, #22] - 8006326: 7813 ldrb r3, [r2, #0] - 8006328: 7852 ldrb r2, [r2, #1] - 800632a: ea43 2302 orr.w r3, r3, r2, lsl #8 - 800632e: 8303 strh r3, [r0, #24] - 8006330: 2303 movs r3, #3 - 8006332: 7503 strb r3, [r0, #20] - 8006334: f8db 3000 ldr.w r3, [fp] - 8006338: 3301 adds r3, #1 - 800633a: 6243 str r3, [r0, #36] @ 0x24 - 800633c: 62c3 str r3, [r0, #44] @ 0x2c - 800633e: f7fe fa3f bl 80047c0 - 8006342: f8db 3000 ldr.w r3, [fp] - 8006346: f8ca 0058 str.w r0, [sl, #88] @ 0x58 - 800634a: 3b01 subs r3, #1 - 800634c: f8ca 3054 str.w r3, [sl, #84] @ 0x54 - 8006350: 6923 ldr r3, [r4, #16] - 8006352: f8ca 0050 str.w r0, [sl, #80] @ 0x50 - 8006356: f8ca 0044 str.w r0, [sl, #68] @ 0x44 - 800635a: f8ca 005c str.w r0, [sl, #92] @ 0x5c - 800635e: f8ca 407c str.w r4, [sl, #124] @ 0x7c - 8006362: f8ca 3010 str.w r3, [sl, #16] - 8006366: 7a63 ldrb r3, [r4, #9] - 8006368: f003 030c and.w r3, r3, #12 - 800636c: f88a 3009 strb.w r3, [sl, #9] - 8006370: 7a23 ldrb r3, [r4, #8] - 8006372: f88a 3008 strb.w r3, [sl, #8] - 8006376: 683b ldr r3, [r7, #0] - 8006378: f8ca 300c str.w r3, [sl, #12] - 800637c: f8c7 a000 str.w sl, [r7] - 8006380: f001 f9c4 bl 800770c - 8006384: 4ba4 ldr r3, [pc, #656] @ (8006618 ) - 8006386: 2201 movs r2, #1 - 8006388: 4650 mov r0, sl - 800638a: 701a strb r2, [r3, #0] - 800638c: f7ff f886 bl 800549c - 8006390: 6833 ldr r3, [r6, #0] - 8006392: f8ba 6032 ldrh.w r6, [sl, #50] @ 0x32 - 8006396: 89db ldrh r3, [r3, #14] - 8006398: f8aa 3060 strh.w r3, [sl, #96] @ 0x60 - 800639c: f10a 0404 add.w r4, sl, #4 - 80063a0: f8aa 3062 strh.w r3, [sl, #98] @ 0x62 - 80063a4: 4620 mov r0, r4 - 80063a6: f003 fa6f bl 8009888 - 80063aa: 4622 mov r2, r4 - 80063ac: 4601 mov r1, r0 - 80063ae: 4630 mov r0, r6 - 80063b0: f7fe fa20 bl 80047f4 - 80063b4: 2112 movs r1, #18 - 80063b6: f8aa 0032 strh.w r0, [sl, #50] @ 0x32 - 80063ba: 4650 mov r0, sl - 80063bc: f000 fcd8 bl 8006d70 - 80063c0: b120 cbz r0, 80063cc - 80063c2: 4649 mov r1, r9 - 80063c4: 4650 mov r0, sl - 80063c6: f7fe fad5 bl 8004974 - 80063ca: e633 b.n 8006034 - 80063cc: 4650 mov r0, sl - 80063ce: e751 b.n 8006274 - 80063d0: 4b92 ldr r3, [pc, #584] @ (800661c ) - 80063d2: 602c str r4, [r5, #0] - 80063d4: 781a ldrb r2, [r3, #0] - 80063d6: 0751 lsls r1, r2, #29 - 80063d8: d53c bpl.n 8006454 - 80063da: 7d21 ldrb r1, [r4, #20] - 80063dc: 2902 cmp r1, #2 - 80063de: d122 bne.n 8006426 - 80063e0: 6d22 ldr r2, [r4, #80] @ 0x50 - 80063e2: f8da 3000 ldr.w r3, [sl] - 80063e6: 429a cmp r2, r3 - 80063e8: d109 bne.n 80063fe - 80063ea: f898 3000 ldrb.w r3, [r8] - 80063ee: f043 0308 orr.w r3, r3, #8 - 80063f2: f888 3000 strb.w r3, [r8] - 80063f6: 8b63 ldrh r3, [r4, #26] - 80063f8: f023 0301 bic.w r3, r3, #1 - 80063fc: 8363 strh r3, [r4, #26] - 80063fe: f898 3000 ldrb.w r3, [r8] - 8006402: 0719 lsls r1, r3, #28 - 8006404: f140 8204 bpl.w 8006810 - 8006408: f8d4 3090 ldr.w r3, [r4, #144] @ 0x90 - 800640c: b11b cbz r3, 8006416 - 800640e: 6920 ldr r0, [r4, #16] - 8006410: f06f 010d mvn.w r1, #13 - 8006414: 4798 blx r3 - 8006416: 4882 ldr r0, [pc, #520] @ (8006620 ) - 8006418: 4621 mov r1, r4 - 800641a: f7fe fa45 bl 80048a8 - 800641e: 4620 mov r0, r4 - 8006420: f7fe f908 bl 8004634 - 8006424: e6b9 b.n 800619a - 8006426: 6a62 ldr r2, [r4, #36] @ 0x24 - 8006428: f8db 3000 ldr.w r3, [fp] - 800642c: 429a cmp r2, r3 - 800642e: d007 beq.n 8006440 - 8006430: 1a9b subs r3, r3, r2 - 8006432: d4e4 bmi.n 80063fe - 8006434: 8d22 ldrh r2, [r4, #40] @ 0x28 - 8006436: 1a9b subs r3, r3, r2 - 8006438: 2b00 cmp r3, #0 - 800643a: dce0 bgt.n 80063fe - 800643c: 8b63 ldrh r3, [r4, #26] - 800643e: e010 b.n 8006462 - 8006440: 2900 cmp r1, #0 - 8006442: d1d2 bne.n 80063ea - 8006444: 4b77 ldr r3, [pc, #476] @ (8006624 ) - 8006446: 4978 ldr r1, [pc, #480] @ (8006628 ) - 8006448: 4878 ldr r0, [pc, #480] @ (800662c ) - 800644a: f44f 724e mov.w r2, #824 @ 0x338 - 800644e: f004 f99b bl 800a788 - 8006452: e7ca b.n 80063ea - 8006454: 0792 lsls r2, r2, #30 - 8006456: 8b63 ldrh r3, [r4, #26] - 8006458: d506 bpl.n 8006468 - 800645a: 7d22 ldrb r2, [r4, #20] - 800645c: 3a02 subs r2, #2 - 800645e: 2a01 cmp r2, #1 - 8006460: d902 bls.n 8006468 - 8006462: f043 0302 orr.w r3, r3, #2 - 8006466: e7c9 b.n 80063fc - 8006468: 06d8 lsls r0, r3, #27 - 800646a: bf5e ittt pl - 800646c: 4b70 ldrpl r3, [pc, #448] @ (8006630 ) - 800646e: 681b ldrpl r3, [r3, #0] - 8006470: 6223 strpl r3, [r4, #32] - 8006472: 2300 movs r3, #0 - 8006474: f8a4 309a strh.w r3, [r4, #154] @ 0x9a - 8006478: 4620 mov r0, r4 - 800647a: f7ff f80f bl 800549c - 800647e: 7d23 ldrb r3, [r4, #20] - 8006480: 3b02 subs r3, #2 - 8006482: 2b07 cmp r3, #7 - 8006484: d8bb bhi.n 80063fe - 8006486: e8df f013 tbh [pc, r3, lsl #1] - 800648a: 0008 .short 0x0008 - 800648c: 0126009b .word 0x0126009b - 8006490: 0172012a .word 0x0172012a - 8006494: 018b0126 .word 0x018b0126 - 8006498: 01aa .short 0x01aa - 800649a: 4b60 ldr r3, [pc, #384] @ (800661c ) - 800649c: 781b ldrb r3, [r3, #0] - 800649e: f003 0212 and.w r2, r3, #18 - 80064a2: 2a12 cmp r2, #18 - 80064a4: d16c bne.n 8006580 - 80064a6: 6c62 ldr r2, [r4, #68] @ 0x44 - 80064a8: f8da 1000 ldr.w r1, [sl] - 80064ac: 3201 adds r2, #1 - 80064ae: 428a cmp r2, r1 - 80064b0: d166 bne.n 8006580 - 80064b2: f8db 3000 ldr.w r3, [fp] - 80064b6: 6462 str r2, [r4, #68] @ 0x44 - 80064b8: 1c59 adds r1, r3, #1 - 80064ba: 6832 ldr r2, [r6, #0] - 80064bc: 6261 str r1, [r4, #36] @ 0x24 - 80064be: 62e1 str r1, [r4, #44] @ 0x2c - 80064c0: 3b01 subs r3, #1 - 80064c2: 89d2 ldrh r2, [r2, #14] - 80064c4: 6563 str r3, [r4, #84] @ 0x54 - 80064c6: 2304 movs r3, #4 - 80064c8: 18e6 adds r6, r4, r3 - 80064ca: 7523 strb r3, [r4, #20] - 80064cc: f8a4 2060 strh.w r2, [r4, #96] @ 0x60 - 80064d0: f8a4 2062 strh.w r2, [r4, #98] @ 0x62 - 80064d4: 4630 mov r0, r6 - 80064d6: 8e67 ldrh r7, [r4, #50] @ 0x32 - 80064d8: f003 f9d6 bl 8009888 - 80064dc: 4632 mov r2, r6 - 80064de: 4601 mov r1, r0 - 80064e0: 4638 mov r0, r7 - 80064e2: f7fe f987 bl 80047f4 - 80064e6: f241 131c movw r3, #4380 @ 0x111c - 80064ea: 0042 lsls r2, r0, #1 - 80064ec: 429a cmp r2, r3 - 80064ee: 4616 mov r6, r2 - 80064f0: bf38 it cc - 80064f2: 461e movcc r6, r3 - 80064f4: ebb6 0f80 cmp.w r6, r0, lsl #2 - 80064f8: 8660 strh r0, [r4, #50] @ 0x32 - 80064fa: ea4f 0180 mov.w r1, r0, lsl #2 - 80064fe: d933 bls.n 8006568 - 8006500: b28b uxth r3, r1 - 8006502: f8a4 3048 strh.w r3, [r4, #72] @ 0x48 - 8006506: f8b4 3066 ldrh.w r3, [r4, #102] @ 0x66 - 800650a: b933 cbnz r3, 800651a - 800650c: 4b45 ldr r3, [pc, #276] @ (8006624 ) - 800650e: 4949 ldr r1, [pc, #292] @ (8006634 ) - 8006510: 4846 ldr r0, [pc, #280] @ (800662c ) - 8006512: f44f 725b mov.w r2, #876 @ 0x36c - 8006516: f004 f937 bl 800a788 - 800651a: f8b4 3066 ldrh.w r3, [r4, #102] @ 0x66 - 800651e: 6f26 ldr r6, [r4, #112] @ 0x70 - 8006520: 3b01 subs r3, #1 - 8006522: f8a4 3066 strh.w r3, [r4, #102] @ 0x66 - 8006526: bb1e cbnz r6, 8006570 - 8006528: 6ee6 ldr r6, [r4, #108] @ 0x6c - 800652a: b936 cbnz r6, 800653a - 800652c: 4b3d ldr r3, [pc, #244] @ (8006624 ) - 800652e: 4942 ldr r1, [pc, #264] @ (8006638 ) - 8006530: 483e ldr r0, [pc, #248] @ (800662c ) - 8006532: f44f 725d mov.w r2, #884 @ 0x374 - 8006536: f004 f927 bl 800a788 - 800653a: 6833 ldr r3, [r6, #0] - 800653c: 66e3 str r3, [r4, #108] @ 0x6c - 800653e: 4630 mov r0, r6 - 8006540: f7fe f904 bl 800474c - 8006544: 6f23 ldr r3, [r4, #112] @ 0x70 - 8006546: b9b3 cbnz r3, 8006576 - 8006548: f64f 73ff movw r3, #65535 @ 0xffff - 800654c: 8623 strh r3, [r4, #48] @ 0x30 - 800654e: f8d4 3088 ldr.w r3, [r4, #136] @ 0x88 - 8006552: 2b00 cmp r3, #0 - 8006554: f43f af72 beq.w 800643c - 8006558: 6920 ldr r0, [r4, #16] - 800655a: 2200 movs r2, #0 - 800655c: 4621 mov r1, r4 - 800655e: 4798 blx r3 - 8006560: 300d adds r0, #13 - 8006562: f47f af6b bne.w 800643c - 8006566: e618 b.n 800619a - 8006568: 429a cmp r2, r3 - 800656a: bf88 it hi - 800656c: b293 uxthhi r3, r2 - 800656e: e7c8 b.n 8006502 - 8006570: 6833 ldr r3, [r6, #0] - 8006572: 6723 str r3, [r4, #112] @ 0x70 - 8006574: e7e3 b.n 800653e - 8006576: 2300 movs r3, #0 - 8006578: 8623 strh r3, [r4, #48] @ 0x30 - 800657a: f884 3042 strb.w r3, [r4, #66] @ 0x42 - 800657e: e7e6 b.n 800654e - 8006580: 06d9 lsls r1, r3, #27 - 8006582: f57f af3c bpl.w 80063fe - 8006586: 6833 ldr r3, [r6, #0] - 8006588: 4a2c ldr r2, [pc, #176] @ (800663c ) - 800658a: 8818 ldrh r0, [r3, #0] - 800658c: 8811 ldrh r1, [r2, #0] - 800658e: f8db 2000 ldr.w r2, [fp] - 8006592: 9002 str r0, [sp, #8] - 8006594: 885b ldrh r3, [r3, #2] - 8006596: 9301 str r3, [sp, #4] - 8006598: 4b29 ldr r3, [pc, #164] @ (8006640 ) - 800659a: 9300 str r3, [sp, #0] - 800659c: 440a add r2, r1 - 800659e: 3304 adds r3, #4 - 80065a0: f8da 1000 ldr.w r1, [sl] - 80065a4: 4620 mov r0, r4 - 80065a6: f000 fd63 bl 8007070 - 80065aa: f894 3042 ldrb.w r3, [r4, #66] @ 0x42 - 80065ae: 2b05 cmp r3, #5 - 80065b0: f63f af25 bhi.w 80063fe - 80065b4: 2300 movs r3, #0 - 80065b6: 8623 strh r3, [r4, #48] @ 0x30 - 80065b8: 4620 mov r0, r4 - 80065ba: f000 ff97 bl 80074ec - 80065be: e71e b.n 80063fe - 80065c0: 4b16 ldr r3, [pc, #88] @ (800661c ) - 80065c2: 781b ldrb r3, [r3, #0] - 80065c4: 06da lsls r2, r3, #27 - 80065c6: d578 bpl.n 80066ba - 80065c8: 6c63 ldr r3, [r4, #68] @ 0x44 - 80065ca: f8da 1000 ldr.w r1, [sl] - 80065ce: 43db mvns r3, r3 - 80065d0: 42cb cmn r3, r1 - 80065d2: d461 bmi.n 8006698 - 80065d4: 6d23 ldr r3, [r4, #80] @ 0x50 - 80065d6: 1acb subs r3, r1, r3 - 80065d8: 2b00 cmp r3, #0 - 80065da: dc5d bgt.n 8006698 - 80065dc: 2304 movs r3, #4 - 80065de: 7523 strb r3, [r4, #20] - 80065e0: 6fe3 ldr r3, [r4, #124] @ 0x7c - 80065e2: b91b cbnz r3, 80065ec - 80065e4: 4620 mov r0, r4 - 80065e6: f7fe fa4b bl 8004a80 - 80065ea: e5d6 b.n 800619a - 80065ec: 699b ldr r3, [r3, #24] - 80065ee: b933 cbnz r3, 80065fe - 80065f0: 4b0c ldr r3, [pc, #48] @ (8006624 ) - 80065f2: 4914 ldr r1, [pc, #80] @ (8006644 ) - 80065f4: 480d ldr r0, [pc, #52] @ (800662c ) - 80065f6: f44f 726a mov.w r2, #936 @ 0x3a8 - 80065fa: f004 f8c5 bl 800a788 - 80065fe: 6fe3 ldr r3, [r4, #124] @ 0x7c - 8006600: 699b ldr r3, [r3, #24] - 8006602: 2b00 cmp r3, #0 - 8006604: d0ee beq.n 80065e4 - 8006606: 6920 ldr r0, [r4, #16] - 8006608: 2200 movs r2, #0 - 800660a: 4621 mov r1, r4 - 800660c: 4798 blx r3 - 800660e: b1d8 cbz r0, 8006648 - 8006610: 300d adds r0, #13 - 8006612: f43f adc2 beq.w 800619a - 8006616: e7e5 b.n 80065e4 - 8006618: 20018a8f .word 0x20018a8f - 800661c: 20018aad .word 0x20018aad - 8006620: 20018a94 .word 0x20018a94 - 8006624: 0800c394 .word 0x0800c394 - 8006628: 0800c698 .word 0x0800c698 - 800662c: 0800b767 .word 0x0800b767 - 8006630: 20018aa0 .word 0x20018aa0 - 8006634: 0800c6b8 .word 0x0800c6b8 - 8006638: 0800c6ce .word 0x0800c6ce - 800663c: 20018aae .word 0x20018aae - 8006640: 20005b48 .word 0x20005b48 - 8006644: 0800c6e1 .word 0x0800c6e1 - 8006648: 4620 mov r0, r4 - 800664a: f7fe ffeb bl 8005624 - 800664e: 4a9b ldr r2, [pc, #620] @ (80068bc ) - 8006650: 8813 ldrh r3, [r2, #0] - 8006652: b10b cbz r3, 8006658 - 8006654: 3b01 subs r3, #1 - 8006656: 8013 strh r3, [r2, #0] - 8006658: 8e61 ldrh r1, [r4, #50] @ 0x32 - 800665a: f241 131c movw r3, #4380 @ 0x111c - 800665e: 004a lsls r2, r1, #1 - 8006660: 429a cmp r2, r3 - 8006662: 4616 mov r6, r2 - 8006664: bf38 it cc - 8006666: 461e movcc r6, r3 - 8006668: ebb6 0f81 cmp.w r6, r1, lsl #2 - 800666c: ea4f 0081 mov.w r0, r1, lsl #2 - 8006670: d90e bls.n 8006690 - 8006672: b283 uxth r3, r0 - 8006674: f8a4 3048 strh.w r3, [r4, #72] @ 0x48 - 8006678: f898 3000 ldrb.w r3, [r8] - 800667c: 069e lsls r6, r3, #26 - 800667e: f57f aebe bpl.w 80063fe - 8006682: 8b63 ldrh r3, [r4, #26] - 8006684: f043 0302 orr.w r3, r3, #2 - 8006688: 8363 strh r3, [r4, #26] - 800668a: 2307 movs r3, #7 - 800668c: 7523 strb r3, [r4, #20] - 800668e: e6b6 b.n 80063fe - 8006690: 429a cmp r2, r3 - 8006692: bf88 it hi - 8006694: b293 uxthhi r3, r2 - 8006696: e7ed b.n 8006674 - 8006698: 6833 ldr r3, [r6, #0] - 800669a: 4a89 ldr r2, [pc, #548] @ (80068c0 ) - 800669c: 881e ldrh r6, [r3, #0] - 800669e: 8810 ldrh r0, [r2, #0] - 80066a0: f8db 2000 ldr.w r2, [fp] - 80066a4: 9602 str r6, [sp, #8] - 80066a6: 885b ldrh r3, [r3, #2] - 80066a8: 9301 str r3, [sp, #4] - 80066aa: 4b86 ldr r3, [pc, #536] @ (80068c4 ) - 80066ac: 9300 str r3, [sp, #0] - 80066ae: 4402 add r2, r0 - 80066b0: 3304 adds r3, #4 - 80066b2: 4620 mov r0, r4 - 80066b4: f000 fcdc bl 8007070 - 80066b8: e6a1 b.n 80063fe - 80066ba: 079f lsls r7, r3, #30 - 80066bc: f57f ae9f bpl.w 80063fe - 80066c0: 6a63 ldr r3, [r4, #36] @ 0x24 - 80066c2: f8db 2000 ldr.w r2, [fp] - 80066c6: 3b01 subs r3, #1 - 80066c8: 4293 cmp r3, r2 - 80066ca: f47f ae98 bne.w 80063fe - 80066ce: 4620 mov r0, r4 - 80066d0: f000 fc58 bl 8006f84 - 80066d4: e693 b.n 80063fe - 80066d6: 4620 mov r0, r4 - 80066d8: f7fe ffa4 bl 8005624 - 80066dc: e7cc b.n 8006678 - 80066de: 4620 mov r0, r4 - 80066e0: f7fe ffa0 bl 8005624 - 80066e4: f898 3000 ldrb.w r3, [r8] - 80066e8: 0698 lsls r0, r3, #26 - 80066ea: d52f bpl.n 800674c - 80066ec: 4a76 ldr r2, [pc, #472] @ (80068c8 ) - 80066ee: 8b63 ldrh r3, [r4, #26] - 80066f0: 7812 ldrb r2, [r2, #0] - 80066f2: 06d1 lsls r1, r2, #27 - 80066f4: f043 0302 orr.w r3, r3, #2 - 80066f8: d525 bpl.n 8006746 - 80066fa: 6d21 ldr r1, [r4, #80] @ 0x50 - 80066fc: f8da 2000 ldr.w r2, [sl] - 8006700: 4291 cmp r1, r2 - 8006702: d120 bne.n 8006746 - 8006704: 6ee2 ldr r2, [r4, #108] @ 0x6c - 8006706: b9f2 cbnz r2, 8006746 - 8006708: 8363 strh r3, [r4, #26] - 800670a: 4620 mov r0, r4 - 800670c: f7fe f89a bl 8004844 - 8006710: 683b ldr r3, [r7, #0] - 8006712: 429c cmp r4, r3 - 8006714: d109 bne.n 800672a - 8006716: 68e3 ldr r3, [r4, #12] - 8006718: 603b str r3, [r7, #0] - 800671a: e008 b.n 800672e - 800671c: 68da ldr r2, [r3, #12] - 800671e: 4294 cmp r4, r2 - 8006720: d102 bne.n 8006728 - 8006722: 68e2 ldr r2, [r4, #12] - 8006724: 60da str r2, [r3, #12] - 8006726: e002 b.n 800672e - 8006728: 4613 mov r3, r2 - 800672a: 2b00 cmp r3, #0 - 800672c: d1f6 bne.n 800671c - 800672e: 4b67 ldr r3, [pc, #412] @ (80068cc ) - 8006730: 2201 movs r2, #1 - 8006732: 701a strb r2, [r3, #0] - 8006734: 230a movs r3, #10 - 8006736: 7523 strb r3, [r4, #20] - 8006738: 4b65 ldr r3, [pc, #404] @ (80068d0 ) - 800673a: 681a ldr r2, [r3, #0] - 800673c: 60e2 str r2, [r4, #12] - 800673e: 601c str r4, [r3, #0] - 8006740: f000 ffe4 bl 800770c - 8006744: e65b b.n 80063fe - 8006746: 8363 strh r3, [r4, #26] - 8006748: 2308 movs r3, #8 - 800674a: e79f b.n 800668c - 800674c: 4b5e ldr r3, [pc, #376] @ (80068c8 ) - 800674e: 781b ldrb r3, [r3, #0] - 8006750: 06da lsls r2, r3, #27 - 8006752: f57f ae54 bpl.w 80063fe - 8006756: 6d22 ldr r2, [r4, #80] @ 0x50 - 8006758: f8da 3000 ldr.w r3, [sl] - 800675c: 429a cmp r2, r3 - 800675e: f47f ae4e bne.w 80063fe - 8006762: 6ee3 ldr r3, [r4, #108] @ 0x6c - 8006764: 2b00 cmp r3, #0 - 8006766: f47f ae4a bne.w 80063fe - 800676a: 2306 movs r3, #6 - 800676c: e78e b.n 800668c - 800676e: 4620 mov r0, r4 - 8006770: f7fe ff58 bl 8005624 - 8006774: f898 3000 ldrb.w r3, [r8] - 8006778: 069b lsls r3, r3, #26 - 800677a: f57f ae40 bpl.w 80063fe - 800677e: 8b63 ldrh r3, [r4, #26] - 8006780: f043 0302 orr.w r3, r3, #2 - 8006784: 8363 strh r3, [r4, #26] - 8006786: 4620 mov r0, r4 - 8006788: f7fe f85c bl 8004844 - 800678c: 683b ldr r3, [r7, #0] - 800678e: 429c cmp r4, r3 - 8006790: d0c1 beq.n 8006716 - 8006792: 2b00 cmp r3, #0 - 8006794: d0cb beq.n 800672e - 8006796: 68da ldr r2, [r3, #12] - 8006798: 4294 cmp r4, r2 - 800679a: d0c2 beq.n 8006722 - 800679c: 4613 mov r3, r2 - 800679e: e7f8 b.n 8006792 - 80067a0: 4620 mov r0, r4 - 80067a2: f7fe ff3f bl 8005624 - 80067a6: 4b48 ldr r3, [pc, #288] @ (80068c8 ) - 80067a8: 781b ldrb r3, [r3, #0] - 80067aa: 06de lsls r6, r3, #27 - 80067ac: f57f ae27 bpl.w 80063fe - 80067b0: 6d22 ldr r2, [r4, #80] @ 0x50 - 80067b2: f8da 3000 ldr.w r3, [sl] - 80067b6: 429a cmp r2, r3 - 80067b8: f47f ae21 bne.w 80063fe - 80067bc: 6ee3 ldr r3, [r4, #108] @ 0x6c - 80067be: 2b00 cmp r3, #0 - 80067c0: f47f ae1d bne.w 80063fe - 80067c4: 4620 mov r0, r4 - 80067c6: f7fe f83d bl 8004844 - 80067ca: 683b ldr r3, [r7, #0] - 80067cc: 429c cmp r4, r3 - 80067ce: d0a2 beq.n 8006716 - 80067d0: 2b00 cmp r3, #0 - 80067d2: d0ac beq.n 800672e - 80067d4: 68da ldr r2, [r3, #12] - 80067d6: 4294 cmp r4, r2 - 80067d8: d0a3 beq.n 8006722 - 80067da: 4613 mov r3, r2 - 80067dc: e7f8 b.n 80067d0 - 80067de: 4620 mov r0, r4 - 80067e0: f7fe ff20 bl 8005624 - 80067e4: 4b38 ldr r3, [pc, #224] @ (80068c8 ) - 80067e6: 781b ldrb r3, [r3, #0] - 80067e8: 06d8 lsls r0, r3, #27 - 80067ea: f57f ae08 bpl.w 80063fe - 80067ee: 6d21 ldr r1, [r4, #80] @ 0x50 - 80067f0: f8da 2000 ldr.w r2, [sl] - 80067f4: f898 3000 ldrb.w r3, [r8] - 80067f8: 4291 cmp r1, r2 - 80067fa: f47f ae00 bne.w 80063fe - 80067fe: 6ee2 ldr r2, [r4, #108] @ 0x6c - 8006800: 2a00 cmp r2, #0 - 8006802: f47f adfc bne.w 80063fe - 8006806: f043 0310 orr.w r3, r3, #16 - 800680a: f888 3000 strb.w r3, [r8] - 800680e: e5f6 b.n 80063fe - 8006810: 4b2a ldr r3, [pc, #168] @ (80068bc ) - 8006812: 881a ldrh r2, [r3, #0] - 8006814: b12a cbz r2, 8006822 - 8006816: f8d4 3080 ldr.w r3, [r4, #128] @ 0x80 - 800681a: b9f3 cbnz r3, 800685a - 800681c: 4a27 ldr r2, [pc, #156] @ (80068bc ) - 800681e: 2300 movs r3, #0 - 8006820: 8013 strh r3, [r2, #0] - 8006822: 4620 mov r0, r4 - 8006824: f7fe fe80 bl 8005528 - 8006828: 2800 cmp r0, #0 - 800682a: f47f acb6 bne.w 800619a - 800682e: f8d9 3000 ldr.w r3, [r9] - 8006832: b333 cbz r3, 8006882 - 8006834: 6fa3 ldr r3, [r4, #120] @ 0x78 - 8006836: b133 cbz r3, 8006846 - 8006838: 4b26 ldr r3, [pc, #152] @ (80068d4 ) - 800683a: 4927 ldr r1, [pc, #156] @ (80068d8 ) - 800683c: 4827 ldr r0, [pc, #156] @ (80068dc ) - 800683e: f44f 72f3 mov.w r2, #486 @ 0x1e6 - 8006842: f003 ffa1 bl 800a788 - 8006846: 8b63 ldrh r3, [r4, #26] - 8006848: f8d9 2000 ldr.w r2, [r9] - 800684c: f013 0310 ands.w r3, r3, #16 - 8006850: d009 beq.n 8006866 - 8006852: 4610 mov r0, r2 - 8006854: f7fd fc3c bl 80040d0 - 8006858: e6c4 b.n 80065e4 - 800685a: 6920 ldr r0, [r4, #16] - 800685c: 4621 mov r1, r4 - 800685e: 4798 blx r3 - 8006860: 300d adds r0, #13 - 8006862: d1db bne.n 800681c - 8006864: e499 b.n 800619a - 8006866: f8d4 6084 ldr.w r6, [r4, #132] @ 0x84 - 800686a: b306 cbz r6, 80068ae - 800686c: 6920 ldr r0, [r4, #16] - 800686e: 4621 mov r1, r4 - 8006870: 47b0 blx r6 - 8006872: f110 0f0d cmn.w r0, #13 - 8006876: f43f ac90 beq.w 800619a - 800687a: b110 cbz r0, 8006882 - 800687c: f8d9 3000 ldr.w r3, [r9] - 8006880: 67a3 str r3, [r4, #120] @ 0x78 - 8006882: f898 3000 ldrb.w r3, [r8] - 8006886: 069a lsls r2, r3, #26 - 8006888: d505 bpl.n 8006896 - 800688a: 6fa3 ldr r3, [r4, #120] @ 0x78 - 800688c: b343 cbz r3, 80068e0 - 800688e: 7b5a ldrb r2, [r3, #13] - 8006890: f042 0220 orr.w r2, r2, #32 - 8006894: 735a strb r2, [r3, #13] - 8006896: 2300 movs r3, #0 - 8006898: 4620 mov r0, r4 - 800689a: 602b str r3, [r5, #0] - 800689c: f7fe fe44 bl 8005528 - 80068a0: 2800 cmp r0, #0 - 80068a2: f47f ac7a bne.w 800619a - 80068a6: 4620 mov r0, r4 - 80068a8: f000 fc5a bl 8007160 - 80068ac: e475 b.n 800619a - 80068ae: 4633 mov r3, r6 - 80068b0: 4621 mov r1, r4 - 80068b2: 4630 mov r0, r6 - 80068b4: f7fe fab2 bl 8004e1c - 80068b8: e7db b.n 8006872 - 80068ba: bf00 nop - 80068bc: 20018ab0 .word 0x20018ab0 - 80068c0: 20018aae .word 0x20018aae - 80068c4: 20005b48 .word 0x20005b48 - 80068c8: 20018aad .word 0x20018aad - 80068cc: 20018a8f .word 0x20018a8f - 80068d0: 20018a90 .word 0x20018a90 - 80068d4: 0800c394 .word 0x0800c394 - 80068d8: 0800c6ff .word 0x0800c6ff - 80068dc: 0800b767 .word 0x0800b767 - 80068e0: 8d23 ldrh r3, [r4, #40] @ 0x28 - 80068e2: f8d4 6084 ldr.w r6, [r4, #132] @ 0x84 - 80068e6: f5b3 6f06 cmp.w r3, #2144 @ 0x860 - 80068ea: bf1c itt ne - 80068ec: 3301 addne r3, #1 - 80068ee: 8523 strhne r3, [r4, #40] @ 0x28 - 80068f0: 2e00 cmp r6, #0 - 80068f2: d0d0 beq.n 8006896 - 80068f4: 2300 movs r3, #0 - 80068f6: 6920 ldr r0, [r4, #16] - 80068f8: 461a mov r2, r3 - 80068fa: 4621 mov r1, r4 - 80068fc: 47b0 blx r6 - 80068fe: 300d adds r0, #13 - 8006900: d1c9 bne.n 8006896 - 8006902: e44a b.n 800619a - 8006904: f1b9 0f00 cmp.w r9, #0 - 8006908: f47f ac05 bne.w 8006116 - 800690c: e413 b.n 8006136 - 800690e: f1b9 0f00 cmp.w r9, #0 - 8006912: d005 beq.n 8006920 - 8006914: 68e3 ldr r3, [r4, #12] - 8006916: f8c9 300c str.w r3, [r9, #12] - 800691a: 4b0e ldr r3, [pc, #56] @ (8006954 ) - 800691c: 60e2 str r2, [r4, #12] - 800691e: 601c str r4, [r3, #0] - 8006920: 4b0d ldr r3, [pc, #52] @ (8006958 ) - 8006922: 781b ldrb r3, [r3, #0] - 8006924: 075a lsls r2, r3, #29 - 8006926: f53f ab85 bmi.w 8006034 - 800692a: f013 0910 ands.w r9, r3, #16 - 800692e: f43f acbd beq.w 80062ac - 8006932: 4b0a ldr r3, [pc, #40] @ (800695c ) - 8006934: f8db 2000 ldr.w r2, [fp] - 8006938: 8818 ldrh r0, [r3, #0] - 800693a: 880b ldrh r3, [r1, #0] - 800693c: 9302 str r3, [sp, #8] - 800693e: 884b ldrh r3, [r1, #2] - 8006940: 9301 str r3, [sp, #4] - 8006942: 4b07 ldr r3, [pc, #28] @ (8006960 ) - 8006944: 9300 str r3, [sp, #0] - 8006946: 4402 add r2, r0 - 8006948: 3304 adds r3, #4 - 800694a: f8da 1000 ldr.w r1, [sl] - 800694e: 4620 mov r0, r4 - 8006950: e47d b.n 800624e - 8006952: bf00 nop - 8006954: 20018a98 .word 0x20018a98 - 8006958: 20018aad .word 0x20018aad - 800695c: 20018aae .word 0x20018aae - 8006960: 20005b48 .word 0x20005b48 - -08006964 : - 8006964: 4a02 ldr r2, [pc, #8] @ (8006970 ) - 8006966: 7813 ldrb r3, [r2, #0] - 8006968: f043 0310 orr.w r3, r3, #16 - 800696c: 7013 strb r3, [r2, #0] - 800696e: 4770 bx lr - 8006970: 20018aac .word 0x20018aac - -08006974 : - 8006974: b510 push {r4, lr} - 8006976: 4604 mov r4, r0 - 8006978: b930 cbnz r0, 8006988 - 800697a: 4b06 ldr r3, [pc, #24] @ (8006994 ) - 800697c: 4906 ldr r1, [pc, #24] @ (8006998 ) - 800697e: 4807 ldr r0, [pc, #28] @ (800699c ) - 8006980: f240 529a movw r2, #1434 @ 0x59a - 8006984: f003 ff00 bl 800a788 - 8006988: 6863 ldr r3, [r4, #4] - 800698a: 7b98 ldrb r0, [r3, #14] - 800698c: 3801 subs r0, #1 - 800698e: bf18 it ne - 8006990: 2001 movne r0, #1 - 8006992: bd10 pop {r4, pc} - 8006994: 0800c719 .word 0x0800c719 - 8006998: 0800c74c .word 0x0800c74c - 800699c: 0800b767 .word 0x0800b767 - -080069a0 : - 80069a0: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 80069a4: 460e mov r6, r1 - 80069a6: f89d a020 ldrb.w sl, [sp, #32] - 80069aa: 4690 mov r8, r2 - 80069ac: 4699 mov r9, r3 - 80069ae: 4607 mov r7, r0 - 80069b0: b928 cbnz r0, 80069be - 80069b2: 4b2d ldr r3, [pc, #180] @ (8006a68 ) - 80069b4: 492d ldr r1, [pc, #180] @ (8006a6c ) - 80069b6: 482e ldr r0, [pc, #184] @ (8006a70 ) - 80069b8: 22a3 movs r2, #163 @ 0xa3 - 80069ba: f003 fee5 bl 800a788 - 80069be: b92e cbnz r6, 80069cc - 80069c0: 4b29 ldr r3, [pc, #164] @ (8006a68 ) - 80069c2: 492c ldr r1, [pc, #176] @ (8006a74 ) - 80069c4: 482a ldr r0, [pc, #168] @ (8006a70 ) - 80069c6: 22a4 movs r2, #164 @ 0xa4 - 80069c8: f003 fede bl 800a788 - 80069cc: 2003 movs r0, #3 - 80069ce: f7fd f8ed bl 8003bac - 80069d2: ea4f 058a mov.w r5, sl, lsl #2 - 80069d6: f005 0504 and.w r5, r5, #4 - 80069da: 4604 mov r4, r0 - 80069dc: b930 cbnz r0, 80069ec - 80069de: 4630 mov r0, r6 - 80069e0: f7fd fb76 bl 80040d0 - 80069e4: 2400 movs r4, #0 - 80069e6: 4620 mov r0, r4 - 80069e8: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 80069ec: 2300 movs r3, #0 - 80069ee: f880 a00a strb.w sl, [r0, #10] - 80069f2: e9c0 3600 strd r3, r6, [r0] - 80069f6: 8933 ldrh r3, [r6, #8] - 80069f8: 42ab cmp r3, r5 - 80069fa: d205 bcs.n 8006a08 - 80069fc: 4b1a ldr r3, [pc, #104] @ (8006a68 ) - 80069fe: 491e ldr r1, [pc, #120] @ (8006a78 ) - 8006a00: 481b ldr r0, [pc, #108] @ (8006a70 ) - 8006a02: 22b0 movs r2, #176 @ 0xb0 - 8006a04: f003 fec0 bl 800a788 - 8006a08: 8933 ldrh r3, [r6, #8] - 8006a0a: 1b5b subs r3, r3, r5 - 8006a0c: 4630 mov r0, r6 - 8006a0e: 8123 strh r3, [r4, #8] - 8006a10: 2114 movs r1, #20 - 8006a12: f7fd fb25 bl 8004060 - 8006a16: 4606 mov r6, r0 - 8006a18: b118 cbz r0, 8006a22 - 8006a1a: 4620 mov r0, r4 - 8006a1c: f7fd fe96 bl 800474c - 8006a20: e7e0 b.n 80069e4 - 8006a22: 6863 ldr r3, [r4, #4] - 8006a24: 8af8 ldrh r0, [r7, #22] - 8006a26: f8d3 a004 ldr.w sl, [r3, #4] - 8006a2a: f8c4 a00c str.w sl, [r4, #12] - 8006a2e: f7fc fe32 bl 8003696 - 8006a32: f8aa 0000 strh.w r0, [sl] - 8006a36: 8b38 ldrh r0, [r7, #24] - 8006a38: f8d4 a00c ldr.w sl, [r4, #12] - 8006a3c: f7fc fe2b bl 8003696 - 8006a40: f8aa 0002 strh.w r0, [sl, #2] - 8006a44: 4648 mov r0, r9 - 8006a46: 68e7 ldr r7, [r4, #12] - 8006a48: f7fc fe28 bl 800369c - 8006a4c: 02ad lsls r5, r5, #10 - 8006a4e: f505 45a0 add.w r5, r5, #20480 @ 0x5000 - 8006a52: 6078 str r0, [r7, #4] - 8006a54: ea48 0005 orr.w r0, r8, r5 - 8006a58: 68e7 ldr r7, [r4, #12] - 8006a5a: f7fc fe1c bl 8003696 - 8006a5e: 68e3 ldr r3, [r4, #12] - 8006a60: 81b8 strh r0, [r7, #12] - 8006a62: 749e strb r6, [r3, #18] - 8006a64: 74de strb r6, [r3, #19] - 8006a66: e7be b.n 80069e6 - 8006a68: 0800c719 .word 0x0800c719 - 8006a6c: 0800c771 .word 0x0800c771 - 8006a70: 0800b767 .word 0x0800b767 - 8006a74: 0800c791 .word 0x0800c791 - 8006a78: 0800c7b2 .word 0x0800c7b2 - -08006a7c : - 8006a7c: 3114 adds r1, #20 - 8006a7e: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 8006a82: b289 uxth r1, r1 - 8006a84: 4606 mov r6, r0 - 8006a86: 4617 mov r7, r2 - 8006a88: 2022 movs r0, #34 @ 0x22 - 8006a8a: f44f 7220 mov.w r2, #640 @ 0x280 - 8006a8e: 4698 mov r8, r3 - 8006a90: f7fd fb82 bl 8004198 - 8006a94: 4605 mov r5, r0 - 8006a96: b348 cbz r0, 8006aec - 8006a98: 8943 ldrh r3, [r0, #10] - 8006a9a: 2b13 cmp r3, #19 - 8006a9c: d806 bhi.n 8006aac - 8006a9e: 4b15 ldr r3, [pc, #84] @ (8006af4 ) - 8006aa0: 4915 ldr r1, [pc, #84] @ (8006af8 ) - 8006aa2: 4816 ldr r0, [pc, #88] @ (8006afc ) - 8006aa4: f240 7223 movw r2, #1827 @ 0x723 - 8006aa8: f003 fe6e bl 800a788 - 8006aac: 4640 mov r0, r8 - 8006aae: 686c ldr r4, [r5, #4] - 8006ab0: f7fc fdf1 bl 8003696 - 8006ab4: 8020 strh r0, [r4, #0] - 8006ab6: f8bd 0018 ldrh.w r0, [sp, #24] - 8006aba: f7fc fdec bl 8003696 - 8006abe: 6067 str r7, [r4, #4] - 8006ac0: 8060 strh r0, [r4, #2] - 8006ac2: 4630 mov r0, r6 - 8006ac4: f7fc fdea bl 800369c - 8006ac8: 60a0 str r0, [r4, #8] - 8006aca: f89d 001c ldrb.w r0, [sp, #28] - 8006ace: f440 40a0 orr.w r0, r0, #20480 @ 0x5000 - 8006ad2: f7fc fde0 bl 8003696 - 8006ad6: 81a0 strh r0, [r4, #12] - 8006ad8: f8bd 0020 ldrh.w r0, [sp, #32] - 8006adc: f7fc fddb bl 8003696 - 8006ae0: 2300 movs r3, #0 - 8006ae2: 81e0 strh r0, [r4, #14] - 8006ae4: 7423 strb r3, [r4, #16] - 8006ae6: 7463 strb r3, [r4, #17] - 8006ae8: 74a3 strb r3, [r4, #18] - 8006aea: 74e3 strb r3, [r4, #19] - 8006aec: 4628 mov r0, r5 - 8006aee: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 8006af2: bf00 nop - 8006af4: 0800c719 .word 0x0800c719 - 8006af8: 0800c7c7 .word 0x0800c7c7 - 8006afc: 0800b767 .word 0x0800b767 - -08006b00 : - 8006b00: b57f push {r0, r1, r2, r3, r4, r5, r6, lr} - 8006b02: 460d mov r5, r1 - 8006b04: 4616 mov r6, r2 - 8006b06: 4604 mov r4, r0 - 8006b08: b930 cbnz r0, 8006b18 - 8006b0a: 4b0d ldr r3, [pc, #52] @ (8006b40 ) - 8006b0c: 490d ldr r1, [pc, #52] @ (8006b44 ) - 8006b0e: 480e ldr r0, [pc, #56] @ (8006b48 ) - 8006b10: f240 7242 movw r2, #1858 @ 0x742 - 8006b14: f003 fe38 bl 800a788 - 8006b18: 8d63 ldrh r3, [r4, #42] @ 0x2a - 8006b1a: 9302 str r3, [sp, #8] - 8006b1c: 2310 movs r3, #16 - 8006b1e: 9301 str r3, [sp, #4] - 8006b20: 8b23 ldrh r3, [r4, #24] - 8006b22: 9300 str r3, [sp, #0] - 8006b24: 8ae3 ldrh r3, [r4, #22] - 8006b26: 6a60 ldr r0, [r4, #36] @ 0x24 - 8006b28: 4632 mov r2, r6 - 8006b2a: 4629 mov r1, r5 - 8006b2c: f7ff ffa6 bl 8006a7c - 8006b30: b118 cbz r0, 8006b3a - 8006b32: 8d62 ldrh r2, [r4, #42] @ 0x2a - 8006b34: 6a63 ldr r3, [r4, #36] @ 0x24 - 8006b36: 4413 add r3, r2 - 8006b38: 62e3 str r3, [r4, #44] @ 0x2c - 8006b3a: b004 add sp, #16 - 8006b3c: bd70 pop {r4, r5, r6, pc} - 8006b3e: bf00 nop - 8006b40: 0800c719 .word 0x0800c719 - 8006b44: 0800c7f5 .word 0x0800c7f5 - 8006b48: 0800b767 .word 0x0800b767 - -08006b4c : - 8006b4c: b930 cbnz r0, 8006b5c - 8006b4e: 4b04 ldr r3, [pc, #16] @ (8006b60 ) - 8006b50: 4904 ldr r1, [pc, #16] @ (8006b64 ) - 8006b52: 4805 ldr r0, [pc, #20] @ (8006b68 ) - 8006b54: f240 7256 movw r2, #1878 @ 0x756 - 8006b58: f003 be16 b.w 800a788 - 8006b5c: 4770 bx lr - 8006b5e: bf00 nop - 8006b60: 0800c719 .word 0x0800c719 - 8006b64: 0800c81a .word 0x0800c81a - 8006b68: 0800b767 .word 0x0800b767 - -08006b6c : - 8006b6c: b5f0 push {r4, r5, r6, r7, lr} - 8006b6e: 4604 mov r4, r0 - 8006b70: b085 sub sp, #20 - 8006b72: 4617 mov r7, r2 - 8006b74: 461e mov r6, r3 - 8006b76: 460d mov r5, r1 - 8006b78: b931 cbnz r1, 8006b88 - 8006b7a: 4b15 ldr r3, [pc, #84] @ (8006bd0 ) - 8006b7c: 4915 ldr r1, [pc, #84] @ (8006bd4 ) - 8006b7e: 4816 ldr r0, [pc, #88] @ (8006bd8 ) - 8006b80: f240 7287 movw r2, #1927 @ 0x787 - 8006b84: f003 fe00 bl 800a788 - 8006b88: b164 cbz r4, 8006ba4 - 8006b8a: 7a20 ldrb r0, [r4, #8] - 8006b8c: b150 cbz r0, 8006ba4 - 8006b8e: f7fd f9d1 bl 8003f34 - 8006b92: b968 cbnz r0, 8006bb0 - 8006b94: f06f 0403 mvn.w r4, #3 - 8006b98: 4628 mov r0, r5 - 8006b9a: f7fd fa99 bl 80040d0 - 8006b9e: 4620 mov r0, r4 - 8006ba0: b005 add sp, #20 - 8006ba2: bdf0 pop {r4, r5, r6, r7, pc} - 8006ba4: 4630 mov r0, r6 - 8006ba6: f002 fe6f bl 8009888 - 8006baa: 2800 cmp r0, #0 - 8006bac: d0f2 beq.n 8006b94 - 8006bae: b164 cbz r4, 8006bca - 8006bb0: 7ae3 ldrb r3, [r4, #11] - 8006bb2: 7aa4 ldrb r4, [r4, #10] - 8006bb4: 9002 str r0, [sp, #8] - 8006bb6: 2206 movs r2, #6 - 8006bb8: e9cd 4200 strd r4, r2, [sp] - 8006bbc: 4639 mov r1, r7 - 8006bbe: 4632 mov r2, r6 - 8006bc0: 4628 mov r0, r5 - 8006bc2: f002 ffd1 bl 8009b68 - 8006bc6: 4604 mov r4, r0 - 8006bc8: e7e6 b.n 8006b98 - 8006bca: 23ff movs r3, #255 @ 0xff - 8006bcc: e7f2 b.n 8006bb4 - 8006bce: bf00 nop - 8006bd0: 0800c719 .word 0x0800c719 - 8006bd4: 0800c840 .word 0x0800c840 - 8006bd8: 0800b767 .word 0x0800b767 - -08006bdc : - 8006bdc: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8006be0: 460d mov r5, r1 - 8006be2: 4606 mov r6, r0 - 8006be4: b930 cbnz r0, 8006bf4 - 8006be6: 4b5c ldr r3, [pc, #368] @ (8006d58 ) - 8006be8: 495c ldr r1, [pc, #368] @ (8006d5c ) - 8006bea: 485d ldr r0, [pc, #372] @ (8006d60 ) - 8006bec: f240 324b movw r2, #843 @ 0x34b - 8006bf0: f003 fdca bl 800a788 - 8006bf4: 6ef4 ldr r4, [r6, #108] @ 0x6c - 8006bf6: 2c00 cmp r4, #0 - 8006bf8: f000 80ab beq.w 8006d52 - 8006bfc: b95d cbnz r5, 8006c16 - 8006bfe: 4b56 ldr r3, [pc, #344] @ (8006d58 ) - 8006c00: 4958 ldr r1, [pc, #352] @ (8006d64 ) - 8006c02: 4857 ldr r0, [pc, #348] @ (8006d60 ) - 8006c04: f240 3253 movw r2, #851 @ 0x353 - 8006c08: f003 fdbe bl 800a788 - 8006c0c: f06f 0005 mvn.w r0, #5 - 8006c10: b003 add sp, #12 - 8006c12: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 8006c16: 8923 ldrh r3, [r4, #8] - 8006c18: 42ab cmp r3, r5 - 8006c1a: f240 8095 bls.w 8006d48 - 8006c1e: 8e73 ldrh r3, [r6, #50] @ 0x32 - 8006c20: 42ab cmp r3, r5 - 8006c22: d20f bcs.n 8006c44 - 8006c24: 4b4c ldr r3, [pc, #304] @ (8006d58 ) - 8006c26: 4950 ldr r1, [pc, #320] @ (8006d68 ) - 8006c28: 484d ldr r0, [pc, #308] @ (8006d60 ) - 8006c2a: f240 325b movw r2, #859 @ 0x35b - 8006c2e: f003 fdab bl 800a788 - 8006c32: 8923 ldrh r3, [r4, #8] - 8006c34: b933 cbnz r3, 8006c44 - 8006c36: 4b48 ldr r3, [pc, #288] @ (8006d58 ) - 8006c38: 494c ldr r1, [pc, #304] @ (8006d6c ) - 8006c3a: 4849 ldr r0, [pc, #292] @ (8006d60 ) - 8006c3c: f44f 7257 mov.w r2, #860 @ 0x35c - 8006c40: f003 fda2 bl 800a788 - 8006c44: f894 b00a ldrb.w fp, [r4, #10] - 8006c48: f8b4 a008 ldrh.w sl, [r4, #8] - 8006c4c: ea4f 078b mov.w r7, fp, lsl #2 - 8006c50: ebaa 0105 sub.w r1, sl, r5 - 8006c54: f007 0704 and.w r7, r7, #4 - 8006c58: fa1f f881 uxth.w r8, r1 - 8006c5c: fa17 f181 uxtah r1, r7, r1 - 8006c60: f44f 7220 mov.w r2, #640 @ 0x280 - 8006c64: b289 uxth r1, r1 - 8006c66: 2036 movs r0, #54 @ 0x36 - 8006c68: f7fd fa96 bl 8004198 - 8006c6c: 4681 mov r9, r0 - 8006c6e: 2800 cmp r0, #0 - 8006c70: d06f beq.n 8006d52 - 8006c72: 6860 ldr r0, [r4, #4] - 8006c74: 8922 ldrh r2, [r4, #8] - 8006c76: 8903 ldrh r3, [r0, #8] - 8006c78: f8d9 1004 ldr.w r1, [r9, #4] - 8006c7c: 1a9b subs r3, r3, r2 - 8006c7e: 442b add r3, r5 - 8006c80: b29b uxth r3, r3 - 8006c82: 4642 mov r2, r8 - 8006c84: 4439 add r1, r7 - 8006c86: f7fd fc3b bl 8004500 - 8006c8a: 4540 cmp r0, r8 - 8006c8c: d15e bne.n 8006d4c - 8006c8e: 68e3 ldr r3, [r4, #12] - 8006c90: 8998 ldrh r0, [r3, #12] - 8006c92: f7fc fd00 bl 8003696 - 8006c96: f010 0808 ands.w r8, r0, #8 - 8006c9a: b2c7 uxtb r7, r0 - 8006c9c: bf0e itee eq - 8006c9e: f007 073f andeq.w r7, r7, #63 @ 0x3f - 8006ca2: f007 0737 andne.w r7, r7, #55 @ 0x37 - 8006ca6: f04f 0808 movne.w r8, #8 - 8006caa: 07fb lsls r3, r7, #31 - 8006cac: 68e3 ldr r3, [r4, #12] - 8006cae: 6858 ldr r0, [r3, #4] - 8006cb0: bf44 itt mi - 8006cb2: f048 0801 orrmi.w r8, r8, #1 - 8006cb6: f007 07fe andmi.w r7, r7, #254 @ 0xfe - 8006cba: f7fc fcef bl 800369c - 8006cbe: 4642 mov r2, r8 - 8006cc0: 182b adds r3, r5, r0 - 8006cc2: f8cd b000 str.w fp, [sp] - 8006cc6: 4649 mov r1, r9 - 8006cc8: 4630 mov r0, r6 - 8006cca: f7ff fe69 bl 80069a0 - 8006cce: 4680 mov r8, r0 - 8006cd0: 2800 cmp r0, #0 - 8006cd2: d03b beq.n 8006d4c - 8006cd4: 6860 ldr r0, [r4, #4] - 8006cd6: f7fd fb31 bl 800433c - 8006cda: f8b6 3066 ldrh.w r3, [r6, #102] @ 0x66 - 8006cde: 1a1b subs r3, r3, r0 - 8006ce0: 6860 ldr r0, [r4, #4] - 8006ce2: f8a6 3066 strh.w r3, [r6, #102] @ 0x66 - 8006ce6: 8903 ldrh r3, [r0, #8] - 8006ce8: eba5 050a sub.w r5, r5, sl - 8006cec: fa1f f985 uxth.w r9, r5 - 8006cf0: fa13 f585 uxtah r5, r3, r5 - 8006cf4: b2a9 uxth r1, r5 - 8006cf6: f7fd fac9 bl 800428c - 8006cfa: 8923 ldrh r3, [r4, #8] - 8006cfc: 4499 add r9, r3 - 8006cfe: 68e3 ldr r3, [r4, #12] - 8006d00: f8a4 9008 strh.w r9, [r4, #8] - 8006d04: 4638 mov r0, r7 - 8006d06: 899d ldrh r5, [r3, #12] - 8006d08: f7fc fcc5 bl 8003696 - 8006d0c: 68e3 ldr r3, [r4, #12] - 8006d0e: 4305 orrs r5, r0 - 8006d10: 819d strh r5, [r3, #12] - 8006d12: 6860 ldr r0, [r4, #4] - 8006d14: f7fd fb12 bl 800433c - 8006d18: f8b6 3066 ldrh.w r3, [r6, #102] @ 0x66 - 8006d1c: 4418 add r0, r3 - 8006d1e: f8a6 0066 strh.w r0, [r6, #102] @ 0x66 - 8006d22: f8d8 0004 ldr.w r0, [r8, #4] - 8006d26: f7fd fb09 bl 800433c - 8006d2a: f8b6 3066 ldrh.w r3, [r6, #102] @ 0x66 - 8006d2e: 4418 add r0, r3 - 8006d30: 6823 ldr r3, [r4, #0] - 8006d32: f8a6 0066 strh.w r0, [r6, #102] @ 0x66 - 8006d36: f8c8 3000 str.w r3, [r8] - 8006d3a: f8c4 8000 str.w r8, [r4] - 8006d3e: f8d8 3000 ldr.w r3, [r8] - 8006d42: b90b cbnz r3, 8006d48 - 8006d44: f8a6 3068 strh.w r3, [r6, #104] @ 0x68 - 8006d48: 2000 movs r0, #0 - 8006d4a: e761 b.n 8006c10 - 8006d4c: 4648 mov r0, r9 - 8006d4e: f7fd f9bf bl 80040d0 - 8006d52: f04f 30ff mov.w r0, #4294967295 - 8006d56: e75b b.n 8006c10 - 8006d58: 0800c719 .word 0x0800c719 - 8006d5c: 0800c869 .word 0x0800c869 - 8006d60: 0800b767 .word 0x0800b767 - 8006d64: 0800c88b .word 0x0800c88b - 8006d68: 0800c8ad .word 0x0800c8ad - 8006d6c: 0800c8ba .word 0x0800c8ba - -08006d70 : - 8006d70: e92d 43f7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr} - 8006d74: f011 0803 ands.w r8, r1, #3 - 8006d78: 4604 mov r4, r0 - 8006d7a: 460e mov r6, r1 - 8006d7c: d106 bne.n 8006d8c - 8006d7e: 4b3f ldr r3, [pc, #252] @ (8006e7c ) - 8006d80: 493f ldr r1, [pc, #252] @ (8006e80 ) - 8006d82: 4840 ldr r0, [pc, #256] @ (8006e84 ) - 8006d84: f240 4211 movw r2, #1041 @ 0x411 - 8006d88: f003 fcfe bl 800a788 - 8006d8c: b934 cbnz r4, 8006d9c - 8006d8e: 4b3b ldr r3, [pc, #236] @ (8006e7c ) - 8006d90: 493d ldr r1, [pc, #244] @ (8006e88 ) - 8006d92: 483c ldr r0, [pc, #240] @ (8006e84 ) - 8006d94: f240 4213 movw r2, #1043 @ 0x413 - 8006d98: f003 fcf6 bl 800a788 - 8006d9c: f3c6 0740 ubfx r7, r6, #1, #1 - 8006da0: ea4f 0987 mov.w r9, r7, lsl #2 - 8006da4: f44f 7220 mov.w r2, #640 @ 0x280 - 8006da8: 4649 mov r1, r9 - 8006daa: 2036 movs r0, #54 @ 0x36 - 8006dac: f7fd f9f4 bl 8004198 - 8006db0: 4605 mov r5, r0 - 8006db2: b940 cbnz r0, 8006dc6 - 8006db4: 8b63 ldrh r3, [r4, #26] - 8006db6: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8006dba: 8363 strh r3, [r4, #26] - 8006dbc: f04f 30ff mov.w r0, #4294967295 - 8006dc0: b003 add sp, #12 - 8006dc2: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} - 8006dc6: 8943 ldrh r3, [r0, #10] - 8006dc8: 454b cmp r3, r9 - 8006dca: d206 bcs.n 8006dda - 8006dcc: 4b2b ldr r3, [pc, #172] @ (8006e7c ) - 8006dce: 492f ldr r1, [pc, #188] @ (8006e8c ) - 8006dd0: 482c ldr r0, [pc, #176] @ (8006e84 ) - 8006dd2: f240 4239 movw r2, #1081 @ 0x439 - 8006dd6: f003 fcd7 bl 800a788 - 8006dda: 9700 str r7, [sp, #0] - 8006ddc: 4629 mov r1, r5 - 8006dde: 6de3 ldr r3, [r4, #92] @ 0x5c - 8006de0: 4632 mov r2, r6 - 8006de2: 4620 mov r0, r4 - 8006de4: f7ff fddc bl 80069a0 - 8006de8: 4605 mov r5, r0 - 8006dea: 2800 cmp r0, #0 - 8006dec: d0e2 beq.n 8006db4 - 8006dee: 68c3 ldr r3, [r0, #12] - 8006df0: 079a lsls r2, r3, #30 - 8006df2: d006 beq.n 8006e02 - 8006df4: 4b21 ldr r3, [pc, #132] @ (8006e7c ) - 8006df6: 4926 ldr r1, [pc, #152] @ (8006e90 ) - 8006df8: 4822 ldr r0, [pc, #136] @ (8006e84 ) - 8006dfa: f240 4242 movw r2, #1090 @ 0x442 - 8006dfe: f003 fcc3 bl 800a788 - 8006e02: 892b ldrh r3, [r5, #8] - 8006e04: b133 cbz r3, 8006e14 - 8006e06: 4b1d ldr r3, [pc, #116] @ (8006e7c ) - 8006e08: 4922 ldr r1, [pc, #136] @ (8006e94 ) - 8006e0a: 481e ldr r0, [pc, #120] @ (8006e84 ) - 8006e0c: f240 4243 movw r2, #1091 @ 0x443 - 8006e10: f003 fcba bl 800a788 - 8006e14: 6ee3 ldr r3, [r4, #108] @ 0x6c - 8006e16: b9e3 cbnz r3, 8006e52 - 8006e18: 66e5 str r5, [r4, #108] @ 0x6c - 8006e1a: 2300 movs r3, #0 - 8006e1c: f8a4 3068 strh.w r3, [r4, #104] @ 0x68 - 8006e20: f1b8 0f00 cmp.w r8, #0 - 8006e24: d002 beq.n 8006e2c - 8006e26: 6de3 ldr r3, [r4, #92] @ 0x5c - 8006e28: 3301 adds r3, #1 - 8006e2a: 65e3 str r3, [r4, #92] @ 0x5c - 8006e2c: 07f3 lsls r3, r6, #31 - 8006e2e: bf48 it mi - 8006e30: 8b63 ldrhmi r3, [r4, #26] - 8006e32: 6868 ldr r0, [r5, #4] - 8006e34: bf44 itt mi - 8006e36: f043 0320 orrmi.w r3, r3, #32 - 8006e3a: 8363 strhmi r3, [r4, #26] - 8006e3c: f7fd fa7e bl 800433c - 8006e40: f8b4 3066 ldrh.w r3, [r4, #102] @ 0x66 - 8006e44: 4418 add r0, r3 - 8006e46: b280 uxth r0, r0 - 8006e48: f8a4 0066 strh.w r0, [r4, #102] @ 0x66 - 8006e4c: b938 cbnz r0, 8006e5e - 8006e4e: 2000 movs r0, #0 - 8006e50: e7b6 b.n 8006dc0 - 8006e52: 461a mov r2, r3 - 8006e54: 681b ldr r3, [r3, #0] - 8006e56: 2b00 cmp r3, #0 - 8006e58: d1fb bne.n 8006e52 - 8006e5a: 6015 str r5, [r2, #0] - 8006e5c: e7dd b.n 8006e1a - 8006e5e: 6f23 ldr r3, [r4, #112] @ 0x70 - 8006e60: 2b00 cmp r3, #0 - 8006e62: d1f4 bne.n 8006e4e - 8006e64: 6ee3 ldr r3, [r4, #108] @ 0x6c - 8006e66: 2b00 cmp r3, #0 - 8006e68: d1f1 bne.n 8006e4e - 8006e6a: 4b04 ldr r3, [pc, #16] @ (8006e7c ) - 8006e6c: 490a ldr r1, [pc, #40] @ (8006e98 ) - 8006e6e: 4805 ldr r0, [pc, #20] @ (8006e84 ) - 8006e70: f240 4265 movw r2, #1125 @ 0x465 - 8006e74: f003 fc88 bl 800a788 - 8006e78: e7e9 b.n 8006e4e - 8006e7a: bf00 nop - 8006e7c: 0800c719 .word 0x0800c719 - 8006e80: 0800c8c8 .word 0x0800c8c8 - 8006e84: 0800b767 .word 0x0800b767 - 8006e88: 0800c91d .word 0x0800c91d - 8006e8c: 0800c93c .word 0x0800c93c - 8006e90: 0800c975 .word 0x0800c975 - 8006e94: 0800c98d .word 0x0800c98d - 8006e98: 0800c9b7 .word 0x0800c9b7 - -08006e9c : - 8006e9c: b5f8 push {r3, r4, r5, r6, r7, lr} - 8006e9e: 4604 mov r4, r0 - 8006ea0: b930 cbnz r0, 8006eb0 - 8006ea2: 4b13 ldr r3, [pc, #76] @ (8006ef0 ) - 8006ea4: 4913 ldr r1, [pc, #76] @ (8006ef4 ) - 8006ea6: 4814 ldr r0, [pc, #80] @ (8006ef8 ) - 8006ea8: f240 32eb movw r2, #1003 @ 0x3eb - 8006eac: f003 fc6c bl 800a788 - 8006eb0: 6ee5 ldr r5, [r4, #108] @ 0x6c - 8006eb2: b14d cbz r5, 8006ec8 - 8006eb4: 462f mov r7, r5 - 8006eb6: 682d ldr r5, [r5, #0] - 8006eb8: 2d00 cmp r5, #0 - 8006eba: d1fb bne.n 8006eb4 - 8006ebc: 68fb ldr r3, [r7, #12] - 8006ebe: 8998 ldrh r0, [r3, #12] - 8006ec0: f7fc fbe9 bl 8003696 - 8006ec4: 0743 lsls r3, r0, #29 - 8006ec6: d005 beq.n 8006ed4 - 8006ec8: 4620 mov r0, r4 - 8006eca: 2101 movs r1, #1 - 8006ecc: e8bd 40f8 ldmia.w sp!, {r3, r4, r5, r6, r7, lr} - 8006ed0: f7ff bf4e b.w 8006d70 - 8006ed4: 68fb ldr r3, [r7, #12] - 8006ed6: 2001 movs r0, #1 - 8006ed8: 899e ldrh r6, [r3, #12] - 8006eda: f7fc fbdc bl 8003696 - 8006ede: 68fb ldr r3, [r7, #12] - 8006ee0: 4306 orrs r6, r0 - 8006ee2: 819e strh r6, [r3, #12] - 8006ee4: 8b63 ldrh r3, [r4, #26] - 8006ee6: f043 0320 orr.w r3, r3, #32 - 8006eea: 8363 strh r3, [r4, #26] - 8006eec: 4628 mov r0, r5 - 8006eee: bdf8 pop {r3, r4, r5, r6, r7, pc} - 8006ef0: 0800c719 .word 0x0800c719 - 8006ef4: 0800c9df .word 0x0800c9df - 8006ef8: 0800b767 .word 0x0800b767 - -08006efc : - 8006efc: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 8006f00: 4604 mov r4, r0 - 8006f02: b930 cbnz r0, 8006f12 - 8006f04: 4b1c ldr r3, [pc, #112] @ (8006f78 ) - 8006f06: 491d ldr r1, [pc, #116] @ (8006f7c ) - 8006f08: 481d ldr r0, [pc, #116] @ (8006f80 ) - 8006f0a: f240 6263 movw r2, #1635 @ 0x663 - 8006f0e: f003 fc3b bl 800a788 - 8006f12: 6f25 ldr r5, [r4, #112] @ 0x70 - 8006f14: b945 cbnz r5, 8006f28 - 8006f16: f06f 0005 mvn.w r0, #5 - 8006f1a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 8006f1e: f7ff fd29 bl 8006974 - 8006f22: 2800 cmp r0, #0 - 8006f24: d1f7 bne.n 8006f16 - 8006f26: 682d ldr r5, [r5, #0] - 8006f28: 682b ldr r3, [r5, #0] - 8006f2a: 4628 mov r0, r5 - 8006f2c: 2b00 cmp r3, #0 - 8006f2e: d1f6 bne.n 8006f1e - 8006f30: f7ff fd20 bl 8006974 - 8006f34: 4606 mov r6, r0 - 8006f36: 2800 cmp r0, #0 - 8006f38: d1ed bne.n 8006f16 - 8006f3a: 6ee3 ldr r3, [r4, #108] @ 0x6c - 8006f3c: 602b str r3, [r5, #0] - 8006f3e: 6f23 ldr r3, [r4, #112] @ 0x70 - 8006f40: e9c4 301b strd r3, r0, [r4, #108] @ 0x6c - 8006f44: 8b63 ldrh r3, [r4, #26] - 8006f46: f443 6300 orr.w r3, r3, #2048 @ 0x800 - 8006f4a: 8363 strh r3, [r4, #26] - 8006f4c: 68eb ldr r3, [r5, #12] - 8006f4e: 6858 ldr r0, [r3, #4] - 8006f50: f7fc fba4 bl 800369c - 8006f54: 68eb ldr r3, [r5, #12] - 8006f56: f8b5 8008 ldrh.w r8, [r5, #8] - 8006f5a: 4607 mov r7, r0 - 8006f5c: 8998 ldrh r0, [r3, #12] - 8006f5e: f7fc fb9a bl 8003696 - 8006f62: f010 0303 ands.w r3, r0, #3 - 8006f66: bf18 it ne - 8006f68: 2301 movne r3, #1 - 8006f6a: 4447 add r7, r8 - 8006f6c: 443b add r3, r7 - 8006f6e: 64e3 str r3, [r4, #76] @ 0x4c - 8006f70: 6366 str r6, [r4, #52] @ 0x34 - 8006f72: 4630 mov r0, r6 - 8006f74: e7d1 b.n 8006f1a - 8006f76: bf00 nop - 8006f78: 0800c719 .word 0x0800c719 - 8006f7c: 0800c9f9 .word 0x0800c9f9 - 8006f80: 0800b767 .word 0x0800b767 - -08006f84 : - 8006f84: b5f8 push {r3, r4, r5, r6, r7, lr} - 8006f86: 4604 mov r4, r0 - 8006f88: b930 cbnz r0, 8006f98 - 8006f8a: 4b1c ldr r3, [pc, #112] @ (8006ffc ) - 8006f8c: 491c ldr r1, [pc, #112] @ (8007000 ) - 8006f8e: 481d ldr r0, [pc, #116] @ (8007004 ) - 8006f90: f240 62c1 movw r2, #1729 @ 0x6c1 - 8006f94: f003 fbf8 bl 800a788 - 8006f98: 6f25 ldr r5, [r4, #112] @ 0x70 - 8006f9a: b915 cbnz r5, 8006fa2 - 8006f9c: f06f 0005 mvn.w r0, #5 - 8006fa0: bdf8 pop {r3, r4, r5, r6, r7, pc} - 8006fa2: 4628 mov r0, r5 - 8006fa4: f7ff fce6 bl 8006974 - 8006fa8: 2800 cmp r0, #0 - 8006faa: d1f7 bne.n 8006f9c - 8006fac: 682b ldr r3, [r5, #0] - 8006fae: 6723 str r3, [r4, #112] @ 0x70 - 8006fb0: f104 066c add.w r6, r4, #108 @ 0x6c - 8006fb4: 6833 ldr r3, [r6, #0] - 8006fb6: b993 cbnz r3, 8006fde - 8006fb8: 6833 ldr r3, [r6, #0] - 8006fba: 602b str r3, [r5, #0] - 8006fbc: 6035 str r5, [r6, #0] - 8006fbe: 682b ldr r3, [r5, #0] - 8006fc0: b90b cbnz r3, 8006fc6 - 8006fc2: f8a4 3068 strh.w r3, [r4, #104] @ 0x68 - 8006fc6: f894 3042 ldrb.w r3, [r4, #66] @ 0x42 - 8006fca: 2bff cmp r3, #255 @ 0xff - 8006fcc: bf18 it ne - 8006fce: 3301 addne r3, #1 - 8006fd0: f04f 0000 mov.w r0, #0 - 8006fd4: bf18 it ne - 8006fd6: f884 3042 strbne.w r3, [r4, #66] @ 0x42 - 8006fda: 6360 str r0, [r4, #52] @ 0x34 - 8006fdc: e7e0 b.n 8006fa0 - 8006fde: 68db ldr r3, [r3, #12] - 8006fe0: 6858 ldr r0, [r3, #4] - 8006fe2: f7fc fb5b bl 800369c - 8006fe6: 68eb ldr r3, [r5, #12] - 8006fe8: 4607 mov r7, r0 - 8006fea: 6858 ldr r0, [r3, #4] - 8006fec: f7fc fb56 bl 800369c - 8006ff0: 1a3f subs r7, r7, r0 - 8006ff2: 2f00 cmp r7, #0 - 8006ff4: dae0 bge.n 8006fb8 - 8006ff6: 6836 ldr r6, [r6, #0] - 8006ff8: e7dc b.n 8006fb4 - 8006ffa: bf00 nop - 8006ffc: 0800c719 .word 0x0800c719 - 8007000: 0800ca1d .word 0x0800ca1d - 8007004: 0800b767 .word 0x0800b767 - -08007008 : - 8007008: b538 push {r3, r4, r5, lr} - 800700a: 4604 mov r4, r0 - 800700c: b930 cbnz r0, 800701c - 800700e: 4b15 ldr r3, [pc, #84] @ (8007064 ) - 8007010: 4915 ldr r1, [pc, #84] @ (8007068 ) - 8007012: 4816 ldr r0, [pc, #88] @ (800706c ) - 8007014: f240 62f9 movw r2, #1785 @ 0x6f9 - 8007018: f003 fbb6 bl 800a788 - 800701c: 6f23 ldr r3, [r4, #112] @ 0x70 - 800701e: b303 cbz r3, 8007062 - 8007020: 8b63 ldrh r3, [r4, #26] - 8007022: 075b lsls r3, r3, #29 - 8007024: d41d bmi.n 8007062 - 8007026: 4620 mov r0, r4 - 8007028: f7ff ffac bl 8006f84 - 800702c: b9c8 cbnz r0, 8007062 - 800702e: f8b4 1060 ldrh.w r1, [r4, #96] @ 0x60 - 8007032: f8b4 3048 ldrh.w r3, [r4, #72] @ 0x48 - 8007036: 8620 strh r0, [r4, #48] @ 0x30 - 8007038: 4299 cmp r1, r3 - 800703a: bf28 it cs - 800703c: 4619 movcs r1, r3 - 800703e: 8e63 ldrh r3, [r4, #50] @ 0x32 - 8007040: 005d lsls r5, r3, #1 - 8007042: ebb5 0f51 cmp.w r5, r1, lsr #1 - 8007046: ea4f 0261 mov.w r2, r1, asr #1 - 800704a: 442b add r3, r5 - 800704c: bf88 it hi - 800704e: 462a movhi r2, r5 - 8007050: 4413 add r3, r2 - 8007052: f8a4 3048 strh.w r3, [r4, #72] @ 0x48 - 8007056: 8b63 ldrh r3, [r4, #26] - 8007058: f8a4 204a strh.w r2, [r4, #74] @ 0x4a - 800705c: f043 0304 orr.w r3, r3, #4 - 8007060: 8363 strh r3, [r4, #26] - 8007062: bd38 pop {r3, r4, r5, pc} - 8007064: 0800c719 .word 0x0800c719 - 8007068: 0800ca35 .word 0x0800ca35 - 800706c: 0800b767 .word 0x0800b767 - -08007070 : - 8007070: e92d 47ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, lr} - 8007074: f8dd 8030 ldr.w r8, [sp, #48] @ 0x30 - 8007078: f8bd 9034 ldrh.w r9, [sp, #52] @ 0x34 - 800707c: f8bd a038 ldrh.w sl, [sp, #56] @ 0x38 - 8007080: 4606 mov r6, r0 - 8007082: 460f mov r7, r1 - 8007084: 4614 mov r4, r2 - 8007086: 461d mov r5, r3 - 8007088: b933 cbnz r3, 8007098 - 800708a: 4b18 ldr r3, [pc, #96] @ (80070ec ) - 800708c: 4918 ldr r1, [pc, #96] @ (80070f0 ) - 800708e: 4819 ldr r0, [pc, #100] @ (80070f4 ) - 8007090: f240 72c4 movw r2, #1988 @ 0x7c4 - 8007094: f003 fb78 bl 800a788 - 8007098: f1b8 0f00 cmp.w r8, #0 - 800709c: d106 bne.n 80070ac - 800709e: 4b13 ldr r3, [pc, #76] @ (80070ec ) - 80070a0: 4915 ldr r1, [pc, #84] @ (80070f8 ) - 80070a2: 4814 ldr r0, [pc, #80] @ (80070f4 ) - 80070a4: f240 72c5 movw r2, #1989 @ 0x7c5 - 80070a8: f003 fb6e bl 800a788 - 80070ac: 4638 mov r0, r7 - 80070ae: f7fc faf5 bl 800369c - 80070b2: 2314 movs r3, #20 - 80070b4: f246 0108 movw r1, #24584 @ 0x6008 - 80070b8: e9cd 3101 strd r3, r1, [sp, #4] - 80070bc: 4602 mov r2, r0 - 80070be: f8cd a000 str.w sl, [sp] - 80070c2: 4620 mov r0, r4 - 80070c4: 464b mov r3, r9 - 80070c6: 2100 movs r1, #0 - 80070c8: f7ff fcd8 bl 8006a7c - 80070cc: 4604 mov r4, r0 - 80070ce: b150 cbz r0, 80070e6 - 80070d0: f7ff fd3c bl 8006b4c - 80070d4: 4643 mov r3, r8 - 80070d6: 462a mov r2, r5 - 80070d8: 4621 mov r1, r4 - 80070da: 4630 mov r0, r6 - 80070dc: b004 add sp, #16 - 80070de: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 80070e2: f7ff bd43 b.w 8006b6c - 80070e6: b004 add sp, #16 - 80070e8: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 80070ec: 0800c719 .word 0x0800c719 - 80070f0: 0800ca52 .word 0x0800ca52 - 80070f4: 0800b767 .word 0x0800b767 - 80070f8: 0800ca6c .word 0x0800ca6c - -080070fc : - 80070fc: b538 push {r3, r4, r5, lr} - 80070fe: 4604 mov r4, r0 - 8007100: b930 cbnz r0, 8007110 - 8007102: 4b14 ldr r3, [pc, #80] @ (8007154 ) - 8007104: 4914 ldr r1, [pc, #80] @ (8007158 ) - 8007106: 4815 ldr r0, [pc, #84] @ (800715c ) - 8007108: f240 72ea movw r2, #2026 @ 0x7ea - 800710c: f003 fb3c bl 800a788 - 8007110: 6d20 ldr r0, [r4, #80] @ 0x50 - 8007112: f7fc fac3 bl 800369c - 8007116: 2100 movs r1, #0 - 8007118: 4602 mov r2, r0 - 800711a: 4620 mov r0, r4 - 800711c: f7ff fcf0 bl 8006b00 - 8007120: 4605 mov r5, r0 - 8007122: b930 cbnz r0, 8007132 - 8007124: 8b63 ldrh r3, [r4, #26] - 8007126: f06f 0001 mvn.w r0, #1 - 800712a: f043 0303 orr.w r3, r3, #3 - 800712e: 8363 strh r3, [r4, #26] - 8007130: bd38 pop {r3, r4, r5, pc} - 8007132: f7ff fd0b bl 8006b4c - 8007136: 1d23 adds r3, r4, #4 - 8007138: 4622 mov r2, r4 - 800713a: 4629 mov r1, r5 - 800713c: 4620 mov r0, r4 - 800713e: f7ff fd15 bl 8006b6c - 8007142: 8b63 ldrh r3, [r4, #26] - 8007144: b118 cbz r0, 800714e - 8007146: f043 0303 orr.w r3, r3, #3 - 800714a: b29b uxth r3, r3 - 800714c: e7ef b.n 800712e - 800714e: f023 0303 bic.w r3, r3, #3 - 8007152: e7fa b.n 800714a - 8007154: 0800c719 .word 0x0800c719 - 8007158: 0800ca87 .word 0x0800ca87 - 800715c: 0800b767 .word 0x0800b767 - -08007160 : - 8007160: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8007164: 4604 mov r4, r0 - 8007166: b087 sub sp, #28 - 8007168: b930 cbnz r0, 8007178 - 800716a: 4b8f ldr r3, [pc, #572] @ (80073a8 ) - 800716c: 498f ldr r1, [pc, #572] @ (80073ac ) - 800716e: 4890 ldr r0, [pc, #576] @ (80073b0 ) - 8007170: f240 42e1 movw r2, #1249 @ 0x4e1 - 8007174: f003 fb08 bl 800a788 - 8007178: 7d23 ldrb r3, [r4, #20] - 800717a: 2b01 cmp r3, #1 - 800717c: d106 bne.n 800718c - 800717e: 4b8a ldr r3, [pc, #552] @ (80073a8 ) - 8007180: 498c ldr r1, [pc, #560] @ (80073b4 ) - 8007182: 488b ldr r0, [pc, #556] @ (80073b0 ) - 8007184: f240 42e3 movw r2, #1251 @ 0x4e3 - 8007188: f003 fafe bl 800a788 - 800718c: 4b8a ldr r3, [pc, #552] @ (80073b8 ) - 800718e: 681b ldr r3, [r3, #0] - 8007190: 42a3 cmp r3, r4 - 8007192: f000 8171 beq.w 8007478 - 8007196: 6ee5 ldr r5, [r4, #108] @ 0x6c - 8007198: f8b4 8048 ldrh.w r8, [r4, #72] @ 0x48 - 800719c: f8b4 6060 ldrh.w r6, [r4, #96] @ 0x60 - 80071a0: b94d cbnz r5, 80071b6 - 80071a2: 8b63 ldrh r3, [r4, #26] - 80071a4: 0798 lsls r0, r3, #30 - 80071a6: f140 8163 bpl.w 8007470 - 80071aa: 4620 mov r0, r4 - 80071ac: b007 add sp, #28 - 80071ae: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 80071b2: f7ff bfa3 b.w 80070fc - 80071b6: 7a20 ldrb r0, [r4, #8] - 80071b8: f104 0904 add.w r9, r4, #4 - 80071bc: b340 cbz r0, 8007210 - 80071be: f7fc feb9 bl 8003f34 - 80071c2: 4607 mov r7, r0 - 80071c4: 2800 cmp r0, #0 - 80071c6: f000 8170 beq.w 80074aa - 80071ca: 6823 ldr r3, [r4, #0] - 80071cc: b90b cbnz r3, 80071d2 - 80071ce: 6843 ldr r3, [r0, #4] - 80071d0: 6023 str r3, [r4, #0] - 80071d2: 68eb ldr r3, [r5, #12] - 80071d4: 45b0 cmp r8, r6 - 80071d6: 6858 ldr r0, [r3, #4] - 80071d8: bf28 it cs - 80071da: 46b0 movcs r8, r6 - 80071dc: f7fc fa5e bl 800369c - 80071e0: 892b ldrh r3, [r5, #8] - 80071e2: 6c62 ldr r2, [r4, #68] @ 0x44 - 80071e4: 1a9b subs r3, r3, r2 - 80071e6: 4403 add r3, r0 - 80071e8: 4543 cmp r3, r8 - 80071ea: d915 bls.n 8007218 - 80071ec: f8b4 3060 ldrh.w r3, [r4, #96] @ 0x60 - 80071f0: 4543 cmp r3, r8 - 80071f2: d1d6 bne.n 80071a2 - 80071f4: 6f23 ldr r3, [r4, #112] @ 0x70 - 80071f6: 2b00 cmp r3, #0 - 80071f8: d1d3 bne.n 80071a2 - 80071fa: f894 3099 ldrb.w r3, [r4, #153] @ 0x99 - 80071fe: 2b00 cmp r3, #0 - 8007200: d1cf bne.n 80071a2 - 8007202: f44f 7280 mov.w r2, #256 @ 0x100 - 8007206: f8a4 2098 strh.w r2, [r4, #152] @ 0x98 - 800720a: f884 309a strb.w r3, [r4, #154] @ 0x9a - 800720e: e7c8 b.n 80071a2 - 8007210: 4648 mov r0, r9 - 8007212: f002 fb39 bl 8009888 - 8007216: e7d4 b.n 80071c2 - 8007218: 6f26 ldr r6, [r4, #112] @ 0x70 - 800721a: 2300 movs r3, #0 - 800721c: f884 3099 strb.w r3, [r4, #153] @ 0x99 - 8007220: b126 cbz r6, 800722c - 8007222: 4633 mov r3, r6 - 8007224: 6836 ldr r6, [r6, #0] - 8007226: 2e00 cmp r6, #0 - 8007228: d1fb bne.n 8007222 - 800722a: 461e mov r6, r3 - 800722c: f8df a178 ldr.w sl, [pc, #376] @ 80073a8 - 8007230: f8df b17c ldr.w fp, [pc, #380] @ 80073b0 - 8007234: e0de b.n 80073f4 - 8007236: 7d23 ldrb r3, [r4, #20] - 8007238: 2b02 cmp r3, #2 - 800723a: d009 beq.n 8007250 - 800723c: 68eb ldr r3, [r5, #12] - 800723e: 2010 movs r0, #16 - 8007240: 899b ldrh r3, [r3, #12] - 8007242: 9304 str r3, [sp, #16] - 8007244: f7fc fa27 bl 8003696 - 8007248: 9b04 ldr r3, [sp, #16] - 800724a: 68ea ldr r2, [r5, #12] - 800724c: 4303 orrs r3, r0 - 800724e: 8193 strh r3, [r2, #12] - 8007250: 4628 mov r0, r5 - 8007252: f7ff fb8f bl 8006974 - 8007256: 2800 cmp r0, #0 - 8007258: d170 bne.n 800733c - 800725a: 68eb ldr r3, [r5, #12] - 800725c: 6a60 ldr r0, [r4, #36] @ 0x24 - 800725e: 9304 str r3, [sp, #16] - 8007260: f7fc fa1c bl 800369c - 8007264: 9b04 ldr r3, [sp, #16] - 8007266: 6098 str r0, [r3, #8] - 8007268: 68eb ldr r3, [r5, #12] - 800726a: 8d60 ldrh r0, [r4, #42] @ 0x2a - 800726c: 9304 str r3, [sp, #16] - 800726e: f7fc fa12 bl 8003696 - 8007272: 9b04 ldr r3, [sp, #16] - 8007274: 8d62 ldrh r2, [r4, #42] @ 0x2a - 8007276: 81d8 strh r0, [r3, #14] - 8007278: 6a63 ldr r3, [r4, #36] @ 0x24 - 800727a: 4413 add r3, r2 - 800727c: 62e3 str r3, [r4, #44] @ 0x2c - 800727e: 7aaa ldrb r2, [r5, #10] - 8007280: 68eb ldr r3, [r5, #12] - 8007282: 07d2 lsls r2, r2, #31 - 8007284: d44a bmi.n 800731c - 8007286: f103 0214 add.w r2, r3, #20 - 800728a: f9b4 3030 ldrsh.w r3, [r4, #48] @ 0x30 - 800728e: 2b00 cmp r3, #0 - 8007290: bfbc itt lt - 8007292: 2300 movlt r3, #0 - 8007294: 8623 strhlt r3, [r4, #48] @ 0x30 - 8007296: 6b63 ldr r3, [r4, #52] @ 0x34 - 8007298: b94b cbnz r3, 80072ae - 800729a: 4948 ldr r1, [pc, #288] @ (80073bc ) - 800729c: 68eb ldr r3, [r5, #12] - 800729e: 6809 ldr r1, [r1, #0] - 80072a0: 9204 str r2, [sp, #16] - 80072a2: 6361 str r1, [r4, #52] @ 0x34 - 80072a4: 6858 ldr r0, [r3, #4] - 80072a6: f7fc f9f9 bl 800369c - 80072aa: 9a04 ldr r2, [sp, #16] - 80072ac: 63a0 str r0, [r4, #56] @ 0x38 - 80072ae: 6869 ldr r1, [r5, #4] - 80072b0: 68eb ldr r3, [r5, #12] - 80072b2: 6848 ldr r0, [r1, #4] - 80072b4: f8b1 c00a ldrh.w ip, [r1, #10] - 80072b8: 604b str r3, [r1, #4] - 80072ba: 1a18 subs r0, r3, r0 - 80072bc: b280 uxth r0, r0 - 80072be: ebac 0c00 sub.w ip, ip, r0 - 80072c2: f8a1 c00a strh.w ip, [r1, #10] - 80072c6: f8b1 c008 ldrh.w ip, [r1, #8] - 80072ca: ebac 0000 sub.w r0, ip, r0 - 80072ce: 8108 strh r0, [r1, #8] - 80072d0: 2100 movs r1, #0 - 80072d2: 7419 strb r1, [r3, #16] - 80072d4: 7459 strb r1, [r3, #17] - 80072d6: 7aa9 ldrb r1, [r5, #10] - 80072d8: f011 0f01 tst.w r1, #1 - 80072dc: bf0c ite eq - 80072de: 2114 moveq r1, #20 - 80072e0: 2118 movne r1, #24 - 80072e2: 440b add r3, r1 - 80072e4: 429a cmp r2, r3 - 80072e6: d006 beq.n 80072f6 - 80072e8: 4935 ldr r1, [pc, #212] @ (80073c0 ) - 80072ea: 4653 mov r3, sl - 80072ec: f240 621c movw r2, #1564 @ 0x61c - 80072f0: 4658 mov r0, fp - 80072f2: f003 fa49 bl 800a788 - 80072f6: 2306 movs r3, #6 - 80072f8: 9702 str r7, [sp, #8] - 80072fa: 9301 str r3, [sp, #4] - 80072fc: 7aa3 ldrb r3, [r4, #10] - 80072fe: 9300 str r3, [sp, #0] - 8007300: 7ae3 ldrb r3, [r4, #11] - 8007302: 6868 ldr r0, [r5, #4] - 8007304: 464a mov r2, r9 - 8007306: 4621 mov r1, r4 - 8007308: f002 fc2e bl 8009b68 - 800730c: b1b0 cbz r0, 800733c - 800730e: 8b63 ldrh r3, [r4, #26] - 8007310: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8007314: 8363 strh r3, [r4, #26] - 8007316: b007 add sp, #28 - 8007318: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 800731c: 464a mov r2, r9 - 800731e: 4639 mov r1, r7 - 8007320: f44f 7006 mov.w r0, #536 @ 0x218 - 8007324: 9304 str r3, [sp, #16] - 8007326: f7fd fa65 bl 80047f4 - 800732a: f040 7001 orr.w r0, r0, #33816576 @ 0x2040000 - 800732e: f7fc f9b5 bl 800369c - 8007332: 9b04 ldr r3, [sp, #16] - 8007334: 6158 str r0, [r3, #20] - 8007336: f103 0218 add.w r2, r3, #24 - 800733a: e7a6 b.n 800728a - 800733c: 682b ldr r3, [r5, #0] - 800733e: 66e3 str r3, [r4, #108] @ 0x6c - 8007340: 7d23 ldrb r3, [r4, #20] - 8007342: 2b02 cmp r3, #2 - 8007344: bf1e ittt ne - 8007346: 8b63 ldrhne r3, [r4, #26] - 8007348: f023 0303 bicne.w r3, r3, #3 - 800734c: 8363 strhne r3, [r4, #26] - 800734e: 68eb ldr r3, [r5, #12] - 8007350: 6858 ldr r0, [r3, #4] - 8007352: f7fc f9a3 bl 800369c - 8007356: 8929 ldrh r1, [r5, #8] - 8007358: 68eb ldr r3, [r5, #12] - 800735a: 9104 str r1, [sp, #16] - 800735c: 9005 str r0, [sp, #20] - 800735e: 8998 ldrh r0, [r3, #12] - 8007360: f7fc f999 bl 8003696 - 8007364: e9dd 1204 ldrd r1, r2, [sp, #16] - 8007368: f010 0303 ands.w r3, r0, #3 - 800736c: 440a add r2, r1 - 800736e: bf18 it ne - 8007370: 2301 movne r3, #1 - 8007372: 4413 add r3, r2 - 8007374: 6d22 ldr r2, [r4, #80] @ 0x50 - 8007376: 1ad2 subs r2, r2, r3 - 8007378: 2a00 cmp r2, #0 - 800737a: bfb8 it lt - 800737c: 6523 strlt r3, [r4, #80] @ 0x50 - 800737e: 68ea ldr r2, [r5, #12] - 8007380: 892b ldrh r3, [r5, #8] - 8007382: 9304 str r3, [sp, #16] - 8007384: 8990 ldrh r0, [r2, #12] - 8007386: f7fc f986 bl 8003696 - 800738a: 9b04 ldr r3, [sp, #16] - 800738c: f010 0003 ands.w r0, r0, #3 - 8007390: bf18 it ne - 8007392: 2001 movne r0, #1 - 8007394: 42d8 cmn r0, r3 - 8007396: f000 8084 beq.w 80074a2 - 800739a: 2300 movs r3, #0 - 800739c: 602b str r3, [r5, #0] - 800739e: 6f23 ldr r3, [r4, #112] @ 0x70 - 80073a0: b983 cbnz r3, 80073c4 - 80073a2: 6725 str r5, [r4, #112] @ 0x70 - 80073a4: 462e mov r6, r5 - 80073a6: e022 b.n 80073ee - 80073a8: 0800c719 .word 0x0800c719 - 80073ac: 0800caa7 .word 0x0800caa7 - 80073b0: 0800b767 .word 0x0800b767 - 80073b4: 0800cabf .word 0x0800cabf - 80073b8: 20018aa4 .word 0x20018aa4 - 80073bc: 20018aa0 .word 0x20018aa0 - 80073c0: 0800cafc .word 0x0800cafc - 80073c4: 68eb ldr r3, [r5, #12] - 80073c6: 6858 ldr r0, [r3, #4] - 80073c8: f7fc f968 bl 800369c - 80073cc: 68f2 ldr r2, [r6, #12] - 80073ce: 9004 str r0, [sp, #16] - 80073d0: 6850 ldr r0, [r2, #4] - 80073d2: f7fc f963 bl 800369c - 80073d6: 9b04 ldr r3, [sp, #16] - 80073d8: 1a1b subs r3, r3, r0 - 80073da: 2b00 cmp r3, #0 - 80073dc: da5f bge.n 800749e - 80073de: f104 0370 add.w r3, r4, #112 @ 0x70 - 80073e2: 681a ldr r2, [r3, #0] - 80073e4: 2a00 cmp r2, #0 - 80073e6: d149 bne.n 800747c - 80073e8: 681a ldr r2, [r3, #0] - 80073ea: 602a str r2, [r5, #0] - 80073ec: 601d str r5, [r3, #0] - 80073ee: 6ee5 ldr r5, [r4, #108] @ 0x6c - 80073f0: 2d00 cmp r5, #0 - 80073f2: d03a beq.n 800746a - 80073f4: 68eb ldr r3, [r5, #12] - 80073f6: 6858 ldr r0, [r3, #4] - 80073f8: f7fc f950 bl 800369c - 80073fc: 6c63 ldr r3, [r4, #68] @ 0x44 - 80073fe: 1ac0 subs r0, r0, r3 - 8007400: 892b ldrh r3, [r5, #8] - 8007402: 4418 add r0, r3 - 8007404: 4540 cmp r0, r8 - 8007406: d82e bhi.n 8007466 - 8007408: 68eb ldr r3, [r5, #12] - 800740a: 8998 ldrh r0, [r3, #12] - 800740c: f7fc f943 bl 8003696 - 8007410: 0741 lsls r1, r0, #29 - 8007412: d506 bpl.n 8007422 - 8007414: 4926 ldr r1, [pc, #152] @ (80074b0 ) - 8007416: 4653 mov r3, sl - 8007418: f240 5236 movw r2, #1334 @ 0x536 - 800741c: 4658 mov r0, fp - 800741e: f003 f9b3 bl 800a788 - 8007422: 6f23 ldr r3, [r4, #112] @ 0x70 - 8007424: 2b00 cmp r3, #0 - 8007426: f43f af06 beq.w 8007236 - 800742a: 8b62 ldrh r2, [r4, #26] - 800742c: f012 0f44 tst.w r2, #68 @ 0x44 - 8007430: f47f af01 bne.w 8007236 - 8007434: 6ee3 ldr r3, [r4, #108] @ 0x6c - 8007436: b143 cbz r3, 800744a - 8007438: 6819 ldr r1, [r3, #0] - 800743a: 2900 cmp r1, #0 - 800743c: f47f aefb bne.w 8007236 - 8007440: 8919 ldrh r1, [r3, #8] - 8007442: 8e63 ldrh r3, [r4, #50] @ 0x32 - 8007444: 4299 cmp r1, r3 - 8007446: f4bf aef6 bcs.w 8007236 - 800744a: f8b4 3064 ldrh.w r3, [r4, #100] @ 0x64 - 800744e: 2b00 cmp r3, #0 - 8007450: f43f aef1 beq.w 8007236 - 8007454: f8b4 3066 ldrh.w r3, [r4, #102] @ 0x66 - 8007458: 2b08 cmp r3, #8 - 800745a: f63f aeec bhi.w 8007236 - 800745e: f012 0fa0 tst.w r2, #160 @ 0xa0 - 8007462: f47f aee8 bne.w 8007236 - 8007466: 6ee3 ldr r3, [r4, #108] @ 0x6c - 8007468: b913 cbnz r3, 8007470 - 800746a: 2300 movs r3, #0 - 800746c: f8a4 3068 strh.w r3, [r4, #104] @ 0x68 - 8007470: 8b63 ldrh r3, [r4, #26] - 8007472: f023 0380 bic.w r3, r3, #128 @ 0x80 - 8007476: 8363 strh r3, [r4, #26] - 8007478: 2000 movs r0, #0 - 800747a: e74c b.n 8007316 - 800747c: 68d2 ldr r2, [r2, #12] - 800747e: 9305 str r3, [sp, #20] - 8007480: 6850 ldr r0, [r2, #4] - 8007482: f7fc f90b bl 800369c - 8007486: 68e9 ldr r1, [r5, #12] - 8007488: 9004 str r0, [sp, #16] - 800748a: 6848 ldr r0, [r1, #4] - 800748c: f7fc f906 bl 800369c - 8007490: 9a04 ldr r2, [sp, #16] - 8007492: 9b05 ldr r3, [sp, #20] - 8007494: 1a12 subs r2, r2, r0 - 8007496: 2a00 cmp r2, #0 - 8007498: daa6 bge.n 80073e8 - 800749a: 681b ldr r3, [r3, #0] - 800749c: e7a1 b.n 80073e2 - 800749e: 6035 str r5, [r6, #0] - 80074a0: e780 b.n 80073a4 - 80074a2: 4628 mov r0, r5 - 80074a4: f7fd f952 bl 800474c - 80074a8: e7a1 b.n 80073ee - 80074aa: f06f 0003 mvn.w r0, #3 - 80074ae: e732 b.n 8007316 - 80074b0: 0800cae5 .word 0x0800cae5 - -080074b4 : - 80074b4: b510 push {r4, lr} - 80074b6: 4604 mov r4, r0 - 80074b8: b930 cbnz r0, 80074c8 - 80074ba: 4b09 ldr r3, [pc, #36] @ (80074e0 ) - 80074bc: 4909 ldr r1, [pc, #36] @ (80074e4 ) - 80074be: 480a ldr r0, [pc, #40] @ (80074e8 ) - 80074c0: f44f 62d3 mov.w r2, #1688 @ 0x698 - 80074c4: f003 f960 bl 800a788 - 80074c8: f894 3042 ldrb.w r3, [r4, #66] @ 0x42 - 80074cc: 2bff cmp r3, #255 @ 0xff - 80074ce: bf1c itt ne - 80074d0: 3301 addne r3, #1 - 80074d2: f884 3042 strbne.w r3, [r4, #66] @ 0x42 - 80074d6: 4620 mov r0, r4 - 80074d8: e8bd 4010 ldmia.w sp!, {r4, lr} - 80074dc: f7ff be40 b.w 8007160 - 80074e0: 0800c719 .word 0x0800c719 - 80074e4: 0800cb0f .word 0x0800cb0f - 80074e8: 0800b767 .word 0x0800b767 - -080074ec : - 80074ec: b510 push {r4, lr} - 80074ee: 4604 mov r4, r0 - 80074f0: b930 cbnz r0, 8007500 - 80074f2: 4b08 ldr r3, [pc, #32] @ (8007514 ) - 80074f4: 4908 ldr r1, [pc, #32] @ (8007518 ) - 80074f6: 4809 ldr r0, [pc, #36] @ (800751c ) - 80074f8: f240 62ad movw r2, #1709 @ 0x6ad - 80074fc: f003 f944 bl 800a788 - 8007500: 4620 mov r0, r4 - 8007502: f7ff fcfb bl 8006efc - 8007506: b920 cbnz r0, 8007512 - 8007508: 4620 mov r0, r4 - 800750a: e8bd 4010 ldmia.w sp!, {r4, lr} - 800750e: f7ff bfd1 b.w 80074b4 - 8007512: bd10 pop {r4, pc} - 8007514: 0800c719 .word 0x0800c719 - 8007518: 0800cb32 .word 0x0800cb32 - 800751c: 0800b767 .word 0x0800b767 - -08007520 : - 8007520: b570 push {r4, r5, r6, lr} - 8007522: 4604 mov r4, r0 - 8007524: b930 cbnz r0, 8007534 - 8007526: 4b0f ldr r3, [pc, #60] @ (8007564 ) - 8007528: 490f ldr r1, [pc, #60] @ (8007568 ) - 800752a: 4810 ldr r0, [pc, #64] @ (800756c ) - 800752c: f640 0224 movw r2, #2084 @ 0x824 - 8007530: f003 f92a bl 800a788 - 8007534: 6d20 ldr r0, [r4, #80] @ 0x50 - 8007536: 3801 subs r0, #1 - 8007538: f7fc f8b0 bl 800369c - 800753c: 2100 movs r1, #0 - 800753e: 4602 mov r2, r0 - 8007540: 4620 mov r0, r4 - 8007542: f7ff fadd bl 8006b00 - 8007546: 4605 mov r5, r0 - 8007548: b148 cbz r0, 800755e - 800754a: f7ff faff bl 8006b4c - 800754e: 1d23 adds r3, r4, #4 - 8007550: 4622 mov r2, r4 - 8007552: 4629 mov r1, r5 - 8007554: 4620 mov r0, r4 - 8007556: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 800755a: f7ff bb07 b.w 8006b6c - 800755e: f04f 30ff mov.w r0, #4294967295 - 8007562: bd70 pop {r4, r5, r6, pc} - 8007564: 0800c719 .word 0x0800c719 - 8007568: 0800cb4e .word 0x0800cb4e - 800756c: 0800b767 .word 0x0800b767 - -08007570 : - 8007570: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 8007574: 4606 mov r6, r0 - 8007576: b930 cbnz r0, 8007586 - 8007578: 4b2c ldr r3, [pc, #176] @ (800762c ) - 800757a: 492d ldr r1, [pc, #180] @ (8007630 ) - 800757c: 482d ldr r0, [pc, #180] @ (8007634 ) - 800757e: f640 024f movw r2, #2127 @ 0x84f - 8007582: f003 f901 bl 800a788 - 8007586: 6ef5 ldr r5, [r6, #108] @ 0x6c - 8007588: 2d00 cmp r5, #0 - 800758a: d049 beq.n 8007620 - 800758c: f896 309a ldrb.w r3, [r6, #154] @ 0x9a - 8007590: 2bff cmp r3, #255 @ 0xff - 8007592: bf1c itt ne - 8007594: 3301 addne r3, #1 - 8007596: f886 309a strbne.w r3, [r6, #154] @ 0x9a - 800759a: 68eb ldr r3, [r5, #12] - 800759c: 8998 ldrh r0, [r3, #12] - 800759e: f7fc f87a bl 8003696 - 80075a2: f010 0401 ands.w r4, r0, #1 - 80075a6: bf18 it ne - 80075a8: 892c ldrhne r4, [r5, #8] - 80075aa: 68eb ldr r3, [r5, #12] - 80075ac: bf1c itt ne - 80075ae: fab4 f484 clzne r4, r4 - 80075b2: 0964 lsrne r4, r4, #5 - 80075b4: 685a ldr r2, [r3, #4] - 80075b6: f084 0101 eor.w r1, r4, #1 - 80075ba: 4630 mov r0, r6 - 80075bc: f7ff faa0 bl 8006b00 - 80075c0: 4607 mov r7, r0 - 80075c2: b380 cbz r0, 8007626 - 80075c4: f8d0 8004 ldr.w r8, [r0, #4] - 80075c8: b1fc cbz r4, 800760a - 80075ca: f8b8 400c ldrh.w r4, [r8, #12] - 80075ce: 2011 movs r0, #17 - 80075d0: f7fc f861 bl 8003696 - 80075d4: f424 547c bic.w r4, r4, #16128 @ 0x3f00 - 80075d8: b2a4 uxth r4, r4 - 80075da: 4320 orrs r0, r4 - 80075dc: f8a8 000c strh.w r0, [r8, #12] - 80075e0: 68eb ldr r3, [r5, #12] - 80075e2: 6858 ldr r0, [r3, #4] - 80075e4: f7fc f85a bl 800369c - 80075e8: 6d33 ldr r3, [r6, #80] @ 0x50 - 80075ea: 3001 adds r0, #1 - 80075ec: 1a1b subs r3, r3, r0 - 80075ee: 2b00 cmp r3, #0 - 80075f0: bfb8 it lt - 80075f2: 6530 strlt r0, [r6, #80] @ 0x50 - 80075f4: 4638 mov r0, r7 - 80075f6: f7ff faa9 bl 8006b4c - 80075fa: 1d33 adds r3, r6, #4 - 80075fc: 4632 mov r2, r6 - 80075fe: 4639 mov r1, r7 - 8007600: 4630 mov r0, r6 - 8007602: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} - 8007606: f7ff bab1 b.w 8006b6c - 800760a: 6868 ldr r0, [r5, #4] - 800760c: 892a ldrh r2, [r5, #8] - 800760e: 8903 ldrh r3, [r0, #8] - 8007610: 1a9b subs r3, r3, r2 - 8007612: b29b uxth r3, r3 - 8007614: 2201 movs r2, #1 - 8007616: f108 0114 add.w r1, r8, #20 - 800761a: f7fc ff71 bl 8004500 - 800761e: e7df b.n 80075e0 - 8007620: 4628 mov r0, r5 - 8007622: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 8007626: f04f 30ff mov.w r0, #4294967295 - 800762a: e7fa b.n 8007622 - 800762c: 0800c719 .word 0x0800c719 - 8007630: 0800cb69 .word 0x0800cb69 - 8007634: 0800b767 .word 0x0800b767 - -08007638 : - 8007638: b570 push {r4, r5, r6, lr} - 800763a: 4604 mov r4, r0 - 800763c: 2006 movs r0, #6 - 800763e: 460e mov r6, r1 - 8007640: 4615 mov r5, r2 - 8007642: f7fc fab3 bl 8003bac - 8007646: b938 cbnz r0, 8007658 - 8007648: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 800764c: 4b0f ldr r3, [pc, #60] @ (800768c ) - 800764e: 4910 ldr r1, [pc, #64] @ (8007690 ) - 8007650: 4810 ldr r0, [pc, #64] @ (8007694 ) - 8007652: 22be movs r2, #190 @ 0xbe - 8007654: f003 b898 b.w 800a788 - 8007658: 4a0f ldr r2, [pc, #60] @ (8007698 ) - 800765a: 6044 str r4, [r0, #4] - 800765c: 2300 movs r3, #0 - 800765e: 6003 str r3, [r0, #0] - 8007660: 6813 ldr r3, [r2, #0] - 8007662: e9c0 6502 strd r6, r5, [r0, #8] - 8007666: b90b cbnz r3, 800766c - 8007668: 6010 str r0, [r2, #0] - 800766a: bd70 pop {r4, r5, r6, pc} - 800766c: 6859 ldr r1, [r3, #4] - 800766e: 1a61 subs r1, r4, r1 - 8007670: 2900 cmp r1, #0 - 8007672: da01 bge.n 8007678 - 8007674: 6003 str r3, [r0, #0] - 8007676: e7f7 b.n 8007668 - 8007678: 4619 mov r1, r3 - 800767a: 681b ldr r3, [r3, #0] - 800767c: b11b cbz r3, 8007686 - 800767e: 685a ldr r2, [r3, #4] - 8007680: 1aa2 subs r2, r4, r2 - 8007682: 2a00 cmp r2, #0 - 8007684: daf8 bge.n 8007678 - 8007686: 6003 str r3, [r0, #0] - 8007688: 6008 str r0, [r1, #0] - 800768a: e7ee b.n 800766a - 800768c: 0800cb8c .word 0x0800cb8c - 8007690: 0800cbc0 .word 0x0800cbc0 - 8007694: 0800b767 .word 0x0800b767 - 8007698: 20018ae4 .word 0x20018ae4 - -0800769c : - 800769c: b570 push {r4, r5, r6, lr} - 800769e: 6843 ldr r3, [r0, #4] - 80076a0: 4604 mov r4, r0 - 80076a2: 4798 blx r3 - 80076a4: f7fb fe62 bl 800336c - 80076a8: 4b07 ldr r3, [pc, #28] @ (80076c8 ) - 80076aa: 6826 ldr r6, [r4, #0] - 80076ac: 4907 ldr r1, [pc, #28] @ (80076cc ) - 80076ae: 4605 mov r5, r0 - 80076b0: 6818 ldr r0, [r3, #0] - 80076b2: 4430 add r0, r6 - 80076b4: 1b43 subs r3, r0, r5 - 80076b6: 2b00 cmp r3, #0 - 80076b8: 4622 mov r2, r4 - 80076ba: bfb8 it lt - 80076bc: 1970 addlt r0, r6, r5 - 80076be: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 80076c2: f7ff bfb9 b.w 8007638 - 80076c6: bf00 nop - 80076c8: 20018ae0 .word 0x20018ae0 - 80076cc: 0800769d .word 0x0800769d - -080076d0 : - 80076d0: f1b0 4f80 cmp.w r0, #1073741824 @ 0x40000000 - 80076d4: b570 push {r4, r5, r6, lr} - 80076d6: 4604 mov r4, r0 - 80076d8: 460d mov r5, r1 - 80076da: 4616 mov r6, r2 - 80076dc: d306 bcc.n 80076ec - 80076de: 4b08 ldr r3, [pc, #32] @ (8007700 ) - 80076e0: 4908 ldr r1, [pc, #32] @ (8007704 ) - 80076e2: 4809 ldr r0, [pc, #36] @ (8007708 ) - 80076e4: f240 1229 movw r2, #297 @ 0x129 - 80076e8: f003 f84e bl 800a788 - 80076ec: f7fb fe3e bl 800336c - 80076f0: 4632 mov r2, r6 - 80076f2: 4629 mov r1, r5 - 80076f4: 4420 add r0, r4 - 80076f6: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 80076fa: f7ff bf9d b.w 8007638 - 80076fe: bf00 nop - 8007700: 0800cb8c .word 0x0800cb8c - 8007704: 0800cbfd .word 0x0800cbfd - 8007708: 0800b767 .word 0x0800b767 - -0800770c : - 800770c: 4b08 ldr r3, [pc, #32] @ (8007730 ) - 800770e: 681a ldr r2, [r3, #0] - 8007710: b962 cbnz r2, 800772c - 8007712: 4a08 ldr r2, [pc, #32] @ (8007734 ) - 8007714: 6812 ldr r2, [r2, #0] - 8007716: b912 cbnz r2, 800771e - 8007718: 4a07 ldr r2, [pc, #28] @ (8007738 ) - 800771a: 6812 ldr r2, [r2, #0] - 800771c: b132 cbz r2, 800772c - 800771e: 2201 movs r2, #1 - 8007720: 601a str r2, [r3, #0] - 8007722: 4906 ldr r1, [pc, #24] @ (800773c ) - 8007724: 2200 movs r2, #0 - 8007726: 20fa movs r0, #250 @ 0xfa - 8007728: f7ff bfd2 b.w 80076d0 - 800772c: 4770 bx lr - 800772e: bf00 nop - 8007730: 20018adc .word 0x20018adc - 8007734: 20018a94 .word 0x20018a94 - 8007738: 20018a90 .word 0x20018a90 - 800773c: 08007741 .word 0x08007741 - -08007740 : - 8007740: b508 push {r3, lr} - 8007742: f7fd fe35 bl 80053b0 - 8007746: 4b08 ldr r3, [pc, #32] @ (8007768 ) - 8007748: 681b ldr r3, [r3, #0] - 800774a: b913 cbnz r3, 8007752 - 800774c: 4b07 ldr r3, [pc, #28] @ (800776c ) - 800774e: 681b ldr r3, [r3, #0] - 8007750: b133 cbz r3, 8007760 - 8007752: e8bd 4008 ldmia.w sp!, {r3, lr} - 8007756: 4906 ldr r1, [pc, #24] @ (8007770 ) - 8007758: 2200 movs r2, #0 - 800775a: 20fa movs r0, #250 @ 0xfa - 800775c: f7ff bfb8 b.w 80076d0 - 8007760: 4a04 ldr r2, [pc, #16] @ (8007774 ) - 8007762: 6013 str r3, [r2, #0] - 8007764: bd08 pop {r3, pc} - 8007766: bf00 nop - 8007768: 20018a94 .word 0x20018a94 - 800776c: 20018a90 .word 0x20018a90 - 8007770: 08007741 .word 0x08007741 - 8007774: 20018adc .word 0x20018adc - -08007778 : - 8007778: b570 push {r4, r5, r6, lr} - 800777a: 4d06 ldr r5, [pc, #24] @ (8007794 ) - 800777c: 4e06 ldr r6, [pc, #24] @ (8007798 ) - 800777e: 2401 movs r4, #1 - 8007780: f855 0f08 ldr.w r0, [r5, #8]! - 8007784: 4631 mov r1, r6 - 8007786: 462a mov r2, r5 - 8007788: 3401 adds r4, #1 - 800778a: f7ff ffa1 bl 80076d0 - 800778e: 2c05 cmp r4, #5 - 8007790: d1f6 bne.n 8007780 - 8007792: bd70 pop {r4, r5, r6, pc} - 8007794: 0800cc34 .word 0x0800cc34 - 8007798: 0800769d .word 0x0800769d - -0800779c : - 800779c: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - 80077a0: f7fb fde4 bl 800336c - 80077a4: f8df 8044 ldr.w r8, [pc, #68] @ 80077ec - 80077a8: f8df 9044 ldr.w r9, [pc, #68] @ 80077f0 - 80077ac: 4604 mov r4, r0 - 80077ae: 4e0e ldr r6, [pc, #56] @ (80077e8 ) - 80077b0: f898 3000 ldrb.w r3, [r8] - 80077b4: b10b cbz r3, 80077ba - 80077b6: f7fc fc03 bl 8003fc0 - 80077ba: 6831 ldr r1, [r6, #0] - 80077bc: b189 cbz r1, 80077e2 - 80077be: 684b ldr r3, [r1, #4] - 80077c0: 1ae2 subs r2, r4, r3 - 80077c2: 2a00 cmp r2, #0 - 80077c4: db0d blt.n 80077e2 - 80077c6: e9d1 5702 ldrd r5, r7, [r1, #8] - 80077ca: 680a ldr r2, [r1, #0] - 80077cc: 6032 str r2, [r6, #0] - 80077ce: 2006 movs r0, #6 - 80077d0: f8c9 3000 str.w r3, [r9] - 80077d4: f7fc fa18 bl 8003c08 - 80077d8: 2d00 cmp r5, #0 - 80077da: d0e9 beq.n 80077b0 - 80077dc: 4638 mov r0, r7 - 80077de: 47a8 blx r5 - 80077e0: e7e5 b.n 80077ae - 80077e2: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} - 80077e6: bf00 nop - 80077e8: 20018ae4 .word 0x20018ae4 - 80077ec: 20018a8c .word 0x20018a8c - 80077f0: 20018ae0 .word 0x20018ae0 - -080077f4 : - 80077f4: b508 push {r3, lr} - 80077f6: f002 fec7 bl 800a588 - 80077fa: 4b03 ldr r3, [pc, #12] @ (8007808 ) - 80077fc: ea6f 4080 mvn.w r0, r0, lsl #18 - 8007800: ea6f 4090 mvn.w r0, r0, lsr #18 - 8007804: 8018 strh r0, [r3, #0] - 8007806: bd08 pop {r3, pc} - 8007808: 20000026 .word 0x20000026 - -0800780c : - 800780c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8007810: 4688 mov r8, r1 - 8007812: b085 sub sp, #20 - 8007814: 4605 mov r5, r0 - 8007816: b928 cbnz r0, 8007824 - 8007818: 4b5e ldr r3, [pc, #376] @ (8007994 ) - 800781a: 495f ldr r1, [pc, #380] @ (8007998 ) - 800781c: 485f ldr r0, [pc, #380] @ (800799c ) - 800781e: 22cf movs r2, #207 @ 0xcf - 8007820: f002 ffb2 bl 800a788 - 8007824: f1b8 0f00 cmp.w r8, #0 - 8007828: d105 bne.n 8007836 - 800782a: 4b5a ldr r3, [pc, #360] @ (8007994 ) - 800782c: 495c ldr r1, [pc, #368] @ (80079a0 ) - 800782e: 485b ldr r0, [pc, #364] @ (800799c ) - 8007830: 22d0 movs r2, #208 @ 0xd0 - 8007832: f002 ffa9 bl 800a788 - 8007836: 896b ldrh r3, [r5, #10] - 8007838: 2b07 cmp r3, #7 - 800783a: d805 bhi.n 8007848 - 800783c: 4628 mov r0, r5 - 800783e: b005 add sp, #20 - 8007840: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8007844: f7fc bc44 b.w 80040d0 - 8007848: 4f56 ldr r7, [pc, #344] @ (80079a4 ) - 800784a: 686c ldr r4, [r5, #4] - 800784c: 6839 ldr r1, [r7, #0] - 800784e: 6978 ldr r0, [r7, #20] - 8007850: f8df b160 ldr.w fp, [pc, #352] @ 80079b4 - 8007854: f002 f999 bl 8009b8a - 8007858: 4681 mov r9, r0 - 800785a: 8820 ldrh r0, [r4, #0] - 800785c: f7fb ff1b bl 8003696 - 8007860: 9002 str r0, [sp, #8] - 8007862: 8860 ldrh r0, [r4, #2] - 8007864: f7fb ff17 bl 8003696 - 8007868: 2600 movs r6, #0 - 800786a: f8db 4000 ldr.w r4, [fp] - 800786e: 9003 str r0, [sp, #12] - 8007870: 46b2 mov sl, r6 - 8007872: b93c cbnz r4, 8007884 - 8007874: 2e00 cmp r6, #0 - 8007876: d148 bne.n 800790a - 8007878: f8d8 2004 ldr.w r2, [r8, #4] - 800787c: 697b ldr r3, [r7, #20] - 800787e: 429a cmp r2, r3 - 8007880: d043 beq.n 800790a - 8007882: e7db b.n 800783c - 8007884: 8a63 ldrh r3, [r4, #18] - 8007886: 9a03 ldr r2, [sp, #12] - 8007888: 4293 cmp r3, r2 - 800788a: d150 bne.n 800792e - 800788c: f1b8 0f00 cmp.w r8, #0 - 8007890: d105 bne.n 800789e - 8007892: 4b40 ldr r3, [pc, #256] @ (8007994 ) - 8007894: 4944 ldr r1, [pc, #272] @ (80079a8 ) - 8007896: 4841 ldr r0, [pc, #260] @ (800799c ) - 8007898: 2288 movs r2, #136 @ 0x88 - 800789a: f002 ff75 bl 800a788 - 800789e: 7a22 ldrb r2, [r4, #8] - 80078a0: b132 cbz r2, 80078b0 - 80078a2: 687b ldr r3, [r7, #4] - 80078a4: f893 3034 ldrb.w r3, [r3, #52] @ 0x34 - 80078a8: 3301 adds r3, #1 - 80078aa: b2db uxtb r3, r3 - 80078ac: 429a cmp r2, r3 - 80078ae: d13e bne.n 800792e - 80078b0: 6823 ldr r3, [r4, #0] - 80078b2: f1b9 0f00 cmp.w r9, #0 - 80078b6: d035 beq.n 8007924 - 80078b8: b13b cbz r3, 80078ca - 80078ba: 697a ldr r2, [r7, #20] - 80078bc: 1c51 adds r1, r2, #1 - 80078be: d004 beq.n 80078ca - 80078c0: f8d8 1008 ldr.w r1, [r8, #8] - 80078c4: 405a eors r2, r3 - 80078c6: 420a tst r2, r1 - 80078c8: d131 bne.n 800792e - 80078ca: 7c22 ldrb r2, [r4, #16] - 80078cc: 0752 lsls r2, r2, #29 - 80078ce: d40f bmi.n 80078f0 - 80078d0: 2e00 cmp r6, #0 - 80078d2: d02f beq.n 8007934 - 80078d4: f1b9 0f00 cmp.w r9, #0 - 80078d8: d00a beq.n 80078f0 - 80078da: 697a ldr r2, [r7, #20] - 80078dc: 3201 adds r2, #1 - 80078de: d107 bne.n 80078f0 - 80078e0: f8d8 2004 ldr.w r2, [r8, #4] - 80078e4: 6831 ldr r1, [r6, #0] - 80078e6: 4291 cmp r1, r2 - 80078e8: d002 beq.n 80078f0 - 80078ea: 429a cmp r2, r3 - 80078ec: bf08 it eq - 80078ee: 4626 moveq r6, r4 - 80078f0: 8aa3 ldrh r3, [r4, #20] - 80078f2: 9a02 ldr r2, [sp, #8] - 80078f4: 4293 cmp r3, r2 - 80078f6: d11a bne.n 800792e - 80078f8: 6863 ldr r3, [r4, #4] - 80078fa: b113 cbz r3, 8007902 - 80078fc: 693a ldr r2, [r7, #16] - 80078fe: 4293 cmp r3, r2 - 8007900: d115 bne.n 800792e - 8007902: f1ba 0f00 cmp.w sl, #0 - 8007906: d117 bne.n 8007938 - 8007908: 4626 mov r6, r4 - 800790a: 2108 movs r1, #8 - 800790c: 4628 mov r0, r5 - 800790e: f7fc fbab bl 8004068 - 8007912: b1d0 cbz r0, 800794a - 8007914: 4b1f ldr r3, [pc, #124] @ (8007994 ) - 8007916: 4925 ldr r1, [pc, #148] @ (80079ac ) - 8007918: 4820 ldr r0, [pc, #128] @ (800799c ) - 800791a: f44f 72b8 mov.w r2, #368 @ 0x170 - 800791e: f002 ff33 bl 800a788 - 8007922: e78b b.n 800783c - 8007924: 2b00 cmp r3, #0 - 8007926: d0d0 beq.n 80078ca - 8007928: 697a ldr r2, [r7, #20] - 800792a: 4293 cmp r3, r2 - 800792c: d0cd beq.n 80078ca - 800792e: 46a2 mov sl, r4 - 8007930: 68e4 ldr r4, [r4, #12] - 8007932: e79e b.n 8007872 - 8007934: 4626 mov r6, r4 - 8007936: e7db b.n 80078f0 - 8007938: 68e3 ldr r3, [r4, #12] - 800793a: f8ca 300c str.w r3, [sl, #12] - 800793e: f8db 3000 ldr.w r3, [fp] - 8007942: 60e3 str r3, [r4, #12] - 8007944: f8cb 4000 str.w r4, [fp] - 8007948: e7de b.n 8007908 - 800794a: b16e cbz r6, 8007968 - 800794c: 69b4 ldr r4, [r6, #24] - 800794e: 2c00 cmp r4, #0 - 8007950: f43f af74 beq.w 800783c - 8007954: 9b02 ldr r3, [sp, #8] - 8007956: 9300 str r3, [sp, #0] - 8007958: 69f0 ldr r0, [r6, #28] - 800795a: 4b15 ldr r3, [pc, #84] @ (80079b0 ) - 800795c: 462a mov r2, r5 - 800795e: 4631 mov r1, r6 - 8007960: 47a0 blx r4 - 8007962: b005 add sp, #20 - 8007964: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 8007968: f1b9 0f00 cmp.w r9, #0 - 800796c: f47f af66 bne.w 800783c - 8007970: 697b ldr r3, [r7, #20] - 8007972: f003 03f0 and.w r3, r3, #240 @ 0xf0 - 8007976: 2be0 cmp r3, #224 @ 0xe0 - 8007978: f43f af60 beq.w 800783c - 800797c: 89b9 ldrh r1, [r7, #12] - 800797e: 3108 adds r1, #8 - 8007980: b209 sxth r1, r1 - 8007982: 4628 mov r0, r5 - 8007984: f7fc fb9c bl 80040c0 - 8007988: 2103 movs r1, #3 - 800798a: 4628 mov r0, r5 - 800798c: f001 ff5a bl 8009844 - 8007990: e754 b.n 800783c - 8007992: bf00 nop - 8007994: 0800cc5c .word 0x0800cc5c - 8007998: 0800cc8b .word 0x0800cc8b - 800799c: 0800b767 .word 0x0800b767 - 80079a0: 0800cca3 .word 0x0800cca3 - 80079a4: 20005b38 .word 0x20005b38 - 80079a8: 0800ccbc .word 0x0800ccbc - 80079ac: 0800cce1 .word 0x0800cce1 - 80079b0: 20005b48 .word 0x20005b48 - 80079b4: 20018ae8 .word 0x20018ae8 - -080079b8 : - 80079b8: 4b2f ldr r3, [pc, #188] @ (8007a78 ) - 80079ba: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 80079be: 2900 cmp r1, #0 - 80079c0: bf14 ite ne - 80079c2: 460f movne r7, r1 - 80079c4: 461f moveq r7, r3 - 80079c6: b950 cbnz r0, 80079de - 80079c8: 4b2c ldr r3, [pc, #176] @ (8007a7c ) - 80079ca: 492d ldr r1, [pc, #180] @ (8007a80 ) - 80079cc: 482d ldr r0, [pc, #180] @ (8007a84 ) - 80079ce: f240 32b7 movw r2, #951 @ 0x3b7 - 80079d2: f002 fed9 bl 800a788 - 80079d6: f06f 000f mvn.w r0, #15 - 80079da: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 80079de: 4e2a ldr r6, [pc, #168] @ (8007a88 ) - 80079e0: 6834 ldr r4, [r6, #0] - 80079e2: 4621 mov r1, r4 - 80079e4: b951 cbnz r1, 80079fc - 80079e6: b17a cbz r2, 8007a08 - 80079e8: 683d ldr r5, [r7, #0] - 80079ea: 4623 mov r3, r4 - 80079ec: bb7b cbnz r3, 8007a4e - 80079ee: 683b ldr r3, [r7, #0] - 80079f0: 6003 str r3, [r0, #0] - 80079f2: 8242 strh r2, [r0, #18] - 80079f4: 2900 cmp r1, #0 - 80079f6: d03b beq.n 8007a70 - 80079f8: 2000 movs r0, #0 - 80079fa: e7ee b.n 80079da - 80079fc: 4281 cmp r1, r0 - 80079fe: d001 beq.n 8007a04 - 8007a00: 68c9 ldr r1, [r1, #12] - 8007a02: e7ef b.n 80079e4 - 8007a04: 2101 movs r1, #1 - 8007a06: e7ee b.n 80079e6 - 8007a08: f8df c080 ldr.w ip, [pc, #128] @ 8007a8c - 8007a0c: f8bc 3000 ldrh.w r3, [ip] - 8007a10: f44f 4280 mov.w r2, #16384 @ 0x4000 - 8007a14: f64f 7eff movw lr, #65535 @ 0xffff - 8007a18: 4573 cmp r3, lr - 8007a1a: bf1a itte ne - 8007a1c: 3301 addne r3, #1 - 8007a1e: b29b uxthne r3, r3 - 8007a20: f44f 4340 moveq.w r3, #49152 @ 0xc000 - 8007a24: 4625 mov r5, r4 - 8007a26: b90d cbnz r5, 8007a2c - 8007a28: 461a mov r2, r3 - 8007a2a: e007 b.n 8007a3c - 8007a2c: f8b5 8012 ldrh.w r8, [r5, #18] - 8007a30: 4598 cmp r8, r3 - 8007a32: d10a bne.n 8007a4a - 8007a34: 3a01 subs r2, #1 - 8007a36: b292 uxth r2, r2 - 8007a38: 2a00 cmp r2, #0 - 8007a3a: d1ed bne.n 8007a18 - 8007a3c: f8ac 3000 strh.w r3, [ip] - 8007a40: 2a00 cmp r2, #0 - 8007a42: d1d4 bne.n 80079ee - 8007a44: f06f 0007 mvn.w r0, #7 - 8007a48: e7c7 b.n 80079da - 8007a4a: 68ed ldr r5, [r5, #12] - 8007a4c: e7eb b.n 8007a26 - 8007a4e: 4283 cmp r3, r0 - 8007a50: d00c beq.n 8007a6c - 8007a52: f8b3 c012 ldrh.w ip, [r3, #18] - 8007a56: 4594 cmp ip, r2 - 8007a58: d108 bne.n 8007a6c - 8007a5a: f8d3 c000 ldr.w ip, [r3] - 8007a5e: 45ac cmp ip, r5 - 8007a60: d0f0 beq.n 8007a44 - 8007a62: 2d00 cmp r5, #0 - 8007a64: d0ee beq.n 8007a44 - 8007a66: f1bc 0f00 cmp.w ip, #0 - 8007a6a: d0eb beq.n 8007a44 - 8007a6c: 68db ldr r3, [r3, #12] - 8007a6e: e7bd b.n 80079ec - 8007a70: 60c4 str r4, [r0, #12] - 8007a72: 6030 str r0, [r6, #0] - 8007a74: e7c0 b.n 80079f8 - 8007a76: bf00 nop - 8007a78: 0800d510 .word 0x0800d510 - 8007a7c: 0800cc5c .word 0x0800cc5c - 8007a80: 0800ccfc .word 0x0800ccfc - 8007a84: 0800b767 .word 0x0800b767 - 8007a88: 20018ae8 .word 0x20018ae8 - 8007a8c: 20000026 .word 0x20000026 - -08007a90 : - 8007a90: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8007a94: b085 sub sp, #20 - 8007a96: e9dd ba0e ldrd fp, sl, [sp, #56] @ 0x38 - 8007a9a: 460e mov r6, r1 - 8007a9c: 4690 mov r8, r2 - 8007a9e: 4699 mov r9, r3 - 8007aa0: 4607 mov r7, r0 - 8007aa2: b960 cbnz r0, 8007abe - 8007aa4: 4b3e ldr r3, [pc, #248] @ (8007ba0 ) - 8007aa6: 493f ldr r1, [pc, #252] @ (8007ba4 ) - 8007aa8: f240 22d1 movw r2, #721 @ 0x2d1 - 8007aac: 483e ldr r0, [pc, #248] @ (8007ba8 ) - 8007aae: f002 fe6b bl 800a788 - 8007ab2: f06f 050f mvn.w r5, #15 - 8007ab6: 4628 mov r0, r5 - 8007ab8: b005 add sp, #20 - 8007aba: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 8007abe: b921 cbnz r1, 8007aca - 8007ac0: 4b37 ldr r3, [pc, #220] @ (8007ba0 ) - 8007ac2: 493a ldr r1, [pc, #232] @ (8007bac ) - 8007ac4: f240 22d2 movw r2, #722 @ 0x2d2 - 8007ac8: e7f0 b.n 8007aac - 8007aca: b922 cbnz r2, 8007ad6 - 8007acc: 4b34 ldr r3, [pc, #208] @ (8007ba0 ) - 8007ace: 4938 ldr r1, [pc, #224] @ (8007bb0 ) - 8007ad0: f240 22d3 movw r2, #723 @ 0x2d3 - 8007ad4: e7ea b.n 8007aac - 8007ad6: f1ba 0f00 cmp.w sl, #0 - 8007ada: d104 bne.n 8007ae6 - 8007adc: 4b30 ldr r3, [pc, #192] @ (8007ba0 ) - 8007ade: 4935 ldr r1, [pc, #212] @ (8007bb4 ) - 8007ae0: f44f 7235 mov.w r2, #724 @ 0x2d4 - 8007ae4: e7e2 b.n 8007aac - 8007ae6: f1bb 0f00 cmp.w fp, #0 - 8007aea: d104 bne.n 8007af6 - 8007aec: 4b2c ldr r3, [pc, #176] @ (8007ba0 ) - 8007aee: 4932 ldr r1, [pc, #200] @ (8007bb8 ) - 8007af0: f240 22d5 movw r2, #725 @ 0x2d5 - 8007af4: e7da b.n 8007aac - 8007af6: 8a42 ldrh r2, [r0, #18] - 8007af8: b13a cbz r2, 8007b0a - 8007afa: 8932 ldrh r2, [r6, #8] - 8007afc: f64f 73f7 movw r3, #65527 @ 0xfff7 - 8007b00: 429a cmp r2, r3 - 8007b02: d909 bls.n 8007b18 - 8007b04: f04f 35ff mov.w r5, #4294967295 - 8007b08: e7d5 b.n 8007ab6 - 8007b0a: 4601 mov r1, r0 - 8007b0c: f7ff ff54 bl 80079b8 - 8007b10: 4605 mov r5, r0 - 8007b12: 2800 cmp r0, #0 - 8007b14: d0f1 beq.n 8007afa - 8007b16: e7ce b.n 8007ab6 - 8007b18: 2108 movs r1, #8 - 8007b1a: 4630 mov r0, r6 - 8007b1c: f7fc faa0 bl 8004060 - 8007b20: 2800 cmp r0, #0 - 8007b22: d03a beq.n 8007b9a - 8007b24: f44f 7220 mov.w r2, #640 @ 0x280 - 8007b28: 2108 movs r1, #8 - 8007b2a: 2022 movs r0, #34 @ 0x22 - 8007b2c: f7fc fb34 bl 8004198 - 8007b30: 4604 mov r4, r0 - 8007b32: 2800 cmp r0, #0 - 8007b34: d0e6 beq.n 8007b04 - 8007b36: 8933 ldrh r3, [r6, #8] - 8007b38: b113 cbz r3, 8007b40 - 8007b3a: 4631 mov r1, r6 - 8007b3c: f7fc fc54 bl 80043e8 - 8007b40: 8963 ldrh r3, [r4, #10] - 8007b42: 2b07 cmp r3, #7 - 8007b44: d806 bhi.n 8007b54 - 8007b46: 4b16 ldr r3, [pc, #88] @ (8007ba0 ) - 8007b48: 491c ldr r1, [pc, #112] @ (8007bbc ) - 8007b4a: 4817 ldr r0, [pc, #92] @ (8007ba8 ) - 8007b4c: f240 320d movw r2, #781 @ 0x30d - 8007b50: f002 fe1a bl 800a788 - 8007b54: 8a78 ldrh r0, [r7, #18] - 8007b56: 6865 ldr r5, [r4, #4] - 8007b58: f7fb fd9d bl 8003696 - 8007b5c: 8028 strh r0, [r5, #0] - 8007b5e: 4648 mov r0, r9 - 8007b60: f7fb fd99 bl 8003696 - 8007b64: 2300 movs r3, #0 - 8007b66: 8068 strh r0, [r5, #2] - 8007b68: 71ab strb r3, [r5, #6] - 8007b6a: 71eb strb r3, [r5, #7] - 8007b6c: 8920 ldrh r0, [r4, #8] - 8007b6e: f7fb fd92 bl 8003696 - 8007b72: 2311 movs r3, #17 - 8007b74: 80a8 strh r0, [r5, #4] - 8007b76: f8cd b008 str.w fp, [sp, #8] - 8007b7a: 9301 str r3, [sp, #4] - 8007b7c: 7abb ldrb r3, [r7, #10] - 8007b7e: 9300 str r3, [sp, #0] - 8007b80: 7afb ldrb r3, [r7, #11] - 8007b82: 4642 mov r2, r8 - 8007b84: 4651 mov r1, sl - 8007b86: 4620 mov r0, r4 - 8007b88: f001 ff72 bl 8009a70 - 8007b8c: 42b4 cmp r4, r6 - 8007b8e: 4605 mov r5, r0 - 8007b90: d091 beq.n 8007ab6 - 8007b92: 4620 mov r0, r4 - 8007b94: f7fc fa9c bl 80040d0 - 8007b98: e78d b.n 8007ab6 - 8007b9a: 4634 mov r4, r6 - 8007b9c: e7d0 b.n 8007b40 - 8007b9e: bf00 nop - 8007ba0: 0800cc5c .word 0x0800cc5c - 8007ba4: 0800cd12 .word 0x0800cd12 - 8007ba8: 0800b767 .word 0x0800b767 - 8007bac: 0800cd31 .word 0x0800cd31 - 8007bb0: 0800cd51 .word 0x0800cd51 - 8007bb4: 0800cd73 .word 0x0800cd73 - 8007bb8: 0800cd95 .word 0x0800cd95 - 8007bbc: 0800cdb6 .word 0x0800cdb6 - -08007bc0 : - 8007bc0: b573 push {r0, r1, r4, r5, r6, lr} - 8007bc2: 9c06 ldr r4, [sp, #24] - 8007bc4: b950 cbnz r0, 8007bdc - 8007bc6: 4b18 ldr r3, [pc, #96] @ (8007c28 ) - 8007bc8: 4918 ldr r1, [pc, #96] @ (8007c2c ) - 8007bca: f44f 7220 mov.w r2, #640 @ 0x280 - 8007bce: 4818 ldr r0, [pc, #96] @ (8007c30 ) - 8007bd0: f002 fdda bl 800a788 - 8007bd4: f06f 000f mvn.w r0, #15 - 8007bd8: b002 add sp, #8 - 8007bda: bd70 pop {r4, r5, r6, pc} - 8007bdc: b921 cbnz r1, 8007be8 - 8007bde: 4b12 ldr r3, [pc, #72] @ (8007c28 ) - 8007be0: 4914 ldr r1, [pc, #80] @ (8007c34 ) - 8007be2: f240 2281 movw r2, #641 @ 0x281 - 8007be6: e7f2 b.n 8007bce - 8007be8: b922 cbnz r2, 8007bf4 - 8007bea: 4b0f ldr r3, [pc, #60] @ (8007c28 ) - 8007bec: 4912 ldr r1, [pc, #72] @ (8007c38 ) - 8007bee: f240 2282 movw r2, #642 @ 0x282 - 8007bf2: e7ec b.n 8007bce - 8007bf4: b924 cbnz r4, 8007c00 - 8007bf6: 4b0c ldr r3, [pc, #48] @ (8007c28 ) - 8007bf8: 4910 ldr r1, [pc, #64] @ (8007c3c ) - 8007bfa: f240 2283 movw r2, #643 @ 0x283 - 8007bfe: e7e6 b.n 8007bce - 8007c00: 6805 ldr r5, [r0, #0] - 8007c02: b11d cbz r5, 8007c0c - 8007c04: f005 06f0 and.w r6, r5, #240 @ 0xf0 - 8007c08: 2ee0 cmp r6, #224 @ 0xe0 - 8007c0a: d105 bne.n 8007c18 - 8007c0c: 1d25 adds r5, r4, #4 - 8007c0e: e9cd 4500 strd r4, r5, [sp] - 8007c12: f7ff ff3d bl 8007a90 - 8007c16: e7df b.n 8007bd8 - 8007c18: 6866 ldr r6, [r4, #4] - 8007c1a: 42b5 cmp r5, r6 - 8007c1c: d101 bne.n 8007c22 - 8007c1e: 4605 mov r5, r0 - 8007c20: e7f5 b.n 8007c0e - 8007c22: f06f 0003 mvn.w r0, #3 - 8007c26: e7d7 b.n 8007bd8 - 8007c28: 0800cc5c .word 0x0800cc5c - 8007c2c: 0800cde4 .word 0x0800cde4 - 8007c30: 0800b767 .word 0x0800b767 - 8007c34: 0800cdff .word 0x0800cdff - 8007c38: 0800ce1b .word 0x0800ce1b - 8007c3c: 0800ce39 .word 0x0800ce39 - -08007c40 : - 8007c40: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} - 8007c42: 460e mov r6, r1 - 8007c44: 4615 mov r5, r2 - 8007c46: 461f mov r7, r3 - 8007c48: 4604 mov r4, r0 - 8007c4a: b950 cbnz r0, 8007c62 - 8007c4c: 4b15 ldr r3, [pc, #84] @ (8007ca4 ) - 8007c4e: 4916 ldr r1, [pc, #88] @ (8007ca8 ) - 8007c50: f44f 7206 mov.w r2, #536 @ 0x218 - 8007c54: 4815 ldr r0, [pc, #84] @ (8007cac ) - 8007c56: f002 fd97 bl 800a788 - 8007c5a: f06f 000f mvn.w r0, #15 - 8007c5e: b003 add sp, #12 - 8007c60: bdf0 pop {r4, r5, r6, r7, pc} - 8007c62: b921 cbnz r1, 8007c6e - 8007c64: 4b0f ldr r3, [pc, #60] @ (8007ca4 ) - 8007c66: 4912 ldr r1, [pc, #72] @ (8007cb0 ) - 8007c68: f240 2219 movw r2, #537 @ 0x219 - 8007c6c: e7f2 b.n 8007c54 - 8007c6e: b922 cbnz r2, 8007c7a - 8007c70: 4b0c ldr r3, [pc, #48] @ (8007ca4 ) - 8007c72: 4910 ldr r1, [pc, #64] @ (8007cb4 ) - 8007c74: f240 221a movw r2, #538 @ 0x21a - 8007c78: e7ec b.n 8007c54 - 8007c7a: 7a00 ldrb r0, [r0, #8] - 8007c7c: b150 cbz r0, 8007c94 - 8007c7e: f7fc f959 bl 8003f34 - 8007c82: b158 cbz r0, 8007c9c - 8007c84: 9000 str r0, [sp, #0] - 8007c86: 463b mov r3, r7 - 8007c88: 462a mov r2, r5 - 8007c8a: 4631 mov r1, r6 - 8007c8c: 4620 mov r0, r4 - 8007c8e: f7ff ff97 bl 8007bc0 - 8007c92: e7e4 b.n 8007c5e - 8007c94: 4610 mov r0, r2 - 8007c96: f001 fdf7 bl 8009888 - 8007c9a: e7f2 b.n 8007c82 - 8007c9c: f06f 0003 mvn.w r0, #3 - 8007ca0: e7dd b.n 8007c5e - 8007ca2: bf00 nop - 8007ca4: 0800cc5c .word 0x0800cc5c - 8007ca8: 0800ce56 .word 0x0800ce56 - 8007cac: 0800b767 .word 0x0800b767 - 8007cb0: 0800ce6e .word 0x0800ce6e - 8007cb4: 0800ce87 .word 0x0800ce87 - -08007cb8 : - 8007cb8: b570 push {r4, r5, r6, lr} - 8007cba: 460d mov r5, r1 - 8007cbc: 4616 mov r6, r2 - 8007cbe: 4604 mov r4, r0 - 8007cc0: b948 cbnz r0, 8007cd6 - 8007cc2: 4b15 ldr r3, [pc, #84] @ (8007d18 ) - 8007cc4: 4915 ldr r1, [pc, #84] @ (8007d1c ) - 8007cc6: f240 4235 movw r2, #1077 @ 0x435 - 8007cca: 4815 ldr r0, [pc, #84] @ (8007d20 ) - 8007ccc: f002 fd5c bl 800a788 - 8007cd0: f06f 000f mvn.w r0, #15 - 8007cd4: bd70 pop {r4, r5, r6, pc} - 8007cd6: b921 cbnz r1, 8007ce2 - 8007cd8: 4b0f ldr r3, [pc, #60] @ (8007d18 ) - 8007cda: 4912 ldr r1, [pc, #72] @ (8007d24 ) - 8007cdc: f240 4236 movw r2, #1078 @ 0x436 - 8007ce0: e7f3 b.n 8007cca - 8007ce2: 8a42 ldrh r2, [r0, #18] - 8007ce4: b172 cbz r2, 8007d04 - 8007ce6: 682b ldr r3, [r5, #0] - 8007ce8: 4a0f ldr r2, [pc, #60] @ (8007d28 ) - 8007cea: 6063 str r3, [r4, #4] - 8007cec: 7c23 ldrb r3, [r4, #16] - 8007cee: 6811 ldr r1, [r2, #0] - 8007cf0: 82a6 strh r6, [r4, #20] - 8007cf2: f043 0304 orr.w r3, r3, #4 - 8007cf6: 7423 strb r3, [r4, #16] - 8007cf8: 460b mov r3, r1 - 8007cfa: b94b cbnz r3, 8007d10 - 8007cfc: 60e1 str r1, [r4, #12] - 8007cfe: 6014 str r4, [r2, #0] - 8007d00: 2000 movs r0, #0 - 8007d02: e7e7 b.n 8007cd4 - 8007d04: 4601 mov r1, r0 - 8007d06: f7ff fe57 bl 80079b8 - 8007d0a: 2800 cmp r0, #0 - 8007d0c: d0eb beq.n 8007ce6 - 8007d0e: e7e1 b.n 8007cd4 - 8007d10: 42a3 cmp r3, r4 - 8007d12: d0f5 beq.n 8007d00 - 8007d14: 68db ldr r3, [r3, #12] - 8007d16: e7f0 b.n 8007cfa - 8007d18: 0800cc5c .word 0x0800cc5c - 8007d1c: 0800cea2 .word 0x0800cea2 - 8007d20: 0800b767 .word 0x0800b767 - 8007d24: 0800cebb .word 0x0800cebb - 8007d28: 20018ae8 .word 0x20018ae8 - -08007d2c : - 8007d2c: b930 cbnz r0, 8007d3c - 8007d2e: 4b05 ldr r3, [pc, #20] @ (8007d44 ) - 8007d30: 4905 ldr r1, [pc, #20] @ (8007d48 ) - 8007d32: 4806 ldr r0, [pc, #24] @ (8007d4c ) - 8007d34: f240 428a movw r2, #1162 @ 0x48a - 8007d38: f002 bd26 b.w 800a788 - 8007d3c: e9c0 1206 strd r1, r2, [r0, #24] - 8007d40: 4770 bx lr - 8007d42: bf00 nop - 8007d44: 0800cc5c .word 0x0800cc5c - 8007d48: 0800ced7 .word 0x0800ced7 - 8007d4c: 0800b767 .word 0x0800b767 - -08007d50 : - 8007d50: 4601 mov r1, r0 - 8007d52: b930 cbnz r0, 8007d62 - 8007d54: 4b0d ldr r3, [pc, #52] @ (8007d8c ) - 8007d56: 490e ldr r1, [pc, #56] @ (8007d90 ) - 8007d58: 480e ldr r0, [pc, #56] @ (8007d94 ) - 8007d5a: f240 42a1 movw r2, #1185 @ 0x4a1 - 8007d5e: f002 bd13 b.w 800a788 - 8007d62: 4a0d ldr r2, [pc, #52] @ (8007d98 ) - 8007d64: 6813 ldr r3, [r2, #0] - 8007d66: 4283 cmp r3, r0 - 8007d68: d104 bne.n 8007d74 - 8007d6a: 68c3 ldr r3, [r0, #12] - 8007d6c: 6013 str r3, [r2, #0] - 8007d6e: 2000 movs r0, #0 - 8007d70: f7fb bf4a b.w 8003c08 - 8007d74: 2b00 cmp r3, #0 - 8007d76: d0fa beq.n 8007d6e - 8007d78: 461a mov r2, r3 - 8007d7a: 68db ldr r3, [r3, #12] - 8007d7c: 2b00 cmp r3, #0 - 8007d7e: d0f6 beq.n 8007d6e - 8007d80: 428b cmp r3, r1 - 8007d82: d1f9 bne.n 8007d78 - 8007d84: 68cb ldr r3, [r1, #12] - 8007d86: 60d3 str r3, [r2, #12] - 8007d88: e7f1 b.n 8007d6e - 8007d8a: bf00 nop - 8007d8c: 0800cc5c .word 0x0800cc5c - 8007d90: 0800ceed .word 0x0800ceed - 8007d94: 0800b767 .word 0x0800b767 - 8007d98: 20018ae8 .word 0x20018ae8 - -08007d9c : - 8007d9c: b510 push {r4, lr} - 8007d9e: 2000 movs r0, #0 - 8007da0: f7fb ff04 bl 8003bac - 8007da4: 4604 mov r4, r0 - 8007da6: b128 cbz r0, 8007db4 - 8007da8: 2220 movs r2, #32 - 8007daa: 2100 movs r1, #0 - 8007dac: f002 fd51 bl 800a852 - 8007db0: 23ff movs r3, #255 @ 0xff - 8007db2: 72e3 strb r3, [r4, #11] - 8007db4: 4620 mov r0, r4 - 8007db6: bd10 pop {r4, pc} - -08007db8 : - 8007db8: b510 push {r4, lr} - 8007dba: b138 cbz r0, 8007dcc - 8007dbc: 6803 ldr r3, [r0, #0] - 8007dbe: b12b cbz r3, 8007dcc - 8007dc0: b121 cbz r1, 8007dcc - 8007dc2: 680b ldr r3, [r1, #0] - 8007dc4: b113 cbz r3, 8007dcc - 8007dc6: 4b06 ldr r3, [pc, #24] @ (8007de0 ) - 8007dc8: 681b ldr r3, [r3, #0] - 8007dca: b903 cbnz r3, 8007dce - 8007dcc: bd10 pop {r4, pc} - 8007dce: 681c ldr r4, [r3, #0] - 8007dd0: 6802 ldr r2, [r0, #0] - 8007dd2: 4294 cmp r4, r2 - 8007dd4: bf04 itt eq - 8007dd6: 680a ldreq r2, [r1, #0] - 8007dd8: 601a streq r2, [r3, #0] - 8007dda: 68db ldr r3, [r3, #12] - 8007ddc: e7f5 b.n 8007dca - 8007dde: bf00 nop - 8007de0: 20018ae8 .word 0x20018ae8 - -08007de4 : - 8007de4: 7943 ldrb r3, [r0, #5] - 8007de6: 428b cmp r3, r1 - 8007de8: bf1f itttt ne - 8007dea: 2300 movne r3, #0 - 8007dec: 7141 strbne r1, [r0, #5] - 8007dee: 7183 strbne r3, [r0, #6] - 8007df0: 8103 strhne r3, [r0, #8] - 8007df2: 4770 bx lr - -08007df4 : - 8007df4: b5f8 push {r3, r4, r5, r6, r7, lr} - 8007df6: 1c87 adds r7, r0, #2 - 8007df8: 2f44 cmp r7, #68 @ 0x44 - 8007dfa: 4604 mov r4, r0 - 8007dfc: 460d mov r5, r1 - 8007dfe: 4616 mov r6, r2 - 8007e00: d906 bls.n 8007e10 - 8007e02: 4b07 ldr r3, [pc, #28] @ (8007e20 ) - 8007e04: 4907 ldr r1, [pc, #28] @ (8007e24 ) - 8007e06: 4808 ldr r0, [pc, #32] @ (8007e28 ) - 8007e08: f240 52ae movw r2, #1454 @ 0x5ae - 8007e0c: f002 fcbc bl 800a788 - 8007e10: 0a33 lsrs r3, r6, #8 - 8007e12: 552b strb r3, [r5, r4] - 8007e14: 3401 adds r4, #1 - 8007e16: b2a4 uxth r4, r4 - 8007e18: b2b8 uxth r0, r7 - 8007e1a: 552e strb r6, [r5, r4] - 8007e1c: bdf8 pop {r3, r4, r5, r6, r7, pc} - 8007e1e: bf00 nop - 8007e20: 0800cf05 .word 0x0800cf05 - 8007e24: 0800cf3a .word 0x0800cf3a - 8007e28: 0800b767 .word 0x0800b767 - -08007e2c : - 8007e2c: b5f8 push {r3, r4, r5, r6, r7, lr} - 8007e2e: 461e mov r6, r3 - 8007e30: 3302 adds r3, #2 - 8007e32: fa50 f383 uxtab r3, r0, r3 - 8007e36: 2b44 cmp r3, #68 @ 0x44 - 8007e38: 4604 mov r4, r0 - 8007e3a: 460d mov r5, r1 - 8007e3c: 4617 mov r7, r2 - 8007e3e: d906 bls.n 8007e4e - 8007e40: 4b06 ldr r3, [pc, #24] @ (8007e5c ) - 8007e42: 4907 ldr r1, [pc, #28] @ (8007e60 ) - 8007e44: 4807 ldr r0, [pc, #28] @ (8007e64 ) - 8007e46: f240 529a movw r2, #1434 @ 0x59a - 8007e4a: f002 fc9d bl 800a788 - 8007e4e: 1c63 adds r3, r4, #1 - 8007e50: b29b uxth r3, r3 - 8007e52: 552f strb r7, [r5, r4] - 8007e54: 54ee strb r6, [r5, r3] - 8007e56: 1ca0 adds r0, r4, #2 - 8007e58: b280 uxth r0, r0 - 8007e5a: bdf8 pop {r3, r4, r5, r6, r7, pc} - 8007e5c: 0800cf05 .word 0x0800cf05 - 8007e60: 0800cf75 .word 0x0800cf75 - 8007e64: 0800b767 .word 0x0800b767 - -08007e68 : - 8007e68: 2843 cmp r0, #67 @ 0x43 - 8007e6a: b570 push {r4, r5, r6, lr} - 8007e6c: 4604 mov r4, r0 - 8007e6e: 460d mov r5, r1 - 8007e70: 4616 mov r6, r2 - 8007e72: d906 bls.n 8007e82 - 8007e74: 4b05 ldr r3, [pc, #20] @ (8007e8c ) - 8007e76: 4906 ldr r1, [pc, #24] @ (8007e90 ) - 8007e78: 4806 ldr r0, [pc, #24] @ (8007e94 ) - 8007e7a: f240 52a6 movw r2, #1446 @ 0x5a6 - 8007e7e: f002 fc83 bl 800a788 - 8007e82: 552e strb r6, [r5, r4] - 8007e84: 1c60 adds r0, r4, #1 - 8007e86: b280 uxth r0, r0 - 8007e88: bd70 pop {r4, r5, r6, pc} - 8007e8a: bf00 nop - 8007e8c: 0800cf05 .word 0x0800cf05 - 8007e90: 0800cfb7 .word 0x0800cfb7 - 8007e94: 0800b767 .word 0x0800b767 - -08007e98 : - 8007e98: b5f8 push {r3, r4, r5, r6, r7, lr} - 8007e9a: 1d07 adds r7, r0, #4 - 8007e9c: 2f44 cmp r7, #68 @ 0x44 - 8007e9e: 4604 mov r4, r0 - 8007ea0: 460d mov r5, r1 - 8007ea2: 4616 mov r6, r2 - 8007ea4: d906 bls.n 8007eb4 - 8007ea6: 4b0b ldr r3, [pc, #44] @ (8007ed4 ) - 8007ea8: 490b ldr r1, [pc, #44] @ (8007ed8 ) - 8007eaa: 480c ldr r0, [pc, #48] @ (8007edc ) - 8007eac: f240 52b7 movw r2, #1463 @ 0x5b7 - 8007eb0: f002 fc6a bl 800a788 - 8007eb4: 0e33 lsrs r3, r6, #24 - 8007eb6: 552b strb r3, [r5, r4] - 8007eb8: 1c63 adds r3, r4, #1 - 8007eba: b29b uxth r3, r3 - 8007ebc: 0c32 lsrs r2, r6, #16 - 8007ebe: 54ea strb r2, [r5, r3] - 8007ec0: 1ca3 adds r3, r4, #2 - 8007ec2: 3403 adds r4, #3 - 8007ec4: b29b uxth r3, r3 - 8007ec6: b2a4 uxth r4, r4 - 8007ec8: 0a32 lsrs r2, r6, #8 - 8007eca: 54ea strb r2, [r5, r3] - 8007ecc: 552e strb r6, [r5, r4] - 8007ece: b2b8 uxth r0, r7 - 8007ed0: bdf8 pop {r3, r4, r5, r6, r7, pc} - 8007ed2: bf00 nop - 8007ed4: 0800cf05 .word 0x0800cf05 - 8007ed8: 0800cfec .word 0x0800cfec - 8007edc: 0800b767 .word 0x0800b767 - -08007ee0 : - 8007ee0: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - 8007ee4: 460e mov r6, r1 - 8007ee6: 4690 mov r8, r2 - 8007ee8: 4699 mov r9, r3 - 8007eea: 4605 mov r5, r0 - 8007eec: b950 cbnz r0, 8007f04 - 8007eee: 4b3c ldr r3, [pc, #240] @ (8007fe0 ) - 8007ef0: 493c ldr r1, [pc, #240] @ (8007fe4 ) - 8007ef2: f240 7269 movw r2, #1897 @ 0x769 - 8007ef6: 483c ldr r0, [pc, #240] @ (8007fe8 ) - 8007ef8: f002 fc46 bl 800a788 - 8007efc: 2700 movs r7, #0 - 8007efe: 4638 mov r0, r7 - 8007f00: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} - 8007f04: b921 cbnz r1, 8007f10 - 8007f06: 4b36 ldr r3, [pc, #216] @ (8007fe0 ) - 8007f08: 4938 ldr r1, [pc, #224] @ (8007fec ) - 8007f0a: f240 726a movw r2, #1898 @ 0x76a - 8007f0e: e7f2 b.n 8007ef6 - 8007f10: f44f 7220 mov.w r2, #640 @ 0x280 - 8007f14: f44f 719a mov.w r1, #308 @ 0x134 - 8007f18: 2036 movs r0, #54 @ 0x36 - 8007f1a: f7fc f93d bl 8004198 - 8007f1e: 4607 mov r7, r0 - 8007f20: 2800 cmp r0, #0 - 8007f22: d0eb beq.n 8007efc - 8007f24: 8943 ldrh r3, [r0, #10] - 8007f26: f5b3 7f9a cmp.w r3, #308 @ 0x134 - 8007f2a: d206 bcs.n 8007f3a - 8007f2c: 4b2c ldr r3, [pc, #176] @ (8007fe0 ) - 8007f2e: 4930 ldr r1, [pc, #192] @ (8007ff0 ) - 8007f30: 482d ldr r0, [pc, #180] @ (8007fe8 ) - 8007f32: f240 7271 movw r2, #1905 @ 0x771 - 8007f36: f002 fc27 bl 800a788 - 8007f3a: f1b8 0f03 cmp.w r8, #3 - 8007f3e: d102 bne.n 8007f46 - 8007f40: 7973 ldrb r3, [r6, #5] - 8007f42: 2b03 cmp r3, #3 - 8007f44: d107 bne.n 8007f56 - 8007f46: 79b3 ldrb r3, [r6, #6] - 8007f48: 4c2a ldr r4, [pc, #168] @ (8007ff4 ) - 8007f4a: b913 cbnz r3, 8007f52 - 8007f4c: f002 fb1c bl 800a588 - 8007f50: 6020 str r0, [r4, #0] - 8007f52: 6823 ldr r3, [r4, #0] - 8007f54: 6033 str r3, [r6, #0] - 8007f56: 687c ldr r4, [r7, #4] - 8007f58: f44f 729a mov.w r2, #308 @ 0x134 - 8007f5c: 2100 movs r1, #0 - 8007f5e: 4620 mov r0, r4 - 8007f60: f002 fc77 bl 800a852 - 8007f64: 2301 movs r3, #1 - 8007f66: 7023 strb r3, [r4, #0] - 8007f68: 7063 strb r3, [r4, #1] - 8007f6a: f895 3030 ldrb.w r3, [r5, #48] @ 0x30 - 8007f6e: 70a3 strb r3, [r4, #2] - 8007f70: 6830 ldr r0, [r6, #0] - 8007f72: f7fb fb93 bl 800369c - 8007f76: f44f 73c8 mov.w r3, #400 @ 0x190 - 8007f7a: fa23 f308 lsr.w r3, r3, r8 - 8007f7e: 07db lsls r3, r3, #31 - 8007f80: 6060 str r0, [r4, #4] - 8007f82: d406 bmi.n 8007f92 - 8007f84: f1b8 0f03 cmp.w r8, #3 - 8007f88: d105 bne.n 8007f96 - 8007f8a: 7973 ldrb r3, [r6, #5] - 8007f8c: 3b04 subs r3, #4 - 8007f8e: 2b01 cmp r3, #1 - 8007f90: d801 bhi.n 8007f96 - 8007f92: 686b ldr r3, [r5, #4] - 8007f94: 60e3 str r3, [r4, #12] - 8007f96: f105 0329 add.w r3, r5, #41 @ 0x29 - 8007f9a: f104 021b add.w r2, r4, #27 - 8007f9e: 352f adds r5, #47 @ 0x2f - 8007fa0: f813 1f01 ldrb.w r1, [r3, #1]! - 8007fa4: f802 1f01 strb.w r1, [r2, #1]! - 8007fa8: 42ab cmp r3, r5 - 8007faa: d1f9 bne.n 8007fa0 - 8007fac: f06f 027d mvn.w r2, #125 @ 0x7d - 8007fb0: f884 20ed strb.w r2, [r4, #237] @ 0xed - 8007fb4: 2363 movs r3, #99 @ 0x63 - 8007fb6: 2253 movs r2, #83 @ 0x53 - 8007fb8: f884 30ec strb.w r3, [r4, #236] @ 0xec - 8007fbc: f884 20ee strb.w r2, [r4, #238] @ 0xee - 8007fc0: f884 30ef strb.w r3, [r4, #239] @ 0xef - 8007fc4: 34f0 adds r4, #240 @ 0xf0 - 8007fc6: 2301 movs r3, #1 - 8007fc8: 2235 movs r2, #53 @ 0x35 - 8007fca: 4621 mov r1, r4 - 8007fcc: 2000 movs r0, #0 - 8007fce: f7ff ff2d bl 8007e2c - 8007fd2: 4642 mov r2, r8 - 8007fd4: 4621 mov r1, r4 - 8007fd6: f7ff ff47 bl 8007e68 - 8007fda: f8a9 0000 strh.w r0, [r9] - 8007fde: e78e b.n 8007efe - 8007fe0: 0800cf05 .word 0x0800cf05 - 8007fe4: 0800d026 .word 0x0800d026 - 8007fe8: 0800b767 .word 0x0800b767 - 8007fec: 0800d045 .word 0x0800d045 - 8007ff0: 0800d063 .word 0x0800d063 - 8007ff4: 20018aec .word 0x20018aec - -08007ff8 : - 8007ff8: b5f8 push {r3, r4, r5, r6, r7, lr} - 8007ffa: 4604 mov r4, r0 - 8007ffc: 1c66 adds r6, r4, #1 - 8007ffe: b2b6 uxth r6, r6 - 8008000: f1c4 0543 rsb r5, r4, #67 @ 0x43 - 8008004: 2e44 cmp r6, #68 @ 0x44 - 8008006: b2ad uxth r5, r5 - 8008008: f04f 03ff mov.w r3, #255 @ 0xff - 800800c: 4608 mov r0, r1 - 800800e: 4617 mov r7, r2 - 8008010: 550b strb r3, [r1, r4] - 8008012: bf94 ite ls - 8008014: 462a movls r2, r5 - 8008016: 2200 movhi r2, #0 - 8008018: 2100 movs r1, #0 - 800801a: 4430 add r0, r6 - 800801c: f002 fc19 bl 800a852 - 8008020: 2e44 cmp r6, #68 @ 0x44 - 8008022: f104 01f1 add.w r1, r4, #241 @ 0xf1 - 8008026: bf88 it hi - 8008028: 2500 movhi r5, #0 - 800802a: 4429 add r1, r5 - 800802c: 4638 mov r0, r7 - 800802e: b289 uxth r1, r1 - 8008030: e8bd 40f8 ldmia.w sp!, {r3, r4, r5, r6, r7, lr} - 8008034: f7fc b92a b.w 800428c - -08008038 : - 8008038: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} - 800803c: 6a44 ldr r4, [r0, #36] @ 0x24 - 800803e: 2300 movs r3, #0 - 8008040: b085 sub sp, #20 - 8008042: 4607 mov r7, r0 - 8008044: 61e3 str r3, [r4, #28] - 8008046: 2106 movs r1, #6 - 8008048: 4620 mov r0, r4 - 800804a: f7ff fecb bl 8007de4 - 800804e: 2201 movs r2, #1 - 8008050: f10d 030e add.w r3, sp, #14 - 8008054: 4621 mov r1, r4 - 8008056: 4638 mov r0, r7 - 8008058: f7ff ff42 bl 8007ee0 - 800805c: 4605 mov r5, r0 - 800805e: b3b0 cbz r0, 80080ce - 8008060: 6846 ldr r6, [r0, #4] - 8008062: f8bd 000e ldrh.w r0, [sp, #14] - 8008066: f8df 90b0 ldr.w r9, [pc, #176] @ 8008118 - 800806a: 36f0 adds r6, #240 @ 0xf0 - 800806c: 2302 movs r3, #2 - 800806e: 2239 movs r2, #57 @ 0x39 - 8008070: 4631 mov r1, r6 - 8008072: f7ff fedb bl 8007e2c - 8008076: 8d3a ldrh r2, [r7, #40] @ 0x28 - 8008078: 4631 mov r1, r6 - 800807a: f7ff febb bl 8007df4 - 800807e: 2303 movs r3, #3 - 8008080: 2237 movs r2, #55 @ 0x37 - 8008082: 4631 mov r1, r6 - 8008084: f7ff fed2 bl 8007e2c - 8008088: f04f 0803 mov.w r8, #3 - 800808c: f8ad 000e strh.w r0, [sp, #14] - 8008090: f819 2b01 ldrb.w r2, [r9], #1 - 8008094: f8bd 000e ldrh.w r0, [sp, #14] - 8008098: 4631 mov r1, r6 - 800809a: f7ff fee5 bl 8007e68 - 800809e: f108 38ff add.w r8, r8, #4294967295 - 80080a2: f018 08ff ands.w r8, r8, #255 @ 0xff - 80080a6: f8ad 000e strh.w r0, [sp, #14] - 80080aa: d1f1 bne.n 8008090 - 80080ac: 462a mov r2, r5 - 80080ae: 4631 mov r1, r6 - 80080b0: f7ff ffa2 bl 8007ff8 - 80080b4: 4b15 ldr r3, [pc, #84] @ (800810c ) - 80080b6: 4816 ldr r0, [pc, #88] @ (8008110 ) - 80080b8: 4a16 ldr r2, [pc, #88] @ (8008114 ) - 80080ba: e9cd 7300 strd r7, r3, [sp] - 80080be: 4629 mov r1, r5 - 80080c0: 6800 ldr r0, [r0, #0] - 80080c2: 2343 movs r3, #67 @ 0x43 - 80080c4: f7ff fce4 bl 8007a90 - 80080c8: 4628 mov r0, r5 - 80080ca: f7fc f801 bl 80040d0 - 80080ce: 79a3 ldrb r3, [r4, #6] - 80080d0: 2bff cmp r3, #255 @ 0xff - 80080d2: bf1c itt ne - 80080d4: 3301 addne r3, #1 - 80080d6: 71a3 strbne r3, [r4, #6] - 80080d8: 79a2 ldrb r2, [r4, #6] - 80080da: 2a05 cmp r2, #5 - 80080dc: bf9f itttt ls - 80080de: 2301 movls r3, #1 - 80080e0: 4093 lslls r3, r2 - 80080e2: ebc3 1243 rsbls r2, r3, r3, lsl #5 - 80080e6: eb03 0382 addls.w r3, r3, r2, lsl #2 - 80080ea: bf9a itte ls - 80080ec: 00db lslls r3, r3, #3 - 80080ee: b29b uxthls r3, r3 - 80080f0: f64e 2360 movwhi r3, #60000 @ 0xea60 - 80080f4: f44f 72fa mov.w r2, #500 @ 0x1f4 - 80080f8: 2000 movs r0, #0 - 80080fa: f203 13f3 addw r3, r3, #499 @ 0x1f3 - 80080fe: b29b uxth r3, r3 - 8008100: fbb3 f3f2 udiv r3, r3, r2 - 8008104: 8123 strh r3, [r4, #8] - 8008106: b005 add sp, #20 - 8008108: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} - 800810c: 0800d510 .word 0x0800d510 - 8008110: 20018af4 .word 0x20018af4 - 8008114: 0800d50c .word 0x0800d50c - 8008118: 0800d20a .word 0x0800d20a - -0800811c : - 800811c: b538 push {r3, r4, r5, lr} - 800811e: 6a44 ldr r4, [r0, #36] @ 0x24 - 8008120: 4605 mov r5, r0 - 8008122: 2108 movs r1, #8 - 8008124: 4620 mov r0, r4 - 8008126: f7ff fe5d bl 8007de4 - 800812a: 2200 movs r2, #0 - 800812c: f104 011c add.w r1, r4, #28 - 8008130: 4628 mov r0, r5 - 8008132: f001 f971 bl 8009418 - 8008136: 79a3 ldrb r3, [r4, #6] - 8008138: 2bff cmp r3, #255 @ 0xff - 800813a: bf1c itt ne - 800813c: 3301 addne r3, #1 - 800813e: 71a3 strbne r3, [r4, #6] - 8008140: 2301 movs r3, #1 - 8008142: 8123 strh r3, [r4, #8] - 8008144: bd38 pop {r3, r4, r5, pc} - ... - -08008148 : - 8008148: b513 push {r0, r1, r4, lr} - 800814a: 4604 mov r4, r0 - 800814c: b948 cbnz r0, 8008162 - 800814e: 4b3c ldr r3, [pc, #240] @ (8008240 ) - 8008150: 493c ldr r1, [pc, #240] @ (8008244 ) - 8008152: f240 4215 movw r2, #1045 @ 0x415 - 8008156: 483c ldr r0, [pc, #240] @ (8008248 ) - 8008158: b002 add sp, #8 - 800815a: e8bd 4010 ldmia.w sp!, {r4, lr} - 800815e: f002 bb13 b.w 800a788 - 8008162: 6a40 ldr r0, [r0, #36] @ 0x24 - 8008164: b920 cbnz r0, 8008170 - 8008166: 4b36 ldr r3, [pc, #216] @ (8008240 ) - 8008168: 4938 ldr r1, [pc, #224] @ (800824c ) - 800816a: f240 4217 movw r2, #1047 @ 0x417 - 800816e: e7f2 b.n 8008156 - 8008170: 2300 movs r3, #0 - 8008172: 8243 strh r3, [r0, #18] - 8008174: 6a83 ldr r3, [r0, #40] @ 0x28 - 8008176: 1c5a adds r2, r3, #1 - 8008178: d006 beq.n 8008188 - 800817a: 331e adds r3, #30 - 800817c: f5b3 1f70 cmp.w r3, #3932160 @ 0x3c0000 - 8008180: d33f bcc.n 8008202 - 8008182: f64f 73ff movw r3, #65535 @ 0xffff - 8008186: 8283 strh r3, [r0, #20] - 8008188: 6ac3 ldr r3, [r0, #44] @ 0x2c - 800818a: 1c59 adds r1, r3, #1 - 800818c: d00b beq.n 80081a6 - 800818e: 331e adds r3, #30 - 8008190: f5b3 1f70 cmp.w r3, #3932160 @ 0x3c0000 - 8008194: d23c bcs.n 8008210 - 8008196: 2b3b cmp r3, #59 @ 0x3b - 8008198: d93d bls.n 8008216 - 800819a: 223c movs r2, #60 @ 0x3c - 800819c: fbb3 f3f2 udiv r3, r3, r2 - 80081a0: b29b uxth r3, r3 - 80081a2: 8143 strh r3, [r0, #10] - 80081a4: 81c3 strh r3, [r0, #14] - 80081a6: 6b03 ldr r3, [r0, #48] @ 0x30 - 80081a8: 1c5a adds r2, r3, #1 - 80081aa: d00b beq.n 80081c4 - 80081ac: 331e adds r3, #30 - 80081ae: f5b3 1f70 cmp.w r3, #3932160 @ 0x3c0000 - 80081b2: d232 bcs.n 800821a - 80081b4: 2b3b cmp r3, #59 @ 0x3b - 80081b6: d933 bls.n 8008220 - 80081b8: 223c movs r2, #60 @ 0x3c - 80081ba: fbb3 f3f2 udiv r3, r3, r2 - 80081be: b29b uxth r3, r3 - 80081c0: 8183 strh r3, [r0, #12] - 80081c2: 8203 strh r3, [r0, #16] - 80081c4: 8983 ldrh r3, [r0, #12] - 80081c6: 8942 ldrh r2, [r0, #10] - 80081c8: 429a cmp r2, r3 - 80081ca: d302 bcc.n 80081d2 - 80081cc: b10b cbz r3, 80081d2 - 80081ce: 2300 movs r3, #0 - 80081d0: 8143 strh r3, [r0, #10] - 80081d2: 79c3 ldrb r3, [r0, #7] - 80081d4: b333 cbz r3, 8008224 - 80081d6: 6a03 ldr r3, [r0, #32] - 80081d8: 6a42 ldr r2, [r0, #36] @ 0x24 - 80081da: 9300 str r3, [sp, #0] - 80081dc: 9201 str r2, [sp, #4] - 80081de: b922 cbnz r2, 80081ea - 80081e0: 69c2 ldr r2, [r0, #28] - 80081e2: 4013 ands r3, r2 - 80081e4: f043 7380 orr.w r3, r3, #16777216 @ 0x1000000 - 80081e8: 9301 str r3, [sp, #4] - 80081ea: 210a movs r1, #10 - 80081ec: f7ff fdfa bl 8007de4 - 80081f0: 466a mov r2, sp - 80081f2: f100 011c add.w r1, r0, #28 - 80081f6: ab01 add r3, sp, #4 - 80081f8: 4620 mov r0, r4 - 80081fa: f7fb fd5f bl 8003cbc - 80081fe: b002 add sp, #8 - 8008200: bd10 pop {r4, pc} - 8008202: 2b3b cmp r3, #59 @ 0x3b - 8008204: bf8a itet hi - 8008206: 223c movhi r2, #60 @ 0x3c - 8008208: 2301 movls r3, #1 - 800820a: fbb3 f3f2 udivhi r3, r3, r2 - 800820e: e7ba b.n 8008186 - 8008210: f64f 73ff movw r3, #65535 @ 0xffff - 8008214: e7c5 b.n 80081a2 - 8008216: 2301 movs r3, #1 - 8008218: e7c3 b.n 80081a2 - 800821a: f64f 73ff movw r3, #65535 @ 0xffff - 800821e: e7cf b.n 80081c0 - 8008220: 2301 movs r3, #1 - 8008222: e7cd b.n 80081c0 - 8008224: f990 201c ldrsb.w r2, [r0, #28] - 8008228: 7f03 ldrb r3, [r0, #28] - 800822a: 2a00 cmp r2, #0 - 800822c: da06 bge.n 800823c - 800822e: 2bbf cmp r3, #191 @ 0xbf - 8008230: f64f 73ff movw r3, #65535 @ 0xffff - 8008234: bf88 it hi - 8008236: f06f 437f mvnhi.w r3, #4278190080 @ 0xff000000 - 800823a: e7cd b.n 80081d8 - 800823c: 23ff movs r3, #255 @ 0xff - 800823e: e7cb b.n 80081d8 - 8008240: 0800cf05 .word 0x0800cf05 - 8008244: 0800d0a3 .word 0x0800d0a3 - 8008248: 0800b767 .word 0x0800b767 - 800824c: 0800d0bc .word 0x0800d0bc - -08008250 : - 8008250: b538 push {r3, r4, r5, lr} - 8008252: 4d15 ldr r5, [pc, #84] @ (80082a8 ) - 8008254: 782b ldrb r3, [r5, #0] - 8008256: b9f3 cbnz r3, 8008296 - 8008258: 4c14 ldr r4, [pc, #80] @ (80082ac ) - 800825a: 6823 ldr r3, [r4, #0] - 800825c: b12b cbz r3, 800826a - 800825e: 4b14 ldr r3, [pc, #80] @ (80082b0 ) - 8008260: 4914 ldr r1, [pc, #80] @ (80082b4 ) - 8008262: 4815 ldr r0, [pc, #84] @ (80082b8 ) - 8008264: 22e5 movs r2, #229 @ 0xe5 - 8008266: f002 fa8f bl 800a788 - 800826a: f7ff fd97 bl 8007d9c - 800826e: 6020 str r0, [r4, #0] - 8008270: b1b0 cbz r0, 80082a0 - 8008272: 7a42 ldrb r2, [r0, #9] - 8008274: 4911 ldr r1, [pc, #68] @ (80082bc ) - 8008276: f042 0220 orr.w r2, r2, #32 - 800827a: 7242 strb r2, [r0, #9] - 800827c: 2244 movs r2, #68 @ 0x44 - 800827e: f7ff fb9b bl 80079b8 - 8008282: 490e ldr r1, [pc, #56] @ (80082bc ) - 8008284: 6820 ldr r0, [r4, #0] - 8008286: 2243 movs r2, #67 @ 0x43 - 8008288: f7ff fd16 bl 8007cb8 - 800828c: 490c ldr r1, [pc, #48] @ (80082c0 ) - 800828e: 6820 ldr r0, [r4, #0] - 8008290: 2200 movs r2, #0 - 8008292: f7ff fd4b bl 8007d2c - 8008296: 782b ldrb r3, [r5, #0] - 8008298: 3301 adds r3, #1 - 800829a: 702b strb r3, [r5, #0] - 800829c: 2000 movs r0, #0 - 800829e: bd38 pop {r3, r4, r5, pc} - 80082a0: f04f 30ff mov.w r0, #4294967295 - 80082a4: e7fb b.n 800829e - 80082a6: bf00 nop - 80082a8: 20018af0 .word 0x20018af0 - 80082ac: 20018af4 .word 0x20018af4 - 80082b0: 0800cf05 .word 0x0800cf05 - 80082b4: 0800d0d4 .word 0x0800d0d4 - 80082b8: 0800b767 .word 0x0800b767 - 80082bc: 0800d510 .word 0x0800d510 - 80082c0: 080085b5 .word 0x080085b5 - -080082c4 : - 80082c4: b538 push {r3, r4, r5, lr} - 80082c6: 4d0a ldr r5, [pc, #40] @ (80082f0 ) - 80082c8: 782b ldrb r3, [r5, #0] - 80082ca: b92b cbnz r3, 80082d8 - 80082cc: 4b09 ldr r3, [pc, #36] @ (80082f4 ) - 80082ce: 490a ldr r1, [pc, #40] @ (80082f8 ) - 80082d0: 480a ldr r0, [pc, #40] @ (80082fc ) - 80082d2: 22ff movs r2, #255 @ 0xff - 80082d4: f002 fa58 bl 800a788 - 80082d8: 782c ldrb r4, [r5, #0] - 80082da: 3c01 subs r4, #1 - 80082dc: b2e4 uxtb r4, r4 - 80082de: 702c strb r4, [r5, #0] - 80082e0: b924 cbnz r4, 80082ec - 80082e2: 4d07 ldr r5, [pc, #28] @ (8008300 ) - 80082e4: 6828 ldr r0, [r5, #0] - 80082e6: f7ff fd33 bl 8007d50 - 80082ea: 602c str r4, [r5, #0] - 80082ec: bd38 pop {r3, r4, r5, pc} - 80082ee: bf00 nop - 80082f0: 20018af0 .word 0x20018af0 - 80082f4: 0800cf05 .word 0x0800cf05 - 80082f8: 0800d0f9 .word 0x0800d0f9 - 80082fc: 0800b767 .word 0x0800b767 - 8008300: 20018af4 .word 0x20018af4 - -08008304 : - 8008304: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} - 8008308: 6a44 ldr r4, [r0, #36] @ 0x24 - 800830a: b085 sub sp, #20 - 800830c: 2103 movs r1, #3 - 800830e: 4607 mov r7, r0 - 8008310: 4620 mov r0, r4 - 8008312: f7ff fd67 bl 8007de4 - 8008316: 460a mov r2, r1 - 8008318: f10d 030e add.w r3, sp, #14 - 800831c: 4621 mov r1, r4 - 800831e: 4638 mov r0, r7 - 8008320: f7ff fdde bl 8007ee0 - 8008324: 4606 mov r6, r0 - 8008326: 2800 cmp r0, #0 - 8008328: d045 beq.n 80083b6 - 800832a: 6845 ldr r5, [r0, #4] - 800832c: f8bd 000e ldrh.w r0, [sp, #14] - 8008330: f8df 90c4 ldr.w r9, [pc, #196] @ 80083f8 - 8008334: 35f0 adds r5, #240 @ 0xf0 - 8008336: 2302 movs r3, #2 - 8008338: 2239 movs r2, #57 @ 0x39 - 800833a: 4629 mov r1, r5 - 800833c: f7ff fd76 bl 8007e2c - 8008340: f44f 7210 mov.w r2, #576 @ 0x240 - 8008344: 4629 mov r1, r5 - 8008346: f7ff fd55 bl 8007df4 - 800834a: 2304 movs r3, #4 - 800834c: 2232 movs r2, #50 @ 0x32 - 800834e: 4629 mov r1, r5 - 8008350: f7ff fd6c bl 8007e2c - 8008354: 4680 mov r8, r0 - 8008356: 69e0 ldr r0, [r4, #28] - 8008358: f7fb f9a0 bl 800369c - 800835c: 4629 mov r1, r5 - 800835e: 4602 mov r2, r0 - 8008360: 4640 mov r0, r8 - 8008362: f7ff fd99 bl 8007e98 - 8008366: 2303 movs r3, #3 - 8008368: 2237 movs r2, #55 @ 0x37 - 800836a: 4629 mov r1, r5 - 800836c: f7ff fd5e bl 8007e2c - 8008370: f04f 0800 mov.w r8, #0 - 8008374: f8ad 000e strh.w r0, [sp, #14] - 8008378: f819 2b01 ldrb.w r2, [r9], #1 - 800837c: f8bd 000e ldrh.w r0, [sp, #14] - 8008380: 4629 mov r1, r5 - 8008382: f7ff fd71 bl 8007e68 - 8008386: f108 0801 add.w r8, r8, #1 - 800838a: fa5f f888 uxtb.w r8, r8 - 800838e: f1b8 0f03 cmp.w r8, #3 - 8008392: f8ad 000e strh.w r0, [sp, #14] - 8008396: d1ef bne.n 8008378 - 8008398: 4632 mov r2, r6 - 800839a: 4629 mov r1, r5 - 800839c: f7ff fe2c bl 8007ff8 - 80083a0: 4813 ldr r0, [pc, #76] @ (80083f0 ) - 80083a2: 9700 str r7, [sp, #0] - 80083a4: 4a13 ldr r2, [pc, #76] @ (80083f4 ) - 80083a6: 6800 ldr r0, [r0, #0] - 80083a8: 2343 movs r3, #67 @ 0x43 - 80083aa: 4631 mov r1, r6 - 80083ac: f7ff fc08 bl 8007bc0 - 80083b0: 4630 mov r0, r6 - 80083b2: f7fb fe8d bl 80040d0 - 80083b6: 79a3 ldrb r3, [r4, #6] - 80083b8: 2bff cmp r3, #255 @ 0xff - 80083ba: bf1c itt ne - 80083bc: 3301 addne r3, #1 - 80083be: 71a3 strbne r3, [r4, #6] - 80083c0: 79a3 ldrb r3, [r4, #6] - 80083c2: 2b09 cmp r3, #9 - 80083c4: bf9f itttt ls - 80083c6: ebc3 1243 rsbls r2, r3, r3, lsl #5 - 80083ca: eb03 0382 addls.w r3, r3, r2, lsl #2 - 80083ce: 00db lslls r3, r3, #3 - 80083d0: b29b uxthls r3, r3 - 80083d2: bf88 it hi - 80083d4: f242 7310 movwhi r3, #10000 @ 0x2710 - 80083d8: f44f 72fa mov.w r2, #500 @ 0x1f4 - 80083dc: f203 13f3 addw r3, r3, #499 @ 0x1f3 - 80083e0: b29b uxth r3, r3 - 80083e2: fbb3 f3f2 udiv r3, r3, r2 - 80083e6: 8123 strh r3, [r4, #8] - 80083e8: b005 add sp, #20 - 80083ea: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} - 80083ee: bf00 nop - 80083f0: 20018af4 .word 0x20018af4 - 80083f4: 0800d50c .word 0x0800d50c - 80083f8: 0800d20a .word 0x0800d20a - -080083fc : - 80083fc: b538 push {r3, r4, r5, lr} - 80083fe: 4d17 ldr r5, [pc, #92] @ (800845c ) - 8008400: 2300 movs r3, #0 - 8008402: e9c0 3308 strd r3, r3, [r0, #32] - 8008406: 78eb ldrb r3, [r5, #3] - 8008408: 4604 mov r4, r0 - 800840a: b113 cbz r3, 8008412 - 800840c: 4b14 ldr r3, [pc, #80] @ (8008460 ) - 800840e: 68db ldr r3, [r3, #12] - 8008410: 6283 str r3, [r0, #40] @ 0x28 - 8008412: 792b ldrb r3, [r5, #4] - 8008414: b1d3 cbz r3, 800844c - 8008416: 4b12 ldr r3, [pc, #72] @ (8008460 ) - 8008418: 691b ldr r3, [r3, #16] - 800841a: 62e3 str r3, [r4, #44] @ 0x2c - 800841c: 796b ldrb r3, [r5, #5] - 800841e: b1c3 cbz r3, 8008452 - 8008420: 4b0f ldr r3, [pc, #60] @ (8008460 ) - 8008422: 695b ldr r3, [r3, #20] - 8008424: 6323 str r3, [r4, #48] @ 0x30 - 8008426: 690b ldr r3, [r1, #16] - 8008428: 61e3 str r3, [r4, #28] - 800842a: 79ab ldrb r3, [r5, #6] - 800842c: b12b cbz r3, 800843a - 800842e: 4b0c ldr r3, [pc, #48] @ (8008460 ) - 8008430: 6998 ldr r0, [r3, #24] - 8008432: f7fb f933 bl 800369c - 8008436: 2301 movs r3, #1 - 8008438: 6220 str r0, [r4, #32] - 800843a: 71e3 strb r3, [r4, #7] - 800843c: 79eb ldrb r3, [r5, #7] - 800843e: b123 cbz r3, 800844a - 8008440: 4b07 ldr r3, [pc, #28] @ (8008460 ) - 8008442: 69d8 ldr r0, [r3, #28] - 8008444: f7fb f92a bl 800369c - 8008448: 6260 str r0, [r4, #36] @ 0x24 - 800844a: bd38 pop {r3, r4, r5, pc} - 800844c: 6aa3 ldr r3, [r4, #40] @ 0x28 - 800844e: 085b lsrs r3, r3, #1 - 8008450: e7e3 b.n 800841a - 8008452: 6aa3 ldr r3, [r4, #40] @ 0x28 - 8008454: ebc3 03c3 rsb r3, r3, r3, lsl #3 - 8008458: 08db lsrs r3, r3, #3 - 800845a: e7e3 b.n 8008424 - 800845c: 20018af8 .word 0x20018af8 - 8008460: 20018b00 .word 0x20018b00 - -08008464 : - 8008464: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} - 8008468: 4607 mov r7, r0 - 800846a: b085 sub sp, #20 - 800846c: b948 cbnz r0, 8008482 - 800846e: 4b49 ldr r3, [pc, #292] @ (8008594 ) - 8008470: 4949 ldr r1, [pc, #292] @ (8008598 ) - 8008472: f240 1277 movw r2, #375 @ 0x177 - 8008476: 4849 ldr r0, [pc, #292] @ (800859c ) - 8008478: b005 add sp, #20 - 800847a: e8bd 43f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, lr} - 800847e: f002 b983 b.w 800a788 - 8008482: 6a44 ldr r4, [r0, #36] @ 0x24 - 8008484: b924 cbnz r4, 8008490 - 8008486: 4b43 ldr r3, [pc, #268] @ (8008594 ) - 8008488: 4945 ldr r1, [pc, #276] @ (80085a0 ) - 800848a: f240 1279 movw r2, #377 @ 0x179 - 800848e: e7f2 b.n 8008476 - 8008490: 2101 movs r1, #1 - 8008492: 4620 mov r0, r4 - 8008494: f7ff fca6 bl 8007de4 - 8008498: 2203 movs r2, #3 - 800849a: f10d 030e add.w r3, sp, #14 - 800849e: 4621 mov r1, r4 - 80084a0: 4638 mov r0, r7 - 80084a2: f7ff fd1d bl 8007ee0 - 80084a6: 4606 mov r6, r0 - 80084a8: 2800 cmp r0, #0 - 80084aa: d054 beq.n 8008556 - 80084ac: 6845 ldr r5, [r0, #4] - 80084ae: f8bd 000e ldrh.w r0, [sp, #14] - 80084b2: f8df 90fc ldr.w r9, [pc, #252] @ 80085b0 - 80084b6: 35f0 adds r5, #240 @ 0xf0 - 80084b8: 2302 movs r3, #2 - 80084ba: 2239 movs r2, #57 @ 0x39 - 80084bc: 4629 mov r1, r5 - 80084be: f7ff fcb5 bl 8007e2c - 80084c2: 8d3a ldrh r2, [r7, #40] @ 0x28 - 80084c4: 4629 mov r1, r5 - 80084c6: f7ff fc95 bl 8007df4 - 80084ca: 2304 movs r3, #4 - 80084cc: 2232 movs r2, #50 @ 0x32 - 80084ce: 4629 mov r1, r5 - 80084d0: f7ff fcac bl 8007e2c - 80084d4: 4680 mov r8, r0 - 80084d6: 69e0 ldr r0, [r4, #28] - 80084d8: f7fb f8e0 bl 800369c - 80084dc: 4629 mov r1, r5 - 80084de: 4602 mov r2, r0 - 80084e0: 4640 mov r0, r8 - 80084e2: f7ff fcd9 bl 8007e98 - 80084e6: 2304 movs r3, #4 - 80084e8: 2236 movs r2, #54 @ 0x36 - 80084ea: 4629 mov r1, r5 - 80084ec: f7ff fc9e bl 8007e2c - 80084f0: 4680 mov r8, r0 - 80084f2: 69a0 ldr r0, [r4, #24] - 80084f4: f7fb f8d2 bl 800369c - 80084f8: 4629 mov r1, r5 - 80084fa: 4602 mov r2, r0 - 80084fc: 4640 mov r0, r8 - 80084fe: f7ff fccb bl 8007e98 - 8008502: 2303 movs r3, #3 - 8008504: 2237 movs r2, #55 @ 0x37 - 8008506: 4629 mov r1, r5 - 8008508: f7ff fc90 bl 8007e2c - 800850c: f04f 0800 mov.w r8, #0 - 8008510: f8ad 000e strh.w r0, [sp, #14] - 8008514: f819 2b01 ldrb.w r2, [r9], #1 - 8008518: f8bd 000e ldrh.w r0, [sp, #14] - 800851c: 4629 mov r1, r5 - 800851e: f7ff fca3 bl 8007e68 - 8008522: f108 0801 add.w r8, r8, #1 - 8008526: fa5f f888 uxtb.w r8, r8 - 800852a: f1b8 0f03 cmp.w r8, #3 - 800852e: f8ad 000e strh.w r0, [sp, #14] - 8008532: d1ef bne.n 8008514 - 8008534: 4632 mov r2, r6 - 8008536: 4629 mov r1, r5 - 8008538: f7ff fd5e bl 8007ff8 - 800853c: 4b19 ldr r3, [pc, #100] @ (80085a4 ) - 800853e: 481a ldr r0, [pc, #104] @ (80085a8 ) - 8008540: 4a1a ldr r2, [pc, #104] @ (80085ac ) - 8008542: e9cd 7300 strd r7, r3, [sp] - 8008546: 4631 mov r1, r6 - 8008548: 6800 ldr r0, [r0, #0] - 800854a: 2343 movs r3, #67 @ 0x43 - 800854c: f7ff faa0 bl 8007a90 - 8008550: 4630 mov r0, r6 - 8008552: f7fb fdbd bl 80040d0 - 8008556: 79a3 ldrb r3, [r4, #6] - 8008558: 2bff cmp r3, #255 @ 0xff - 800855a: bf1c itt ne - 800855c: 3301 addne r3, #1 - 800855e: 71a3 strbne r3, [r4, #6] - 8008560: 79a2 ldrb r2, [r4, #6] - 8008562: 2a05 cmp r2, #5 - 8008564: bf9f itttt ls - 8008566: 2301 movls r3, #1 - 8008568: 4093 lslls r3, r2 - 800856a: ebc3 1243 rsbls r2, r3, r3, lsl #5 - 800856e: eb03 0382 addls.w r3, r3, r2, lsl #2 - 8008572: bf9a itte ls - 8008574: 00db lslls r3, r3, #3 - 8008576: b29b uxthls r3, r3 - 8008578: f64e 2360 movwhi r3, #60000 @ 0xea60 - 800857c: f44f 72fa mov.w r2, #500 @ 0x1f4 - 8008580: f203 13f3 addw r3, r3, #499 @ 0x1f3 - 8008584: b29b uxth r3, r3 - 8008586: fbb3 f3f2 udiv r3, r3, r2 - 800858a: 8123 strh r3, [r4, #8] - 800858c: b005 add sp, #20 - 800858e: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} - 8008592: bf00 nop - 8008594: 0800cf05 .word 0x0800cf05 - 8008598: 0800d11d .word 0x0800d11d - 800859c: 0800b767 .word 0x0800b767 - 80085a0: 0800d138 .word 0x0800d138 - 80085a4: 0800d510 .word 0x0800d510 - 80085a8: 20018af4 .word 0x20018af4 - 80085ac: 0800d50c .word 0x0800d50c - 80085b0: 0800d20a .word 0x0800d20a - -080085b4 : - 80085b4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 80085b8: 4bab ldr r3, [pc, #684] @ (8008868 ) - 80085ba: 685f ldr r7, [r3, #4] - 80085bc: b087 sub sp, #28 - 80085be: 6a7b ldr r3, [r7, #36] @ 0x24 - 80085c0: 9300 str r3, [sp, #0] - 80085c2: 4693 mov fp, r2 - 80085c4: 6852 ldr r2, [r2, #4] - 80085c6: 2b00 cmp r3, #0 - 80085c8: d064 beq.n 8008694 - 80085ca: 791b ldrb r3, [r3, #4] - 80085cc: 2b00 cmp r3, #0 - 80085ce: d061 beq.n 8008694 - 80085d0: f8bb 300a ldrh.w r3, [fp, #10] - 80085d4: 2b2b cmp r3, #43 @ 0x2b - 80085d6: d95d bls.n 8008694 - 80085d8: 7813 ldrb r3, [r2, #0] - 80085da: 2b02 cmp r3, #2 - 80085dc: d15a bne.n 8008694 - 80085de: f897 4030 ldrb.w r4, [r7, #48] @ 0x30 - 80085e2: f107 0129 add.w r1, r7, #41 @ 0x29 - 80085e6: f102 001b add.w r0, r2, #27 - 80085ea: 2300 movs r3, #0 - 80085ec: b2dd uxtb r5, r3 - 80085ee: 42ac cmp r4, r5 - 80085f0: d901 bls.n 80085f6 - 80085f2: 2b06 cmp r3, #6 - 80085f4: d146 bne.n 8008684 - 80085f6: 6850 ldr r0, [r2, #4] - 80085f8: f7fb f850 bl 800369c - 80085fc: 9b00 ldr r3, [sp, #0] - 80085fe: 681b ldr r3, [r3, #0] - 8008600: 4298 cmp r0, r3 - 8008602: d147 bne.n 8008694 - 8008604: 4a99 ldr r2, [pc, #612] @ (800886c ) - 8008606: 2300 movs r3, #0 - 8008608: 6053 str r3, [r2, #4] - 800860a: 6013 str r3, [r2, #0] - 800860c: f8bb 200a ldrh.w r2, [fp, #10] - 8008610: 2a2b cmp r2, #43 @ 0x2b - 8008612: d93f bls.n 8008694 - 8008614: f8bb a008 ldrh.w sl, [fp, #8] - 8008618: 9301 str r3, [sp, #4] - 800861a: f04f 09f0 mov.w r9, #240 @ 0xf0 - 800861e: 46d8 mov r8, fp - 8008620: f8b8 300a ldrh.w r3, [r8, #10] - 8008624: 454b cmp r3, r9 - 8008626: d93b bls.n 80086a0 - 8008628: f8d8 3004 ldr.w r3, [r8, #4] - 800862c: 9303 str r3, [sp, #12] - 800862e: 464b mov r3, r9 - 8008630: 4553 cmp r3, sl - 8008632: d203 bcs.n 800863c - 8008634: 9a03 ldr r2, [sp, #12] - 8008636: 5cd2 ldrb r2, [r2, r3] - 8008638: 2aff cmp r2, #255 @ 0xff - 800863a: d13f bne.n 80086bc - 800863c: 4b8b ldr r3, [pc, #556] @ (800886c ) - 800863e: 781a ldrb r2, [r3, #0] - 8008640: 2a00 cmp r2, #0 - 8008642: f040 8127 bne.w 8008894 - 8008646: 9a01 ldr r2, [sp, #4] - 8008648: 2a00 cmp r2, #0 - 800864a: f040 812b bne.w 80088a4 - 800864e: 785a ldrb r2, [r3, #1] - 8008650: b302 cbz r2, 8008694 - 8008652: 4987 ldr r1, [pc, #540] @ (8008870 ) - 8008654: f8db 5004 ldr.w r5, [fp, #4] - 8008658: 790a ldrb r2, [r1, #4] - 800865a: 2a05 cmp r2, #5 - 800865c: f040 813f bne.w 80088de - 8008660: 9b00 ldr r3, [sp, #0] - 8008662: 795b ldrb r3, [r3, #5] - 8008664: 2b01 cmp r3, #1 - 8008666: f040 812e bne.w 80088c6 - 800866a: 6a78 ldr r0, [r7, #36] @ 0x24 - 800866c: 4629 mov r1, r5 - 800866e: f7ff fec5 bl 80083fc - 8008672: f897 3031 ldrb.w r3, [r7, #49] @ 0x31 - 8008676: 071b lsls r3, r3, #28 - 8008678: 4638 mov r0, r7 - 800867a: f140 812d bpl.w 80088d8 - 800867e: f7ff fd4d bl 800811c - 8008682: e007 b.n 8008694 - 8008684: f811 6f01 ldrb.w r6, [r1, #1]! - 8008688: f810 5f01 ldrb.w r5, [r0, #1]! - 800868c: 42ae cmp r6, r5 - 800868e: f103 0301 add.w r3, r3, #1 - 8008692: d0ab beq.n 80085ec - 8008694: 4658 mov r0, fp - 8008696: b007 add sp, #28 - 8008698: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 800869c: f7fb bd18 b.w 80040d0 - 80086a0: f8d8 8000 ldr.w r8, [r8] - 80086a4: eba9 0903 sub.w r9, r9, r3 - 80086a8: ebaa 0303 sub.w r3, sl, r3 - 80086ac: fa1f f989 uxth.w r9, r9 - 80086b0: fa1f fa83 uxth.w sl, r3 - 80086b4: f1b8 0f00 cmp.w r8, #0 - 80086b8: d1b2 bne.n 8008620 - 80086ba: e7eb b.n 8008694 - 80086bc: 1c99 adds r1, r3, #2 - 80086be: b289 uxth r1, r1 - 80086c0: 428b cmp r3, r1 - 80086c2: 9102 str r1, [sp, #8] - 80086c4: d8e6 bhi.n 8008694 - 80086c6: f8b8 100a ldrh.w r1, [r8, #10] - 80086ca: 1c58 adds r0, r3, #1 - 80086cc: 4288 cmp r0, r1 - 80086ce: da26 bge.n 800871e - 80086d0: 9903 ldr r1, [sp, #12] - 80086d2: 4419 add r1, r3 - 80086d4: 784c ldrb r4, [r1, #1] - 80086d6: 2a3b cmp r2, #59 @ 0x3b - 80086d8: f200 808a bhi.w 80087f0 - 80086dc: 2a32 cmp r2, #50 @ 0x32 - 80086de: d826 bhi.n 800872e - 80086e0: 2a01 cmp r2, #1 - 80086e2: d03d beq.n 8008760 - 80086e4: 2a03 cmp r2, #3 - 80086e6: d043 beq.n 8008770 - 80086e8: 2a00 cmp r2, #0 - 80086ea: f040 8081 bne.w 80087f0 - 80086ee: b283 uxth r3, r0 - 80086f0: f8b8 200a ldrh.w r2, [r8, #10] - 80086f4: 429a cmp r2, r3 - 80086f6: d89b bhi.n 8008630 - 80086f8: 1a9b subs r3, r3, r2 - 80086fa: ebaa 0202 sub.w r2, sl, r2 - 80086fe: b29b uxth r3, r3 - 8008700: fa1f fa82 uxth.w sl, r2 - 8008704: 4553 cmp r3, sl - 8008706: d2c5 bcs.n 8008694 - 8008708: f8d8 8000 ldr.w r8, [r8] - 800870c: f1b8 0f00 cmp.w r8, #0 - 8008710: f040 80a5 bne.w 800885e - 8008714: 4b57 ldr r3, [pc, #348] @ (8008874 ) - 8008716: 4958 ldr r1, [pc, #352] @ (8008878 ) - 8008718: f240 629d movw r2, #1693 @ 0x69d - 800871c: e02f b.n 800877e - 800871e: f8d8 5000 ldr.w r5, [r8] - 8008722: 2d00 cmp r5, #0 - 8008724: f000 8121 beq.w 800896a - 8008728: 6869 ldr r1, [r5, #4] - 800872a: 780c ldrb r4, [r1, #0] - 800872c: e7d3 b.n 80086d6 - 800872e: f1a2 0133 sub.w r1, r2, #51 @ 0x33 - 8008732: 2908 cmp r1, #8 - 8008734: d8d8 bhi.n 80086e8 - 8008736: a501 add r5, pc, #4 @ (adr r5, 800873c ) - 8008738: f855 f021 ldr.w pc, [r5, r1, lsl #2] - 800873c: 08008787 .word 0x08008787 - 8008740: 08008795 .word 0x08008795 - 8008744: 080087b5 .word 0x080087b5 - 8008748: 080087c3 .word 0x080087c3 - 800874c: 080086e9 .word 0x080086e9 - 8008750: 080086e9 .word 0x080086e9 - 8008754: 080086e9 .word 0x080086e9 - 8008758: 080087d1 .word 0x080087d1 - 800875c: 080087df .word 0x080087df - 8008760: 2c04 cmp r4, #4 - 8008762: f000 80ed beq.w 8008940 - 8008766: 4b43 ldr r3, [pc, #268] @ (8008874 ) - 8008768: f240 622e movw r2, #1582 @ 0x62e - 800876c: 4943 ldr r1, [pc, #268] @ (800887c ) - 800876e: e006 b.n 800877e - 8008770: 2c03 cmp r4, #3 - 8008772: f200 80e8 bhi.w 8008946 - 8008776: 4b3f ldr r3, [pc, #252] @ (8008874 ) - 8008778: 4941 ldr r1, [pc, #260] @ (8008880 ) - 800877a: f240 6233 movw r2, #1587 @ 0x633 - 800877e: 4841 ldr r0, [pc, #260] @ (8008884 ) - 8008780: f002 f802 bl 800a788 - 8008784: e786 b.n 8008694 - 8008786: 2c04 cmp r4, #4 - 8008788: f000 80e0 beq.w 800894c - 800878c: 4b39 ldr r3, [pc, #228] @ (8008874 ) - 800878e: f240 6241 movw r2, #1601 @ 0x641 - 8008792: e7eb b.n 800876c - 8008794: 2c01 cmp r4, #1 - 8008796: d004 beq.n 80087a2 - 8008798: 4b36 ldr r3, [pc, #216] @ (8008874 ) - 800879a: f240 624f movw r2, #1615 @ 0x64f - 800879e: 493a ldr r1, [pc, #232] @ (8008888 ) - 80087a0: e7ed b.n 800877e - 80087a2: f1b9 0ff0 cmp.w r9, #240 @ 0xf0 - 80087a6: f000 80d4 beq.w 8008952 - 80087aa: 4b32 ldr r3, [pc, #200] @ (8008874 ) - 80087ac: 4937 ldr r1, [pc, #220] @ (800888c ) - 80087ae: f240 6251 movw r2, #1617 @ 0x651 - 80087b2: e7e4 b.n 800877e - 80087b4: 2c01 cmp r4, #1 - 80087b6: f000 80d2 beq.w 800895e - 80087ba: 4b2e ldr r3, [pc, #184] @ (8008874 ) - 80087bc: f240 6255 movw r2, #1621 @ 0x655 - 80087c0: e7ed b.n 800879e - 80087c2: 2c04 cmp r4, #4 - 80087c4: f000 80c8 beq.w 8008958 - 80087c8: 4b2a ldr r3, [pc, #168] @ (8008874 ) - 80087ca: f240 6259 movw r2, #1625 @ 0x659 - 80087ce: e7cd b.n 800876c - 80087d0: 2c04 cmp r4, #4 - 80087d2: f000 80c4 beq.w 800895e - 80087d6: 4b27 ldr r3, [pc, #156] @ (8008874 ) - 80087d8: f240 625d movw r2, #1629 @ 0x65d - 80087dc: e7c6 b.n 800876c - 80087de: 2c04 cmp r4, #4 - 80087e0: f000 80c0 beq.w 8008964 - 80087e4: 4b23 ldr r3, [pc, #140] @ (8008874 ) - 80087e6: f240 6261 movw r2, #1633 @ 0x661 - 80087ea: e7bf b.n 800876c - 80087ec: 2400 movs r4, #0 - 80087ee: e77b b.n 80086e8 - 80087f0: f04f 36ff mov.w r6, #4294967295 - 80087f4: 2500 movs r5, #0 - 80087f6: 4423 add r3, r4 - 80087f8: f64f 72fd movw r2, #65533 @ 0xfffd - 80087fc: 4293 cmp r3, r2 - 80087fe: f73f af49 bgt.w 8008694 - 8008802: b30d cbz r5, 8008848 - 8008804: 2300 movs r3, #0 - 8008806: 2e07 cmp r6, #7 - 8008808: 9305 str r3, [sp, #20] - 800880a: d906 bls.n 800881a - 800880c: 4b19 ldr r3, [pc, #100] @ (8008874 ) - 800880e: 4920 ldr r1, [pc, #128] @ (8008890 ) - 8008810: 481c ldr r0, [pc, #112] @ (8008884 ) - 8008812: f44f 62cf mov.w r2, #1656 @ 0x678 - 8008816: f001 ffb7 bl 800a788 - 800881a: 4b14 ldr r3, [pc, #80] @ (800886c ) - 800881c: 5d9b ldrb r3, [r3, r6] - 800881e: b99b cbnz r3, 8008848 - 8008820: 9b02 ldr r3, [sp, #8] - 8008822: 462a mov r2, r5 - 8008824: a905 add r1, sp, #20 - 8008826: 4640 mov r0, r8 - 8008828: f7fb fe6a bl 8004500 - 800882c: 4285 cmp r5, r0 - 800882e: f47f af31 bne.w 8008694 - 8008832: 2d04 cmp r5, #4 - 8008834: d110 bne.n 8008858 - 8008836: 9805 ldr r0, [sp, #20] - 8008838: f7fa ff30 bl 800369c - 800883c: 4b0b ldr r3, [pc, #44] @ (800886c ) - 800883e: 2201 movs r2, #1 - 8008840: 559a strb r2, [r3, r6] - 8008842: 4b0b ldr r3, [pc, #44] @ (8008870 ) - 8008844: f843 0026 str.w r0, [r3, r6, lsl #2] - 8008848: 9b02 ldr r3, [sp, #8] - 800884a: 4423 add r3, r4 - 800884c: b29b uxth r3, r3 - 800884e: e74f b.n 80086f0 - 8008850: f04f 36ff mov.w r6, #4294967295 - 8008854: 462c mov r4, r5 - 8008856: e7ce b.n 80087f6 - 8008858: f89d 0014 ldrb.w r0, [sp, #20] - 800885c: e7ee b.n 800883c - 800885e: f8d8 2004 ldr.w r2, [r8, #4] - 8008862: 9203 str r2, [sp, #12] - 8008864: e6e4 b.n 8008630 - 8008866: bf00 nop - 8008868: 20005b38 .word 0x20005b38 - 800886c: 20018af8 .word 0x20018af8 - 8008870: 20018b00 .word 0x20018b00 - 8008874: 0800cf05 .word 0x0800cf05 - 8008878: 0800d19e .word 0x0800d19e - 800887c: 0800d152 .word 0x0800d152 - 8008880: 0800d15b .word 0x0800d15b - 8008884: 0800b767 .word 0x0800b767 - 8008888: 0800d16d .word 0x0800d16d - 800888c: 0800d176 .word 0x0800d176 - 8008890: 0800d18d .word 0x0800d18d - 8008894: 4a4b ldr r2, [pc, #300] @ (80089c4 ) - 8008896: 6812 ldr r2, [r2, #0] - 8008898: 2100 movs r1, #0 - 800889a: 2a01 cmp r2, #1 - 800889c: 7019 strb r1, [r3, #0] - 800889e: d00d beq.n 80088bc - 80088a0: 2a02 cmp r2, #2 - 80088a2: d106 bne.n 80088b2 - 80088a4: 2300 movs r3, #0 - 80088a6: 9301 str r3, [sp, #4] - 80088a8: f04f 0a6c mov.w sl, #108 @ 0x6c - 80088ac: f04f 092c mov.w r9, #44 @ 0x2c - 80088b0: e6b5 b.n 800861e - 80088b2: 2a03 cmp r2, #3 - 80088b4: f47f aec7 bne.w 8008646 - 80088b8: 2301 movs r3, #1 - 80088ba: 9301 str r3, [sp, #4] - 80088bc: f04f 0aec mov.w sl, #236 @ 0xec - 80088c0: f04f 096c mov.w r9, #108 @ 0x6c - 80088c4: e6ab b.n 800861e - 80088c6: 3b03 subs r3, #3 - 80088c8: 2b02 cmp r3, #2 - 80088ca: f63f aee3 bhi.w 8008694 - 80088ce: 6a78 ldr r0, [r7, #36] @ 0x24 - 80088d0: 4629 mov r1, r5 - 80088d2: f7ff fd93 bl 80083fc - 80088d6: 4638 mov r0, r7 - 80088d8: f7ff fc36 bl 8008148 - 80088dc: e6da b.n 8008694 - 80088de: 2a06 cmp r2, #6 - 80088e0: d115 bne.n 800890e - 80088e2: 9b00 ldr r3, [sp, #0] - 80088e4: 795b ldrb r3, [r3, #5] - 80088e6: 1eda subs r2, r3, #3 - 80088e8: 2a02 cmp r2, #2 - 80088ea: d902 bls.n 80088f2 - 80088ec: 2b01 cmp r3, #1 - 80088ee: f47f aed1 bne.w 8008694 - 80088f2: 6a78 ldr r0, [r7, #36] @ 0x24 - 80088f4: 210c movs r1, #12 - 80088f6: f7ff fa75 bl 8007de4 - 80088fa: 4b33 ldr r3, [pc, #204] @ (80089c8 ) - 80088fc: 4638 mov r0, r7 - 80088fe: 461a mov r2, r3 - 8008900: 4619 mov r1, r3 - 8008902: f7fb f9db bl 8003cbc - 8008906: 4638 mov r0, r7 - 8008908: f7ff fb96 bl 8008038 - 800890c: e6c2 b.n 8008694 - 800890e: 2a02 cmp r2, #2 - 8008910: f47f aec0 bne.w 8008694 - 8008914: 9a00 ldr r2, [sp, #0] - 8008916: 7952 ldrb r2, [r2, #5] - 8008918: 2a06 cmp r2, #6 - 800891a: f47f aebb bne.w 8008694 - 800891e: 789b ldrb r3, [r3, #2] - 8008920: 6a7c ldr r4, [r7, #36] @ 0x24 - 8008922: 2b00 cmp r3, #0 - 8008924: f43f aeb6 beq.w 8008694 - 8008928: 9b01 ldr r3, [sp, #4] - 800892a: 8123 strh r3, [r4, #8] - 800892c: 6888 ldr r0, [r1, #8] - 800892e: f7fa feb5 bl 800369c - 8008932: 61a0 str r0, [r4, #24] - 8008934: 692b ldr r3, [r5, #16] - 8008936: 61e3 str r3, [r4, #28] - 8008938: 4638 mov r0, r7 - 800893a: f7ff fd93 bl 8008464 - 800893e: e6a9 b.n 8008694 - 8008940: 4625 mov r5, r4 - 8008942: 2606 movs r6, #6 - 8008944: e757 b.n 80087f6 - 8008946: 2607 movs r6, #7 - 8008948: 2504 movs r5, #4 - 800894a: e754 b.n 80087f6 - 800894c: 4625 mov r5, r4 - 800894e: 2603 movs r6, #3 - 8008950: e751 b.n 80087f6 - 8008952: 4625 mov r5, r4 - 8008954: 2600 movs r6, #0 - 8008956: e74e b.n 80087f6 - 8008958: 4625 mov r5, r4 - 800895a: 2602 movs r6, #2 - 800895c: e74b b.n 80087f6 - 800895e: 4625 mov r5, r4 - 8008960: 4626 mov r6, r4 - 8008962: e748 b.n 80087f6 - 8008964: 4625 mov r5, r4 - 8008966: 2605 movs r6, #5 - 8008968: e745 b.n 80087f6 - 800896a: 2a3b cmp r2, #59 @ 0x3b - 800896c: f63f af70 bhi.w 8008850 - 8008970: 2a32 cmp r2, #50 @ 0x32 - 8008972: d80c bhi.n 800898e - 8008974: 2a01 cmp r2, #1 - 8008976: f43f aef6 beq.w 8008766 - 800897a: 2a03 cmp r2, #3 - 800897c: f43f aefb beq.w 8008776 - 8008980: 2a00 cmp r2, #0 - 8008982: f43f aeb4 beq.w 80086ee - 8008986: f04f 36ff mov.w r6, #4294967295 - 800898a: 2500 movs r5, #0 - 800898c: e762 b.n 8008854 - 800898e: f1a2 0133 sub.w r1, r2, #51 @ 0x33 - 8008992: 2908 cmp r1, #8 - 8008994: f63f af2a bhi.w 80087ec - 8008998: a401 add r4, pc, #4 @ (adr r4, 80089a0 ) - 800899a: f854 f021 ldr.w pc, [r4, r1, lsl #2] - 800899e: bf00 nop - 80089a0: 0800878d .word 0x0800878d - 80089a4: 08008799 .word 0x08008799 - 80089a8: 080087bb .word 0x080087bb - 80089ac: 080087c9 .word 0x080087c9 - 80089b0: 080087ed .word 0x080087ed - 80089b4: 080087ed .word 0x080087ed - 80089b8: 080087ed .word 0x080087ed - 80089bc: 080087d7 .word 0x080087d7 - 80089c0: 080087e5 .word 0x080087e5 - 80089c4: 20018b00 .word 0x20018b00 - 80089c8: 0800d510 .word 0x0800d510 - -080089cc : - 80089cc: b538 push {r3, r4, r5, lr} - 80089ce: 6a45 ldr r5, [r0, #36] @ 0x24 - 80089d0: 4604 mov r4, r0 - 80089d2: b1fd cbz r5, 8008a14 - 80089d4: 796b ldrb r3, [r5, #5] - 80089d6: 2b05 cmp r3, #5 - 80089d8: d809 bhi.n 80089ee - 80089da: 2b02 cmp r3, #2 - 80089dc: d809 bhi.n 80089f2 - 80089de: b1cb cbz r3, 8008a14 - 80089e0: 2300 movs r3, #0 - 80089e2: 71ab strb r3, [r5, #6] - 80089e4: 4620 mov r0, r4 - 80089e6: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} - 80089ea: f7ff bb25 b.w 8008038 - 80089ee: 2b0a cmp r3, #10 - 80089f0: d106 bne.n 8008a00 - 80089f2: 2300 movs r3, #0 - 80089f4: 71ab strb r3, [r5, #6] - 80089f6: 4620 mov r0, r4 - 80089f8: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} - 80089fc: f7ff bc82 b.w 8008304 - 8008a00: 2b0c cmp r3, #12 - 8008a02: d9ed bls.n 80089e0 - 8008a04: 4b04 ldr r3, [pc, #16] @ (8008a18 ) - 8008a06: 4905 ldr r1, [pc, #20] @ (8008a1c ) - 8008a08: 4805 ldr r0, [pc, #20] @ (8008a20 ) - 8008a0a: f240 326d movw r2, #877 @ 0x36d - 8008a0e: f001 febb bl 800a788 - 8008a12: e7e5 b.n 80089e0 - 8008a14: bd38 pop {r3, r4, r5, pc} - 8008a16: bf00 nop - 8008a18: 0800cf05 .word 0x0800cf05 - 8008a1c: 0800d1d5 .word 0x0800d1d5 - 8008a20: 0800b767 .word 0x0800b767 - -08008a24 : - 8008a24: e92d 41ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, lr} - 8008a28: 4606 mov r6, r0 - 8008a2a: b948 cbnz r0, 8008a40 - 8008a2c: 4b26 ldr r3, [pc, #152] @ (8008ac8 ) - 8008a2e: 4927 ldr r1, [pc, #156] @ (8008acc ) - 8008a30: 4827 ldr r0, [pc, #156] @ (8008ad0 ) - 8008a32: f240 328b movw r2, #907 @ 0x38b - 8008a36: b004 add sp, #16 - 8008a38: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} - 8008a3c: f001 bea4 b.w 800a788 - 8008a40: 6a44 ldr r4, [r0, #36] @ 0x24 - 8008a42: 2c00 cmp r4, #0 - 8008a44: d03d beq.n 8008ac2 - 8008a46: 7963 ldrb r3, [r4, #5] - 8008a48: 2b08 cmp r3, #8 - 8008a4a: d13a bne.n 8008ac2 - 8008a4c: 680a ldr r2, [r1, #0] - 8008a4e: 69e3 ldr r3, [r4, #28] - 8008a50: 429a cmp r2, r3 - 8008a52: d136 bne.n 8008ac2 - 8008a54: 210c movs r1, #12 - 8008a56: 4620 mov r0, r4 - 8008a58: f7ff f9c4 bl 8007de4 - 8008a5c: 2204 movs r2, #4 - 8008a5e: f10d 030e add.w r3, sp, #14 - 8008a62: 4621 mov r1, r4 - 8008a64: 4630 mov r0, r6 - 8008a66: f7ff fa3b bl 8007ee0 - 8008a6a: 4605 mov r5, r0 - 8008a6c: b310 cbz r0, 8008ab4 - 8008a6e: 6847 ldr r7, [r0, #4] - 8008a70: f8bd 000e ldrh.w r0, [sp, #14] - 8008a74: 37f0 adds r7, #240 @ 0xf0 - 8008a76: 2304 movs r3, #4 - 8008a78: 2232 movs r2, #50 @ 0x32 - 8008a7a: 4639 mov r1, r7 - 8008a7c: f7ff f9d6 bl 8007e2c - 8008a80: 4680 mov r8, r0 - 8008a82: 69e0 ldr r0, [r4, #28] - 8008a84: f7fa fe0a bl 800369c - 8008a88: 4639 mov r1, r7 - 8008a8a: 4602 mov r2, r0 - 8008a8c: 4640 mov r0, r8 - 8008a8e: f7ff fa03 bl 8007e98 - 8008a92: 462a mov r2, r5 - 8008a94: 4639 mov r1, r7 - 8008a96: f7ff faaf bl 8007ff8 - 8008a9a: 4b0e ldr r3, [pc, #56] @ (8008ad4 ) - 8008a9c: 480e ldr r0, [pc, #56] @ (8008ad8 ) - 8008a9e: 4a0f ldr r2, [pc, #60] @ (8008adc ) - 8008aa0: e9cd 6300 strd r6, r3, [sp] - 8008aa4: 4629 mov r1, r5 - 8008aa6: 6800 ldr r0, [r0, #0] - 8008aa8: 2343 movs r3, #67 @ 0x43 - 8008aaa: f7fe fff1 bl 8007a90 - 8008aae: 4628 mov r0, r5 - 8008ab0: f7fb fb0e bl 80040d0 - 8008ab4: 79a3 ldrb r3, [r4, #6] - 8008ab6: 2bff cmp r3, #255 @ 0xff - 8008ab8: bf1c itt ne - 8008aba: 3301 addne r3, #1 - 8008abc: 71a3 strbne r3, [r4, #6] - 8008abe: 2314 movs r3, #20 - 8008ac0: 8123 strh r3, [r4, #8] - 8008ac2: b004 add sp, #16 - 8008ac4: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 8008ac8: 0800cf05 .word 0x0800cf05 - 8008acc: 0800d0ae .word 0x0800d0ae - 8008ad0: 0800b767 .word 0x0800b767 - 8008ad4: 0800d510 .word 0x0800d510 - 8008ad8: 20018af4 .word 0x20018af4 - 8008adc: 0800d50c .word 0x0800d50c - -08008ae0 : - 8008ae0: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} - 8008ae4: 6a44 ldr r4, [r0, #36] @ 0x24 - 8008ae6: b085 sub sp, #20 - 8008ae8: 4607 mov r7, r0 - 8008aea: 2105 movs r1, #5 - 8008aec: 4620 mov r0, r4 - 8008aee: f7ff f979 bl 8007de4 - 8008af2: 2203 movs r2, #3 - 8008af4: f10d 030e add.w r3, sp, #14 - 8008af8: 4621 mov r1, r4 - 8008afa: 4638 mov r0, r7 - 8008afc: f7ff f9f0 bl 8007ee0 - 8008b00: 4605 mov r5, r0 - 8008b02: 2800 cmp r0, #0 - 8008b04: d053 beq.n 8008bae - 8008b06: 6846 ldr r6, [r0, #4] - 8008b08: f8bd 000e ldrh.w r0, [sp, #14] - 8008b0c: f8df 90a8 ldr.w r9, [pc, #168] @ 8008bb8 - 8008b10: 36f0 adds r6, #240 @ 0xf0 - 8008b12: 2302 movs r3, #2 - 8008b14: 2239 movs r2, #57 @ 0x39 - 8008b16: 4631 mov r1, r6 - 8008b18: f7ff f988 bl 8007e2c - 8008b1c: 8d3a ldrh r2, [r7, #40] @ 0x28 - 8008b1e: 4631 mov r1, r6 - 8008b20: f7ff f968 bl 8007df4 - 8008b24: 2303 movs r3, #3 - 8008b26: 2237 movs r2, #55 @ 0x37 - 8008b28: 4631 mov r1, r6 - 8008b2a: f7ff f97f bl 8007e2c - 8008b2e: f04f 0803 mov.w r8, #3 - 8008b32: f8ad 000e strh.w r0, [sp, #14] - 8008b36: f819 2b01 ldrb.w r2, [r9], #1 - 8008b3a: f8bd 000e ldrh.w r0, [sp, #14] - 8008b3e: 4631 mov r1, r6 - 8008b40: f7ff f992 bl 8007e68 - 8008b44: f108 38ff add.w r8, r8, #4294967295 - 8008b48: f018 08ff ands.w r8, r8, #255 @ 0xff - 8008b4c: f8ad 000e strh.w r0, [sp, #14] - 8008b50: d1f1 bne.n 8008b36 - 8008b52: 4631 mov r1, r6 - 8008b54: 462a mov r2, r5 - 8008b56: f7ff fa4f bl 8007ff8 - 8008b5a: 4816 ldr r0, [pc, #88] @ (8008bb4 ) - 8008b5c: 9700 str r7, [sp, #0] - 8008b5e: 6800 ldr r0, [r0, #0] - 8008b60: 2343 movs r3, #67 @ 0x43 - 8008b62: f104 0218 add.w r2, r4, #24 - 8008b66: 4629 mov r1, r5 - 8008b68: f7ff f82a bl 8007bc0 - 8008b6c: 4606 mov r6, r0 - 8008b6e: 4628 mov r0, r5 - 8008b70: f7fb faae bl 80040d0 - 8008b74: 79a3 ldrb r3, [r4, #6] - 8008b76: 2bff cmp r3, #255 @ 0xff - 8008b78: bf1c itt ne - 8008b7a: 3301 addne r3, #1 - 8008b7c: 71a3 strbne r3, [r4, #6] - 8008b7e: 79a3 ldrb r3, [r4, #6] - 8008b80: 2b09 cmp r3, #9 - 8008b82: bf9f itttt ls - 8008b84: ebc3 1243 rsbls r2, r3, r3, lsl #5 - 8008b88: eb03 0382 addls.w r3, r3, r2, lsl #2 - 8008b8c: 011b lslls r3, r3, #4 - 8008b8e: b29b uxthls r3, r3 - 8008b90: bf88 it hi - 8008b92: f644 6320 movwhi r3, #20000 @ 0x4e20 - 8008b96: f44f 72fa mov.w r2, #500 @ 0x1f4 - 8008b9a: 4630 mov r0, r6 - 8008b9c: f203 13f3 addw r3, r3, #499 @ 0x1f3 - 8008ba0: b29b uxth r3, r3 - 8008ba2: fbb3 f3f2 udiv r3, r3, r2 - 8008ba6: 8123 strh r3, [r4, #8] - 8008ba8: b005 add sp, #20 - 8008baa: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} - 8008bae: f04f 36ff mov.w r6, #4294967295 - 8008bb2: e7df b.n 8008b74 - 8008bb4: 20018af4 .word 0x20018af4 - 8008bb8: 0800d20a .word 0x0800d20a - -08008bbc : - 8008bbc: b150 cbz r0, 8008bd4 - 8008bbe: 6a40 ldr r0, [r0, #36] @ 0x24 - 8008bc0: b140 cbz r0, 8008bd4 - 8008bc2: 7940 ldrb r0, [r0, #5] - 8008bc4: 280a cmp r0, #10 - 8008bc6: d006 beq.n 8008bd6 - 8008bc8: 3804 subs r0, #4 - 8008bca: 2801 cmp r0, #1 - 8008bcc: bf8c ite hi - 8008bce: 2000 movhi r0, #0 - 8008bd0: 2001 movls r0, #1 - 8008bd2: b2c0 uxtb r0, r0 - 8008bd4: 4770 bx lr - 8008bd6: 2001 movs r0, #1 - 8008bd8: e7fb b.n 8008bd2 - ... - -08008bdc : - 8008bdc: e92d 41ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, lr} - 8008be0: 6a44 ldr r4, [r0, #36] @ 0x24 - 8008be2: 4606 mov r6, r0 - 8008be4: 2c00 cmp r4, #0 - 8008be6: d04c beq.n 8008c82 - 8008be8: 7963 ldrb r3, [r4, #5] - 8008bea: 2b00 cmp r3, #0 - 8008bec: d049 beq.n 8008c82 - 8008bee: 69a3 ldr r3, [r4, #24] - 8008bf0: 9303 str r3, [sp, #12] - 8008bf2: 2300 movs r3, #0 - 8008bf4: e9c4 3306 strd r3, r3, [r4, #24] - 8008bf8: e9c4 3308 strd r3, r3, [r4, #32] - 8008bfc: e9c4 330b strd r3, r3, [r4, #44] @ 0x2c - 8008c00: 62a3 str r3, [r4, #40] @ 0x28 - 8008c02: 81e3 strh r3, [r4, #14] - 8008c04: 6123 str r3, [r4, #16] - 8008c06: 82a3 strh r3, [r4, #20] - 8008c08: f7ff ffd8 bl 8008bbc - 8008c0c: b348 cbz r0, 8008c62 - 8008c0e: f10d 030a add.w r3, sp, #10 - 8008c12: 2207 movs r2, #7 - 8008c14: 4621 mov r1, r4 - 8008c16: 4630 mov r0, r6 - 8008c18: f7ff f962 bl 8007ee0 - 8008c1c: 4605 mov r5, r0 - 8008c1e: b300 cbz r0, 8008c62 - 8008c20: 6847 ldr r7, [r0, #4] - 8008c22: f8bd 000a ldrh.w r0, [sp, #10] - 8008c26: 37f0 adds r7, #240 @ 0xf0 - 8008c28: 2304 movs r3, #4 - 8008c2a: 2236 movs r2, #54 @ 0x36 - 8008c2c: 4639 mov r1, r7 - 8008c2e: f7ff f8fd bl 8007e2c - 8008c32: 4680 mov r8, r0 - 8008c34: 9803 ldr r0, [sp, #12] - 8008c36: f7fa fd31 bl 800369c - 8008c3a: 4639 mov r1, r7 - 8008c3c: 4602 mov r2, r0 - 8008c3e: 4640 mov r0, r8 - 8008c40: f7ff f92a bl 8007e98 - 8008c44: 462a mov r2, r5 - 8008c46: 4639 mov r1, r7 - 8008c48: f7ff f9d6 bl 8007ff8 - 8008c4c: 480e ldr r0, [pc, #56] @ (8008c88 ) - 8008c4e: 9600 str r6, [sp, #0] - 8008c50: 6800 ldr r0, [r0, #0] - 8008c52: 2343 movs r3, #67 @ 0x43 - 8008c54: aa03 add r2, sp, #12 - 8008c56: 4629 mov r1, r5 - 8008c58: f7fe ffb2 bl 8007bc0 - 8008c5c: 4628 mov r0, r5 - 8008c5e: f7fb fa37 bl 80040d0 - 8008c62: 4b0a ldr r3, [pc, #40] @ (8008c8c ) - 8008c64: 4630 mov r0, r6 - 8008c66: 4619 mov r1, r3 - 8008c68: 461a mov r2, r3 - 8008c6a: f7fb f827 bl 8003cbc - 8008c6e: 2100 movs r1, #0 - 8008c70: 4620 mov r0, r4 - 8008c72: f7ff f8b7 bl 8007de4 - 8008c76: 7923 ldrb r3, [r4, #4] - 8008c78: b11b cbz r3, 8008c82 - 8008c7a: f7ff fb23 bl 80082c4 - 8008c7e: 2300 movs r3, #0 - 8008c80: 7123 strb r3, [r4, #4] - 8008c82: b004 add sp, #16 - 8008c84: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 8008c88: 20018af4 .word 0x20018af4 - 8008c8c: 0800d510 .word 0x0800d510 - -08008c90 : - 8008c90: b570 push {r4, r5, r6, lr} - 8008c92: 4604 mov r4, r0 - 8008c94: b950 cbnz r0, 8008cac - 8008c96: 4b24 ldr r3, [pc, #144] @ (8008d28 ) - 8008c98: 4924 ldr r1, [pc, #144] @ (8008d2c ) - 8008c9a: f240 22e7 movw r2, #743 @ 0x2e7 - 8008c9e: 4824 ldr r0, [pc, #144] @ (8008d30 ) - 8008ca0: f001 fd72 bl 800a788 - 8008ca4: f06f 060f mvn.w r6, #15 - 8008ca8: 4630 mov r0, r6 - 8008caa: bd70 pop {r4, r5, r6, pc} - 8008cac: f890 3031 ldrb.w r3, [r0, #49] @ 0x31 - 8008cb0: 07da lsls r2, r3, #31 - 8008cb2: d404 bmi.n 8008cbe - 8008cb4: 4b1c ldr r3, [pc, #112] @ (8008d28 ) - 8008cb6: 491f ldr r1, [pc, #124] @ (8008d34 ) - 8008cb8: f44f 723a mov.w r2, #744 @ 0x2e8 - 8008cbc: e7ef b.n 8008c9e - 8008cbe: 8d03 ldrh r3, [r0, #40] @ 0x28 - 8008cc0: 6a45 ldr r5, [r0, #36] @ 0x24 - 8008cc2: f5b3 7f10 cmp.w r3, #576 @ 0x240 - 8008cc6: d202 bcs.n 8008cce - 8008cc8: f04f 36ff mov.w r6, #4294967295 - 8008ccc: e7ec b.n 8008ca8 - 8008cce: b9dd cbnz r5, 8008d08 - 8008cd0: 2034 movs r0, #52 @ 0x34 - 8008cd2: f7fa fe63 bl 800399c - 8008cd6: 4605 mov r5, r0 - 8008cd8: 2800 cmp r0, #0 - 8008cda: d0f5 beq.n 8008cc8 - 8008cdc: 6260 str r0, [r4, #36] @ 0x24 - 8008cde: 2234 movs r2, #52 @ 0x34 - 8008ce0: 2100 movs r1, #0 - 8008ce2: 4628 mov r0, r5 - 8008ce4: f001 fdb5 bl 800a852 - 8008ce8: f7ff fab2 bl 8008250 - 8008cec: 4606 mov r6, r0 - 8008cee: 2800 cmp r0, #0 - 8008cf0: d1ea bne.n 8008cc8 - 8008cf2: 2301 movs r3, #1 - 8008cf4: 712b strb r3, [r5, #4] - 8008cf6: f894 3031 ldrb.w r3, [r4, #49] @ 0x31 - 8008cfa: 075b lsls r3, r3, #29 - 8008cfc: d40a bmi.n 8008d14 - 8008cfe: 2102 movs r1, #2 - 8008d00: 4628 mov r0, r5 - 8008d02: f7ff f86f bl 8007de4 - 8008d06: e7cf b.n 8008ca8 - 8008d08: 792b ldrb r3, [r5, #4] - 8008d0a: 2b00 cmp r3, #0 - 8008d0c: d0e7 beq.n 8008cde - 8008d0e: f7ff fad9 bl 80082c4 - 8008d12: e7e4 b.n 8008cde - 8008d14: 4620 mov r0, r4 - 8008d16: f7ff f98f bl 8008038 - 8008d1a: 2800 cmp r0, #0 - 8008d1c: d0c4 beq.n 8008ca8 - 8008d1e: 4620 mov r0, r4 - 8008d20: f7ff ff5c bl 8008bdc - 8008d24: e7d0 b.n 8008cc8 - 8008d26: bf00 nop - 8008d28: 0800cf05 .word 0x0800cf05 - 8008d2c: 0800d0ae .word 0x0800d0ae - 8008d30: 0800b767 .word 0x0800b767 - 8008d34: 0800d1e9 .word 0x0800d1e9 - -08008d38 : - 8008d38: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} - 8008d3c: 4b53 ldr r3, [pc, #332] @ (8008e8c ) - 8008d3e: 681d ldr r5, [r3, #0] - 8008d40: b085 sub sp, #20 - 8008d42: b915 cbnz r5, 8008d4a - 8008d44: b005 add sp, #20 - 8008d46: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} - 8008d4a: 6a6c ldr r4, [r5, #36] @ 0x24 - 8008d4c: b17c cbz r4, 8008d6e - 8008d4e: 7963 ldrb r3, [r4, #5] - 8008d50: b16b cbz r3, 8008d6e - 8008d52: 8aa1 ldrh r1, [r4, #20] - 8008d54: b169 cbz r1, 8008d72 - 8008d56: 8a62 ldrh r2, [r4, #18] - 8008d58: 3201 adds r2, #1 - 8008d5a: b292 uxth r2, r2 - 8008d5c: 4291 cmp r1, r2 - 8008d5e: 8262 strh r2, [r4, #18] - 8008d60: d107 bne.n 8008d72 - 8008d62: 4628 mov r0, r5 - 8008d64: f7ff ff3a bl 8008bdc - 8008d68: 4628 mov r0, r5 - 8008d6a: f7ff ff91 bl 8008c90 - 8008d6e: 682d ldr r5, [r5, #0] - 8008d70: e7e7 b.n 8008d42 - 8008d72: 8a22 ldrh r2, [r4, #16] - 8008d74: 2a00 cmp r2, #0 - 8008d76: d070 beq.n 8008e5a - 8008d78: 1e51 subs r1, r2, #1 - 8008d7a: 2a01 cmp r2, #1 - 8008d7c: 8221 strh r1, [r4, #16] - 8008d7e: d16c bne.n 8008e5a - 8008d80: 3b01 subs r3, #1 - 8008d82: b2db uxtb r3, r3 - 8008d84: 2b09 cmp r3, #9 - 8008d86: d8f2 bhi.n 8008d6e - 8008d88: f2a2 221b subw r2, r2, #539 @ 0x21b - 8008d8c: fa42 f303 asr.w r3, r2, r3 - 8008d90: 07db lsls r3, r3, #31 - 8008d92: d4ec bmi.n 8008d6e - 8008d94: 2104 movs r1, #4 - 8008d96: 4620 mov r0, r4 - 8008d98: f7ff f824 bl 8007de4 - 8008d9c: 2203 movs r2, #3 - 8008d9e: f10d 030e add.w r3, sp, #14 - 8008da2: 4621 mov r1, r4 - 8008da4: 4628 mov r0, r5 - 8008da6: f7ff f89b bl 8007ee0 - 8008daa: 4606 mov r6, r0 - 8008dac: b3a0 cbz r0, 8008e18 - 8008dae: 6847 ldr r7, [r0, #4] - 8008db0: f8bd 000e ldrh.w r0, [sp, #14] - 8008db4: f8df 90e0 ldr.w r9, [pc, #224] @ 8008e98 - 8008db8: 37f0 adds r7, #240 @ 0xf0 - 8008dba: 2302 movs r3, #2 - 8008dbc: 2239 movs r2, #57 @ 0x39 - 8008dbe: 4639 mov r1, r7 - 8008dc0: f7ff f834 bl 8007e2c - 8008dc4: 8d2a ldrh r2, [r5, #40] @ 0x28 - 8008dc6: 4639 mov r1, r7 - 8008dc8: f7ff f814 bl 8007df4 - 8008dcc: 2303 movs r3, #3 - 8008dce: 2237 movs r2, #55 @ 0x37 - 8008dd0: 4639 mov r1, r7 - 8008dd2: f7ff f82b bl 8007e2c - 8008dd6: f04f 0803 mov.w r8, #3 - 8008dda: f8ad 000e strh.w r0, [sp, #14] - 8008dde: f819 2b01 ldrb.w r2, [r9], #1 - 8008de2: f8bd 000e ldrh.w r0, [sp, #14] - 8008de6: 4639 mov r1, r7 - 8008de8: f7ff f83e bl 8007e68 - 8008dec: f108 38ff add.w r8, r8, #4294967295 - 8008df0: f018 08ff ands.w r8, r8, #255 @ 0xff - 8008df4: f8ad 000e strh.w r0, [sp, #14] - 8008df8: d1f1 bne.n 8008dde - 8008dfa: 4632 mov r2, r6 - 8008dfc: 4639 mov r1, r7 - 8008dfe: f7ff f8fb bl 8007ff8 - 8008e02: 4823 ldr r0, [pc, #140] @ (8008e90 ) - 8008e04: 9500 str r5, [sp, #0] - 8008e06: 4a23 ldr r2, [pc, #140] @ (8008e94 ) - 8008e08: 6800 ldr r0, [r0, #0] - 8008e0a: 2343 movs r3, #67 @ 0x43 - 8008e0c: 4631 mov r1, r6 - 8008e0e: f7fe fed7 bl 8007bc0 - 8008e12: 4630 mov r0, r6 - 8008e14: f7fb f95c bl 80040d0 - 8008e18: 79a3 ldrb r3, [r4, #6] - 8008e1a: 2bff cmp r3, #255 @ 0xff - 8008e1c: bf1c itt ne - 8008e1e: 3301 addne r3, #1 - 8008e20: 71a3 strbne r3, [r4, #6] - 8008e22: 79a3 ldrb r3, [r4, #6] - 8008e24: 2b09 cmp r3, #9 - 8008e26: bf9f itttt ls - 8008e28: ebc3 1243 rsbls r2, r3, r3, lsl #5 - 8008e2c: eb03 0382 addls.w r3, r3, r2, lsl #2 - 8008e30: 00db lslls r3, r3, #3 - 8008e32: b29b uxthls r3, r3 - 8008e34: bf88 it hi - 8008e36: f242 7310 movwhi r3, #10000 @ 0x2710 - 8008e3a: f203 13f3 addw r3, r3, #499 @ 0x1f3 - 8008e3e: f44f 72fa mov.w r2, #500 @ 0x1f4 - 8008e42: b29b uxth r3, r3 - 8008e44: fbb3 f3f2 udiv r3, r3, r2 - 8008e48: 8a62 ldrh r2, [r4, #18] - 8008e4a: 8123 strh r3, [r4, #8] - 8008e4c: 8aa3 ldrh r3, [r4, #20] - 8008e4e: 1a9b subs r3, r3, r2 - 8008e50: 2b01 cmp r3, #1 - 8008e52: dd8c ble.n 8008d6e - 8008e54: 105b asrs r3, r3, #1 - 8008e56: 8223 strh r3, [r4, #16] - 8008e58: e789 b.n 8008d6e - 8008e5a: 89e2 ldrh r2, [r4, #14] - 8008e5c: 2a00 cmp r2, #0 - 8008e5e: d086 beq.n 8008d6e - 8008e60: 1e51 subs r1, r2, #1 - 8008e62: 2a01 cmp r2, #1 - 8008e64: 81e1 strh r1, [r4, #14] - 8008e66: d182 bne.n 8008d6e - 8008e68: f003 02fb and.w r2, r3, #251 @ 0xfb - 8008e6c: 2a01 cmp r2, #1 - 8008e6e: d002 beq.n 8008e76 - 8008e70: 2b0a cmp r3, #10 - 8008e72: f47f af7c bne.w 8008d6e - 8008e76: 4628 mov r0, r5 - 8008e78: f7ff fe32 bl 8008ae0 - 8008e7c: 89a3 ldrh r3, [r4, #12] - 8008e7e: 8a62 ldrh r2, [r4, #18] - 8008e80: 1a9b subs r3, r3, r2 - 8008e82: 2b01 cmp r3, #1 - 8008e84: bfc4 itt gt - 8008e86: 105b asrgt r3, r3, #1 - 8008e88: 81e3 strhgt r3, [r4, #14] - 8008e8a: e770 b.n 8008d6e - 8008e8c: 20018a88 .word 0x20018a88 - 8008e90: 20018af4 .word 0x20018af4 - 8008e94: 0800d50c .word 0x0800d50c - 8008e98: 0800d20a .word 0x0800d20a - -08008e9c : - 8008e9c: 4b25 ldr r3, [pc, #148] @ (8008f34 ) - 8008e9e: b510 push {r4, lr} - 8008ea0: 681c ldr r4, [r3, #0] - 8008ea2: b904 cbnz r4, 8008ea6 - 8008ea4: bd10 pop {r4, pc} - 8008ea6: 6a63 ldr r3, [r4, #36] @ 0x24 - 8008ea8: b123 cbz r3, 8008eb4 - 8008eaa: 891a ldrh r2, [r3, #8] - 8008eac: 2a01 cmp r2, #1 - 8008eae: d903 bls.n 8008eb8 - 8008eb0: 3a01 subs r2, #1 - 8008eb2: 811a strh r2, [r3, #8] - 8008eb4: 6824 ldr r4, [r4, #0] - 8008eb6: e7f4 b.n 8008ea2 - 8008eb8: d1fc bne.n 8008eb4 - 8008eba: 2200 movs r2, #0 - 8008ebc: 811a strh r2, [r3, #8] - 8008ebe: 795a ldrb r2, [r3, #5] - 8008ec0: 2a0c cmp r2, #12 - 8008ec2: d015 beq.n 8008ef0 - 8008ec4: 3a01 subs r2, #1 - 8008ec6: 2a07 cmp r2, #7 - 8008ec8: d8f4 bhi.n 8008eb4 - 8008eca: a101 add r1, pc, #4 @ (adr r1, 8008ed0 ) - 8008ecc: f851 f022 ldr.w pc, [r1, r2, lsl #2] - 8008ed0: 08008ef9 .word 0x08008ef9 - 8008ed4: 08008eb5 .word 0x08008eb5 - 8008ed8: 08008f27 .word 0x08008f27 - 8008edc: 08008eb5 .word 0x08008eb5 - 8008ee0: 08008eb5 .word 0x08008eb5 - 8008ee4: 08008ef1 .word 0x08008ef1 - 8008ee8: 08008eb5 .word 0x08008eb5 - 8008eec: 08008f13 .word 0x08008f13 - 8008ef0: 4620 mov r0, r4 - 8008ef2: f7ff f8a1 bl 8008038 - 8008ef6: e7dd b.n 8008eb4 - 8008ef8: 799b ldrb r3, [r3, #6] - 8008efa: 2b05 cmp r3, #5 - 8008efc: 4620 mov r0, r4 - 8008efe: d802 bhi.n 8008f06 - 8008f00: f7ff fab0 bl 8008464 - 8008f04: e7d6 b.n 8008eb4 - 8008f06: f7ff fe69 bl 8008bdc - 8008f0a: 4620 mov r0, r4 - 8008f0c: f7ff fec0 bl 8008c90 - 8008f10: e7d0 b.n 8008eb4 - 8008f12: 799b ldrb r3, [r3, #6] - 8008f14: 2b01 cmp r3, #1 - 8008f16: 4620 mov r0, r4 - 8008f18: d802 bhi.n 8008f20 - 8008f1a: f7ff f8ff bl 800811c - 8008f1e: e7c9 b.n 8008eb4 - 8008f20: f7ff f912 bl 8008148 - 8008f24: e7c6 b.n 8008eb4 - 8008f26: 799b ldrb r3, [r3, #6] - 8008f28: 2b01 cmp r3, #1 - 8008f2a: 4620 mov r0, r4 - 8008f2c: d8e1 bhi.n 8008ef2 - 8008f2e: f7ff f9e9 bl 8008304 - 8008f32: e7bf b.n 8008eb4 - 8008f34: 20018a88 .word 0x20018a88 - -08008f38 : - 8008f38: b570 push {r4, r5, r6, lr} - 8008f3a: 2618 movs r6, #24 - 8008f3c: 4c07 ldr r4, [pc, #28] @ (8008f5c ) - 8008f3e: 4346 muls r6, r0 - 8008f40: 4605 mov r5, r0 - 8008f42: 59a0 ldr r0, [r4, r6] - 8008f44: b118 cbz r0, 8008f4e - 8008f46: f7fb f8c3 bl 80040d0 - 8008f4a: 2300 movs r3, #0 - 8008f4c: 51a3 str r3, [r4, r6] - 8008f4e: 2318 movs r3, #24 - 8008f50: fb03 4405 mla r4, r3, r5, r4 - 8008f54: 2300 movs r3, #0 - 8008f56: 7523 strb r3, [r4, #20] - 8008f58: bd70 pop {r4, r5, r6, pc} - 8008f5a: bf00 nop - 8008f5c: 20018b24 .word 0x20018b24 - -08008f60 : - 8008f60: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8008f64: f04f 0c00 mov.w ip, #0 - 8008f68: b085 sub sp, #20 - 8008f6a: 4b42 ldr r3, [pc, #264] @ (8009074 ) - 8008f6c: 9103 str r1, [sp, #12] - 8008f6e: e9cd cc01 strd ip, ip, [sp, #4] - 8008f72: f04f 0e0a mov.w lr, #10 - 8008f76: 4606 mov r6, r0 - 8008f78: 4617 mov r7, r2 - 8008f7a: 46e3 mov fp, ip - 8008f7c: 4674 mov r4, lr - 8008f7e: 46f0 mov r8, lr - 8008f80: 46f1 mov r9, lr - 8008f82: 461d mov r5, r3 - 8008f84: 2c0a cmp r4, #10 - 8008f86: f893 a014 ldrb.w sl, [r3, #20] - 8008f8a: fa0f f08c sxth.w r0, ip - 8008f8e: d119 bne.n 8008fc4 - 8008f90: f1ba 0f00 cmp.w sl, #0 - 8008f94: d061 beq.n 800905a - 8008f96: b146 cbz r6, 8008faa - 8008f98: 6831 ldr r1, [r6, #0] - 8008f9a: 685a ldr r2, [r3, #4] - 8008f9c: 4291 cmp r1, r2 - 8008f9e: d104 bne.n 8008faa - 8008fa0: 2f00 cmp r7, #0 - 8008fa2: d04c beq.n 800903e - 8008fa4: 6899 ldr r1, [r3, #8] - 8008fa6: 42b9 cmp r1, r7 - 8008fa8: d049 beq.n 800903e - 8008faa: f1ba 0f01 cmp.w sl, #1 - 8008fae: 8a59 ldrh r1, [r3, #18] - 8008fb0: d14e bne.n 8009050 - 8008fb2: 681a ldr r2, [r3, #0] - 8008fb4: 2a00 cmp r2, #0 - 8008fb6: d045 beq.n 8009044 - 8008fb8: 9a01 ldr r2, [sp, #4] - 8008fba: 428a cmp r2, r1 - 8008fbc: d805 bhi.n 8008fca - 8008fbe: 9101 str r1, [sp, #4] - 8008fc0: 4686 mov lr, r0 - 8008fc2: e002 b.n 8008fca - 8008fc4: f1ba 0f00 cmp.w sl, #0 - 8008fc8: d1e5 bne.n 8008f96 - 8008fca: f10c 0c01 add.w ip, ip, #1 - 8008fce: f1bc 0f0a cmp.w ip, #10 - 8008fd2: f103 0318 add.w r3, r3, #24 - 8008fd6: d1d5 bne.n 8008f84 - 8008fd8: 9b03 ldr r3, [sp, #12] - 8008fda: 2b01 cmp r3, #1 - 8008fdc: d147 bne.n 800906e - 8008fde: 2c0a cmp r4, #10 - 8008fe0: d113 bne.n 800900a - 8008fe2: f1b8 0f0a cmp.w r8, #10 - 8008fe6: d03a beq.n 800905e - 8008fe8: 2318 movs r3, #24 - 8008fea: fb03 f308 mul.w r3, r3, r8 - 8008fee: 58eb ldr r3, [r5, r3] - 8008ff0: b133 cbz r3, 8009000 - 8008ff2: 4b21 ldr r3, [pc, #132] @ (8009078 ) - 8008ff4: 4921 ldr r1, [pc, #132] @ (800907c ) - 8008ff6: 4822 ldr r0, [pc, #136] @ (8009080 ) - 8008ff8: f240 126d movw r2, #365 @ 0x16d - 8008ffc: f001 fbc4 bl 800a788 - 8009000: 46c1 mov r9, r8 - 8009002: 4648 mov r0, r9 - 8009004: f7ff ff98 bl 8008f38 - 8009008: 464c mov r4, r9 - 800900a: 2318 movs r3, #24 - 800900c: fb03 5304 mla r3, r3, r4, r5 - 8009010: 7d1b ldrb r3, [r3, #20] - 8009012: b133 cbz r3, 8009022 - 8009014: 4b18 ldr r3, [pc, #96] @ (8009078 ) - 8009016: 491b ldr r1, [pc, #108] @ (8009084 ) - 8009018: 4819 ldr r0, [pc, #100] @ (8009080 ) - 800901a: f44f 72c2 mov.w r2, #388 @ 0x184 - 800901e: f001 fbb3 bl 800a788 - 8009022: b12e cbz r6, 8009030 - 8009024: 4b13 ldr r3, [pc, #76] @ (8009074 ) - 8009026: 6832 ldr r2, [r6, #0] - 8009028: 2118 movs r1, #24 - 800902a: fb01 3304 mla r3, r1, r4, r3 - 800902e: 605a str r2, [r3, #4] - 8009030: 2318 movs r3, #24 - 8009032: fb03 5504 mla r5, r3, r4, r5 - 8009036: 2300 movs r3, #0 - 8009038: 826b strh r3, [r5, #18] - 800903a: 60af str r7, [r5, #8] - 800903c: 4620 mov r0, r4 - 800903e: b005 add sp, #20 - 8009040: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 8009044: 9a02 ldr r2, [sp, #8] - 8009046: 428a cmp r2, r1 - 8009048: d8bf bhi.n 8008fca - 800904a: 9102 str r1, [sp, #8] - 800904c: 4681 mov r9, r0 - 800904e: e7bc b.n 8008fca - 8009050: 4559 cmp r1, fp - 8009052: d3ba bcc.n 8008fca - 8009054: 468b mov fp, r1 - 8009056: 4680 mov r8, r0 - 8009058: e7b7 b.n 8008fca - 800905a: 4604 mov r4, r0 - 800905c: e7b5 b.n 8008fca - 800905e: f1b9 0f0a cmp.w r9, #10 - 8009062: d1ce bne.n 8009002 - 8009064: f1be 0f0a cmp.w lr, #10 - 8009068: d001 beq.n 800906e - 800906a: 46f1 mov r9, lr - 800906c: e7c9 b.n 8009002 - 800906e: f04f 30ff mov.w r0, #4294967295 - 8009072: e7e4 b.n 800903e - 8009074: 20018b24 .word 0x20018b24 - 8009078: 0800d20d .word 0x0800d20d - 800907c: 0800d244 .word 0x0800d244 - 8009080: 0800b767 .word 0x0800b767 - 8009084: 0800d25b .word 0x0800d25b - -08009088 : - 8009088: e92d 47f3 stmdb sp!, {r0, r1, r4, r5, r6, r7, r8, r9, sl, lr} - 800908c: f8dd a02c ldr.w sl, [sp, #44] @ 0x2c - 8009090: 4688 mov r8, r1 - 8009092: 4691 mov r9, r2 - 8009094: 461e mov r6, r3 - 8009096: 4607 mov r7, r0 - 8009098: b930 cbnz r0, 80090a8 - 800909a: 4b2d ldr r3, [pc, #180] @ (8009150 ) - 800909c: 492d ldr r1, [pc, #180] @ (8009154 ) - 800909e: 482e ldr r0, [pc, #184] @ (8009158 ) - 80090a0: f240 4257 movw r2, #1111 @ 0x457 - 80090a4: f001 fb70 bl 800a788 - 80090a8: f44f 7220 mov.w r2, #640 @ 0x280 - 80090ac: 211c movs r1, #28 - 80090ae: 200e movs r0, #14 - 80090b0: f7fb f872 bl 8004198 - 80090b4: 4605 mov r5, r0 - 80090b6: 2800 cmp r0, #0 - 80090b8: d047 beq.n 800914a - 80090ba: 8943 ldrh r3, [r0, #10] - 80090bc: 2b1b cmp r3, #27 - 80090be: d806 bhi.n 80090ce - 80090c0: 4b23 ldr r3, [pc, #140] @ (8009150 ) - 80090c2: 4926 ldr r1, [pc, #152] @ (800915c ) - 80090c4: 4824 ldr r0, [pc, #144] @ (8009158 ) - 80090c6: f240 4262 movw r2, #1122 @ 0x462 - 80090ca: f001 fb5d bl 800a788 - 80090ce: f8bd 0034 ldrh.w r0, [sp, #52] @ 0x34 - 80090d2: 686c ldr r4, [r5, #4] - 80090d4: f7fa fadf bl 8003696 - 80090d8: 80e0 strh r0, [r4, #6] - 80090da: f897 3030 ldrb.w r3, [r7, #48] @ 0x30 - 80090de: 2b06 cmp r3, #6 - 80090e0: d006 beq.n 80090f0 - 80090e2: 4b1b ldr r3, [pc, #108] @ (8009150 ) - 80090e4: 491e ldr r1, [pc, #120] @ (8009160 ) - 80090e6: 481c ldr r0, [pc, #112] @ (8009158 ) - 80090e8: f240 4269 movw r2, #1129 @ 0x469 - 80090ec: f001 fb4c bl 800a788 - 80090f0: 6833 ldr r3, [r6, #0] - 80090f2: 60a3 str r3, [r4, #8] - 80090f4: 88b3 ldrh r3, [r6, #4] - 80090f6: 81a3 strh r3, [r4, #12] - 80090f8: f8da 3000 ldr.w r3, [sl] - 80090fc: f8c4 3012 str.w r3, [r4, #18] - 8009100: f8ba 3004 ldrh.w r3, [sl, #4] - 8009104: 82e3 strh r3, [r4, #22] - 8009106: 9b0a ldr r3, [sp, #40] @ 0x28 - 8009108: 681b ldr r3, [r3, #0] - 800910a: f8c4 300e str.w r3, [r4, #14] - 800910e: 9b0c ldr r3, [sp, #48] @ 0x30 - 8009110: 681b ldr r3, [r3, #0] - 8009112: 61a3 str r3, [r4, #24] - 8009114: 2301 movs r3, #1 - 8009116: 7063 strb r3, [r4, #1] - 8009118: 2308 movs r3, #8 - 800911a: 70a3 strb r3, [r4, #2] - 800911c: 2306 movs r3, #6 - 800911e: 7123 strb r3, [r4, #4] - 8009120: 2304 movs r3, #4 - 8009122: 2600 movs r6, #0 - 8009124: 7163 strb r3, [r4, #5] - 8009126: f640 0306 movw r3, #2054 @ 0x806 - 800912a: 7026 strb r6, [r4, #0] - 800912c: 70e6 strb r6, [r4, #3] - 800912e: 4642 mov r2, r8 - 8009130: 9300 str r3, [sp, #0] - 8009132: 4629 mov r1, r5 - 8009134: 464b mov r3, r9 - 8009136: 4638 mov r0, r7 - 8009138: f001 f9ee bl 800a518 - 800913c: 4628 mov r0, r5 - 800913e: f7fa ffc7 bl 80040d0 - 8009142: 4630 mov r0, r6 - 8009144: b002 add sp, #8 - 8009146: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 800914a: f04f 30ff mov.w r0, #4294967295 - 800914e: e7f9 b.n 8009144 - 8009150: 0800d20d .word 0x0800d20d - 8009154: 0800d0ae .word 0x0800d0ae - 8009158: 0800b767 .word 0x0800b767 - 800915c: 0800d284 .word 0x0800d284 - 8009160: 0800d2b5 .word 0x0800d2b5 - -08009164 : - 8009164: b570 push {r4, r5, r6, lr} - 8009166: 4d08 ldr r5, [pc, #32] @ (8009188 ) - 8009168: 4606 mov r6, r0 - 800916a: 2400 movs r4, #0 - 800916c: 7d2b ldrb r3, [r5, #20] - 800916e: b12b cbz r3, 800917c - 8009170: 68ab ldr r3, [r5, #8] - 8009172: 42b3 cmp r3, r6 - 8009174: d102 bne.n 800917c - 8009176: 4620 mov r0, r4 - 8009178: f7ff fede bl 8008f38 - 800917c: 3401 adds r4, #1 - 800917e: 2c0a cmp r4, #10 - 8009180: f105 0518 add.w r5, r5, #24 - 8009184: d1f2 bne.n 800916c - 8009186: bd70 pop {r4, r5, r6, pc} - 8009188: 20018b24 .word 0x20018b24 - -0800918c : - 800918c: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 8009190: 4607 mov r7, r0 - 8009192: b086 sub sp, #24 - 8009194: 460c mov r4, r1 - 8009196: b949 cbnz r1, 80091ac - 8009198: 4b4f ldr r3, [pc, #316] @ (80092d8 ) - 800919a: 4950 ldr r1, [pc, #320] @ (80092dc ) - 800919c: 4850 ldr r0, [pc, #320] @ (80092e0 ) - 800919e: f240 228a movw r2, #650 @ 0x28a - 80091a2: b006 add sp, #24 - 80091a4: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 80091a8: f001 baee b.w 800a788 - 80091ac: 6845 ldr r5, [r0, #4] - 80091ae: 882b ldrh r3, [r5, #0] - 80091b0: f5b3 7f80 cmp.w r3, #256 @ 0x100 - 80091b4: d108 bne.n 80091c8 - 80091b6: 792b ldrb r3, [r5, #4] - 80091b8: 2b06 cmp r3, #6 - 80091ba: d105 bne.n 80091c8 - 80091bc: 796b ldrb r3, [r5, #5] - 80091be: 2b04 cmp r3, #4 - 80091c0: d102 bne.n 80091c8 - 80091c2: 886b ldrh r3, [r5, #2] - 80091c4: 2b08 cmp r3, #8 - 80091c6: d005 beq.n 80091d4 - 80091c8: 4638 mov r0, r7 - 80091ca: b006 add sp, #24 - 80091cc: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 80091d0: f7fa bf7e b.w 80040d0 - 80091d4: 684e ldr r6, [r1, #4] - 80091d6: f8d5 300e ldr.w r3, [r5, #14] - 80091da: 9305 str r3, [sp, #20] - 80091dc: f105 0808 add.w r8, r5, #8 - 80091e0: 69ab ldr r3, [r5, #24] - 80091e2: 2e00 cmp r6, #0 - 80091e4: d05e beq.n 80092a4 - 80091e6: 429e cmp r6, r3 - 80091e8: d15b bne.n 80092a2 - 80091ea: 2601 movs r6, #1 - 80091ec: 46b2 mov sl, r6 - 80091ee: f894 3030 ldrb.w r3, [r4, #48] @ 0x30 - 80091f2: 2b06 cmp r3, #6 - 80091f4: d006 beq.n 8009204 - 80091f6: 4b38 ldr r3, [pc, #224] @ (80092d8 ) - 80091f8: 493a ldr r1, [pc, #232] @ (80092e4 ) - 80091fa: 4839 ldr r0, [pc, #228] @ (80092e0 ) - 80091fc: f240 12a9 movw r2, #425 @ 0x1a9 - 8009200: f001 fac2 bl 800a788 - 8009204: 9805 ldr r0, [sp, #20] - 8009206: 2800 cmp r0, #0 - 8009208: d03e beq.n 8009288 - 800920a: 4621 mov r1, r4 - 800920c: f000 fcbd bl 8009b8a - 8009210: 4681 mov r9, r0 - 8009212: bbc8 cbnz r0, 8009288 - 8009214: 9b05 ldr r3, [sp, #20] - 8009216: f003 03f0 and.w r3, r3, #240 @ 0xf0 - 800921a: 2be0 cmp r3, #224 @ 0xe0 - 800921c: d034 beq.n 8009288 - 800921e: 4622 mov r2, r4 - 8009220: 4651 mov r1, sl - 8009222: a805 add r0, sp, #20 - 8009224: f7ff fe9c bl 8008f60 - 8009228: 1e03 subs r3, r0, #0 - 800922a: db2d blt.n 8009288 - 800922c: 4a2e ldr r2, [pc, #184] @ (80092e8 ) - 800922e: 2018 movs r0, #24 - 8009230: fb00 f103 mul.w r1, r0, r3 - 8009234: eb02 0c01 add.w ip, r2, r1 - 8009238: f04f 0e02 mov.w lr, #2 - 800923c: f88c e014 strb.w lr, [ip, #20] - 8009240: f04f 0e0c mov.w lr, #12 - 8009244: f8cc 4008 str.w r4, [ip, #8] - 8009248: fb13 e300 smlabb r3, r3, r0, lr - 800924c: 68a8 ldr r0, [r5, #8] - 800924e: 50d0 str r0, [r2, r3] - 8009250: eb03 0e02 add.w lr, r3, r2 - 8009254: f8b8 3004 ldrh.w r3, [r8, #4] - 8009258: f8ae 3004 strh.w r3, [lr, #4] - 800925c: f852 a001 ldr.w sl, [r2, r1] - 8009260: f8ac 9012 strh.w r9, [ip, #18] - 8009264: f1ba 0f00 cmp.w sl, #0 - 8009268: d00e beq.n 8009288 - 800926a: f44f 6300 mov.w r3, #2048 @ 0x800 - 800926e: f842 9001 str.w r9, [r2, r1] - 8009272: 4620 mov r0, r4 - 8009274: 9300 str r3, [sp, #0] - 8009276: f104 022a add.w r2, r4, #42 @ 0x2a - 800927a: 4643 mov r3, r8 - 800927c: 4651 mov r1, sl - 800927e: f001 f94b bl 800a518 - 8009282: 4650 mov r0, sl - 8009284: f7fa ff24 bl 80040d0 - 8009288: 88eb ldrh r3, [r5, #6] - 800928a: f5b3 7f80 cmp.w r3, #256 @ 0x100 - 800928e: d00c beq.n 80092aa - 8009290: f5b3 7f00 cmp.w r3, #512 @ 0x200 - 8009294: d01a beq.n 80092cc - 8009296: 4638 mov r0, r7 - 8009298: f7fa ff1a bl 80040d0 - 800929c: b006 add sp, #24 - 800929e: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 80092a2: 2600 movs r6, #0 - 80092a4: f04f 0a02 mov.w sl, #2 - 80092a8: e7a1 b.n 80091ee - 80092aa: 2e00 cmp r6, #0 - 80092ac: d0f3 beq.n 8009296 - 80092ae: 2202 movs r2, #2 - 80092b0: 9203 str r2, [sp, #12] - 80092b2: aa05 add r2, sp, #20 - 80092b4: e9cd 8201 strd r8, r2, [sp, #4] - 80092b8: f104 032a add.w r3, r4, #42 @ 0x2a - 80092bc: 1d22 adds r2, r4, #4 - 80092be: 9200 str r2, [sp, #0] - 80092c0: 4619 mov r1, r3 - 80092c2: 4642 mov r2, r8 - 80092c4: 4620 mov r0, r4 - 80092c6: f7ff fedf bl 8009088 - 80092ca: e7e4 b.n 8009296 - 80092cc: a905 add r1, sp, #20 - 80092ce: 4620 mov r0, r4 - 80092d0: f7ff fba8 bl 8008a24 - 80092d4: e7df b.n 8009296 - 80092d6: bf00 nop - 80092d8: 0800d20d .word 0x0800d20d - 80092dc: 0800d0ae .word 0x0800d0ae - 80092e0: 0800b767 .word 0x0800b767 - 80092e4: 0800d315 .word 0x0800d315 - 80092e8: 20018b24 .word 0x20018b24 - -080092ec : - 80092ec: b51f push {r0, r1, r2, r3, r4, lr} - 80092ee: 4602 mov r2, r0 - 80092f0: 2401 movs r4, #1 - 80092f2: e9cd 1402 strd r1, r4, [sp, #8] - 80092f6: f100 032a add.w r3, r0, #42 @ 0x2a - 80092fa: 4905 ldr r1, [pc, #20] @ (8009310 ) - 80092fc: 9101 str r1, [sp, #4] - 80092fe: 3204 adds r2, #4 - 8009300: 9200 str r2, [sp, #0] - 8009302: 4619 mov r1, r3 - 8009304: 4a03 ldr r2, [pc, #12] @ (8009314 ) - 8009306: f7ff febf bl 8009088 - 800930a: b004 add sp, #16 - 800930c: bd10 pop {r4, pc} - 800930e: bf00 nop - 8009310: 0800d73e .word 0x0800d73e - 8009314: 0800d744 .word 0x0800d744 - -08009318 : - 8009318: b538 push {r3, r4, r5, lr} - 800931a: 4c13 ldr r4, [pc, #76] @ (8009368 ) - 800931c: 2500 movs r5, #0 - 800931e: 7d22 ldrb r2, [r4, #20] - 8009320: b16a cbz r2, 800933e - 8009322: 8a63 ldrh r3, [r4, #18] - 8009324: 3301 adds r3, #1 - 8009326: b29b uxth r3, r3 - 8009328: f5b3 7f96 cmp.w r3, #300 @ 0x12c - 800932c: 8263 strh r3, [r4, #18] - 800932e: d203 bcs.n 8009338 - 8009330: 2a01 cmp r2, #1 - 8009332: d10a bne.n 800934a - 8009334: 2b04 cmp r3, #4 - 8009336: d90d bls.n 8009354 - 8009338: 4628 mov r0, r5 - 800933a: f7ff fdfd bl 8008f38 - 800933e: 3501 adds r5, #1 - 8009340: 2d0a cmp r5, #10 - 8009342: f104 0418 add.w r4, r4, #24 - 8009346: d1ea bne.n 800931e - 8009348: bd38 pop {r3, r4, r5, pc} - 800934a: 2a03 cmp r2, #3 - 800934c: d107 bne.n 800935e - 800934e: 2304 movs r3, #4 - 8009350: 7523 strb r3, [r4, #20] - 8009352: e7f4 b.n 800933e - 8009354: 68a0 ldr r0, [r4, #8] - 8009356: 1d21 adds r1, r4, #4 - 8009358: f7ff ffc8 bl 80092ec - 800935c: e7ef b.n 800933e - 800935e: 2a04 cmp r2, #4 - 8009360: d1ed bne.n 800933e - 8009362: 2302 movs r3, #2 - 8009364: e7f4 b.n 8009350 - 8009366: bf00 nop - 8009368: 20018b24 .word 0x20018b24 - -0800936c : - 800936c: e92d 47ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, lr} - 8009370: 4f24 ldr r7, [pc, #144] @ (8009404 ) - 8009372: 2318 movs r3, #24 - 8009374: fb03 7302 mla r3, r3, r2, r7 - 8009378: 4606 mov r6, r0 - 800937a: 7d1b ldrb r3, [r3, #20] - 800937c: 2b01 cmp r3, #1 - 800937e: 4689 mov r9, r1 - 8009380: 4614 mov r4, r2 - 8009382: d806 bhi.n 8009392 - 8009384: 4b20 ldr r3, [pc, #128] @ (8009408 ) - 8009386: 4921 ldr r1, [pc, #132] @ (800940c ) - 8009388: 4821 ldr r0, [pc, #132] @ (8009410 ) - 800938a: f240 22ee movw r2, #750 @ 0x2ee - 800938e: f001 f9fb bl 800a788 - 8009392: 2318 movs r3, #24 - 8009394: eb04 0544 add.w r5, r4, r4, lsl #1 - 8009398: fb03 7404 mla r4, r3, r4, r7 - 800939c: 00ed lsls r5, r5, #3 - 800939e: 7d23 ldrb r3, [r4, #20] - 80093a0: f105 080c add.w r8, r5, #12 - 80093a4: 2b02 cmp r3, #2 - 80093a6: 44b8 add r8, r7 - 80093a8: f106 0a2a add.w sl, r6, #42 @ 0x2a - 80093ac: d10b bne.n 80093c6 - 80093ae: 8a63 ldrh r3, [r4, #18] - 80093b0: f5b3 7f8e cmp.w r3, #284 @ 0x11c - 80093b4: d913 bls.n 80093de - 80093b6: 1d29 adds r1, r5, #4 - 80093b8: 4439 add r1, r7 - 80093ba: 4630 mov r0, r6 - 80093bc: f7ff ff96 bl 80092ec - 80093c0: b908 cbnz r0, 80093c6 - 80093c2: 2303 movs r3, #3 - 80093c4: 7523 strb r3, [r4, #20] - 80093c6: f44f 6300 mov.w r3, #2048 @ 0x800 - 80093ca: 9300 str r3, [sp, #0] - 80093cc: 4652 mov r2, sl - 80093ce: 4643 mov r3, r8 - 80093d0: 4649 mov r1, r9 - 80093d2: 4630 mov r0, r6 - 80093d4: f001 f8a0 bl 800a518 - 80093d8: b004 add sp, #16 - 80093da: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 80093de: f5b3 7f87 cmp.w r3, #270 @ 0x10e - 80093e2: d3f0 bcc.n 80093c6 - 80093e4: 2301 movs r3, #1 - 80093e6: 9303 str r3, [sp, #12] - 80093e8: 3504 adds r5, #4 - 80093ea: 4b0a ldr r3, [pc, #40] @ (8009414 ) - 80093ec: 9301 str r3, [sp, #4] - 80093ee: 442f add r7, r5 - 80093f0: 1d33 adds r3, r6, #4 - 80093f2: 9300 str r3, [sp, #0] - 80093f4: 9702 str r7, [sp, #8] - 80093f6: 4653 mov r3, sl - 80093f8: 4642 mov r2, r8 - 80093fa: 4651 mov r1, sl - 80093fc: 4630 mov r0, r6 - 80093fe: f7ff fe43 bl 8009088 - 8009402: e7dd b.n 80093c0 - 8009404: 20018b24 .word 0x20018b24 - 8009408: 0800d20d .word 0x0800d20d - 800940c: 0800d339 .word 0x0800d339 - 8009410: 0800b767 .word 0x0800b767 - 8009414: 0800d73e .word 0x0800d73e - -08009418 : - 8009418: e92d 47f3 stmdb sp!, {r0, r1, r4, r5, r6, r7, r8, r9, sl, lr} - 800941c: 4688 mov r8, r1 - 800941e: 4606 mov r6, r0 - 8009420: 4601 mov r1, r0 - 8009422: f8d8 0000 ldr.w r0, [r8] - 8009426: 4615 mov r5, r2 - 8009428: f000 fbaf bl 8009b8a - 800942c: 2800 cmp r0, #0 - 800942e: d161 bne.n 80094f4 - 8009430: f8d8 3000 ldr.w r3, [r8] - 8009434: f003 02f0 and.w r2, r3, #240 @ 0xf0 - 8009438: 2ae0 cmp r2, #224 @ 0xe0 - 800943a: d05b beq.n 80094f4 - 800943c: 2b00 cmp r3, #0 - 800943e: d059 beq.n 80094f4 - 8009440: 4632 mov r2, r6 - 8009442: 2101 movs r1, #1 - 8009444: 4640 mov r0, r8 - 8009446: f7ff fd8b bl 8008f60 - 800944a: 1e07 subs r7, r0, #0 - 800944c: da03 bge.n 8009456 - 800944e: b278 sxtb r0, r7 - 8009450: b002 add sp, #8 - 8009452: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 8009456: 2f7e cmp r7, #126 @ 0x7e - 8009458: dd06 ble.n 8009468 - 800945a: 4b37 ldr r3, [pc, #220] @ (8009538 ) - 800945c: 4937 ldr r1, [pc, #220] @ (800953c ) - 800945e: 4838 ldr r0, [pc, #224] @ (8009540 ) - 8009460: f240 32c1 movw r2, #961 @ 0x3c1 - 8009464: f001 f990 bl 800a788 - 8009468: f8df 90dc ldr.w r9, [pc, #220] @ 8009548 - 800946c: b2ff uxtb r7, r7 - 800946e: 2318 movs r3, #24 - 8009470: fb03 9307 mla r3, r3, r7, r9 - 8009474: 7d1a ldrb r2, [r3, #20] - 8009476: 2a00 cmp r2, #0 - 8009478: d142 bne.n 8009500 - 800947a: 2201 movs r2, #1 - 800947c: 751a strb r2, [r3, #20] - 800947e: 609e str r6, [r3, #8] - 8009480: 4641 mov r1, r8 - 8009482: 4630 mov r0, r6 - 8009484: f7ff ff32 bl 80092ec - 8009488: 2d00 cmp r5, #0 - 800948a: d0e1 beq.n 8009450 - 800948c: 2318 movs r3, #24 - 800948e: fb03 9207 mla r2, r3, r7, r9 - 8009492: 7d12 ldrb r2, [r2, #20] - 8009494: 2a01 cmp r2, #1 - 8009496: d90e bls.n 80094b6 - 8009498: 4a2a ldr r2, [pc, #168] @ (8009544 ) - 800949a: fb03 9307 mla r3, r3, r7, r9 - 800949e: 7017 strb r7, [r2, #0] - 80094a0: f44f 6200 mov.w r2, #2048 @ 0x800 - 80094a4: 9200 str r2, [sp, #0] - 80094a6: 330c adds r3, #12 - 80094a8: f106 022a add.w r2, r6, #42 @ 0x2a - 80094ac: 4629 mov r1, r5 - 80094ae: 4630 mov r0, r6 - 80094b0: f001 f832 bl 800a518 - 80094b4: e7cc b.n 8009450 - 80094b6: d1cb bne.n 8009450 - 80094b8: 4e1f ldr r6, [pc, #124] @ (8009538 ) - 80094ba: f8df 8090 ldr.w r8, [pc, #144] @ 800954c - 80094be: f8df a080 ldr.w sl, [pc, #128] @ 8009540 - 80094c2: 462c mov r4, r5 - 80094c4: e010 b.n 80094e8 - 80094c6: 8962 ldrh r2, [r4, #10] - 80094c8: 8923 ldrh r3, [r4, #8] - 80094ca: 429a cmp r2, r3 - 80094cc: d108 bne.n 80094e0 - 80094ce: 6823 ldr r3, [r4, #0] - 80094d0: b133 cbz r3, 80094e0 - 80094d2: 4633 mov r3, r6 - 80094d4: f240 32f1 movw r2, #1009 @ 0x3f1 - 80094d8: 4641 mov r1, r8 - 80094da: 4650 mov r0, sl - 80094dc: f001 f954 bl 800a788 - 80094e0: 7b23 ldrb r3, [r4, #12] - 80094e2: 065b lsls r3, r3, #25 - 80094e4: d411 bmi.n 800950a - 80094e6: 6824 ldr r4, [r4, #0] - 80094e8: 2c00 cmp r4, #0 - 80094ea: d1ec bne.n 80094c6 - 80094ec: 4628 mov r0, r5 - 80094ee: f7fa ff2d bl 800434c - 80094f2: e011 b.n 8009518 - 80094f4: f06f 000f mvn.w r0, #15 - 80094f8: e7aa b.n 8009450 - 80094fa: f04f 30ff mov.w r0, #4294967295 - 80094fe: e7a7 b.n 8009450 - 8009500: 2d00 cmp r5, #0 - 8009502: d0bd beq.n 8009480 - 8009504: f04f 30ff mov.w r0, #4294967295 - 8009508: e7c0 b.n 800948c - 800950a: 462a mov r2, r5 - 800950c: f44f 7120 mov.w r1, #640 @ 0x280 - 8009510: 200e movs r0, #14 - 8009512: f7fb f837 bl 8004584 - 8009516: 4605 mov r5, r0 - 8009518: 2d00 cmp r5, #0 - 800951a: d0ee beq.n 80094fa - 800951c: 2418 movs r4, #24 - 800951e: fb04 f307 mul.w r3, r4, r7 - 8009522: f859 0003 ldr.w r0, [r9, r3] - 8009526: b108 cbz r0, 800952c - 8009528: f7fa fdd2 bl 80040d0 - 800952c: 437c muls r4, r7 - 800952e: 2000 movs r0, #0 - 8009530: f849 5004 str.w r5, [r9, r4] - 8009534: e78c b.n 8009450 - 8009536: bf00 nop - 8009538: 0800d20d .word 0x0800d20d - 800953c: 0800d369 .word 0x0800d369 - 8009540: 0800b767 .word 0x0800b767 - 8009544: 20018b20 .word 0x20018b20 - 8009548: 20018b24 .word 0x20018b24 - 800954c: 0800d377 .word 0x0800d377 - -08009550 : - 8009550: b5f0 push {r4, r5, r6, r7, lr} - 8009552: 460e mov r6, r1 - 8009554: b085 sub sp, #20 - 8009556: 4615 mov r5, r2 - 8009558: 4604 mov r4, r0 - 800955a: b930 cbnz r0, 800956a - 800955c: 4b42 ldr r3, [pc, #264] @ (8009668 ) - 800955e: 4943 ldr r1, [pc, #268] @ (800966c ) - 8009560: 4843 ldr r0, [pc, #268] @ (8009670 ) - 8009562: f240 321e movw r2, #798 @ 0x31e - 8009566: f001 f90f bl 800a788 - 800956a: b936 cbnz r6, 800957a - 800956c: 4b3e ldr r3, [pc, #248] @ (8009668 ) - 800956e: 4941 ldr r1, [pc, #260] @ (8009674 ) - 8009570: 483f ldr r0, [pc, #252] @ (8009670 ) - 8009572: f240 321f movw r2, #799 @ 0x31f - 8009576: f001 f907 bl 800a788 - 800957a: b935 cbnz r5, 800958a - 800957c: 4b3a ldr r3, [pc, #232] @ (8009668 ) - 800957e: 493e ldr r1, [pc, #248] @ (8009678 ) - 8009580: 483b ldr r0, [pc, #236] @ (8009670 ) - 8009582: f44f 7248 mov.w r2, #800 @ 0x320 - 8009586: f001 f8ff bl 800a788 - 800958a: 6828 ldr r0, [r5, #0] - 800958c: 4621 mov r1, r4 - 800958e: f000 fafc bl 8009b8a - 8009592: 2800 cmp r0, #0 - 8009594: d163 bne.n 800965e - 8009596: 682b ldr r3, [r5, #0] - 8009598: f003 02f0 and.w r2, r3, #240 @ 0xf0 - 800959c: 2ae0 cmp r2, #224 @ 0xe0 - 800959e: d11c bne.n 80095da - 80095a0: 2301 movs r3, #1 - 80095a2: f8ad 3008 strh.w r3, [sp, #8] - 80095a6: 235e movs r3, #94 @ 0x5e - 80095a8: f88d 300a strb.w r3, [sp, #10] - 80095ac: 786b ldrb r3, [r5, #1] - 80095ae: f003 037f and.w r3, r3, #127 @ 0x7f - 80095b2: f88d 300b strb.w r3, [sp, #11] - 80095b6: 78ab ldrb r3, [r5, #2] - 80095b8: f88d 300c strb.w r3, [sp, #12] - 80095bc: 78eb ldrb r3, [r5, #3] - 80095be: f88d 300d strb.w r3, [sp, #13] - 80095c2: ab02 add r3, sp, #8 - 80095c4: f44f 6200 mov.w r2, #2048 @ 0x800 - 80095c8: 9200 str r2, [sp, #0] - 80095ca: 4631 mov r1, r6 - 80095cc: f104 022a add.w r2, r4, #42 @ 0x2a - 80095d0: 4620 mov r0, r4 - 80095d2: f000 ffa1 bl 800a518 - 80095d6: b005 add sp, #20 - 80095d8: bdf0 pop {r4, r5, r6, r7, pc} - 80095da: 6862 ldr r2, [r4, #4] - 80095dc: 68a1 ldr r1, [r4, #8] - 80095de: 405a eors r2, r3 - 80095e0: 420a tst r2, r1 - 80095e2: d009 beq.n 80095f8 - 80095e4: b29b uxth r3, r3 - 80095e6: f64f 62a9 movw r2, #65193 @ 0xfea9 - 80095ea: 4293 cmp r3, r2 - 80095ec: d004 beq.n 80095f8 - 80095ee: 68e3 ldr r3, [r4, #12] - 80095f0: 2b00 cmp r3, #0 - 80095f2: d036 beq.n 8009662 - 80095f4: f104 050c add.w r5, r4, #12 - 80095f8: 4920 ldr r1, [pc, #128] @ (800967c ) - 80095fa: 4b21 ldr r3, [pc, #132] @ (8009680 ) - 80095fc: 780a ldrb r2, [r1, #0] - 80095fe: 2018 movs r0, #24 - 8009600: fb00 3302 mla r3, r0, r2, r3 - 8009604: 7d18 ldrb r0, [r3, #20] - 8009606: 2801 cmp r0, #1 - 8009608: d90d bls.n 8009626 - 800960a: 6898 ldr r0, [r3, #8] - 800960c: 42a0 cmp r0, r4 - 800960e: d10a bne.n 8009626 - 8009610: 6828 ldr r0, [r5, #0] - 8009612: 685b ldr r3, [r3, #4] - 8009614: 4298 cmp r0, r3 - 8009616: d106 bne.n 8009626 - 8009618: 4631 mov r1, r6 - 800961a: 4620 mov r0, r4 - 800961c: b005 add sp, #20 - 800961e: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} - 8009622: f7ff bea3 b.w 800936c - 8009626: 4b16 ldr r3, [pc, #88] @ (8009680 ) - 8009628: 2200 movs r2, #0 - 800962a: 7d18 ldrb r0, [r3, #20] - 800962c: 2801 cmp r0, #1 - 800962e: d909 bls.n 8009644 - 8009630: 6898 ldr r0, [r3, #8] - 8009632: 42a0 cmp r0, r4 - 8009634: d106 bne.n 8009644 - 8009636: 682f ldr r7, [r5, #0] - 8009638: 6858 ldr r0, [r3, #4] - 800963a: 4287 cmp r7, r0 - 800963c: d102 bne.n 8009644 - 800963e: b2d2 uxtb r2, r2 - 8009640: 700a strb r2, [r1, #0] - 8009642: e7e9 b.n 8009618 - 8009644: 3201 adds r2, #1 - 8009646: 2a0a cmp r2, #10 - 8009648: f103 0318 add.w r3, r3, #24 - 800964c: d1ed bne.n 800962a - 800964e: 4632 mov r2, r6 - 8009650: 4629 mov r1, r5 - 8009652: 4620 mov r0, r4 - 8009654: b005 add sp, #20 - 8009656: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} - 800965a: f7ff bedd b.w 8009418 - 800965e: 4b09 ldr r3, [pc, #36] @ (8009684 ) - 8009660: e7b0 b.n 80095c4 - 8009662: f06f 0003 mvn.w r0, #3 - 8009666: e7b6 b.n 80095d6 - 8009668: 0800d20d .word 0x0800d20d - 800966c: 0800d0ae .word 0x0800d0ae - 8009670: 0800b767 .word 0x0800b767 - 8009674: 0800bd35 .word 0x0800bd35 - 8009678: 0800d2f6 .word 0x0800d2f6 - 800967c: 20018b20 .word 0x20018b20 - 8009680: 20018b24 .word 0x20018b24 - 8009684: 0800d744 .word 0x0800d744 - -08009688 : - 8009688: b5f0 push {r4, r5, r6, r7, lr} - 800968a: 4604 mov r4, r0 - 800968c: b087 sub sp, #28 - 800968e: 460f mov r7, r1 - 8009690: 4616 mov r6, r2 - 8009692: 2124 movs r1, #36 @ 0x24 - 8009694: f44f 7220 mov.w r2, #640 @ 0x280 - 8009698: 2022 movs r0, #34 @ 0x22 - 800969a: f7fa fd7d bl 8004198 - 800969e: 4605 mov r5, r0 - 80096a0: b390 cbz r0, 8009708 - 80096a2: 8943 ldrh r3, [r0, #10] - 80096a4: 2b23 cmp r3, #35 @ 0x23 - 80096a6: d806 bhi.n 80096b6 - 80096a8: 4b18 ldr r3, [pc, #96] @ (800970c ) - 80096aa: 4919 ldr r1, [pc, #100] @ (8009710 ) - 80096ac: 4819 ldr r0, [pc, #100] @ (8009714 ) - 80096ae: f44f 72b4 mov.w r2, #360 @ 0x168 - 80096b2: f001 f869 bl 800a788 - 80096b6: 6860 ldr r0, [r4, #4] - 80096b8: 686c ldr r4, [r5, #4] - 80096ba: 2300 movs r3, #0 - 80096bc: 7123 strb r3, [r4, #4] - 80096be: 7163 strb r3, [r4, #5] - 80096c0: 71a3 strb r3, [r4, #6] - 80096c2: 71e3 strb r3, [r4, #7] - 80096c4: 7027 strb r7, [r4, #0] - 80096c6: 7066 strb r6, [r4, #1] - 80096c8: 4603 mov r3, r0 - 80096ca: f104 0208 add.w r2, r4, #8 - 80096ce: f100 011c add.w r1, r0, #28 - 80096d2: f853 6b04 ldr.w r6, [r3], #4 - 80096d6: f842 6b04 str.w r6, [r2], #4 - 80096da: 428b cmp r3, r1 - 80096dc: d1f9 bne.n 80096d2 - 80096de: 68c3 ldr r3, [r0, #12] - 80096e0: 9305 str r3, [sp, #20] - 80096e2: a805 add r0, sp, #20 - 80096e4: f000 f8d0 bl 8009888 - 80096e8: b158 cbz r0, 8009702 - 80096ea: 2100 movs r1, #0 - 80096ec: 2301 movs r3, #1 - 80096ee: 70a1 strb r1, [r4, #2] - 80096f0: 70e1 strb r1, [r4, #3] - 80096f2: aa05 add r2, sp, #20 - 80096f4: e9cd 1300 strd r1, r3, [sp] - 80096f8: 9002 str r0, [sp, #8] - 80096fa: 23ff movs r3, #255 @ 0xff - 80096fc: 4628 mov r0, r5 - 80096fe: f000 fa33 bl 8009b68 - 8009702: 4628 mov r0, r5 - 8009704: f7fa fce4 bl 80040d0 - 8009708: b007 add sp, #28 - 800970a: bdf0 pop {r4, r5, r6, r7, pc} - 800970c: 0800d391 .word 0x0800d391 - 8009710: 0800d3c6 .word 0x0800d3c6 - 8009714: 0800b767 .word 0x0800b767 - -08009718 : - 8009718: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} - 800971c: 4f43 ldr r7, [pc, #268] @ (800982c ) - 800971e: f8d7 9008 ldr.w r9, [r7, #8] - 8009722: f899 5000 ldrb.w r5, [r9] - 8009726: f005 050f and.w r5, r5, #15 - 800972a: 00ad lsls r5, r5, #2 - 800972c: 2d13 cmp r5, #19 - 800972e: b085 sub sp, #20 - 8009730: 4604 mov r4, r0 - 8009732: 4688 mov r8, r1 - 8009734: d92e bls.n 8009794 - 8009736: 8943 ldrh r3, [r0, #10] - 8009738: 2b03 cmp r3, #3 - 800973a: d92b bls.n 8009794 - 800973c: 6843 ldr r3, [r0, #4] - 800973e: 781b ldrb r3, [r3, #0] - 8009740: 2b08 cmp r3, #8 - 8009742: d127 bne.n 8009794 - 8009744: 6978 ldr r0, [r7, #20] - 8009746: f000 03f0 and.w r3, r0, #240 @ 0xf0 - 800974a: 2be0 cmp r3, #224 @ 0xe0 - 800974c: d022 beq.n 8009794 - 800974e: 6839 ldr r1, [r7, #0] - 8009750: f000 fa1b bl 8009b8a - 8009754: b9f0 cbnz r0, 8009794 - 8009756: 8923 ldrh r3, [r4, #8] - 8009758: 2b07 cmp r3, #7 - 800975a: d91b bls.n 8009794 - 800975c: f105 060e add.w r6, r5, #14 - 8009760: 4631 mov r1, r6 - 8009762: 4620 mov r0, r4 - 8009764: f7fa fc7c bl 8004060 - 8009768: 2800 cmp r0, #0 - 800976a: d052 beq.n 8009812 - 800976c: 8923 ldrh r3, [r4, #8] - 800976e: 18e9 adds r1, r5, r3 - 8009770: b289 uxth r1, r1 - 8009772: 428b cmp r3, r1 - 8009774: d80e bhi.n 8009794 - 8009776: f44f 7220 mov.w r2, #640 @ 0x280 - 800977a: 200e movs r0, #14 - 800977c: f7fa fd0c bl 8004198 - 8009780: 4606 mov r6, r0 - 8009782: b138 cbz r0, 8009794 - 8009784: 8942 ldrh r2, [r0, #10] - 8009786: f105 0308 add.w r3, r5, #8 - 800978a: 429a cmp r2, r3 - 800978c: d208 bcs.n 80097a0 - 800978e: 4630 mov r0, r6 - 8009790: f7fa fc9e bl 80040d0 - 8009794: 4620 mov r0, r4 - 8009796: b005 add sp, #20 - 8009798: e8bd 43f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, lr} - 800979c: f7fa bc98 b.w 80040d0 - 80097a0: 4649 mov r1, r9 - 80097a2: 6840 ldr r0, [r0, #4] - 80097a4: 462a mov r2, r5 - 80097a6: f001 f8ca bl 800a93e - 80097aa: 4629 mov r1, r5 - 80097ac: 4630 mov r0, r6 - 80097ae: f7fa fc5b bl 8004068 - 80097b2: b130 cbz r0, 80097c2 - 80097b4: 4b1e ldr r3, [pc, #120] @ (8009830 ) - 80097b6: 491f ldr r1, [pc, #124] @ (8009834 ) - 80097b8: 481f ldr r0, [pc, #124] @ (8009838 ) - 80097ba: 22b6 movs r2, #182 @ 0xb6 - 80097bc: f000 ffe4 bl 800a788 - 80097c0: e7e5 b.n 800978e - 80097c2: 4621 mov r1, r4 - 80097c4: 4630 mov r0, r6 - 80097c6: f7fa fe19 bl 80043fc - 80097ca: 2800 cmp r0, #0 - 80097cc: d1df bne.n 800978e - 80097ce: 4620 mov r0, r4 - 80097d0: f7fa fc7e bl 80040d0 - 80097d4: 4634 mov r4, r6 - 80097d6: 4629 mov r1, r5 - 80097d8: 4620 mov r0, r4 - 80097da: 6866 ldr r6, [r4, #4] - 80097dc: f7fa fc40 bl 8004060 - 80097e0: 4602 mov r2, r0 - 80097e2: 2800 cmp r0, #0 - 80097e4: d1d6 bne.n 8009794 - 80097e6: 6860 ldr r0, [r4, #4] - 80097e8: 697b ldr r3, [r7, #20] - 80097ea: 60c3 str r3, [r0, #12] - 80097ec: 693b ldr r3, [r7, #16] - 80097ee: 6103 str r3, [r0, #16] - 80097f0: 2101 movs r1, #1 - 80097f2: 23ff movs r3, #255 @ 0xff - 80097f4: 7032 strb r2, [r6, #0] - 80097f6: 70b2 strb r2, [r6, #2] - 80097f8: 70f2 strb r2, [r6, #3] - 80097fa: 7203 strb r3, [r0, #8] - 80097fc: 7282 strb r2, [r0, #10] - 80097fe: 72c2 strb r2, [r0, #11] - 8009800: e9cd 2100 strd r2, r1, [sp] - 8009804: f8cd 8008 str.w r8, [sp, #8] - 8009808: 490c ldr r1, [pc, #48] @ (800983c ) - 800980a: 4620 mov r0, r4 - 800980c: f000 f9ac bl 8009b68 - 8009810: e7c0 b.n 8009794 - 8009812: 4631 mov r1, r6 - 8009814: 4620 mov r0, r4 - 8009816: f7fa fc27 bl 8004068 - 800981a: 2800 cmp r0, #0 - 800981c: d0db beq.n 80097d6 - 800981e: 4b04 ldr r3, [pc, #16] @ (8009830 ) - 8009820: 4907 ldr r1, [pc, #28] @ (8009840 ) - 8009822: 4805 ldr r0, [pc, #20] @ (8009838 ) - 8009824: 22c7 movs r2, #199 @ 0xc7 - 8009826: f000 ffaf bl 800a788 - 800982a: e7b3 b.n 8009794 - 800982c: 20005b38 .word 0x20005b38 - 8009830: 0800d391 .word 0x0800d391 - 8009834: 0800d3f2 .word 0x0800d3f2 - 8009838: 0800b767 .word 0x0800b767 - 800983c: 20005b4c .word 0x20005b4c - 8009840: 0800d427 .word 0x0800d427 - -08009844 : - 8009844: 460a mov r2, r1 - 8009846: 2103 movs r1, #3 - 8009848: f7ff bf1e b.w 8009688 - -0800984c : - 800984c: 460a mov r2, r1 - 800984e: 210b movs r1, #11 - 8009850: f7ff bf1a b.w 8009688 - -08009854 : - 8009854: b508 push {r3, lr} - 8009856: f890 3031 ldrb.w r3, [r0, #49] @ 0x31 - 800985a: 4601 mov r1, r0 - 800985c: f013 0001 ands.w r0, r3, #1 - 8009860: d00a beq.n 8009878 - 8009862: 684b ldr r3, [r1, #4] - 8009864: b14b cbz r3, 800987a - 8009866: 4a07 ldr r2, [pc, #28] @ (8009884 ) - 8009868: 6950 ldr r0, [r2, #20] - 800986a: 4283 cmp r3, r0 - 800986c: d007 beq.n 800987e - 800986e: f000 f98c bl 8009b8a - 8009872: 3800 subs r0, #0 - 8009874: bf18 it ne - 8009876: 2001 movne r0, #1 - 8009878: bd08 pop {r3, pc} - 800987a: 4618 mov r0, r3 - 800987c: e7fc b.n 8009878 - 800987e: 2001 movs r0, #1 - 8009880: e7fa b.n 8009878 - 8009882: bf00 nop - 8009884: 20005b38 .word 0x20005b38 - -08009888 : - 8009888: b530 push {r4, r5, lr} - 800988a: 4b14 ldr r3, [pc, #80] @ (80098dc ) - 800988c: 4602 mov r2, r0 - 800988e: 6818 ldr r0, [r3, #0] - 8009890: b978 cbnz r0, 80098b2 - 8009892: 4b13 ldr r3, [pc, #76] @ (80098e0 ) - 8009894: 681b ldr r3, [r3, #0] - 8009896: b15b cbz r3, 80098b0 - 8009898: f893 1031 ldrb.w r1, [r3, #49] @ 0x31 - 800989c: f001 0105 and.w r1, r1, #5 - 80098a0: 2905 cmp r1, #5 - 80098a2: d105 bne.n 80098b0 - 80098a4: 6859 ldr r1, [r3, #4] - 80098a6: b119 cbz r1, 80098b0 - 80098a8: 7812 ldrb r2, [r2, #0] - 80098aa: 2a7f cmp r2, #127 @ 0x7f - 80098ac: bf18 it ne - 80098ae: 4618 movne r0, r3 - 80098b0: bd30 pop {r4, r5, pc} - 80098b2: f890 1031 ldrb.w r1, [r0, #49] @ 0x31 - 80098b6: 07cd lsls r5, r1, #31 - 80098b8: d50d bpl.n 80098d6 - 80098ba: 074c lsls r4, r1, #29 - 80098bc: d50b bpl.n 80098d6 - 80098be: 6843 ldr r3, [r0, #4] - 80098c0: b14b cbz r3, 80098d6 - 80098c2: 6814 ldr r4, [r2, #0] - 80098c4: 6885 ldr r5, [r0, #8] - 80098c6: 4063 eors r3, r4 - 80098c8: 422b tst r3, r5 - 80098ca: d0f1 beq.n 80098b0 - 80098cc: 078b lsls r3, r1, #30 - 80098ce: d402 bmi.n 80098d6 - 80098d0: 68c3 ldr r3, [r0, #12] - 80098d2: 429c cmp r4, r3 - 80098d4: d0ec beq.n 80098b0 - 80098d6: 6800 ldr r0, [r0, #0] - 80098d8: e7da b.n 8009890 - 80098da: bf00 nop - 80098dc: 20018a88 .word 0x20018a88 - 80098e0: 20018a84 .word 0x20018a84 - -080098e4 : - 80098e4: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - 80098e8: f8d0 8004 ldr.w r8, [r0, #4] - 80098ec: f898 9000 ldrb.w r9, [r8] - 80098f0: ea4f 1319 mov.w r3, r9, lsr #4 - 80098f4: 2b04 cmp r3, #4 - 80098f6: 4604 mov r4, r0 - 80098f8: 460e mov r6, r1 - 80098fa: d005 beq.n 8009908 - 80098fc: 4620 mov r0, r4 - 80098fe: f7fa fbe7 bl 80040d0 - 8009902: 2000 movs r0, #0 - 8009904: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} - 8009908: f8b8 0002 ldrh.w r0, [r8, #2] - 800990c: f7f9 fec3 bl 8003696 - 8009910: 8923 ldrh r3, [r4, #8] - 8009912: f009 090f and.w r9, r9, #15 - 8009916: 4283 cmp r3, r0 - 8009918: ea4f 0989 mov.w r9, r9, lsl #2 - 800991c: 4605 mov r5, r0 - 800991e: d903 bls.n 8009928 - 8009920: 4601 mov r1, r0 - 8009922: 4620 mov r0, r4 - 8009924: f7fa fcb2 bl 800428c - 8009928: 8963 ldrh r3, [r4, #10] - 800992a: 454b cmp r3, r9 - 800992c: d3e6 bcc.n 80098fc - 800992e: 8923 ldrh r3, [r4, #8] - 8009930: 42ab cmp r3, r5 - 8009932: d3e3 bcc.n 80098fc - 8009934: f1b9 0f13 cmp.w r9, #19 - 8009938: d9e0 bls.n 80098fc - 800993a: f8d8 3010 ldr.w r3, [r8, #16] - 800993e: 4d4a ldr r5, [pc, #296] @ (8009a68 ) - 8009940: 616b str r3, [r5, #20] - 8009942: f003 03f0 and.w r3, r3, #240 @ 0xf0 - 8009946: f8d8 200c ldr.w r2, [r8, #12] - 800994a: 612a str r2, [r5, #16] - 800994c: 2be0 cmp r3, #224 @ 0xe0 - 800994e: d10e bne.n 800996e - 8009950: f896 3031 ldrb.w r3, [r6, #49] @ 0x31 - 8009954: 07db lsls r3, r3, #31 - 8009956: d405 bmi.n 8009964 - 8009958: f898 3009 ldrb.w r3, [r8, #9] - 800995c: 2b11 cmp r3, #17 - 800995e: d054 beq.n 8009a0a - 8009960: 2700 movs r7, #0 - 8009962: e019 b.n 8009998 - 8009964: 6873 ldr r3, [r6, #4] - 8009966: 2b00 cmp r3, #0 - 8009968: d0f6 beq.n 8009958 - 800996a: 4637 mov r7, r6 - 800996c: e014 b.n 8009998 - 800996e: 4630 mov r0, r6 - 8009970: f7ff ff70 bl 8009854 - 8009974: 2800 cmp r0, #0 - 8009976: d145 bne.n 8009a04 - 8009978: 7d2b ldrb r3, [r5, #20] - 800997a: 2b7f cmp r3, #127 @ 0x7f - 800997c: d0ec beq.n 8009958 - 800997e: 4b3b ldr r3, [pc, #236] @ (8009a6c ) - 8009980: 681f ldr r7, [r3, #0] - 8009982: 2f00 cmp r7, #0 - 8009984: d0e8 beq.n 8009958 - 8009986: 42b7 cmp r7, r6 - 8009988: d101 bne.n 800998e - 800998a: 683f ldr r7, [r7, #0] - 800998c: e7f9 b.n 8009982 - 800998e: 4638 mov r0, r7 - 8009990: f7ff ff60 bl 8009854 - 8009994: 2800 cmp r0, #0 - 8009996: d0f8 beq.n 800998a - 8009998: 6928 ldr r0, [r5, #16] - 800999a: b148 cbz r0, 80099b0 - 800999c: 4631 mov r1, r6 - 800999e: f000 f8f4 bl 8009b8a - 80099a2: 2800 cmp r0, #0 - 80099a4: d1aa bne.n 80098fc - 80099a6: 692b ldr r3, [r5, #16] - 80099a8: f003 03f0 and.w r3, r3, #240 @ 0xf0 - 80099ac: 2be0 cmp r3, #224 @ 0xe0 - 80099ae: d0a5 beq.n 80098fc - 80099b0: 2f00 cmp r7, #0 - 80099b2: d0a3 beq.n 80098fc - 80099b4: f8b8 3006 ldrh.w r3, [r8, #6] - 80099b8: f023 03c0 bic.w r3, r3, #192 @ 0xc0 - 80099bc: b13b cbz r3, 80099ce - 80099be: 4620 mov r0, r4 - 80099c0: f000 faa0 bl 8009f04 - 80099c4: 4604 mov r4, r0 - 80099c6: 2800 cmp r0, #0 - 80099c8: d09b beq.n 8009902 - 80099ca: f8d0 8004 ldr.w r8, [r0, #4] - 80099ce: f8c5 8008 str.w r8, [r5, #8] - 80099d2: e9c5 7600 strd r7, r6, [r5] - 80099d6: f898 3000 ldrb.w r3, [r8] - 80099da: f003 030f and.w r3, r3, #15 - 80099de: 009b lsls r3, r3, #2 - 80099e0: 4649 mov r1, r9 - 80099e2: 4620 mov r0, r4 - 80099e4: 81ab strh r3, [r5, #12] - 80099e6: f7fa fb3f bl 8004068 - 80099ea: f898 3009 ldrb.w r3, [r8, #9] - 80099ee: 2b06 cmp r3, #6 - 80099f0: d01f beq.n 8009a32 - 80099f2: 2b11 cmp r3, #17 - 80099f4: d011 beq.n 8009a1a - 80099f6: 2b01 cmp r3, #1 - 80099f8: d120 bne.n 8009a3c - 80099fa: 4631 mov r1, r6 - 80099fc: 4620 mov r0, r4 - 80099fe: f7ff fe8b bl 8009718 - 8009a02: e00e b.n 8009a22 - 8009a04: 2e00 cmp r6, #0 - 8009a06: d1b0 bne.n 800996a - 8009a08: e7a6 b.n 8009958 - 8009a0a: eb08 0309 add.w r3, r8, r9 - 8009a0e: 885b ldrh r3, [r3, #2] - 8009a10: f5b3 4f88 cmp.w r3, #17408 @ 0x4400 - 8009a14: d1a4 bne.n 8009960 - 8009a16: 4637 mov r7, r6 - 8009a18: e7ca b.n 80099b0 - 8009a1a: 4631 mov r1, r6 - 8009a1c: 4620 mov r0, r4 - 8009a1e: f7fd fef5 bl 800780c - 8009a22: 2300 movs r3, #0 - 8009a24: e9c5 3300 strd r3, r3, [r5] - 8009a28: e9c5 3304 strd r3, r3, [r5, #16] - 8009a2c: 60ab str r3, [r5, #8] - 8009a2e: 81ab strh r3, [r5, #12] - 8009a30: e767 b.n 8009902 - 8009a32: 4631 mov r1, r6 - 8009a34: 4620 mov r0, r4 - 8009a36: f7fc fa19 bl 8005e6c - 8009a3a: e7f2 b.n 8009a22 - 8009a3c: 6968 ldr r0, [r5, #20] - 8009a3e: 4639 mov r1, r7 - 8009a40: f000 f8a3 bl 8009b8a - 8009a44: b960 cbnz r0, 8009a60 - 8009a46: 696b ldr r3, [r5, #20] - 8009a48: f003 03f0 and.w r3, r3, #240 @ 0xf0 - 8009a4c: 2be0 cmp r3, #224 @ 0xe0 - 8009a4e: d007 beq.n 8009a60 - 8009a50: 4649 mov r1, r9 - 8009a52: 4620 mov r0, r4 - 8009a54: f7fa fb34 bl 80040c0 - 8009a58: 2102 movs r1, #2 - 8009a5a: 4620 mov r0, r4 - 8009a5c: f7ff fef2 bl 8009844 - 8009a60: 4620 mov r0, r4 - 8009a62: f7fa fb35 bl 80040d0 - 8009a66: e7dc b.n 8009a22 - 8009a68: 20005b38 .word 0x20005b38 - 8009a6c: 20018a88 .word 0x20018a88 - -08009a70 : - 8009a70: e92d 47f3 stmdb sp!, {r0, r1, r4, r5, r6, r7, r8, r9, sl, lr} - 8009a74: 4698 mov r8, r3 - 8009a76: 7b83 ldrb r3, [r0, #14] - 8009a78: 9f0c ldr r7, [sp, #48] @ 0x30 - 8009a7a: 2b01 cmp r3, #1 - 8009a7c: 4604 mov r4, r0 - 8009a7e: 4689 mov r9, r1 - 8009a80: 4616 mov r6, r2 - 8009a82: d006 beq.n 8009a92 - 8009a84: 4b32 ldr r3, [pc, #200] @ (8009b50 ) - 8009a86: 4933 ldr r1, [pc, #204] @ (8009b54 ) - 8009a88: 4833 ldr r0, [pc, #204] @ (8009b58 ) - 8009a8a: f44f 7255 mov.w r2, #852 @ 0x354 - 8009a8e: f000 fe7b bl 800a788 - 8009a92: 2e00 cmp r6, #0 - 8009a94: d04e beq.n 8009b34 - 8009a96: 2114 movs r1, #20 - 8009a98: 4620 mov r0, r4 - 8009a9a: f7fa fae1 bl 8004060 - 8009a9e: b120 cbz r0, 8009aaa - 8009aa0: f06f 0001 mvn.w r0, #1 - 8009aa4: b002 add sp, #8 - 8009aa6: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 8009aaa: 8963 ldrh r3, [r4, #10] - 8009aac: 6865 ldr r5, [r4, #4] - 8009aae: 2b13 cmp r3, #19 - 8009ab0: d806 bhi.n 8009ac0 - 8009ab2: 4b27 ldr r3, [pc, #156] @ (8009b50 ) - 8009ab4: 4929 ldr r1, [pc, #164] @ (8009b5c ) - 8009ab6: 4828 ldr r0, [pc, #160] @ (8009b58 ) - 8009ab8: f44f 7262 mov.w r2, #904 @ 0x388 - 8009abc: f000 fe64 bl 800a788 - 8009ac0: f89d 302c ldrb.w r3, [sp, #44] @ 0x2c - 8009ac4: f885 8008 strb.w r8, [r5, #8] - 8009ac8: 726b strb r3, [r5, #9] - 8009aca: 6833 ldr r3, [r6, #0] - 8009acc: 612b str r3, [r5, #16] - 8009ace: 2345 movs r3, #69 @ 0x45 - 8009ad0: 702b strb r3, [r5, #0] - 8009ad2: f89d 3028 ldrb.w r3, [sp, #40] @ 0x28 - 8009ad6: 706b strb r3, [r5, #1] - 8009ad8: 8920 ldrh r0, [r4, #8] - 8009ada: f8df a088 ldr.w sl, [pc, #136] @ 8009b64 - 8009ade: f7f9 fdda bl 8003696 - 8009ae2: f04f 0800 mov.w r8, #0 - 8009ae6: 8068 strh r0, [r5, #2] - 8009ae8: f885 8006 strb.w r8, [r5, #6] - 8009aec: f8ba 0000 ldrh.w r0, [sl] - 8009af0: f885 8007 strb.w r8, [r5, #7] - 8009af4: f7f9 fdcf bl 8003696 - 8009af8: f8ba 3000 ldrh.w r3, [sl] - 8009afc: 80a8 strh r0, [r5, #4] - 8009afe: 3301 adds r3, #1 - 8009b00: f8aa 3000 strh.w r3, [sl] - 8009b04: f1b9 0f00 cmp.w r9, #0 - 8009b08: d111 bne.n 8009b2e - 8009b0a: 4b15 ldr r3, [pc, #84] @ (8009b60 ) - 8009b0c: 681b ldr r3, [r3, #0] - 8009b0e: 60eb str r3, [r5, #12] - 8009b10: f885 800a strb.w r8, [r5, #10] - 8009b14: f885 800b strb.w r8, [r5, #11] - 8009b18: 8d3b ldrh r3, [r7, #40] @ 0x28 - 8009b1a: b19b cbz r3, 8009b44 - 8009b1c: 8922 ldrh r2, [r4, #8] - 8009b1e: 429a cmp r2, r3 - 8009b20: d910 bls.n 8009b44 - 8009b22: 4632 mov r2, r6 - 8009b24: 4639 mov r1, r7 - 8009b26: 4620 mov r0, r4 - 8009b28: f000 fbc0 bl 800a2ac - 8009b2c: e7ba b.n 8009aa4 - 8009b2e: f8d9 3000 ldr.w r3, [r9] - 8009b32: e7ec b.n 8009b0e - 8009b34: 8963 ldrh r3, [r4, #10] - 8009b36: 2b13 cmp r3, #19 - 8009b38: d9b2 bls.n 8009aa0 - 8009b3a: 6863 ldr r3, [r4, #4] - 8009b3c: 691b ldr r3, [r3, #16] - 8009b3e: 9301 str r3, [sp, #4] - 8009b40: ae01 add r6, sp, #4 - 8009b42: e7e9 b.n 8009b18 - 8009b44: 697b ldr r3, [r7, #20] - 8009b46: 4632 mov r2, r6 - 8009b48: 4621 mov r1, r4 - 8009b4a: 4638 mov r0, r7 - 8009b4c: 4798 blx r3 - 8009b4e: e7a9 b.n 8009aa4 - 8009b50: 0800d459 .word 0x0800d459 - 8009b54: 0800d48d .word 0x0800d48d - 8009b58: 0800b767 .word 0x0800b767 - 8009b5c: 0800d499 .word 0x0800d499 - 8009b60: 0800d510 .word 0x0800d510 - 8009b64: 20018c14 .word 0x20018c14 - -08009b68 : - 8009b68: b4f0 push {r4, r5, r6, r7} - 8009b6a: 9c06 ldr r4, [sp, #24] - 8009b6c: f89d 5010 ldrb.w r5, [sp, #16] - 8009b70: f89d 6014 ldrb.w r6, [sp, #20] - 8009b74: b11a cbz r2, 8009b7e - 8009b76: b109 cbz r1, 8009b7c - 8009b78: 680f ldr r7, [r1, #0] - 8009b7a: b907 cbnz r7, 8009b7e - 8009b7c: 1d21 adds r1, r4, #4 - 8009b7e: e9cd 6405 strd r6, r4, [sp, #20] - 8009b82: 9504 str r5, [sp, #16] - 8009b84: bcf0 pop {r4, r5, r6, r7} - 8009b86: f7ff bf73 b.w 8009a70 - -08009b8a : - 8009b8a: 1e43 subs r3, r0, #1 - 8009b8c: 3303 adds r3, #3 - 8009b8e: 4602 mov r2, r0 - 8009b90: d812 bhi.n 8009bb8 - 8009b92: f891 3031 ldrb.w r3, [r1, #49] @ 0x31 - 8009b96: f013 0002 ands.w r0, r3, #2 - 8009b9a: d010 beq.n 8009bbe - 8009b9c: 684b ldr r3, [r1, #4] - 8009b9e: 4293 cmp r3, r2 - 8009ba0: d00c beq.n 8009bbc - 8009ba2: 6889 ldr r1, [r1, #8] - 8009ba4: 4053 eors r3, r2 - 8009ba6: 420b tst r3, r1 - 8009ba8: d108 bne.n 8009bbc - 8009baa: 43cb mvns r3, r1 - 8009bac: ea22 0201 bic.w r2, r2, r1 - 8009bb0: 1ad3 subs r3, r2, r3 - 8009bb2: 4258 negs r0, r3 - 8009bb4: 4158 adcs r0, r3 - 8009bb6: 4770 bx lr - 8009bb8: 2001 movs r0, #1 - 8009bba: 4770 bx lr - 8009bbc: 2000 movs r0, #0 - 8009bbe: 4770 bx lr - -08009bc0 : - 8009bc0: b5f0 push {r4, r5, r6, r7, lr} - 8009bc2: b085 sub sp, #20 - 8009bc4: 460c mov r4, r1 - 8009bc6: f8df e11c ldr.w lr, [pc, #284] @ 8009ce4 - 8009bca: 7803 ldrb r3, [r0, #0] - 8009bcc: 4669 mov r1, sp - 8009bce: 4602 mov r2, r0 - 8009bd0: 468c mov ip, r1 - 8009bd2: 2004 movs r0, #4 - 8009bd4: f81e 5003 ldrb.w r5, [lr, r3] - 8009bd8: f015 0504 ands.w r5, r5, #4 - 8009bdc: d07a beq.n 8009cd4 - 8009bde: 2b30 cmp r3, #48 @ 0x30 - 8009be0: d118 bne.n 8009c14 - 8009be2: 7853 ldrb r3, [r2, #1] - 8009be4: f003 05df and.w r5, r3, #223 @ 0xdf - 8009be8: 2d58 cmp r5, #88 @ 0x58 - 8009bea: bf0d iteet eq - 8009bec: 7893 ldrbeq r3, [r2, #2] - 8009bee: 3201 addne r2, #1 - 8009bf0: 2708 movne r7, #8 - 8009bf2: 3202 addeq r2, #2 - 8009bf4: bf08 it eq - 8009bf6: 2710 moveq r7, #16 - 8009bf8: 3201 adds r2, #1 - 8009bfa: 2500 movs r5, #0 - 8009bfc: f81e 6003 ldrb.w r6, [lr, r3] - 8009c00: f016 0f04 tst.w r6, #4 - 8009c04: d008 beq.n 8009c18 - 8009c06: fb05 3307 mla r3, r5, r7, r3 - 8009c0a: f1a3 0530 sub.w r5, r3, #48 @ 0x30 - 8009c0e: 7813 ldrb r3, [r2, #0] - 8009c10: 3201 adds r2, #1 - 8009c12: e7f3 b.n 8009bfc - 8009c14: 270a movs r7, #10 - 8009c16: e7ef b.n 8009bf8 - 8009c18: 2f10 cmp r7, #16 - 8009c1a: d10e bne.n 8009c3a - 8009c1c: f016 0f44 tst.w r6, #68 @ 0x44 - 8009c20: d00b beq.n 8009c3a - 8009c22: f006 0603 and.w r6, r6, #3 - 8009c26: 2e02 cmp r6, #2 - 8009c28: f103 030a add.w r3, r3, #10 - 8009c2c: bf14 ite ne - 8009c2e: 2641 movne r6, #65 @ 0x41 - 8009c30: 2661 moveq r6, #97 @ 0x61 - 8009c32: 1b9b subs r3, r3, r6 - 8009c34: ea43 1505 orr.w r5, r3, r5, lsl #4 - 8009c38: e7e9 b.n 8009c0e - 8009c3a: 2b2e cmp r3, #46 @ 0x2e - 8009c3c: d105 bne.n 8009c4a - 8009c3e: 3801 subs r0, #1 - 8009c40: d020 beq.n 8009c84 - 8009c42: f841 5b04 str.w r5, [r1], #4 - 8009c46: 7813 ldrb r3, [r2, #0] - 8009c48: e7c4 b.n 8009bd4 - 8009c4a: b113 cbz r3, 8009c52 - 8009c4c: f016 0008 ands.w r0, r6, #8 - 8009c50: d018 beq.n 8009c84 - 8009c52: eba1 010c sub.w r1, r1, ip - 8009c56: 1089 asrs r1, r1, #2 - 8009c58: 1c48 adds r0, r1, #1 - 8009c5a: 2804 cmp r0, #4 - 8009c5c: d833 bhi.n 8009cc6 - 8009c5e: e8df f000 tbb [pc, r0] - 8009c62: 0b11 .short 0x0b11 - 8009c64: 1303 .short 0x1303 - 8009c66: 21 .byte 0x21 - 8009c67: 00 .byte 0x00 - 8009c68: f1b5 7f80 cmp.w r5, #16777216 @ 0x1000000 - 8009c6c: d232 bcs.n 8009cd4 - 8009c6e: 9b00 ldr r3, [sp, #0] - 8009c70: 2bff cmp r3, #255 @ 0xff - 8009c72: d82f bhi.n 8009cd4 - 8009c74: ea45 6503 orr.w r5, r5, r3, lsl #24 - 8009c78: b11c cbz r4, 8009c82 - 8009c7a: 4628 mov r0, r5 - 8009c7c: f7f9 fd0e bl 800369c - 8009c80: 6020 str r0, [r4, #0] - 8009c82: 2001 movs r0, #1 - 8009c84: b005 add sp, #20 - 8009c86: bdf0 pop {r4, r5, r6, r7, pc} - 8009c88: f5b5 3f80 cmp.w r5, #65536 @ 0x10000 - 8009c8c: d222 bcs.n 8009cd4 - 8009c8e: 9a00 ldr r2, [sp, #0] - 8009c90: 2aff cmp r2, #255 @ 0xff - 8009c92: d81f bhi.n 8009cd4 - 8009c94: 9b01 ldr r3, [sp, #4] - 8009c96: 2bff cmp r3, #255 @ 0xff - 8009c98: d81c bhi.n 8009cd4 - 8009c9a: 041b lsls r3, r3, #16 - 8009c9c: ea43 6302 orr.w r3, r3, r2, lsl #24 - 8009ca0: 431d orrs r5, r3 - 8009ca2: e7e9 b.n 8009c78 - 8009ca4: 2dff cmp r5, #255 @ 0xff - 8009ca6: d815 bhi.n 8009cd4 - 8009ca8: 9900 ldr r1, [sp, #0] - 8009caa: 29ff cmp r1, #255 @ 0xff - 8009cac: d812 bhi.n 8009cd4 - 8009cae: 9b01 ldr r3, [sp, #4] - 8009cb0: 2bff cmp r3, #255 @ 0xff - 8009cb2: d80f bhi.n 8009cd4 - 8009cb4: 9a02 ldr r2, [sp, #8] - 8009cb6: 2aff cmp r2, #255 @ 0xff - 8009cb8: d80c bhi.n 8009cd4 - 8009cba: 041b lsls r3, r3, #16 - 8009cbc: ea43 6301 orr.w r3, r3, r1, lsl #24 - 8009cc0: ea43 2302 orr.w r3, r3, r2, lsl #8 - 8009cc4: e7ec b.n 8009ca0 - 8009cc6: 4b04 ldr r3, [pc, #16] @ (8009cd8 ) - 8009cc8: 4904 ldr r1, [pc, #16] @ (8009cdc ) - 8009cca: 4805 ldr r0, [pc, #20] @ (8009ce0 ) - 8009ccc: 22f9 movs r2, #249 @ 0xf9 - 8009cce: f000 fd5b bl 800a788 - 8009cd2: e7d1 b.n 8009c78 - 8009cd4: 2000 movs r0, #0 - 8009cd6: e7d5 b.n 8009c84 - 8009cd8: 0800d4c6 .word 0x0800d4c6 - 8009cdc: 0800d4ff .word 0x0800d4ff - 8009ce0: 0800b767 .word 0x0800b767 - 8009ce4: 0800d7ba .word 0x0800d7ba - -08009ce8 : - 8009ce8: b507 push {r0, r1, r2, lr} - 8009cea: a901 add r1, sp, #4 - 8009cec: f7ff ff68 bl 8009bc0 - 8009cf0: b118 cbz r0, 8009cfa - 8009cf2: 9801 ldr r0, [sp, #4] - 8009cf4: b003 add sp, #12 - 8009cf6: f85d fb04 ldr.w pc, [sp], #4 - 8009cfa: f04f 30ff mov.w r0, #4294967295 - 8009cfe: e7f9 b.n 8009cf4 - -08009d00 : - 8009d00: b538 push {r3, r4, r5, lr} - 8009d02: 4b0c ldr r3, [pc, #48] @ (8009d34 ) - 8009d04: 681a ldr r2, [r3, #0] - 8009d06: 4282 cmp r2, r0 - 8009d08: 4604 mov r4, r0 - 8009d0a: 460d mov r5, r1 - 8009d0c: d107 bne.n 8009d1e - 8009d0e: 6802 ldr r2, [r0, #0] - 8009d10: 601a str r2, [r3, #0] - 8009d12: 4621 mov r1, r4 - 8009d14: 2004 movs r0, #4 - 8009d16: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} - 8009d1a: f7f9 bf75 b.w 8003c08 - 8009d1e: b931 cbnz r1, 8009d2e - 8009d20: 4b05 ldr r3, [pc, #20] @ (8009d38 ) - 8009d22: 4906 ldr r1, [pc, #24] @ (8009d3c ) - 8009d24: 4806 ldr r0, [pc, #24] @ (8009d40 ) - 8009d26: f240 1245 movw r2, #325 @ 0x145 - 8009d2a: f000 fd2d bl 800a788 - 8009d2e: 6823 ldr r3, [r4, #0] - 8009d30: 602b str r3, [r5, #0] - 8009d32: e7ee b.n 8009d12 - 8009d34: 20018c18 .word 0x20018c18 - 8009d38: 0800d514 .word 0x0800d514 - 8009d3c: 0800d54d .word 0x0800d54d - 8009d40: 0800b767 .word 0x0800b767 - -08009d44 : - 8009d44: 4281 cmp r1, r0 - 8009d46: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8009d4a: 4604 mov r4, r0 - 8009d4c: 460e mov r6, r1 - 8009d4e: d105 bne.n 8009d5c - 8009d50: 4b2f ldr r3, [pc, #188] @ (8009e10 ) - 8009d52: 4930 ldr r1, [pc, #192] @ (8009e14 ) - 8009d54: 4830 ldr r0, [pc, #192] @ (8009e18 ) - 8009d56: 22ab movs r2, #171 @ 0xab - 8009d58: f000 fd16 bl 800a788 - 8009d5c: b146 cbz r6, 8009d70 - 8009d5e: 6833 ldr r3, [r6, #0] - 8009d60: 42a3 cmp r3, r4 - 8009d62: d005 beq.n 8009d70 - 8009d64: 4b2a ldr r3, [pc, #168] @ (8009e10 ) - 8009d66: 492d ldr r1, [pc, #180] @ (8009e1c ) - 8009d68: 482b ldr r0, [pc, #172] @ (8009e18 ) - 8009d6a: 22ad movs r2, #173 @ 0xad - 8009d6c: f000 fd0c bl 800a788 - 8009d70: 6867 ldr r7, [r4, #4] - 8009d72: 687b ldr r3, [r7, #4] - 8009d74: 889a ldrh r2, [r3, #4] - 8009d76: bb92 cbnz r2, 8009dde - 8009d78: 681a ldr r2, [r3, #0] - 8009d7a: 6062 str r2, [r4, #4] - 8009d7c: f104 011c add.w r1, r4, #28 - 8009d80: f104 0208 add.w r2, r4, #8 - 8009d84: f852 0b04 ldr.w r0, [r2], #4 - 8009d88: f843 0b04 str.w r0, [r3], #4 - 8009d8c: 428a cmp r2, r1 - 8009d8e: d1f9 bne.n 8009d84 - 8009d90: 2101 movs r1, #1 - 8009d92: 4638 mov r0, r7 - 8009d94: f7ff fd5a bl 800984c - 8009d98: 4638 mov r0, r7 - 8009d9a: f7fa facf bl 800433c - 8009d9e: 4605 mov r5, r0 - 8009da0: 4638 mov r0, r7 - 8009da2: f7fa f995 bl 80040d0 - 8009da6: 6867 ldr r7, [r4, #4] - 8009da8: f8df 8064 ldr.w r8, [pc, #100] @ 8009e10 - 8009dac: f8df 9078 ldr.w r9, [pc, #120] @ 8009e28 - 8009db0: f8df a064 ldr.w sl, [pc, #100] @ 8009e18 - 8009db4: b9af cbnz r7, 8009de2 - 8009db6: 4620 mov r0, r4 - 8009db8: 4c19 ldr r4, [pc, #100] @ (8009e20 ) - 8009dba: 4631 mov r1, r6 - 8009dbc: f7ff ffa0 bl 8009d00 - 8009dc0: 8823 ldrh r3, [r4, #0] - 8009dc2: 42ab cmp r3, r5 - 8009dc4: d205 bcs.n 8009dd2 - 8009dc6: 4b12 ldr r3, [pc, #72] @ (8009e10 ) - 8009dc8: 4916 ldr r1, [pc, #88] @ (8009e24 ) - 8009dca: 4813 ldr r0, [pc, #76] @ (8009e18 ) - 8009dcc: 22d2 movs r2, #210 @ 0xd2 - 8009dce: f000 fcdb bl 800a788 - 8009dd2: 8823 ldrh r3, [r4, #0] - 8009dd4: 1b5b subs r3, r3, r5 - 8009dd6: 8023 strh r3, [r4, #0] - 8009dd8: 4628 mov r0, r5 - 8009dda: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} - 8009dde: 2500 movs r5, #0 - 8009de0: e7e1 b.n 8009da6 - 8009de2: 687b ldr r3, [r7, #4] - 8009de4: 4638 mov r0, r7 - 8009de6: f8d3 b000 ldr.w fp, [r3] - 8009dea: f7fa faa7 bl 800433c - 8009dee: 4405 add r5, r0 - 8009df0: f5b5 3f80 cmp.w r5, #65536 @ 0x10000 - 8009df4: db05 blt.n 8009e02 - 8009df6: 4643 mov r3, r8 - 8009df8: 22cc movs r2, #204 @ 0xcc - 8009dfa: 4649 mov r1, r9 - 8009dfc: 4650 mov r0, sl - 8009dfe: f000 fcc3 bl 800a788 - 8009e02: 4638 mov r0, r7 - 8009e04: f7fa f964 bl 80040d0 - 8009e08: b2ad uxth r5, r5 - 8009e0a: 465f mov r7, fp - 8009e0c: e7d2 b.n 8009db4 - 8009e0e: bf00 nop - 8009e10: 0800d514 .word 0x0800d514 - 8009e14: 0800d566 .word 0x0800d566 - 8009e18: 0800b767 .word 0x0800b767 - 8009e1c: 0800d572 .word 0x0800d572 - 8009e20: 20018c16 .word 0x20018c16 - 8009e24: 0800d5a1 .word 0x0800d5a1 - 8009e28: 0800d584 .word 0x0800d584 - -08009e2c : - 8009e2c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 8009e30: f8df 806c ldr.w r8, [pc, #108] @ 8009ea0 - 8009e34: 4605 mov r5, r0 - 8009e36: 460f mov r7, r1 - 8009e38: 2600 movs r6, #0 - 8009e3a: 2400 movs r4, #0 - 8009e3c: f8d8 3000 ldr.w r3, [r8] - 8009e40: 4621 mov r1, r4 - 8009e42: 46a4 mov ip, r4 - 8009e44: 4620 mov r0, r4 - 8009e46: b953 cbnz r3, 8009e5e - 8009e48: b110 cbz r0, 8009e50 - 8009e4a: f7ff ff7b bl 8009d44 - 8009e4e: 4406 add r6, r0 - 8009e50: 42be cmp r6, r7 - 8009e52: da01 bge.n 8009e58 - 8009e54: 2c01 cmp r4, #1 - 8009e56: dcf0 bgt.n 8009e3a - 8009e58: 4630 mov r0, r6 - 8009e5a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 8009e5e: f8d5 e00c ldr.w lr, [r5, #12] - 8009e62: 695a ldr r2, [r3, #20] - 8009e64: 4572 cmp r2, lr - 8009e66: d109 bne.n 8009e7c - 8009e68: f8d5 e010 ldr.w lr, [r5, #16] - 8009e6c: 699a ldr r2, [r3, #24] - 8009e6e: 4572 cmp r2, lr - 8009e70: d104 bne.n 8009e7c - 8009e72: f8b3 e00c ldrh.w lr, [r3, #12] - 8009e76: 88aa ldrh r2, [r5, #4] - 8009e78: 4596 cmp lr, r2 - 8009e7a: d008 beq.n 8009e8e - 8009e7c: 3401 adds r4, #1 - 8009e7e: b160 cbz r0, 8009e9a - 8009e80: 7fc2 ldrb r2, [r0, #31] - 8009e82: f893 e01f ldrb.w lr, [r3, #31] - 8009e86: 4596 cmp lr, r2 - 8009e88: bf9c itt ls - 8009e8a: 4661 movls r1, ip - 8009e8c: 4618 movls r0, r3 - 8009e8e: 681a ldr r2, [r3, #0] - 8009e90: 2a00 cmp r2, #0 - 8009e92: bf18 it ne - 8009e94: 469c movne ip, r3 - 8009e96: 4613 mov r3, r2 - 8009e98: e7d5 b.n 8009e46 - 8009e9a: 4661 mov r1, ip - 8009e9c: 4618 mov r0, r3 - 8009e9e: e7f6 b.n 8009e8e - 8009ea0: 20018c18 .word 0x20018c18 - -08009ea4 : - 8009ea4: b510 push {r4, lr} - 8009ea6: 4604 mov r4, r0 - 8009ea8: b930 cbnz r0, 8009eb8 - 8009eaa: 4b08 ldr r3, [pc, #32] @ (8009ecc ) - 8009eac: 4908 ldr r1, [pc, #32] @ (8009ed0 ) - 8009eae: 4809 ldr r0, [pc, #36] @ (8009ed4 ) - 8009eb0: f240 22ce movw r2, #718 @ 0x2ce - 8009eb4: f000 fc68 bl 800a788 - 8009eb8: 6960 ldr r0, [r4, #20] - 8009eba: b108 cbz r0, 8009ec0 - 8009ebc: f7fa f908 bl 80040d0 - 8009ec0: 4621 mov r1, r4 - 8009ec2: 2005 movs r0, #5 - 8009ec4: e8bd 4010 ldmia.w sp!, {r4, lr} - 8009ec8: f7f9 be9e b.w 8003c08 - 8009ecc: 0800d514 .word 0x0800d514 - 8009ed0: 0800d5c3 .word 0x0800d5c3 - 8009ed4: 0800b767 .word 0x0800b767 - -08009ed8 : - 8009ed8: b538 push {r3, r4, r5, lr} - 8009eda: 4b09 ldr r3, [pc, #36] @ (8009f00 ) - 8009edc: 6818 ldr r0, [r3, #0] - 8009ede: 2400 movs r4, #0 - 8009ee0: b900 cbnz r0, 8009ee4 - 8009ee2: bd38 pop {r3, r4, r5, pc} - 8009ee4: 7fc3 ldrb r3, [r0, #31] - 8009ee6: 6805 ldr r5, [r0, #0] - 8009ee8: b123 cbz r3, 8009ef4 - 8009eea: 3b01 subs r3, #1 - 8009eec: 77c3 strb r3, [r0, #31] - 8009eee: 4604 mov r4, r0 - 8009ef0: 4628 mov r0, r5 - 8009ef2: e7f5 b.n 8009ee0 - 8009ef4: 4621 mov r1, r4 - 8009ef6: f7ff ff25 bl 8009d44 - 8009efa: 4620 mov r0, r4 - 8009efc: e7f7 b.n 8009eee - 8009efe: bf00 nop - 8009f00: 20018c18 .word 0x20018c18 - -08009f04 : - 8009f04: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8009f08: 6845 ldr r5, [r0, #4] - 8009f0a: 782b ldrb r3, [r5, #0] - 8009f0c: f003 030f and.w r3, r3, #15 - 8009f10: 2b05 cmp r3, #5 - 8009f12: 4607 mov r7, r0 - 8009f14: f040 80a9 bne.w 800a06a - 8009f18: 88e8 ldrh r0, [r5, #6] - 8009f1a: f7f9 fbbc bl 8003696 - 8009f1e: 4680 mov r8, r0 - 8009f20: 8868 ldrh r0, [r5, #2] - 8009f22: f7f9 fbb8 bl 8003696 - 8009f26: 782b ldrb r3, [r5, #0] - 8009f28: f003 030f and.w r3, r3, #15 - 8009f2c: ebb0 0f83 cmp.w r0, r3, lsl #2 - 8009f30: ea4f 0283 mov.w r2, r3, lsl #2 - 8009f34: f0c0 8099 bcc.w 800a06a - 8009f38: 1a83 subs r3, r0, r2 - 8009f3a: b29b uxth r3, r3 - 8009f3c: 4cae ldr r4, [pc, #696] @ (800a1f8 ) - 8009f3e: 9301 str r3, [sp, #4] - 8009f40: 4638 mov r0, r7 - 8009f42: f7fa f9fb bl 800433c - 8009f46: 8823 ldrh r3, [r4, #0] - 8009f48: 4403 add r3, r0 - 8009f4a: 2b0a cmp r3, #10 - 8009f4c: 4682 mov sl, r0 - 8009f4e: f300 8082 bgt.w 800a056 - 8009f52: 4eaa ldr r6, [pc, #680] @ (800a1fc ) - 8009f54: 6834 ldr r4, [r6, #0] - 8009f56: 2c00 cmp r4, #0 - 8009f58: f040 808c bne.w 800a074 - 8009f5c: 2004 movs r0, #4 - 8009f5e: f7f9 fe25 bl 8003bac - 8009f62: 4604 mov r4, r0 - 8009f64: b958 cbnz r0, 8009f7e - 8009f66: 4651 mov r1, sl - 8009f68: 4628 mov r0, r5 - 8009f6a: f7ff ff5f bl 8009e2c - 8009f6e: 4582 cmp sl, r0 - 8009f70: dc7b bgt.n 800a06a - 8009f72: 2004 movs r0, #4 - 8009f74: f7f9 fe1a bl 8003bac - 8009f78: 4604 mov r4, r0 - 8009f7a: 2800 cmp r0, #0 - 8009f7c: d075 beq.n 800a06a - 8009f7e: 221c movs r2, #28 - 8009f80: 2100 movs r1, #0 - 8009f82: 1d20 adds r0, r4, #4 - 8009f84: f000 fc65 bl 800a852 - 8009f88: 230f movs r3, #15 - 8009f8a: 77e3 strb r3, [r4, #31] - 8009f8c: 6833 ldr r3, [r6, #0] - 8009f8e: 6023 str r3, [r4, #0] - 8009f90: 6034 str r4, [r6, #0] - 8009f92: 462b mov r3, r5 - 8009f94: f104 0208 add.w r2, r4, #8 - 8009f98: f105 0114 add.w r1, r5, #20 - 8009f9c: f853 0b04 ldr.w r0, [r3], #4 - 8009fa0: f842 0b04 str.w r0, [r2], #4 - 8009fa4: 428b cmp r3, r1 - 8009fa6: d1f9 bne.n 8009f9c - 8009fa8: f8b5 b006 ldrh.w fp, [r5, #6] - 8009fac: f3c8 080c ubfx r8, r8, #0, #13 - 8009fb0: f01b 0b20 ands.w fp, fp, #32 - 8009fb4: ea4f 08c8 mov.w r8, r8, lsl #3 - 8009fb8: d10a bne.n 8009fd0 - 8009fba: 9b01 ldr r3, [sp, #4] - 8009fbc: 4443 add r3, r8 - 8009fbe: b29b uxth r3, r3 - 8009fc0: 4598 cmp r8, r3 - 8009fc2: f200 813a bhi.w 800a23a - 8009fc6: f64f 72eb movw r2, #65515 @ 0xffeb - 8009fca: 4293 cmp r3, r2 - 8009fcc: f200 8135 bhi.w 800a23a - 8009fd0: 687d ldr r5, [r7, #4] - 8009fd2: 8868 ldrh r0, [r5, #2] - 8009fd4: f7f9 fb5f bl 8003696 - 8009fd8: 782b ldrb r3, [r5, #0] - 8009fda: f003 030f and.w r3, r3, #15 - 8009fde: ebb0 0f83 cmp.w r0, r3, lsl #2 - 8009fe2: ea4f 0283 mov.w r2, r3, lsl #2 - 8009fe6: f0c0 8128 bcc.w 800a23a - 8009fea: 1a80 subs r0, r0, r2 - 8009fec: fa1f f980 uxth.w r9, r0 - 8009ff0: 88e8 ldrh r0, [r5, #6] - 8009ff2: f7f9 fb50 bl 8003696 - 8009ff6: f3c0 030c ubfx r3, r0, #0, #13 - 8009ffa: 00db lsls r3, r3, #3 - 8009ffc: eb09 0003 add.w r0, r9, r3 - 800a000: 687e ldr r6, [r7, #4] - 800a002: fa1f fc80 uxth.w ip, r0 - 800a006: 2500 movs r5, #0 - 800a008: 4563 cmp r3, ip - 800a00a: 7035 strb r5, [r6, #0] - 800a00c: 7075 strb r5, [r6, #1] - 800a00e: 70b5 strb r5, [r6, #2] - 800a010: 70f5 strb r5, [r6, #3] - 800a012: 80b3 strh r3, [r6, #4] - 800a014: 80f0 strh r0, [r6, #6] - 800a016: f200 8110 bhi.w 800a23a - 800a01a: f8d4 e004 ldr.w lr, [r4, #4] - 800a01e: f04f 0901 mov.w r9, #1 - 800a022: 4670 mov r0, lr - 800a024: bba8 cbnz r0, 800a092 - 800a026: 2d00 cmp r5, #0 - 800a028: f000 80b2 beq.w 800a190 - 800a02c: 88ea ldrh r2, [r5, #6] - 800a02e: 429a cmp r2, r3 - 800a030: d906 bls.n 800a040 - 800a032: 4b73 ldr r3, [pc, #460] @ (800a200 ) - 800a034: 4973 ldr r1, [pc, #460] @ (800a204 ) - 800a036: 4874 ldr r0, [pc, #464] @ (800a208 ) - 800a038: f44f 72db mov.w r2, #438 @ 0x1b6 - 800a03c: f000 fba4 bl 800a788 - 800a040: 602f str r7, [r5, #0] - 800a042: 88ea ldrh r2, [r5, #6] - 800a044: 88b3 ldrh r3, [r6, #4] - 800a046: 429a cmp r2, r3 - 800a048: d036 beq.n 800a0b8 - 800a04a: f1bb 0f00 cmp.w fp, #0 - 800a04e: d03e beq.n 800a0ce - 800a050: f04f 0900 mov.w r9, #0 - 800a054: e033 b.n 800a0be - 800a056: 4601 mov r1, r0 - 800a058: 4628 mov r0, r5 - 800a05a: f7ff fee7 bl 8009e2c - 800a05e: b120 cbz r0, 800a06a - 800a060: 8823 ldrh r3, [r4, #0] - 800a062: 4453 add r3, sl - 800a064: 2b0a cmp r3, #10 - 800a066: f77f af74 ble.w 8009f52 - 800a06a: 4638 mov r0, r7 - 800a06c: f7fa f830 bl 80040d0 - 800a070: 2700 movs r7, #0 - 800a072: e078 b.n 800a166 - 800a074: 68eb ldr r3, [r5, #12] - 800a076: 6962 ldr r2, [r4, #20] - 800a078: 429a cmp r2, r3 - 800a07a: d108 bne.n 800a08e - 800a07c: 692b ldr r3, [r5, #16] - 800a07e: 69a2 ldr r2, [r4, #24] - 800a080: 429a cmp r2, r3 - 800a082: d104 bne.n 800a08e - 800a084: 89a2 ldrh r2, [r4, #12] - 800a086: 88ab ldrh r3, [r5, #4] - 800a088: 429a cmp r2, r3 - 800a08a: f000 80ea beq.w 800a262 - 800a08e: 6824 ldr r4, [r4, #0] - 800a090: e761 b.n 8009f56 - 800a092: 6842 ldr r2, [r0, #4] - 800a094: 8891 ldrh r1, [r2, #4] - 800a096: 428b cmp r3, r1 - 800a098: d26d bcs.n 800a176 - 800a09a: 6030 str r0, [r6, #0] - 800a09c: 2d00 cmp r5, #0 - 800a09e: d066 beq.n 800a16e - 800a0a0: 88ea ldrh r2, [r5, #6] - 800a0a2: 4293 cmp r3, r2 - 800a0a4: f0c0 80c9 bcc.w 800a23a - 800a0a8: 458c cmp ip, r1 - 800a0aa: f200 80c6 bhi.w 800a23a - 800a0ae: 602f str r7, [r5, #0] - 800a0b0: 4293 cmp r3, r2 - 800a0b2: bf18 it ne - 800a0b4: f04f 0900 movne.w r9, #0 - 800a0b8: f1bb 0f00 cmp.w fp, #0 - 800a0bc: d004 beq.n 800a0c8 - 800a0be: 7fa3 ldrb r3, [r4, #30] - 800a0c0: f013 0301 ands.w r3, r3, #1 - 800a0c4: f000 8095 beq.w 800a1f2 - 800a0c8: f1b9 0f00 cmp.w r9, #0 - 800a0cc: d16b bne.n 800a1a6 - 800a0ce: f04f 0900 mov.w r9, #0 - 800a0d2: 4e49 ldr r6, [pc, #292] @ (800a1f8 ) - 800a0d4: 8833 ldrh r3, [r6, #0] - 800a0d6: 4453 add r3, sl - 800a0d8: 8033 strh r3, [r6, #0] - 800a0da: f1bb 0f00 cmp.w fp, #0 - 800a0de: d107 bne.n 800a0f0 - 800a0e0: 9b01 ldr r3, [sp, #4] - 800a0e2: 4498 add r8, r3 - 800a0e4: 7fa3 ldrb r3, [r4, #30] - 800a0e6: f8a4 801c strh.w r8, [r4, #28] - 800a0ea: f043 0301 orr.w r3, r3, #1 - 800a0ee: 77a3 strb r3, [r4, #30] - 800a0f0: f1b9 0f01 cmp.w r9, #1 - 800a0f4: d1bc bne.n 800a070 - 800a0f6: 6863 ldr r3, [r4, #4] - 800a0f8: 8ba0 ldrh r0, [r4, #28] - 800a0fa: 685f ldr r7, [r3, #4] - 800a0fc: 3014 adds r0, #20 - 800a0fe: 683d ldr r5, [r7, #0] - 800a100: b280 uxth r0, r0 - 800a102: f104 0308 add.w r3, r4, #8 - 800a106: 463a mov r2, r7 - 800a108: f104 011c add.w r1, r4, #28 - 800a10c: f853 cb04 ldr.w ip, [r3], #4 - 800a110: f842 cb04 str.w ip, [r2], #4 - 800a114: 428b cmp r3, r1 - 800a116: d1f9 bne.n 800a10c - 800a118: f7f9 fabd bl 8003696 - 800a11c: 2300 movs r3, #0 - 800a11e: 8078 strh r0, [r7, #2] - 800a120: 71bb strb r3, [r7, #6] - 800a122: 71fb strb r3, [r7, #7] - 800a124: 72bb strb r3, [r7, #10] - 800a126: 72fb strb r3, [r7, #11] - 800a128: 6867 ldr r7, [r4, #4] - 800a12a: 2d00 cmp r5, #0 - 800a12c: d176 bne.n 800a21c - 800a12e: 4b33 ldr r3, [pc, #204] @ (800a1fc ) - 800a130: 681b ldr r3, [r3, #0] - 800a132: 42a3 cmp r3, r4 - 800a134: d002 beq.n 800a13c - 800a136: 461d mov r5, r3 - 800a138: 2b00 cmp r3, #0 - 800a13a: d17c bne.n 800a236 - 800a13c: 4620 mov r0, r4 - 800a13e: 4629 mov r1, r5 - 800a140: f7ff fdde bl 8009d00 - 800a144: 4638 mov r0, r7 - 800a146: f7fa f8f9 bl 800433c - 800a14a: 8833 ldrh r3, [r6, #0] - 800a14c: 4283 cmp r3, r0 - 800a14e: 4604 mov r4, r0 - 800a150: d206 bcs.n 800a160 - 800a152: 4b2b ldr r3, [pc, #172] @ (800a200 ) - 800a154: 492d ldr r1, [pc, #180] @ (800a20c ) - 800a156: 482c ldr r0, [pc, #176] @ (800a208 ) - 800a158: f240 229b movw r2, #667 @ 0x29b - 800a15c: f000 fb14 bl 800a788 - 800a160: 8833 ldrh r3, [r6, #0] - 800a162: 1b1b subs r3, r3, r4 - 800a164: 8033 strh r3, [r6, #0] - 800a166: 4638 mov r0, r7 - 800a168: b003 add sp, #12 - 800a16a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 800a16e: 458c cmp ip, r1 - 800a170: d863 bhi.n 800a23a - 800a172: 6067 str r7, [r4, #4] - 800a174: e7a0 b.n 800a0b8 - 800a176: d060 beq.n 800a23a - 800a178: 88d0 ldrh r0, [r2, #6] - 800a17a: 4298 cmp r0, r3 - 800a17c: d85d bhi.n 800a23a - 800a17e: b125 cbz r5, 800a18a - 800a180: 88e8 ldrh r0, [r5, #6] - 800a182: 4288 cmp r0, r1 - 800a184: bf18 it ne - 800a186: f04f 0900 movne.w r9, #0 - 800a18a: 6810 ldr r0, [r2, #0] - 800a18c: 4615 mov r5, r2 - 800a18e: e749 b.n 800a024 - 800a190: f1be 0f00 cmp.w lr, #0 - 800a194: d0ed beq.n 800a172 - 800a196: 4b1a ldr r3, [pc, #104] @ (800a200 ) - 800a198: 491d ldr r1, [pc, #116] @ (800a210 ) - 800a19a: 481b ldr r0, [pc, #108] @ (800a208 ) - 800a19c: f44f 72df mov.w r2, #446 @ 0x1be - 800a1a0: f000 faf2 bl 800a788 - 800a1a4: e7e5 b.n 800a172 - 800a1a6: 6863 ldr r3, [r4, #4] - 800a1a8: 2b00 cmp r3, #0 - 800a1aa: d090 beq.n 800a0ce - 800a1ac: 6859 ldr r1, [r3, #4] - 800a1ae: 888b ldrh r3, [r1, #4] - 800a1b0: 2b00 cmp r3, #0 - 800a1b2: d18c bne.n 800a0ce - 800a1b4: 6833 ldr r3, [r6, #0] - 800a1b6: b99b cbnz r3, 800a1e0 - 800a1b8: 42b1 cmp r1, r6 - 800a1ba: d106 bne.n 800a1ca - 800a1bc: 4b10 ldr r3, [pc, #64] @ (800a200 ) - 800a1be: 4915 ldr r1, [pc, #84] @ (800a214 ) - 800a1c0: 4811 ldr r0, [pc, #68] @ (800a208 ) - 800a1c2: f44f 72f0 mov.w r2, #480 @ 0x1e0 - 800a1c6: f000 fadf bl 800a788 - 800a1ca: 6833 ldr r3, [r6, #0] - 800a1cc: 2b00 cmp r3, #0 - 800a1ce: d080 beq.n 800a0d2 - 800a1d0: 4b0b ldr r3, [pc, #44] @ (800a200 ) - 800a1d2: 4911 ldr r1, [pc, #68] @ (800a218 ) - 800a1d4: 480c ldr r0, [pc, #48] @ (800a208 ) - 800a1d6: f44f 72f1 mov.w r2, #482 @ 0x1e2 - 800a1da: f000 fad5 bl 800a788 - 800a1de: e778 b.n 800a0d2 - 800a1e0: 685a ldr r2, [r3, #4] - 800a1e2: 88f0 ldrh r0, [r6, #6] - 800a1e4: 8893 ldrh r3, [r2, #4] - 800a1e6: 4298 cmp r0, r3 - 800a1e8: f47f af71 bne.w 800a0ce - 800a1ec: 6813 ldr r3, [r2, #0] - 800a1ee: 4616 mov r6, r2 - 800a1f0: e7e1 b.n 800a1b6 - 800a1f2: 4699 mov r9, r3 - 800a1f4: e76d b.n 800a0d2 - 800a1f6: bf00 nop - 800a1f8: 20018c16 .word 0x20018c16 - 800a1fc: 20018c18 .word 0x20018c18 - 800a200: 0800d514 .word 0x0800d514 - 800a204: 0800d5cf .word 0x0800d5cf - 800a208: 0800b767 .word 0x0800b767 - 800a20c: 0800d653 .word 0x0800d653 - 800a210: 0800d5ed .word 0x0800d5ed - 800a214: 0800d624 .word 0x0800d624 - 800a218: 0800d631 .word 0x0800d631 - 800a21c: f8d5 8004 ldr.w r8, [r5, #4] - 800a220: 2114 movs r1, #20 - 800a222: 4628 mov r0, r5 - 800a224: f7f9 ff20 bl 8004068 - 800a228: 4629 mov r1, r5 - 800a22a: 4638 mov r0, r7 - 800a22c: f7fa f8a2 bl 8004374 - 800a230: f8d8 5000 ldr.w r5, [r8] - 800a234: e779 b.n 800a12a - 800a236: 682b ldr r3, [r5, #0] - 800a238: e77b b.n 800a132 - 800a23a: 6863 ldr r3, [r4, #4] - 800a23c: 2b00 cmp r3, #0 - 800a23e: f47f af14 bne.w 800a06a - 800a242: 4b16 ldr r3, [pc, #88] @ (800a29c ) - 800a244: 681b ldr r3, [r3, #0] - 800a246: 42a3 cmp r3, r4 - 800a248: d006 beq.n 800a258 - 800a24a: 4b15 ldr r3, [pc, #84] @ (800a2a0 ) - 800a24c: 4915 ldr r1, [pc, #84] @ (800a2a4 ) - 800a24e: 4816 ldr r0, [pc, #88] @ (800a2a8 ) - 800a250: f240 22ab movw r2, #683 @ 0x2ab - 800a254: f000 fa98 bl 800a788 - 800a258: 2100 movs r1, #0 - 800a25a: 4620 mov r0, r4 - 800a25c: f7ff fd50 bl 8009d00 - 800a260: e703 b.n 800a06a - 800a262: 88e8 ldrh r0, [r5, #6] - 800a264: f7f9 fa17 bl 8003696 - 800a268: f3c0 000c ubfx r0, r0, #0, #13 - 800a26c: 2800 cmp r0, #0 - 800a26e: f47f ae9b bne.w 8009fa8 - 800a272: 89e0 ldrh r0, [r4, #14] - 800a274: f7f9 fa0f bl 8003696 - 800a278: f3c0 000c ubfx r0, r0, #0, #13 - 800a27c: 2800 cmp r0, #0 - 800a27e: f43f ae93 beq.w 8009fa8 - 800a282: 462b mov r3, r5 - 800a284: f104 0208 add.w r2, r4, #8 - 800a288: f105 0114 add.w r1, r5, #20 - 800a28c: f853 0b04 ldr.w r0, [r3], #4 - 800a290: f842 0b04 str.w r0, [r2], #4 - 800a294: 428b cmp r3, r1 - 800a296: d1f9 bne.n 800a28c - 800a298: e686 b.n 8009fa8 - 800a29a: bf00 nop - 800a29c: 20018c18 .word 0x20018c18 - 800a2a0: 0800d514 .word 0x0800d514 - 800a2a4: 0800d66e .word 0x0800d66e - 800a2a8: 0800b767 .word 0x0800b767 - -0800a2ac : - 800a2ac: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 800a2b0: 8d0b ldrh r3, [r1, #40] @ 0x28 - 800a2b2: b08d sub sp, #52 @ 0x34 - 800a2b4: 4605 mov r5, r0 - 800a2b6: 9209 str r2, [sp, #36] @ 0x24 - 800a2b8: f1b3 0214 subs.w r2, r3, #20 - 800a2bc: bf48 it mi - 800a2be: f1a3 020d submi.w r2, r3, #13 - 800a2c2: f3c2 03cf ubfx r3, r2, #3, #16 - 800a2c6: 9306 str r3, [sp, #24] - 800a2c8: 6843 ldr r3, [r0, #4] - 800a2ca: 9303 str r3, [sp, #12] - 800a2cc: 781b ldrb r3, [r3, #0] - 800a2ce: f003 030f and.w r3, r3, #15 - 800a2d2: 2b05 cmp r3, #5 - 800a2d4: 468a mov sl, r1 - 800a2d6: ea4f 0783 mov.w r7, r3, lsl #2 - 800a2da: d109 bne.n 800a2f0 - 800a2dc: 8943 ldrh r3, [r0, #10] - 800a2de: 2b13 cmp r3, #19 - 800a2e0: d80b bhi.n 800a2fa - 800a2e2: 4b5f ldr r3, [pc, #380] @ (800a460 ) - 800a2e4: 495f ldr r1, [pc, #380] @ (800a464 ) - 800a2e6: 4860 ldr r0, [pc, #384] @ (800a468 ) - 800a2e8: f44f 723f mov.w r2, #764 @ 0x2fc - 800a2ec: f000 fa4c bl 800a788 - 800a2f0: f06f 0005 mvn.w r0, #5 - 800a2f4: b00d add sp, #52 @ 0x34 - 800a2f6: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 800a2fa: 9b03 ldr r3, [sp, #12] - 800a2fc: 88d8 ldrh r0, [r3, #6] - 800a2fe: f7f9 f9ca bl 8003696 - 800a302: f3c0 030c ubfx r3, r0, #0, #13 - 800a306: 9304 str r3, [sp, #16] - 800a308: f400 5300 and.w r3, r0, #8192 @ 0x2000 - 800a30c: 9308 str r3, [sp, #32] - 800a30e: 9b06 ldr r3, [sp, #24] - 800a310: 892c ldrh r4, [r5, #8] - 800a312: 00db lsls r3, r3, #3 - 800a314: 3c14 subs r4, #20 - 800a316: b29b uxth r3, r3 - 800a318: b2a4 uxth r4, r4 - 800a31a: 9307 str r3, [sp, #28] - 800a31c: 2600 movs r6, #0 - 800a31e: b90c cbnz r4, 800a324 - 800a320: 4620 mov r0, r4 - 800a322: e7e7 b.n 800a2f4 - 800a324: 9b07 ldr r3, [sp, #28] - 800a326: 42a3 cmp r3, r4 - 800a328: bf28 it cs - 800a32a: 4623 movcs r3, r4 - 800a32c: f44f 7220 mov.w r2, #640 @ 0x280 - 800a330: 2114 movs r1, #20 - 800a332: 200e movs r0, #14 - 800a334: 9305 str r3, [sp, #20] - 800a336: f7f9 ff2f bl 8004198 - 800a33a: 4680 mov r8, r0 - 800a33c: b910 cbnz r0, 800a344 - 800a33e: f04f 30ff mov.w r0, #4294967295 - 800a342: e7d7 b.n 800a2f4 - 800a344: 8943 ldrh r3, [r0, #10] - 800a346: 2b13 cmp r3, #19 - 800a348: d806 bhi.n 800a358 - 800a34a: 4b45 ldr r3, [pc, #276] @ (800a460 ) - 800a34c: 4947 ldr r1, [pc, #284] @ (800a46c ) - 800a34e: 4846 ldr r0, [pc, #280] @ (800a468 ) - 800a350: f44f 7249 mov.w r2, #804 @ 0x324 - 800a354: f000 fa18 bl 800a788 - 800a358: 9b03 ldr r3, [sp, #12] - 800a35a: f8d8 2004 ldr.w r2, [r8, #4] - 800a35e: 4619 mov r1, r3 - 800a360: 3114 adds r1, #20 - 800a362: f853 0b04 ldr.w r0, [r3], #4 - 800a366: f842 0b04 str.w r0, [r2], #4 - 800a36a: 428b cmp r3, r1 - 800a36c: d1f9 bne.n 800a362 - 800a36e: f8d8 b004 ldr.w fp, [r8, #4] - 800a372: f8dd 9014 ldr.w r9, [sp, #20] - 800a376: f1b9 0f00 cmp.w r9, #0 - 800a37a: d040 beq.n 800a3fe - 800a37c: 896b ldrh r3, [r5, #10] - 800a37e: 1bde subs r6, r3, r7 - 800a380: 42bb cmp r3, r7 - 800a382: b2b6 uxth r6, r6 - 800a384: d206 bcs.n 800a394 - 800a386: 4b36 ldr r3, [pc, #216] @ (800a460 ) - 800a388: 4939 ldr r1, [pc, #228] @ (800a470 ) - 800a38a: 4837 ldr r0, [pc, #220] @ (800a468 ) - 800a38c: f240 322d movw r2, #813 @ 0x32d - 800a390: f000 f9fa bl 800a788 - 800a394: 454e cmp r6, r9 - 800a396: bf28 it cs - 800a398: 464e movcs r6, r9 - 800a39a: b916 cbnz r6, 800a3a2 - 800a39c: 682d ldr r5, [r5, #0] - 800a39e: 2700 movs r7, #0 - 800a3a0: e7e9 b.n 800a376 - 800a3a2: 2005 movs r0, #5 - 800a3a4: f7f9 fc02 bl 8003bac - 800a3a8: 4603 mov r3, r0 - 800a3aa: b918 cbnz r0, 800a3b4 - 800a3ac: 4640 mov r0, r8 - 800a3ae: f7f9 fe8f bl 80040d0 - 800a3b2: e7c4 b.n 800a33e - 800a3b4: 9601 str r6, [sp, #4] - 800a3b6: 686a ldr r2, [r5, #4] - 800a3b8: 900a str r0, [sp, #40] @ 0x28 - 800a3ba: 443a add r2, r7 - 800a3bc: 9200 str r2, [sp, #0] - 800a3be: 4631 mov r1, r6 - 800a3c0: 2241 movs r2, #65 @ 0x41 - 800a3c2: 2000 movs r0, #0 - 800a3c4: f7f9 fe32 bl 800402c - 800a3c8: 9b0a ldr r3, [sp, #40] @ 0x28 - 800a3ca: b920 cbnz r0, 800a3d6 - 800a3cc: 4619 mov r1, r3 - 800a3ce: 2005 movs r0, #5 - 800a3d0: f7f9 fc1a bl 8003c08 - 800a3d4: e7ea b.n 800a3ac - 800a3d6: e9cd 030a strd r0, r3, [sp, #40] @ 0x28 - 800a3da: 4628 mov r0, r5 - 800a3dc: f7f9 ffb6 bl 800434c - 800a3e0: 9b0b ldr r3, [sp, #44] @ 0x2c - 800a3e2: 4a24 ldr r2, [pc, #144] @ (800a474 ) - 800a3e4: 990a ldr r1, [sp, #40] @ 0x28 - 800a3e6: 615d str r5, [r3, #20] - 800a3e8: eba9 0906 sub.w r9, r9, r6 - 800a3ec: 611a str r2, [r3, #16] - 800a3ee: 4640 mov r0, r8 - 800a3f0: fa1f f989 uxth.w r9, r9 - 800a3f4: f7f9 ffbe bl 8004374 - 800a3f8: f1b9 0f00 cmp.w r9, #0 - 800a3fc: d1ce bne.n 800a39c - 800a3fe: 9b04 ldr r3, [sp, #16] - 800a400: f3c3 000c ubfx r0, r3, #0, #13 - 800a404: f8ba 3028 ldrh.w r3, [sl, #40] @ 0x28 - 800a408: 3b13 subs r3, #19 - 800a40a: 4437 add r7, r6 - 800a40c: 42a3 cmp r3, r4 - 800a40e: b2bf uxth r7, r7 - 800a410: dd01 ble.n 800a416 - 800a412: 9b08 ldr r3, [sp, #32] - 800a414: b10b cbz r3, 800a41a - 800a416: f440 5000 orr.w r0, r0, #8192 @ 0x2000 - 800a41a: f7f9 f93c bl 8003696 - 800a41e: 9b05 ldr r3, [sp, #20] - 800a420: f8ab 0006 strh.w r0, [fp, #6] - 800a424: f103 0014 add.w r0, r3, #20 - 800a428: b280 uxth r0, r0 - 800a42a: f7f9 f934 bl 8003696 - 800a42e: 2300 movs r3, #0 - 800a430: 9a09 ldr r2, [sp, #36] @ 0x24 - 800a432: f8ab 0002 strh.w r0, [fp, #2] - 800a436: f88b 300a strb.w r3, [fp, #10] - 800a43a: f88b 300b strb.w r3, [fp, #11] - 800a43e: 4641 mov r1, r8 - 800a440: f8da 3014 ldr.w r3, [sl, #20] - 800a444: 4650 mov r0, sl - 800a446: 4798 blx r3 - 800a448: 4640 mov r0, r8 - 800a44a: f7f9 fe41 bl 80040d0 - 800a44e: 9b05 ldr r3, [sp, #20] - 800a450: 9a06 ldr r2, [sp, #24] - 800a452: 1ae3 subs r3, r4, r3 - 800a454: b29c uxth r4, r3 - 800a456: 9b04 ldr r3, [sp, #16] - 800a458: 4413 add r3, r2 - 800a45a: b29b uxth r3, r3 - 800a45c: 9304 str r3, [sp, #16] - 800a45e: e75e b.n 800a31e - 800a460: 0800d514 .word 0x0800d514 - 800a464: 0800d68e .word 0x0800d68e - 800a468: 0800b767 .word 0x0800b767 - 800a46c: 0800d6a9 .word 0x0800d6a9 - 800a470: 0800d6c9 .word 0x0800d6c9 - 800a474: 08009ea5 .word 0x08009ea5 - -0800a478 : - 800a478: 8943 ldrh r3, [r0, #10] - 800a47a: 2b0e cmp r3, #14 - 800a47c: b570 push {r4, r5, r6, lr} - 800a47e: 4604 mov r4, r0 - 800a480: 460d mov r5, r1 - 800a482: d91a bls.n 800a4ba - 800a484: 7bc3 ldrb r3, [r0, #15] - 800a486: b91b cbnz r3, 800a490 - 800a488: f891 3034 ldrb.w r3, [r1, #52] @ 0x34 - 800a48c: 3301 adds r3, #1 - 800a48e: 73c3 strb r3, [r0, #15] - 800a490: 6860 ldr r0, [r4, #4] - 800a492: 7803 ldrb r3, [r0, #0] - 800a494: 8986 ldrh r6, [r0, #12] - 800a496: 07d9 lsls r1, r3, #31 - 800a498: d50a bpl.n 800a4b0 - 800a49a: 2b01 cmp r3, #1 - 800a49c: d111 bne.n 800a4c2 - 800a49e: 7843 ldrb r3, [r0, #1] - 800a4a0: b933 cbnz r3, 800a4b0 - 800a4a2: 7883 ldrb r3, [r0, #2] - 800a4a4: 2b5e cmp r3, #94 @ 0x5e - 800a4a6: d103 bne.n 800a4b0 - 800a4a8: 7b63 ldrb r3, [r4, #13] - 800a4aa: f043 0310 orr.w r3, r3, #16 - 800a4ae: 7363 strb r3, [r4, #13] - 800a4b0: 2e08 cmp r6, #8 - 800a4b2: d010 beq.n 800a4d6 - 800a4b4: f5b6 6fc1 cmp.w r6, #1544 @ 0x608 - 800a4b8: d01d beq.n 800a4f6 - 800a4ba: 4620 mov r0, r4 - 800a4bc: f7f9 fe08 bl 80040d0 - 800a4c0: e017 b.n 800a4f2 - 800a4c2: 4914 ldr r1, [pc, #80] @ (800a514 ) - 800a4c4: 2206 movs r2, #6 - 800a4c6: f000 f9b4 bl 800a832 - 800a4ca: 2800 cmp r0, #0 - 800a4cc: d1f0 bne.n 800a4b0 - 800a4ce: 7b63 ldrb r3, [r4, #13] - 800a4d0: f043 0308 orr.w r3, r3, #8 - 800a4d4: e7eb b.n 800a4ae - 800a4d6: f895 3031 ldrb.w r3, [r5, #49] @ 0x31 - 800a4da: 071a lsls r2, r3, #28 - 800a4dc: d5ed bpl.n 800a4ba - 800a4de: 210e movs r1, #14 - 800a4e0: 4620 mov r0, r4 - 800a4e2: f7f9 fdc1 bl 8004068 - 800a4e6: 2800 cmp r0, #0 - 800a4e8: d1e7 bne.n 800a4ba - 800a4ea: 4629 mov r1, r5 - 800a4ec: 4620 mov r0, r4 - 800a4ee: f7ff f9f9 bl 80098e4 - 800a4f2: 2000 movs r0, #0 - 800a4f4: bd70 pop {r4, r5, r6, pc} - 800a4f6: f895 3031 ldrb.w r3, [r5, #49] @ 0x31 - 800a4fa: 071b lsls r3, r3, #28 - 800a4fc: d5dd bpl.n 800a4ba - 800a4fe: 210e movs r1, #14 - 800a500: 4620 mov r0, r4 - 800a502: f7f9 fdb1 bl 8004068 - 800a506: 2800 cmp r0, #0 - 800a508: d1d7 bne.n 800a4ba - 800a50a: 4629 mov r1, r5 - 800a50c: 4620 mov r0, r4 - 800a50e: f7fe fe3d bl 800918c - 800a512: e7ee b.n 800a4f2 - 800a514: 0800d744 .word 0x0800d744 - -0800a518 : - 800a518: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 800a51c: 4604 mov r4, r0 - 800a51e: f8bd 0018 ldrh.w r0, [sp, #24] - 800a522: 460d mov r5, r1 - 800a524: 4616 mov r6, r2 - 800a526: 461f mov r7, r3 - 800a528: f7f9 f8b5 bl 8003696 - 800a52c: 210e movs r1, #14 - 800a52e: 4680 mov r8, r0 - 800a530: 4628 mov r0, r5 - 800a532: f7f9 fd95 bl 8004060 - 800a536: b9e0 cbnz r0, 800a572 - 800a538: 6869 ldr r1, [r5, #4] - 800a53a: f8a1 800c strh.w r8, [r1, #12] - 800a53e: 683b ldr r3, [r7, #0] - 800a540: 600b str r3, [r1, #0] - 800a542: 88bb ldrh r3, [r7, #4] - 800a544: 808b strh r3, [r1, #4] - 800a546: 6833 ldr r3, [r6, #0] - 800a548: f8c1 3006 str.w r3, [r1, #6] - 800a54c: 88b3 ldrh r3, [r6, #4] - 800a54e: 814b strh r3, [r1, #10] - 800a550: f894 3030 ldrb.w r3, [r4, #48] @ 0x30 - 800a554: 2b06 cmp r3, #6 - 800a556: d006 beq.n 800a566 - 800a558: 4b08 ldr r3, [pc, #32] @ (800a57c ) - 800a55a: 4909 ldr r1, [pc, #36] @ (800a580 ) - 800a55c: 4809 ldr r0, [pc, #36] @ (800a584 ) - 800a55e: f44f 7299 mov.w r2, #306 @ 0x132 - 800a562: f000 f911 bl 800a788 - 800a566: 69a3 ldr r3, [r4, #24] - 800a568: 4629 mov r1, r5 - 800a56a: 4620 mov r0, r4 - 800a56c: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} - 800a570: 4718 bx r3 - 800a572: f06f 0001 mvn.w r0, #1 - 800a576: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 800a57a: bf00 nop - 800a57c: 0800d6d8 .word 0x0800d6d8 - 800a580: 0800d70d .word 0x0800d70d - 800a584: 0800b767 .word 0x0800b767 - -0800a588 : - 800a588: 4b16 ldr r3, [pc, #88] @ (800a5e4 ) - 800a58a: b510 push {r4, lr} - 800a58c: 681c ldr r4, [r3, #0] - 800a58e: 6b23 ldr r3, [r4, #48] @ 0x30 - 800a590: b9b3 cbnz r3, 800a5c0 - 800a592: 2018 movs r0, #24 - 800a594: f000 fa4a bl 800aa2c - 800a598: 4602 mov r2, r0 - 800a59a: 6320 str r0, [r4, #48] @ 0x30 - 800a59c: b920 cbnz r0, 800a5a8 - 800a59e: 4b12 ldr r3, [pc, #72] @ (800a5e8 ) - 800a5a0: 4812 ldr r0, [pc, #72] @ (800a5ec ) - 800a5a2: 2152 movs r1, #82 @ 0x52 - 800a5a4: f000 f9da bl 800a95c <__assert_func> - 800a5a8: 4911 ldr r1, [pc, #68] @ (800a5f0 ) - 800a5aa: 4b12 ldr r3, [pc, #72] @ (800a5f4 ) - 800a5ac: e9c0 1300 strd r1, r3, [r0] - 800a5b0: 4b11 ldr r3, [pc, #68] @ (800a5f8 ) - 800a5b2: 6083 str r3, [r0, #8] - 800a5b4: 230b movs r3, #11 - 800a5b6: 8183 strh r3, [r0, #12] - 800a5b8: 2100 movs r1, #0 - 800a5ba: 2001 movs r0, #1 - 800a5bc: e9c2 0104 strd r0, r1, [r2, #16] - 800a5c0: 6b21 ldr r1, [r4, #48] @ 0x30 - 800a5c2: 480e ldr r0, [pc, #56] @ (800a5fc ) - 800a5c4: 690b ldr r3, [r1, #16] - 800a5c6: 694c ldr r4, [r1, #20] - 800a5c8: 4a0d ldr r2, [pc, #52] @ (800a600 ) - 800a5ca: 4358 muls r0, r3 - 800a5cc: fb02 0004 mla r0, r2, r4, r0 - 800a5d0: fba3 3202 umull r3, r2, r3, r2 - 800a5d4: 3301 adds r3, #1 - 800a5d6: eb40 0002 adc.w r0, r0, r2 - 800a5da: e9c1 3004 strd r3, r0, [r1, #16] - 800a5de: f020 4000 bic.w r0, r0, #2147483648 @ 0x80000000 - 800a5e2: bd10 pop {r4, pc} - 800a5e4: 20000034 .word 0x20000034 - 800a5e8: 0800d74a .word 0x0800d74a - 800a5ec: 0800d761 .word 0x0800d761 - 800a5f0: abcd330e .word 0xabcd330e - 800a5f4: e66d1234 .word 0xe66d1234 - 800a5f8: 0005deec .word 0x0005deec - 800a5fc: 5851f42d .word 0x5851f42d - 800a600: 4c957f2d .word 0x4c957f2d - -0800a604 : - 800a604: 2300 movs r3, #0 - 800a606: b510 push {r4, lr} - 800a608: 4604 mov r4, r0 - 800a60a: e9c0 3300 strd r3, r3, [r0] - 800a60e: e9c0 3304 strd r3, r3, [r0, #16] - 800a612: 6083 str r3, [r0, #8] - 800a614: 8181 strh r1, [r0, #12] - 800a616: 6643 str r3, [r0, #100] @ 0x64 - 800a618: 81c2 strh r2, [r0, #14] - 800a61a: 6183 str r3, [r0, #24] - 800a61c: 4619 mov r1, r3 - 800a61e: 2208 movs r2, #8 - 800a620: 305c adds r0, #92 @ 0x5c - 800a622: f000 f916 bl 800a852 - 800a626: 4b0d ldr r3, [pc, #52] @ (800a65c ) - 800a628: 6263 str r3, [r4, #36] @ 0x24 - 800a62a: 4b0d ldr r3, [pc, #52] @ (800a660 ) - 800a62c: 62a3 str r3, [r4, #40] @ 0x28 - 800a62e: 4b0d ldr r3, [pc, #52] @ (800a664 ) - 800a630: 62e3 str r3, [r4, #44] @ 0x2c - 800a632: 4b0d ldr r3, [pc, #52] @ (800a668 ) - 800a634: 6323 str r3, [r4, #48] @ 0x30 - 800a636: 4b0d ldr r3, [pc, #52] @ (800a66c ) - 800a638: 6224 str r4, [r4, #32] - 800a63a: 429c cmp r4, r3 - 800a63c: d006 beq.n 800a64c - 800a63e: f103 0268 add.w r2, r3, #104 @ 0x68 - 800a642: 4294 cmp r4, r2 - 800a644: d002 beq.n 800a64c - 800a646: 33d0 adds r3, #208 @ 0xd0 - 800a648: 429c cmp r4, r3 - 800a64a: d105 bne.n 800a658 - 800a64c: f104 0058 add.w r0, r4, #88 @ 0x58 - 800a650: e8bd 4010 ldmia.w sp!, {r4, lr} - 800a654: f000 b970 b.w 800a938 <__retarget_lock_init_recursive> - 800a658: bd10 pop {r4, pc} - 800a65a: bf00 nop - 800a65c: 0800a7ad .word 0x0800a7ad - 800a660: 0800a7cf .word 0x0800a7cf - 800a664: 0800a807 .word 0x0800a807 - 800a668: 0800a82b .word 0x0800a82b - 800a66c: 20018c1c .word 0x20018c1c - -0800a670 : - 800a670: 4a02 ldr r2, [pc, #8] @ (800a67c ) - 800a672: 4903 ldr r1, [pc, #12] @ (800a680 ) - 800a674: 4803 ldr r0, [pc, #12] @ (800a684 ) - 800a676: f000 b869 b.w 800a74c <_fwalk_sglue> - 800a67a: bf00 nop - 800a67c: 20000028 .word 0x20000028 - 800a680: 0800b241 .word 0x0800b241 - 800a684: 20000038 .word 0x20000038 - -0800a688 : - 800a688: 6841 ldr r1, [r0, #4] - 800a68a: 4b0c ldr r3, [pc, #48] @ (800a6bc ) - 800a68c: 4299 cmp r1, r3 - 800a68e: b510 push {r4, lr} - 800a690: 4604 mov r4, r0 - 800a692: d001 beq.n 800a698 - 800a694: f000 fdd4 bl 800b240 <_fflush_r> - 800a698: 68a1 ldr r1, [r4, #8] - 800a69a: 4b09 ldr r3, [pc, #36] @ (800a6c0 ) - 800a69c: 4299 cmp r1, r3 - 800a69e: d002 beq.n 800a6a6 - 800a6a0: 4620 mov r0, r4 - 800a6a2: f000 fdcd bl 800b240 <_fflush_r> - 800a6a6: 68e1 ldr r1, [r4, #12] - 800a6a8: 4b06 ldr r3, [pc, #24] @ (800a6c4 ) - 800a6aa: 4299 cmp r1, r3 - 800a6ac: d004 beq.n 800a6b8 - 800a6ae: 4620 mov r0, r4 - 800a6b0: e8bd 4010 ldmia.w sp!, {r4, lr} - 800a6b4: f000 bdc4 b.w 800b240 <_fflush_r> - 800a6b8: bd10 pop {r4, pc} - 800a6ba: bf00 nop - 800a6bc: 20018c1c .word 0x20018c1c - 800a6c0: 20018c84 .word 0x20018c84 - 800a6c4: 20018cec .word 0x20018cec - -0800a6c8 : - 800a6c8: b510 push {r4, lr} - 800a6ca: 4b0b ldr r3, [pc, #44] @ (800a6f8 ) - 800a6cc: 4c0b ldr r4, [pc, #44] @ (800a6fc ) - 800a6ce: 4a0c ldr r2, [pc, #48] @ (800a700 ) - 800a6d0: 601a str r2, [r3, #0] - 800a6d2: 4620 mov r0, r4 - 800a6d4: 2200 movs r2, #0 - 800a6d6: 2104 movs r1, #4 - 800a6d8: f7ff ff94 bl 800a604 - 800a6dc: f104 0068 add.w r0, r4, #104 @ 0x68 - 800a6e0: 2201 movs r2, #1 - 800a6e2: 2109 movs r1, #9 - 800a6e4: f7ff ff8e bl 800a604 - 800a6e8: f104 00d0 add.w r0, r4, #208 @ 0xd0 - 800a6ec: 2202 movs r2, #2 - 800a6ee: e8bd 4010 ldmia.w sp!, {r4, lr} - 800a6f2: 2112 movs r1, #18 - 800a6f4: f7ff bf86 b.w 800a604 - 800a6f8: 20018d54 .word 0x20018d54 - 800a6fc: 20018c1c .word 0x20018c1c - 800a700: 0800a671 .word 0x0800a671 - -0800a704 <__sfp_lock_acquire>: - 800a704: 4801 ldr r0, [pc, #4] @ (800a70c <__sfp_lock_acquire+0x8>) - 800a706: f000 b918 b.w 800a93a <__retarget_lock_acquire_recursive> - 800a70a: bf00 nop - 800a70c: 20018d5d .word 0x20018d5d - -0800a710 <__sfp_lock_release>: - 800a710: 4801 ldr r0, [pc, #4] @ (800a718 <__sfp_lock_release+0x8>) - 800a712: f000 b913 b.w 800a93c <__retarget_lock_release_recursive> - 800a716: bf00 nop - 800a718: 20018d5d .word 0x20018d5d - -0800a71c <__sinit>: - 800a71c: b510 push {r4, lr} - 800a71e: 4604 mov r4, r0 - 800a720: f7ff fff0 bl 800a704 <__sfp_lock_acquire> - 800a724: 6a23 ldr r3, [r4, #32] - 800a726: b11b cbz r3, 800a730 <__sinit+0x14> - 800a728: e8bd 4010 ldmia.w sp!, {r4, lr} - 800a72c: f7ff bff0 b.w 800a710 <__sfp_lock_release> - 800a730: 4b04 ldr r3, [pc, #16] @ (800a744 <__sinit+0x28>) - 800a732: 6223 str r3, [r4, #32] - 800a734: 4b04 ldr r3, [pc, #16] @ (800a748 <__sinit+0x2c>) - 800a736: 681b ldr r3, [r3, #0] - 800a738: 2b00 cmp r3, #0 - 800a73a: d1f5 bne.n 800a728 <__sinit+0xc> - 800a73c: f7ff ffc4 bl 800a6c8 - 800a740: e7f2 b.n 800a728 <__sinit+0xc> - 800a742: bf00 nop - 800a744: 0800a689 .word 0x0800a689 - 800a748: 20018d54 .word 0x20018d54 - -0800a74c <_fwalk_sglue>: - 800a74c: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - 800a750: 4607 mov r7, r0 - 800a752: 4688 mov r8, r1 - 800a754: 4614 mov r4, r2 - 800a756: 2600 movs r6, #0 - 800a758: e9d4 9501 ldrd r9, r5, [r4, #4] - 800a75c: f1b9 0901 subs.w r9, r9, #1 - 800a760: d505 bpl.n 800a76e <_fwalk_sglue+0x22> - 800a762: 6824 ldr r4, [r4, #0] - 800a764: 2c00 cmp r4, #0 - 800a766: d1f7 bne.n 800a758 <_fwalk_sglue+0xc> - 800a768: 4630 mov r0, r6 - 800a76a: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} - 800a76e: 89ab ldrh r3, [r5, #12] - 800a770: 2b01 cmp r3, #1 - 800a772: d907 bls.n 800a784 <_fwalk_sglue+0x38> - 800a774: f9b5 300e ldrsh.w r3, [r5, #14] - 800a778: 3301 adds r3, #1 - 800a77a: d003 beq.n 800a784 <_fwalk_sglue+0x38> - 800a77c: 4629 mov r1, r5 - 800a77e: 4638 mov r0, r7 - 800a780: 47c0 blx r8 - 800a782: 4306 orrs r6, r0 - 800a784: 3568 adds r5, #104 @ 0x68 - 800a786: e7e9 b.n 800a75c <_fwalk_sglue+0x10> - -0800a788 : - 800a788: b40f push {r0, r1, r2, r3} - 800a78a: b507 push {r0, r1, r2, lr} - 800a78c: 4906 ldr r1, [pc, #24] @ (800a7a8 ) - 800a78e: ab04 add r3, sp, #16 - 800a790: 6808 ldr r0, [r1, #0] - 800a792: f853 2b04 ldr.w r2, [r3], #4 - 800a796: 6881 ldr r1, [r0, #8] - 800a798: 9301 str r3, [sp, #4] - 800a79a: f000 fa27 bl 800abec <_vfiprintf_r> - 800a79e: b003 add sp, #12 - 800a7a0: f85d eb04 ldr.w lr, [sp], #4 - 800a7a4: b004 add sp, #16 - 800a7a6: 4770 bx lr - 800a7a8: 20000034 .word 0x20000034 - -0800a7ac <__sread>: - 800a7ac: b510 push {r4, lr} - 800a7ae: 460c mov r4, r1 - 800a7b0: f9b1 100e ldrsh.w r1, [r1, #14] - 800a7b4: f000 f878 bl 800a8a8 <_read_r> - 800a7b8: 2800 cmp r0, #0 - 800a7ba: bfab itete ge - 800a7bc: 6d63 ldrge r3, [r4, #84] @ 0x54 - 800a7be: 89a3 ldrhlt r3, [r4, #12] - 800a7c0: 181b addge r3, r3, r0 - 800a7c2: f423 5380 biclt.w r3, r3, #4096 @ 0x1000 - 800a7c6: bfac ite ge - 800a7c8: 6563 strge r3, [r4, #84] @ 0x54 - 800a7ca: 81a3 strhlt r3, [r4, #12] - 800a7cc: bd10 pop {r4, pc} - -0800a7ce <__swrite>: - 800a7ce: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 800a7d2: 461f mov r7, r3 - 800a7d4: 898b ldrh r3, [r1, #12] - 800a7d6: 05db lsls r3, r3, #23 - 800a7d8: 4605 mov r5, r0 - 800a7da: 460c mov r4, r1 - 800a7dc: 4616 mov r6, r2 - 800a7de: d505 bpl.n 800a7ec <__swrite+0x1e> - 800a7e0: f9b1 100e ldrsh.w r1, [r1, #14] - 800a7e4: 2302 movs r3, #2 - 800a7e6: 2200 movs r2, #0 - 800a7e8: f000 f84c bl 800a884 <_lseek_r> - 800a7ec: 89a3 ldrh r3, [r4, #12] - 800a7ee: f9b4 100e ldrsh.w r1, [r4, #14] - 800a7f2: f423 5380 bic.w r3, r3, #4096 @ 0x1000 - 800a7f6: 81a3 strh r3, [r4, #12] - 800a7f8: 4632 mov r2, r6 - 800a7fa: 463b mov r3, r7 - 800a7fc: 4628 mov r0, r5 - 800a7fe: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} - 800a802: f000 b863 b.w 800a8cc <_write_r> - -0800a806 <__sseek>: - 800a806: b510 push {r4, lr} - 800a808: 460c mov r4, r1 - 800a80a: f9b1 100e ldrsh.w r1, [r1, #14] - 800a80e: f000 f839 bl 800a884 <_lseek_r> - 800a812: 1c43 adds r3, r0, #1 - 800a814: 89a3 ldrh r3, [r4, #12] - 800a816: bf15 itete ne - 800a818: 6560 strne r0, [r4, #84] @ 0x54 - 800a81a: f423 5380 biceq.w r3, r3, #4096 @ 0x1000 - 800a81e: f443 5380 orrne.w r3, r3, #4096 @ 0x1000 - 800a822: 81a3 strheq r3, [r4, #12] - 800a824: bf18 it ne - 800a826: 81a3 strhne r3, [r4, #12] - 800a828: bd10 pop {r4, pc} - -0800a82a <__sclose>: - 800a82a: f9b1 100e ldrsh.w r1, [r1, #14] - 800a82e: f000 b819 b.w 800a864 <_close_r> - -0800a832 : - 800a832: b510 push {r4, lr} - 800a834: 3901 subs r1, #1 - 800a836: 4402 add r2, r0 - 800a838: 4290 cmp r0, r2 - 800a83a: d101 bne.n 800a840 - 800a83c: 2000 movs r0, #0 - 800a83e: e005 b.n 800a84c - 800a840: 7803 ldrb r3, [r0, #0] - 800a842: f811 4f01 ldrb.w r4, [r1, #1]! - 800a846: 42a3 cmp r3, r4 - 800a848: d001 beq.n 800a84e - 800a84a: 1b18 subs r0, r3, r4 - 800a84c: bd10 pop {r4, pc} - 800a84e: 3001 adds r0, #1 - 800a850: e7f2 b.n 800a838 - -0800a852 : - 800a852: 4402 add r2, r0 - 800a854: 4603 mov r3, r0 - 800a856: 4293 cmp r3, r2 - 800a858: d100 bne.n 800a85c - 800a85a: 4770 bx lr - 800a85c: f803 1b01 strb.w r1, [r3], #1 - 800a860: e7f9 b.n 800a856 - ... - -0800a864 <_close_r>: - 800a864: b538 push {r3, r4, r5, lr} - 800a866: 4d06 ldr r5, [pc, #24] @ (800a880 <_close_r+0x1c>) - 800a868: 2300 movs r3, #0 - 800a86a: 4604 mov r4, r0 - 800a86c: 4608 mov r0, r1 - 800a86e: 602b str r3, [r5, #0] - 800a870: f000 fe94 bl 800b59c <_close> - 800a874: 1c43 adds r3, r0, #1 - 800a876: d102 bne.n 800a87e <_close_r+0x1a> - 800a878: 682b ldr r3, [r5, #0] - 800a87a: b103 cbz r3, 800a87e <_close_r+0x1a> - 800a87c: 6023 str r3, [r4, #0] - 800a87e: bd38 pop {r3, r4, r5, pc} - 800a880: 20018d58 .word 0x20018d58 - -0800a884 <_lseek_r>: - 800a884: b538 push {r3, r4, r5, lr} - 800a886: 4d07 ldr r5, [pc, #28] @ (800a8a4 <_lseek_r+0x20>) - 800a888: 4604 mov r4, r0 - 800a88a: 4608 mov r0, r1 - 800a88c: 4611 mov r1, r2 - 800a88e: 2200 movs r2, #0 - 800a890: 602a str r2, [r5, #0] - 800a892: 461a mov r2, r3 - 800a894: f000 feaa bl 800b5ec <_lseek> - 800a898: 1c43 adds r3, r0, #1 - 800a89a: d102 bne.n 800a8a2 <_lseek_r+0x1e> - 800a89c: 682b ldr r3, [r5, #0] - 800a89e: b103 cbz r3, 800a8a2 <_lseek_r+0x1e> - 800a8a0: 6023 str r3, [r4, #0] - 800a8a2: bd38 pop {r3, r4, r5, pc} - 800a8a4: 20018d58 .word 0x20018d58 - -0800a8a8 <_read_r>: - 800a8a8: b538 push {r3, r4, r5, lr} - 800a8aa: 4d07 ldr r5, [pc, #28] @ (800a8c8 <_read_r+0x20>) - 800a8ac: 4604 mov r4, r0 - 800a8ae: 4608 mov r0, r1 - 800a8b0: 4611 mov r1, r2 - 800a8b2: 2200 movs r2, #0 - 800a8b4: 602a str r2, [r5, #0] - 800a8b6: 461a mov r2, r3 - 800a8b8: f000 fea0 bl 800b5fc <_read> - 800a8bc: 1c43 adds r3, r0, #1 - 800a8be: d102 bne.n 800a8c6 <_read_r+0x1e> - 800a8c0: 682b ldr r3, [r5, #0] - 800a8c2: b103 cbz r3, 800a8c6 <_read_r+0x1e> - 800a8c4: 6023 str r3, [r4, #0] - 800a8c6: bd38 pop {r3, r4, r5, pc} - 800a8c8: 20018d58 .word 0x20018d58 - -0800a8cc <_write_r>: - 800a8cc: b538 push {r3, r4, r5, lr} - 800a8ce: 4d07 ldr r5, [pc, #28] @ (800a8ec <_write_r+0x20>) - 800a8d0: 4604 mov r4, r0 - 800a8d2: 4608 mov r0, r1 - 800a8d4: 4611 mov r1, r2 - 800a8d6: 2200 movs r2, #0 - 800a8d8: 602a str r2, [r5, #0] - 800a8da: 461a mov r2, r3 - 800a8dc: f000 fea4 bl 800b628 <_write> - 800a8e0: 1c43 adds r3, r0, #1 - 800a8e2: d102 bne.n 800a8ea <_write_r+0x1e> - 800a8e4: 682b ldr r3, [r5, #0] - 800a8e6: b103 cbz r3, 800a8ea <_write_r+0x1e> - 800a8e8: 6023 str r3, [r4, #0] - 800a8ea: bd38 pop {r3, r4, r5, pc} - 800a8ec: 20018d58 .word 0x20018d58 - -0800a8f0 <__libc_init_array>: - 800a8f0: b570 push {r4, r5, r6, lr} - 800a8f2: 4d0d ldr r5, [pc, #52] @ (800a928 <__libc_init_array+0x38>) - 800a8f4: 4c0d ldr r4, [pc, #52] @ (800a92c <__libc_init_array+0x3c>) - 800a8f6: 1b64 subs r4, r4, r5 - 800a8f8: 10a4 asrs r4, r4, #2 - 800a8fa: 2600 movs r6, #0 - 800a8fc: 42a6 cmp r6, r4 - 800a8fe: d109 bne.n 800a914 <__libc_init_array+0x24> - 800a900: 4d0b ldr r5, [pc, #44] @ (800a930 <__libc_init_array+0x40>) - 800a902: 4c0c ldr r4, [pc, #48] @ (800a934 <__libc_init_array+0x44>) - 800a904: f000 fe9a bl 800b63c <_init> - 800a908: 1b64 subs r4, r4, r5 - 800a90a: 10a4 asrs r4, r4, #2 - 800a90c: 2600 movs r6, #0 - 800a90e: 42a6 cmp r6, r4 - 800a910: d105 bne.n 800a91e <__libc_init_array+0x2e> - 800a912: bd70 pop {r4, r5, r6, pc} - 800a914: f855 3b04 ldr.w r3, [r5], #4 - 800a918: 4798 blx r3 - 800a91a: 3601 adds r6, #1 - 800a91c: e7ee b.n 800a8fc <__libc_init_array+0xc> - 800a91e: f855 3b04 ldr.w r3, [r5], #4 - 800a922: 4798 blx r3 - 800a924: 3601 adds r6, #1 - 800a926: e7f2 b.n 800a90e <__libc_init_array+0x1e> - 800a928: 0800d934 .word 0x0800d934 - 800a92c: 0800d934 .word 0x0800d934 - 800a930: 0800d934 .word 0x0800d934 - 800a934: 0800d938 .word 0x0800d938 - -0800a938 <__retarget_lock_init_recursive>: - 800a938: 4770 bx lr - -0800a93a <__retarget_lock_acquire_recursive>: - 800a93a: 4770 bx lr - -0800a93c <__retarget_lock_release_recursive>: - 800a93c: 4770 bx lr - -0800a93e : - 800a93e: 440a add r2, r1 - 800a940: 4291 cmp r1, r2 - 800a942: f100 33ff add.w r3, r0, #4294967295 - 800a946: d100 bne.n 800a94a - 800a948: 4770 bx lr - 800a94a: b510 push {r4, lr} - 800a94c: f811 4b01 ldrb.w r4, [r1], #1 - 800a950: f803 4f01 strb.w r4, [r3, #1]! - 800a954: 4291 cmp r1, r2 - 800a956: d1f9 bne.n 800a94c - 800a958: bd10 pop {r4, pc} - ... - -0800a95c <__assert_func>: - 800a95c: b51f push {r0, r1, r2, r3, r4, lr} - 800a95e: 4614 mov r4, r2 - 800a960: 461a mov r2, r3 - 800a962: 4b09 ldr r3, [pc, #36] @ (800a988 <__assert_func+0x2c>) - 800a964: 681b ldr r3, [r3, #0] - 800a966: 4605 mov r5, r0 - 800a968: 68d8 ldr r0, [r3, #12] - 800a96a: b954 cbnz r4, 800a982 <__assert_func+0x26> - 800a96c: 4b07 ldr r3, [pc, #28] @ (800a98c <__assert_func+0x30>) - 800a96e: 461c mov r4, r3 - 800a970: e9cd 3401 strd r3, r4, [sp, #4] - 800a974: 9100 str r1, [sp, #0] - 800a976: 462b mov r3, r5 - 800a978: 4905 ldr r1, [pc, #20] @ (800a990 <__assert_func+0x34>) - 800a97a: f000 fc89 bl 800b290 - 800a97e: f000 fd3d bl 800b3fc - 800a982: 4b04 ldr r3, [pc, #16] @ (800a994 <__assert_func+0x38>) - 800a984: e7f4 b.n 800a970 <__assert_func+0x14> - 800a986: bf00 nop - 800a988: 20000034 .word 0x20000034 - 800a98c: 0800c1de .word 0x0800c1de - 800a990: 0800d8c7 .word 0x0800d8c7 - 800a994: 0800d8ba .word 0x0800d8ba - -0800a998 <_free_r>: - 800a998: b538 push {r3, r4, r5, lr} - 800a99a: 4605 mov r5, r0 - 800a99c: 2900 cmp r1, #0 - 800a99e: d041 beq.n 800aa24 <_free_r+0x8c> - 800a9a0: f851 3c04 ldr.w r3, [r1, #-4] - 800a9a4: 1f0c subs r4, r1, #4 - 800a9a6: 2b00 cmp r3, #0 - 800a9a8: bfb8 it lt - 800a9aa: 18e4 addlt r4, r4, r3 - 800a9ac: f000 f8e8 bl 800ab80 <__malloc_lock> - 800a9b0: 4a1d ldr r2, [pc, #116] @ (800aa28 <_free_r+0x90>) - 800a9b2: 6813 ldr r3, [r2, #0] - 800a9b4: b933 cbnz r3, 800a9c4 <_free_r+0x2c> - 800a9b6: 6063 str r3, [r4, #4] - 800a9b8: 6014 str r4, [r2, #0] - 800a9ba: 4628 mov r0, r5 - 800a9bc: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} - 800a9c0: f000 b8e4 b.w 800ab8c <__malloc_unlock> - 800a9c4: 42a3 cmp r3, r4 - 800a9c6: d908 bls.n 800a9da <_free_r+0x42> - 800a9c8: 6820 ldr r0, [r4, #0] - 800a9ca: 1821 adds r1, r4, r0 - 800a9cc: 428b cmp r3, r1 - 800a9ce: bf01 itttt eq - 800a9d0: 6819 ldreq r1, [r3, #0] - 800a9d2: 685b ldreq r3, [r3, #4] - 800a9d4: 1809 addeq r1, r1, r0 - 800a9d6: 6021 streq r1, [r4, #0] - 800a9d8: e7ed b.n 800a9b6 <_free_r+0x1e> - 800a9da: 461a mov r2, r3 - 800a9dc: 685b ldr r3, [r3, #4] - 800a9de: b10b cbz r3, 800a9e4 <_free_r+0x4c> - 800a9e0: 42a3 cmp r3, r4 - 800a9e2: d9fa bls.n 800a9da <_free_r+0x42> - 800a9e4: 6811 ldr r1, [r2, #0] - 800a9e6: 1850 adds r0, r2, r1 - 800a9e8: 42a0 cmp r0, r4 - 800a9ea: d10b bne.n 800aa04 <_free_r+0x6c> - 800a9ec: 6820 ldr r0, [r4, #0] - 800a9ee: 4401 add r1, r0 - 800a9f0: 1850 adds r0, r2, r1 - 800a9f2: 4283 cmp r3, r0 - 800a9f4: 6011 str r1, [r2, #0] - 800a9f6: d1e0 bne.n 800a9ba <_free_r+0x22> - 800a9f8: 6818 ldr r0, [r3, #0] - 800a9fa: 685b ldr r3, [r3, #4] - 800a9fc: 6053 str r3, [r2, #4] - 800a9fe: 4408 add r0, r1 - 800aa00: 6010 str r0, [r2, #0] - 800aa02: e7da b.n 800a9ba <_free_r+0x22> - 800aa04: d902 bls.n 800aa0c <_free_r+0x74> - 800aa06: 230c movs r3, #12 - 800aa08: 602b str r3, [r5, #0] - 800aa0a: e7d6 b.n 800a9ba <_free_r+0x22> - 800aa0c: 6820 ldr r0, [r4, #0] - 800aa0e: 1821 adds r1, r4, r0 - 800aa10: 428b cmp r3, r1 - 800aa12: bf04 itt eq - 800aa14: 6819 ldreq r1, [r3, #0] - 800aa16: 685b ldreq r3, [r3, #4] - 800aa18: 6063 str r3, [r4, #4] - 800aa1a: bf04 itt eq - 800aa1c: 1809 addeq r1, r1, r0 - 800aa1e: 6021 streq r1, [r4, #0] - 800aa20: 6054 str r4, [r2, #4] - 800aa22: e7ca b.n 800a9ba <_free_r+0x22> - 800aa24: bd38 pop {r3, r4, r5, pc} - 800aa26: bf00 nop - 800aa28: 20018d64 .word 0x20018d64 - -0800aa2c : - 800aa2c: 4b02 ldr r3, [pc, #8] @ (800aa38 ) - 800aa2e: 4601 mov r1, r0 - 800aa30: 6818 ldr r0, [r3, #0] - 800aa32: f000 b825 b.w 800aa80 <_malloc_r> - 800aa36: bf00 nop - 800aa38: 20000034 .word 0x20000034 - -0800aa3c : - 800aa3c: b570 push {r4, r5, r6, lr} - 800aa3e: 4e0f ldr r6, [pc, #60] @ (800aa7c ) - 800aa40: 460c mov r4, r1 - 800aa42: 6831 ldr r1, [r6, #0] - 800aa44: 4605 mov r5, r0 - 800aa46: b911 cbnz r1, 800aa4e - 800aa48: f000 fcc8 bl 800b3dc <_sbrk_r> - 800aa4c: 6030 str r0, [r6, #0] - 800aa4e: 4621 mov r1, r4 - 800aa50: 4628 mov r0, r5 - 800aa52: f000 fcc3 bl 800b3dc <_sbrk_r> - 800aa56: 1c43 adds r3, r0, #1 - 800aa58: d103 bne.n 800aa62 - 800aa5a: f04f 34ff mov.w r4, #4294967295 - 800aa5e: 4620 mov r0, r4 - 800aa60: bd70 pop {r4, r5, r6, pc} - 800aa62: 1cc4 adds r4, r0, #3 - 800aa64: f024 0403 bic.w r4, r4, #3 - 800aa68: 42a0 cmp r0, r4 - 800aa6a: d0f8 beq.n 800aa5e - 800aa6c: 1a21 subs r1, r4, r0 - 800aa6e: 4628 mov r0, r5 - 800aa70: f000 fcb4 bl 800b3dc <_sbrk_r> - 800aa74: 3001 adds r0, #1 - 800aa76: d1f2 bne.n 800aa5e - 800aa78: e7ef b.n 800aa5a - 800aa7a: bf00 nop - 800aa7c: 20018d60 .word 0x20018d60 - -0800aa80 <_malloc_r>: - 800aa80: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - 800aa84: 1ccd adds r5, r1, #3 - 800aa86: f025 0503 bic.w r5, r5, #3 - 800aa8a: 3508 adds r5, #8 - 800aa8c: 2d0c cmp r5, #12 - 800aa8e: bf38 it cc - 800aa90: 250c movcc r5, #12 - 800aa92: 2d00 cmp r5, #0 - 800aa94: 4606 mov r6, r0 - 800aa96: db01 blt.n 800aa9c <_malloc_r+0x1c> - 800aa98: 42a9 cmp r1, r5 - 800aa9a: d904 bls.n 800aaa6 <_malloc_r+0x26> - 800aa9c: 230c movs r3, #12 - 800aa9e: 6033 str r3, [r6, #0] - 800aaa0: 2000 movs r0, #0 - 800aaa2: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} - 800aaa6: f8df 80d4 ldr.w r8, [pc, #212] @ 800ab7c <_malloc_r+0xfc> - 800aaaa: f000 f869 bl 800ab80 <__malloc_lock> - 800aaae: f8d8 3000 ldr.w r3, [r8] - 800aab2: 461c mov r4, r3 - 800aab4: bb44 cbnz r4, 800ab08 <_malloc_r+0x88> - 800aab6: 4629 mov r1, r5 - 800aab8: 4630 mov r0, r6 - 800aaba: f7ff ffbf bl 800aa3c - 800aabe: 1c43 adds r3, r0, #1 - 800aac0: 4604 mov r4, r0 - 800aac2: d158 bne.n 800ab76 <_malloc_r+0xf6> - 800aac4: f8d8 4000 ldr.w r4, [r8] - 800aac8: 4627 mov r7, r4 - 800aaca: 2f00 cmp r7, #0 - 800aacc: d143 bne.n 800ab56 <_malloc_r+0xd6> - 800aace: 2c00 cmp r4, #0 - 800aad0: d04b beq.n 800ab6a <_malloc_r+0xea> - 800aad2: 6823 ldr r3, [r4, #0] - 800aad4: 4639 mov r1, r7 - 800aad6: 4630 mov r0, r6 - 800aad8: eb04 0903 add.w r9, r4, r3 - 800aadc: f000 fc7e bl 800b3dc <_sbrk_r> - 800aae0: 4581 cmp r9, r0 - 800aae2: d142 bne.n 800ab6a <_malloc_r+0xea> - 800aae4: 6821 ldr r1, [r4, #0] - 800aae6: 1a6d subs r5, r5, r1 - 800aae8: 4629 mov r1, r5 - 800aaea: 4630 mov r0, r6 - 800aaec: f7ff ffa6 bl 800aa3c - 800aaf0: 3001 adds r0, #1 - 800aaf2: d03a beq.n 800ab6a <_malloc_r+0xea> - 800aaf4: 6823 ldr r3, [r4, #0] - 800aaf6: 442b add r3, r5 - 800aaf8: 6023 str r3, [r4, #0] - 800aafa: f8d8 3000 ldr.w r3, [r8] - 800aafe: 685a ldr r2, [r3, #4] - 800ab00: bb62 cbnz r2, 800ab5c <_malloc_r+0xdc> - 800ab02: f8c8 7000 str.w r7, [r8] - 800ab06: e00f b.n 800ab28 <_malloc_r+0xa8> - 800ab08: 6822 ldr r2, [r4, #0] - 800ab0a: 1b52 subs r2, r2, r5 - 800ab0c: d420 bmi.n 800ab50 <_malloc_r+0xd0> - 800ab0e: 2a0b cmp r2, #11 - 800ab10: d917 bls.n 800ab42 <_malloc_r+0xc2> - 800ab12: 1961 adds r1, r4, r5 - 800ab14: 42a3 cmp r3, r4 - 800ab16: 6025 str r5, [r4, #0] - 800ab18: bf18 it ne - 800ab1a: 6059 strne r1, [r3, #4] - 800ab1c: 6863 ldr r3, [r4, #4] - 800ab1e: bf08 it eq - 800ab20: f8c8 1000 streq.w r1, [r8] - 800ab24: 5162 str r2, [r4, r5] - 800ab26: 604b str r3, [r1, #4] - 800ab28: 4630 mov r0, r6 - 800ab2a: f000 f82f bl 800ab8c <__malloc_unlock> - 800ab2e: f104 000b add.w r0, r4, #11 - 800ab32: 1d23 adds r3, r4, #4 - 800ab34: f020 0007 bic.w r0, r0, #7 - 800ab38: 1ac2 subs r2, r0, r3 - 800ab3a: bf1c itt ne - 800ab3c: 1a1b subne r3, r3, r0 - 800ab3e: 50a3 strne r3, [r4, r2] - 800ab40: e7af b.n 800aaa2 <_malloc_r+0x22> - 800ab42: 6862 ldr r2, [r4, #4] - 800ab44: 42a3 cmp r3, r4 - 800ab46: bf0c ite eq - 800ab48: f8c8 2000 streq.w r2, [r8] - 800ab4c: 605a strne r2, [r3, #4] - 800ab4e: e7eb b.n 800ab28 <_malloc_r+0xa8> - 800ab50: 4623 mov r3, r4 - 800ab52: 6864 ldr r4, [r4, #4] - 800ab54: e7ae b.n 800aab4 <_malloc_r+0x34> - 800ab56: 463c mov r4, r7 - 800ab58: 687f ldr r7, [r7, #4] - 800ab5a: e7b6 b.n 800aaca <_malloc_r+0x4a> - 800ab5c: 461a mov r2, r3 - 800ab5e: 685b ldr r3, [r3, #4] - 800ab60: 42a3 cmp r3, r4 - 800ab62: d1fb bne.n 800ab5c <_malloc_r+0xdc> - 800ab64: 2300 movs r3, #0 - 800ab66: 6053 str r3, [r2, #4] - 800ab68: e7de b.n 800ab28 <_malloc_r+0xa8> - 800ab6a: 230c movs r3, #12 - 800ab6c: 6033 str r3, [r6, #0] - 800ab6e: 4630 mov r0, r6 - 800ab70: f000 f80c bl 800ab8c <__malloc_unlock> - 800ab74: e794 b.n 800aaa0 <_malloc_r+0x20> - 800ab76: 6005 str r5, [r0, #0] - 800ab78: e7d6 b.n 800ab28 <_malloc_r+0xa8> - 800ab7a: bf00 nop - 800ab7c: 20018d64 .word 0x20018d64 - -0800ab80 <__malloc_lock>: - 800ab80: 4801 ldr r0, [pc, #4] @ (800ab88 <__malloc_lock+0x8>) - 800ab82: f7ff beda b.w 800a93a <__retarget_lock_acquire_recursive> - 800ab86: bf00 nop - 800ab88: 20018d5c .word 0x20018d5c - -0800ab8c <__malloc_unlock>: - 800ab8c: 4801 ldr r0, [pc, #4] @ (800ab94 <__malloc_unlock+0x8>) - 800ab8e: f7ff bed5 b.w 800a93c <__retarget_lock_release_recursive> - 800ab92: bf00 nop - 800ab94: 20018d5c .word 0x20018d5c - -0800ab98 <__sfputc_r>: - 800ab98: 6893 ldr r3, [r2, #8] - 800ab9a: 3b01 subs r3, #1 - 800ab9c: 2b00 cmp r3, #0 - 800ab9e: b410 push {r4} - 800aba0: 6093 str r3, [r2, #8] - 800aba2: da08 bge.n 800abb6 <__sfputc_r+0x1e> - 800aba4: 6994 ldr r4, [r2, #24] - 800aba6: 42a3 cmp r3, r4 - 800aba8: db01 blt.n 800abae <__sfputc_r+0x16> - 800abaa: 290a cmp r1, #10 - 800abac: d103 bne.n 800abb6 <__sfputc_r+0x1e> - 800abae: f85d 4b04 ldr.w r4, [sp], #4 - 800abb2: f000 bb7f b.w 800b2b4 <__swbuf_r> - 800abb6: 6813 ldr r3, [r2, #0] - 800abb8: 1c58 adds r0, r3, #1 - 800abba: 6010 str r0, [r2, #0] - 800abbc: 7019 strb r1, [r3, #0] - 800abbe: 4608 mov r0, r1 - 800abc0: f85d 4b04 ldr.w r4, [sp], #4 - 800abc4: 4770 bx lr - -0800abc6 <__sfputs_r>: - 800abc6: b5f8 push {r3, r4, r5, r6, r7, lr} - 800abc8: 4606 mov r6, r0 - 800abca: 460f mov r7, r1 - 800abcc: 4614 mov r4, r2 - 800abce: 18d5 adds r5, r2, r3 - 800abd0: 42ac cmp r4, r5 - 800abd2: d101 bne.n 800abd8 <__sfputs_r+0x12> - 800abd4: 2000 movs r0, #0 - 800abd6: e007 b.n 800abe8 <__sfputs_r+0x22> - 800abd8: f814 1b01 ldrb.w r1, [r4], #1 - 800abdc: 463a mov r2, r7 - 800abde: 4630 mov r0, r6 - 800abe0: f7ff ffda bl 800ab98 <__sfputc_r> - 800abe4: 1c43 adds r3, r0, #1 - 800abe6: d1f3 bne.n 800abd0 <__sfputs_r+0xa> - 800abe8: bdf8 pop {r3, r4, r5, r6, r7, pc} - ... - -0800abec <_vfiprintf_r>: - 800abec: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 800abf0: 460d mov r5, r1 - 800abf2: b09d sub sp, #116 @ 0x74 - 800abf4: 4614 mov r4, r2 - 800abf6: 4698 mov r8, r3 - 800abf8: 4606 mov r6, r0 - 800abfa: b118 cbz r0, 800ac04 <_vfiprintf_r+0x18> - 800abfc: 6a03 ldr r3, [r0, #32] - 800abfe: b90b cbnz r3, 800ac04 <_vfiprintf_r+0x18> - 800ac00: f7ff fd8c bl 800a71c <__sinit> - 800ac04: 6e6b ldr r3, [r5, #100] @ 0x64 - 800ac06: 07d9 lsls r1, r3, #31 - 800ac08: d405 bmi.n 800ac16 <_vfiprintf_r+0x2a> - 800ac0a: 89ab ldrh r3, [r5, #12] - 800ac0c: 059a lsls r2, r3, #22 - 800ac0e: d402 bmi.n 800ac16 <_vfiprintf_r+0x2a> - 800ac10: 6da8 ldr r0, [r5, #88] @ 0x58 - 800ac12: f7ff fe92 bl 800a93a <__retarget_lock_acquire_recursive> - 800ac16: 89ab ldrh r3, [r5, #12] - 800ac18: 071b lsls r3, r3, #28 - 800ac1a: d501 bpl.n 800ac20 <_vfiprintf_r+0x34> - 800ac1c: 692b ldr r3, [r5, #16] - 800ac1e: b99b cbnz r3, 800ac48 <_vfiprintf_r+0x5c> - 800ac20: 4629 mov r1, r5 - 800ac22: 4630 mov r0, r6 - 800ac24: f000 fb84 bl 800b330 <__swsetup_r> - 800ac28: b170 cbz r0, 800ac48 <_vfiprintf_r+0x5c> - 800ac2a: 6e6b ldr r3, [r5, #100] @ 0x64 - 800ac2c: 07dc lsls r4, r3, #31 - 800ac2e: d504 bpl.n 800ac3a <_vfiprintf_r+0x4e> - 800ac30: f04f 30ff mov.w r0, #4294967295 - 800ac34: b01d add sp, #116 @ 0x74 - 800ac36: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 800ac3a: 89ab ldrh r3, [r5, #12] - 800ac3c: 0598 lsls r0, r3, #22 - 800ac3e: d4f7 bmi.n 800ac30 <_vfiprintf_r+0x44> - 800ac40: 6da8 ldr r0, [r5, #88] @ 0x58 - 800ac42: f7ff fe7b bl 800a93c <__retarget_lock_release_recursive> - 800ac46: e7f3 b.n 800ac30 <_vfiprintf_r+0x44> - 800ac48: 2300 movs r3, #0 - 800ac4a: 9309 str r3, [sp, #36] @ 0x24 - 800ac4c: 2320 movs r3, #32 - 800ac4e: f88d 3029 strb.w r3, [sp, #41] @ 0x29 - 800ac52: f8cd 800c str.w r8, [sp, #12] - 800ac56: 2330 movs r3, #48 @ 0x30 - 800ac58: f8df 81ac ldr.w r8, [pc, #428] @ 800ae08 <_vfiprintf_r+0x21c> - 800ac5c: f88d 302a strb.w r3, [sp, #42] @ 0x2a - 800ac60: f04f 0901 mov.w r9, #1 - 800ac64: 4623 mov r3, r4 - 800ac66: 469a mov sl, r3 - 800ac68: f813 2b01 ldrb.w r2, [r3], #1 - 800ac6c: b10a cbz r2, 800ac72 <_vfiprintf_r+0x86> - 800ac6e: 2a25 cmp r2, #37 @ 0x25 - 800ac70: d1f9 bne.n 800ac66 <_vfiprintf_r+0x7a> - 800ac72: ebba 0b04 subs.w fp, sl, r4 - 800ac76: d00b beq.n 800ac90 <_vfiprintf_r+0xa4> - 800ac78: 465b mov r3, fp - 800ac7a: 4622 mov r2, r4 - 800ac7c: 4629 mov r1, r5 - 800ac7e: 4630 mov r0, r6 - 800ac80: f7ff ffa1 bl 800abc6 <__sfputs_r> - 800ac84: 3001 adds r0, #1 - 800ac86: f000 80a7 beq.w 800add8 <_vfiprintf_r+0x1ec> - 800ac8a: 9a09 ldr r2, [sp, #36] @ 0x24 - 800ac8c: 445a add r2, fp - 800ac8e: 9209 str r2, [sp, #36] @ 0x24 - 800ac90: f89a 3000 ldrb.w r3, [sl] - 800ac94: 2b00 cmp r3, #0 - 800ac96: f000 809f beq.w 800add8 <_vfiprintf_r+0x1ec> - 800ac9a: 2300 movs r3, #0 - 800ac9c: f04f 32ff mov.w r2, #4294967295 - 800aca0: e9cd 2305 strd r2, r3, [sp, #20] - 800aca4: f10a 0a01 add.w sl, sl, #1 - 800aca8: 9304 str r3, [sp, #16] - 800acaa: 9307 str r3, [sp, #28] - 800acac: f88d 3053 strb.w r3, [sp, #83] @ 0x53 - 800acb0: 931a str r3, [sp, #104] @ 0x68 - 800acb2: 4654 mov r4, sl - 800acb4: 2205 movs r2, #5 - 800acb6: f814 1b01 ldrb.w r1, [r4], #1 - 800acba: 4853 ldr r0, [pc, #332] @ (800ae08 <_vfiprintf_r+0x21c>) - 800acbc: f7f5 fa98 bl 80001f0 - 800acc0: 9a04 ldr r2, [sp, #16] - 800acc2: b9d8 cbnz r0, 800acfc <_vfiprintf_r+0x110> - 800acc4: 06d1 lsls r1, r2, #27 - 800acc6: bf44 itt mi - 800acc8: 2320 movmi r3, #32 - 800acca: f88d 3053 strbmi.w r3, [sp, #83] @ 0x53 - 800acce: 0713 lsls r3, r2, #28 - 800acd0: bf44 itt mi - 800acd2: 232b movmi r3, #43 @ 0x2b - 800acd4: f88d 3053 strbmi.w r3, [sp, #83] @ 0x53 - 800acd8: f89a 3000 ldrb.w r3, [sl] - 800acdc: 2b2a cmp r3, #42 @ 0x2a - 800acde: d015 beq.n 800ad0c <_vfiprintf_r+0x120> - 800ace0: 9a07 ldr r2, [sp, #28] - 800ace2: 4654 mov r4, sl - 800ace4: 2000 movs r0, #0 - 800ace6: f04f 0c0a mov.w ip, #10 - 800acea: 4621 mov r1, r4 - 800acec: f811 3b01 ldrb.w r3, [r1], #1 - 800acf0: 3b30 subs r3, #48 @ 0x30 - 800acf2: 2b09 cmp r3, #9 - 800acf4: d94b bls.n 800ad8e <_vfiprintf_r+0x1a2> - 800acf6: b1b0 cbz r0, 800ad26 <_vfiprintf_r+0x13a> - 800acf8: 9207 str r2, [sp, #28] - 800acfa: e014 b.n 800ad26 <_vfiprintf_r+0x13a> - 800acfc: eba0 0308 sub.w r3, r0, r8 - 800ad00: fa09 f303 lsl.w r3, r9, r3 - 800ad04: 4313 orrs r3, r2 - 800ad06: 9304 str r3, [sp, #16] - 800ad08: 46a2 mov sl, r4 - 800ad0a: e7d2 b.n 800acb2 <_vfiprintf_r+0xc6> - 800ad0c: 9b03 ldr r3, [sp, #12] - 800ad0e: 1d19 adds r1, r3, #4 - 800ad10: 681b ldr r3, [r3, #0] - 800ad12: 9103 str r1, [sp, #12] - 800ad14: 2b00 cmp r3, #0 - 800ad16: bfbb ittet lt - 800ad18: 425b neglt r3, r3 - 800ad1a: f042 0202 orrlt.w r2, r2, #2 - 800ad1e: 9307 strge r3, [sp, #28] - 800ad20: 9307 strlt r3, [sp, #28] - 800ad22: bfb8 it lt - 800ad24: 9204 strlt r2, [sp, #16] - 800ad26: 7823 ldrb r3, [r4, #0] - 800ad28: 2b2e cmp r3, #46 @ 0x2e - 800ad2a: d10a bne.n 800ad42 <_vfiprintf_r+0x156> - 800ad2c: 7863 ldrb r3, [r4, #1] - 800ad2e: 2b2a cmp r3, #42 @ 0x2a - 800ad30: d132 bne.n 800ad98 <_vfiprintf_r+0x1ac> - 800ad32: 9b03 ldr r3, [sp, #12] - 800ad34: 1d1a adds r2, r3, #4 - 800ad36: 681b ldr r3, [r3, #0] - 800ad38: 9203 str r2, [sp, #12] - 800ad3a: ea43 73e3 orr.w r3, r3, r3, asr #31 - 800ad3e: 3402 adds r4, #2 - 800ad40: 9305 str r3, [sp, #20] - 800ad42: f8df a0d4 ldr.w sl, [pc, #212] @ 800ae18 <_vfiprintf_r+0x22c> - 800ad46: 7821 ldrb r1, [r4, #0] - 800ad48: 2203 movs r2, #3 - 800ad4a: 4650 mov r0, sl - 800ad4c: f7f5 fa50 bl 80001f0 - 800ad50: b138 cbz r0, 800ad62 <_vfiprintf_r+0x176> - 800ad52: 9b04 ldr r3, [sp, #16] - 800ad54: eba0 000a sub.w r0, r0, sl - 800ad58: 2240 movs r2, #64 @ 0x40 - 800ad5a: 4082 lsls r2, r0 - 800ad5c: 4313 orrs r3, r2 - 800ad5e: 3401 adds r4, #1 - 800ad60: 9304 str r3, [sp, #16] - 800ad62: f814 1b01 ldrb.w r1, [r4], #1 - 800ad66: 4829 ldr r0, [pc, #164] @ (800ae0c <_vfiprintf_r+0x220>) - 800ad68: f88d 1028 strb.w r1, [sp, #40] @ 0x28 - 800ad6c: 2206 movs r2, #6 - 800ad6e: f7f5 fa3f bl 80001f0 - 800ad72: 2800 cmp r0, #0 - 800ad74: d03f beq.n 800adf6 <_vfiprintf_r+0x20a> - 800ad76: 4b26 ldr r3, [pc, #152] @ (800ae10 <_vfiprintf_r+0x224>) - 800ad78: bb1b cbnz r3, 800adc2 <_vfiprintf_r+0x1d6> - 800ad7a: 9b03 ldr r3, [sp, #12] - 800ad7c: 3307 adds r3, #7 - 800ad7e: f023 0307 bic.w r3, r3, #7 - 800ad82: 3308 adds r3, #8 - 800ad84: 9303 str r3, [sp, #12] - 800ad86: 9b09 ldr r3, [sp, #36] @ 0x24 - 800ad88: 443b add r3, r7 - 800ad8a: 9309 str r3, [sp, #36] @ 0x24 - 800ad8c: e76a b.n 800ac64 <_vfiprintf_r+0x78> - 800ad8e: fb0c 3202 mla r2, ip, r2, r3 - 800ad92: 460c mov r4, r1 - 800ad94: 2001 movs r0, #1 - 800ad96: e7a8 b.n 800acea <_vfiprintf_r+0xfe> - 800ad98: 2300 movs r3, #0 - 800ad9a: 3401 adds r4, #1 - 800ad9c: 9305 str r3, [sp, #20] - 800ad9e: 4619 mov r1, r3 - 800ada0: f04f 0c0a mov.w ip, #10 - 800ada4: 4620 mov r0, r4 - 800ada6: f810 2b01 ldrb.w r2, [r0], #1 - 800adaa: 3a30 subs r2, #48 @ 0x30 - 800adac: 2a09 cmp r2, #9 - 800adae: d903 bls.n 800adb8 <_vfiprintf_r+0x1cc> - 800adb0: 2b00 cmp r3, #0 - 800adb2: d0c6 beq.n 800ad42 <_vfiprintf_r+0x156> - 800adb4: 9105 str r1, [sp, #20] - 800adb6: e7c4 b.n 800ad42 <_vfiprintf_r+0x156> - 800adb8: fb0c 2101 mla r1, ip, r1, r2 - 800adbc: 4604 mov r4, r0 - 800adbe: 2301 movs r3, #1 - 800adc0: e7f0 b.n 800ada4 <_vfiprintf_r+0x1b8> - 800adc2: ab03 add r3, sp, #12 - 800adc4: 9300 str r3, [sp, #0] - 800adc6: 462a mov r2, r5 - 800adc8: 4b12 ldr r3, [pc, #72] @ (800ae14 <_vfiprintf_r+0x228>) - 800adca: a904 add r1, sp, #16 - 800adcc: 4630 mov r0, r6 - 800adce: f3af 8000 nop.w - 800add2: 4607 mov r7, r0 - 800add4: 1c78 adds r0, r7, #1 - 800add6: d1d6 bne.n 800ad86 <_vfiprintf_r+0x19a> - 800add8: 6e6b ldr r3, [r5, #100] @ 0x64 - 800adda: 07d9 lsls r1, r3, #31 - 800addc: d405 bmi.n 800adea <_vfiprintf_r+0x1fe> - 800adde: 89ab ldrh r3, [r5, #12] - 800ade0: 059a lsls r2, r3, #22 - 800ade2: d402 bmi.n 800adea <_vfiprintf_r+0x1fe> - 800ade4: 6da8 ldr r0, [r5, #88] @ 0x58 - 800ade6: f7ff fda9 bl 800a93c <__retarget_lock_release_recursive> - 800adea: 89ab ldrh r3, [r5, #12] - 800adec: 065b lsls r3, r3, #25 - 800adee: f53f af1f bmi.w 800ac30 <_vfiprintf_r+0x44> - 800adf2: 9809 ldr r0, [sp, #36] @ 0x24 - 800adf4: e71e b.n 800ac34 <_vfiprintf_r+0x48> - 800adf6: ab03 add r3, sp, #12 - 800adf8: 9300 str r3, [sp, #0] - 800adfa: 462a mov r2, r5 - 800adfc: 4b05 ldr r3, [pc, #20] @ (800ae14 <_vfiprintf_r+0x228>) - 800adfe: a904 add r1, sp, #16 - 800ae00: 4630 mov r0, r6 - 800ae02: f000 f879 bl 800aef8 <_printf_i> - 800ae06: e7e4 b.n 800add2 <_vfiprintf_r+0x1e6> - 800ae08: 0800d8f6 .word 0x0800d8f6 - 800ae0c: 0800d900 .word 0x0800d900 - 800ae10: 00000000 .word 0x00000000 - 800ae14: 0800abc7 .word 0x0800abc7 - 800ae18: 0800d8fc .word 0x0800d8fc - -0800ae1c <_printf_common>: - 800ae1c: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 800ae20: 4616 mov r6, r2 - 800ae22: 4698 mov r8, r3 - 800ae24: 688a ldr r2, [r1, #8] - 800ae26: 690b ldr r3, [r1, #16] - 800ae28: f8dd 9020 ldr.w r9, [sp, #32] - 800ae2c: 4293 cmp r3, r2 - 800ae2e: bfb8 it lt - 800ae30: 4613 movlt r3, r2 - 800ae32: 6033 str r3, [r6, #0] - 800ae34: f891 2043 ldrb.w r2, [r1, #67] @ 0x43 - 800ae38: 4607 mov r7, r0 - 800ae3a: 460c mov r4, r1 - 800ae3c: b10a cbz r2, 800ae42 <_printf_common+0x26> - 800ae3e: 3301 adds r3, #1 - 800ae40: 6033 str r3, [r6, #0] - 800ae42: 6823 ldr r3, [r4, #0] - 800ae44: 0699 lsls r1, r3, #26 - 800ae46: bf42 ittt mi - 800ae48: 6833 ldrmi r3, [r6, #0] - 800ae4a: 3302 addmi r3, #2 - 800ae4c: 6033 strmi r3, [r6, #0] - 800ae4e: 6825 ldr r5, [r4, #0] - 800ae50: f015 0506 ands.w r5, r5, #6 - 800ae54: d106 bne.n 800ae64 <_printf_common+0x48> - 800ae56: f104 0a19 add.w sl, r4, #25 - 800ae5a: 68e3 ldr r3, [r4, #12] - 800ae5c: 6832 ldr r2, [r6, #0] - 800ae5e: 1a9b subs r3, r3, r2 - 800ae60: 42ab cmp r3, r5 - 800ae62: dc26 bgt.n 800aeb2 <_printf_common+0x96> - 800ae64: f894 3043 ldrb.w r3, [r4, #67] @ 0x43 - 800ae68: 6822 ldr r2, [r4, #0] - 800ae6a: 3b00 subs r3, #0 - 800ae6c: bf18 it ne - 800ae6e: 2301 movne r3, #1 - 800ae70: 0692 lsls r2, r2, #26 - 800ae72: d42b bmi.n 800aecc <_printf_common+0xb0> - 800ae74: f104 0243 add.w r2, r4, #67 @ 0x43 - 800ae78: 4641 mov r1, r8 - 800ae7a: 4638 mov r0, r7 - 800ae7c: 47c8 blx r9 - 800ae7e: 3001 adds r0, #1 - 800ae80: d01e beq.n 800aec0 <_printf_common+0xa4> - 800ae82: 6823 ldr r3, [r4, #0] - 800ae84: 6922 ldr r2, [r4, #16] - 800ae86: f003 0306 and.w r3, r3, #6 - 800ae8a: 2b04 cmp r3, #4 - 800ae8c: bf02 ittt eq - 800ae8e: 68e5 ldreq r5, [r4, #12] - 800ae90: 6833 ldreq r3, [r6, #0] - 800ae92: 1aed subeq r5, r5, r3 - 800ae94: 68a3 ldr r3, [r4, #8] - 800ae96: bf0c ite eq - 800ae98: ea25 75e5 biceq.w r5, r5, r5, asr #31 - 800ae9c: 2500 movne r5, #0 - 800ae9e: 4293 cmp r3, r2 - 800aea0: bfc4 itt gt - 800aea2: 1a9b subgt r3, r3, r2 - 800aea4: 18ed addgt r5, r5, r3 - 800aea6: 2600 movs r6, #0 - 800aea8: 341a adds r4, #26 - 800aeaa: 42b5 cmp r5, r6 - 800aeac: d11a bne.n 800aee4 <_printf_common+0xc8> - 800aeae: 2000 movs r0, #0 - 800aeb0: e008 b.n 800aec4 <_printf_common+0xa8> - 800aeb2: 2301 movs r3, #1 - 800aeb4: 4652 mov r2, sl - 800aeb6: 4641 mov r1, r8 - 800aeb8: 4638 mov r0, r7 - 800aeba: 47c8 blx r9 - 800aebc: 3001 adds r0, #1 - 800aebe: d103 bne.n 800aec8 <_printf_common+0xac> - 800aec0: f04f 30ff mov.w r0, #4294967295 - 800aec4: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 800aec8: 3501 adds r5, #1 - 800aeca: e7c6 b.n 800ae5a <_printf_common+0x3e> - 800aecc: 18e1 adds r1, r4, r3 - 800aece: 1c5a adds r2, r3, #1 - 800aed0: 2030 movs r0, #48 @ 0x30 - 800aed2: f881 0043 strb.w r0, [r1, #67] @ 0x43 - 800aed6: 4422 add r2, r4 - 800aed8: f894 1045 ldrb.w r1, [r4, #69] @ 0x45 - 800aedc: f882 1043 strb.w r1, [r2, #67] @ 0x43 - 800aee0: 3302 adds r3, #2 - 800aee2: e7c7 b.n 800ae74 <_printf_common+0x58> - 800aee4: 2301 movs r3, #1 - 800aee6: 4622 mov r2, r4 - 800aee8: 4641 mov r1, r8 - 800aeea: 4638 mov r0, r7 - 800aeec: 47c8 blx r9 - 800aeee: 3001 adds r0, #1 - 800aef0: d0e6 beq.n 800aec0 <_printf_common+0xa4> - 800aef2: 3601 adds r6, #1 - 800aef4: e7d9 b.n 800aeaa <_printf_common+0x8e> - ... - -0800aef8 <_printf_i>: - 800aef8: e92d 47ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, lr} - 800aefc: 7e0f ldrb r7, [r1, #24] - 800aefe: 9e0c ldr r6, [sp, #48] @ 0x30 - 800af00: 2f78 cmp r7, #120 @ 0x78 - 800af02: 4691 mov r9, r2 - 800af04: 4680 mov r8, r0 - 800af06: 460c mov r4, r1 - 800af08: 469a mov sl, r3 - 800af0a: f101 0243 add.w r2, r1, #67 @ 0x43 - 800af0e: d807 bhi.n 800af20 <_printf_i+0x28> - 800af10: 2f62 cmp r7, #98 @ 0x62 - 800af12: d80a bhi.n 800af2a <_printf_i+0x32> - 800af14: 2f00 cmp r7, #0 - 800af16: f000 80d2 beq.w 800b0be <_printf_i+0x1c6> - 800af1a: 2f58 cmp r7, #88 @ 0x58 - 800af1c: f000 80b9 beq.w 800b092 <_printf_i+0x19a> - 800af20: f104 0642 add.w r6, r4, #66 @ 0x42 - 800af24: f884 7042 strb.w r7, [r4, #66] @ 0x42 - 800af28: e03a b.n 800afa0 <_printf_i+0xa8> - 800af2a: f1a7 0363 sub.w r3, r7, #99 @ 0x63 - 800af2e: 2b15 cmp r3, #21 - 800af30: d8f6 bhi.n 800af20 <_printf_i+0x28> - 800af32: a101 add r1, pc, #4 @ (adr r1, 800af38 <_printf_i+0x40>) - 800af34: f851 f023 ldr.w pc, [r1, r3, lsl #2] - 800af38: 0800af91 .word 0x0800af91 - 800af3c: 0800afa5 .word 0x0800afa5 - 800af40: 0800af21 .word 0x0800af21 - 800af44: 0800af21 .word 0x0800af21 - 800af48: 0800af21 .word 0x0800af21 - 800af4c: 0800af21 .word 0x0800af21 - 800af50: 0800afa5 .word 0x0800afa5 - 800af54: 0800af21 .word 0x0800af21 - 800af58: 0800af21 .word 0x0800af21 - 800af5c: 0800af21 .word 0x0800af21 - 800af60: 0800af21 .word 0x0800af21 - 800af64: 0800b0a5 .word 0x0800b0a5 - 800af68: 0800afcf .word 0x0800afcf - 800af6c: 0800b05f .word 0x0800b05f - 800af70: 0800af21 .word 0x0800af21 - 800af74: 0800af21 .word 0x0800af21 - 800af78: 0800b0c7 .word 0x0800b0c7 - 800af7c: 0800af21 .word 0x0800af21 - 800af80: 0800afcf .word 0x0800afcf - 800af84: 0800af21 .word 0x0800af21 - 800af88: 0800af21 .word 0x0800af21 - 800af8c: 0800b067 .word 0x0800b067 - 800af90: 6833 ldr r3, [r6, #0] - 800af92: 1d1a adds r2, r3, #4 - 800af94: 681b ldr r3, [r3, #0] - 800af96: 6032 str r2, [r6, #0] - 800af98: f104 0642 add.w r6, r4, #66 @ 0x42 - 800af9c: f884 3042 strb.w r3, [r4, #66] @ 0x42 - 800afa0: 2301 movs r3, #1 - 800afa2: e09d b.n 800b0e0 <_printf_i+0x1e8> - 800afa4: 6833 ldr r3, [r6, #0] - 800afa6: 6820 ldr r0, [r4, #0] - 800afa8: 1d19 adds r1, r3, #4 - 800afaa: 6031 str r1, [r6, #0] - 800afac: 0606 lsls r6, r0, #24 - 800afae: d501 bpl.n 800afb4 <_printf_i+0xbc> - 800afb0: 681d ldr r5, [r3, #0] - 800afb2: e003 b.n 800afbc <_printf_i+0xc4> - 800afb4: 0645 lsls r5, r0, #25 - 800afb6: d5fb bpl.n 800afb0 <_printf_i+0xb8> - 800afb8: f9b3 5000 ldrsh.w r5, [r3] - 800afbc: 2d00 cmp r5, #0 - 800afbe: da03 bge.n 800afc8 <_printf_i+0xd0> - 800afc0: 232d movs r3, #45 @ 0x2d - 800afc2: 426d negs r5, r5 - 800afc4: f884 3043 strb.w r3, [r4, #67] @ 0x43 - 800afc8: 4859 ldr r0, [pc, #356] @ (800b130 <_printf_i+0x238>) - 800afca: 230a movs r3, #10 - 800afcc: e011 b.n 800aff2 <_printf_i+0xfa> - 800afce: 6821 ldr r1, [r4, #0] - 800afd0: 6833 ldr r3, [r6, #0] - 800afd2: 0608 lsls r0, r1, #24 - 800afd4: f853 5b04 ldr.w r5, [r3], #4 - 800afd8: d402 bmi.n 800afe0 <_printf_i+0xe8> - 800afda: 0649 lsls r1, r1, #25 - 800afdc: bf48 it mi - 800afde: b2ad uxthmi r5, r5 - 800afe0: 2f6f cmp r7, #111 @ 0x6f - 800afe2: 4853 ldr r0, [pc, #332] @ (800b130 <_printf_i+0x238>) - 800afe4: 6033 str r3, [r6, #0] - 800afe6: bf14 ite ne - 800afe8: 230a movne r3, #10 - 800afea: 2308 moveq r3, #8 - 800afec: 2100 movs r1, #0 - 800afee: f884 1043 strb.w r1, [r4, #67] @ 0x43 - 800aff2: 6866 ldr r6, [r4, #4] - 800aff4: 60a6 str r6, [r4, #8] - 800aff6: 2e00 cmp r6, #0 - 800aff8: bfa2 ittt ge - 800affa: 6821 ldrge r1, [r4, #0] - 800affc: f021 0104 bicge.w r1, r1, #4 - 800b000: 6021 strge r1, [r4, #0] - 800b002: b90d cbnz r5, 800b008 <_printf_i+0x110> - 800b004: 2e00 cmp r6, #0 - 800b006: d04b beq.n 800b0a0 <_printf_i+0x1a8> - 800b008: 4616 mov r6, r2 - 800b00a: fbb5 f1f3 udiv r1, r5, r3 - 800b00e: fb03 5711 mls r7, r3, r1, r5 - 800b012: 5dc7 ldrb r7, [r0, r7] - 800b014: f806 7d01 strb.w r7, [r6, #-1]! - 800b018: 462f mov r7, r5 - 800b01a: 42bb cmp r3, r7 - 800b01c: 460d mov r5, r1 - 800b01e: d9f4 bls.n 800b00a <_printf_i+0x112> - 800b020: 2b08 cmp r3, #8 - 800b022: d10b bne.n 800b03c <_printf_i+0x144> - 800b024: 6823 ldr r3, [r4, #0] - 800b026: 07df lsls r7, r3, #31 - 800b028: d508 bpl.n 800b03c <_printf_i+0x144> - 800b02a: 6923 ldr r3, [r4, #16] - 800b02c: 6861 ldr r1, [r4, #4] - 800b02e: 4299 cmp r1, r3 - 800b030: bfde ittt le - 800b032: 2330 movle r3, #48 @ 0x30 - 800b034: f806 3c01 strble.w r3, [r6, #-1] - 800b038: f106 36ff addle.w r6, r6, #4294967295 - 800b03c: 1b92 subs r2, r2, r6 - 800b03e: 6122 str r2, [r4, #16] - 800b040: f8cd a000 str.w sl, [sp] - 800b044: 464b mov r3, r9 - 800b046: aa03 add r2, sp, #12 - 800b048: 4621 mov r1, r4 - 800b04a: 4640 mov r0, r8 - 800b04c: f7ff fee6 bl 800ae1c <_printf_common> - 800b050: 3001 adds r0, #1 - 800b052: d14a bne.n 800b0ea <_printf_i+0x1f2> - 800b054: f04f 30ff mov.w r0, #4294967295 - 800b058: b004 add sp, #16 - 800b05a: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 800b05e: 6823 ldr r3, [r4, #0] - 800b060: f043 0320 orr.w r3, r3, #32 - 800b064: 6023 str r3, [r4, #0] - 800b066: 4833 ldr r0, [pc, #204] @ (800b134 <_printf_i+0x23c>) - 800b068: 2778 movs r7, #120 @ 0x78 - 800b06a: f884 7045 strb.w r7, [r4, #69] @ 0x45 - 800b06e: 6823 ldr r3, [r4, #0] - 800b070: 6831 ldr r1, [r6, #0] - 800b072: 061f lsls r7, r3, #24 - 800b074: f851 5b04 ldr.w r5, [r1], #4 - 800b078: d402 bmi.n 800b080 <_printf_i+0x188> - 800b07a: 065f lsls r7, r3, #25 - 800b07c: bf48 it mi - 800b07e: b2ad uxthmi r5, r5 - 800b080: 6031 str r1, [r6, #0] - 800b082: 07d9 lsls r1, r3, #31 - 800b084: bf44 itt mi - 800b086: f043 0320 orrmi.w r3, r3, #32 - 800b08a: 6023 strmi r3, [r4, #0] - 800b08c: b11d cbz r5, 800b096 <_printf_i+0x19e> - 800b08e: 2310 movs r3, #16 - 800b090: e7ac b.n 800afec <_printf_i+0xf4> - 800b092: 4827 ldr r0, [pc, #156] @ (800b130 <_printf_i+0x238>) - 800b094: e7e9 b.n 800b06a <_printf_i+0x172> - 800b096: 6823 ldr r3, [r4, #0] - 800b098: f023 0320 bic.w r3, r3, #32 - 800b09c: 6023 str r3, [r4, #0] - 800b09e: e7f6 b.n 800b08e <_printf_i+0x196> - 800b0a0: 4616 mov r6, r2 - 800b0a2: e7bd b.n 800b020 <_printf_i+0x128> - 800b0a4: 6833 ldr r3, [r6, #0] - 800b0a6: 6825 ldr r5, [r4, #0] - 800b0a8: 6961 ldr r1, [r4, #20] - 800b0aa: 1d18 adds r0, r3, #4 - 800b0ac: 6030 str r0, [r6, #0] - 800b0ae: 062e lsls r6, r5, #24 - 800b0b0: 681b ldr r3, [r3, #0] - 800b0b2: d501 bpl.n 800b0b8 <_printf_i+0x1c0> - 800b0b4: 6019 str r1, [r3, #0] - 800b0b6: e002 b.n 800b0be <_printf_i+0x1c6> - 800b0b8: 0668 lsls r0, r5, #25 - 800b0ba: d5fb bpl.n 800b0b4 <_printf_i+0x1bc> - 800b0bc: 8019 strh r1, [r3, #0] - 800b0be: 2300 movs r3, #0 - 800b0c0: 6123 str r3, [r4, #16] - 800b0c2: 4616 mov r6, r2 - 800b0c4: e7bc b.n 800b040 <_printf_i+0x148> - 800b0c6: 6833 ldr r3, [r6, #0] - 800b0c8: 1d1a adds r2, r3, #4 - 800b0ca: 6032 str r2, [r6, #0] - 800b0cc: 681e ldr r6, [r3, #0] - 800b0ce: 6862 ldr r2, [r4, #4] - 800b0d0: 2100 movs r1, #0 - 800b0d2: 4630 mov r0, r6 - 800b0d4: f7f5 f88c bl 80001f0 - 800b0d8: b108 cbz r0, 800b0de <_printf_i+0x1e6> - 800b0da: 1b80 subs r0, r0, r6 - 800b0dc: 6060 str r0, [r4, #4] - 800b0de: 6863 ldr r3, [r4, #4] - 800b0e0: 6123 str r3, [r4, #16] - 800b0e2: 2300 movs r3, #0 - 800b0e4: f884 3043 strb.w r3, [r4, #67] @ 0x43 - 800b0e8: e7aa b.n 800b040 <_printf_i+0x148> - 800b0ea: 6923 ldr r3, [r4, #16] - 800b0ec: 4632 mov r2, r6 - 800b0ee: 4649 mov r1, r9 - 800b0f0: 4640 mov r0, r8 - 800b0f2: 47d0 blx sl - 800b0f4: 3001 adds r0, #1 - 800b0f6: d0ad beq.n 800b054 <_printf_i+0x15c> - 800b0f8: 6823 ldr r3, [r4, #0] - 800b0fa: 079b lsls r3, r3, #30 - 800b0fc: d413 bmi.n 800b126 <_printf_i+0x22e> - 800b0fe: 68e0 ldr r0, [r4, #12] - 800b100: 9b03 ldr r3, [sp, #12] - 800b102: 4298 cmp r0, r3 - 800b104: bfb8 it lt - 800b106: 4618 movlt r0, r3 - 800b108: e7a6 b.n 800b058 <_printf_i+0x160> - 800b10a: 2301 movs r3, #1 - 800b10c: 4632 mov r2, r6 - 800b10e: 4649 mov r1, r9 - 800b110: 4640 mov r0, r8 - 800b112: 47d0 blx sl - 800b114: 3001 adds r0, #1 - 800b116: d09d beq.n 800b054 <_printf_i+0x15c> - 800b118: 3501 adds r5, #1 - 800b11a: 68e3 ldr r3, [r4, #12] - 800b11c: 9903 ldr r1, [sp, #12] - 800b11e: 1a5b subs r3, r3, r1 - 800b120: 42ab cmp r3, r5 - 800b122: dcf2 bgt.n 800b10a <_printf_i+0x212> - 800b124: e7eb b.n 800b0fe <_printf_i+0x206> - 800b126: 2500 movs r5, #0 - 800b128: f104 0619 add.w r6, r4, #25 - 800b12c: e7f5 b.n 800b11a <_printf_i+0x222> - 800b12e: bf00 nop - 800b130: 0800d907 .word 0x0800d907 - 800b134: 0800d918 .word 0x0800d918 - -0800b138 <__sflush_r>: - 800b138: f9b1 200c ldrsh.w r2, [r1, #12] - 800b13c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 800b140: 0716 lsls r6, r2, #28 - 800b142: 4605 mov r5, r0 - 800b144: 460c mov r4, r1 - 800b146: d454 bmi.n 800b1f2 <__sflush_r+0xba> - 800b148: 684b ldr r3, [r1, #4] - 800b14a: 2b00 cmp r3, #0 - 800b14c: dc02 bgt.n 800b154 <__sflush_r+0x1c> - 800b14e: 6c0b ldr r3, [r1, #64] @ 0x40 - 800b150: 2b00 cmp r3, #0 - 800b152: dd48 ble.n 800b1e6 <__sflush_r+0xae> - 800b154: 6ae6 ldr r6, [r4, #44] @ 0x2c - 800b156: 2e00 cmp r6, #0 - 800b158: d045 beq.n 800b1e6 <__sflush_r+0xae> - 800b15a: 2300 movs r3, #0 - 800b15c: f412 5280 ands.w r2, r2, #4096 @ 0x1000 - 800b160: 682f ldr r7, [r5, #0] - 800b162: 6a21 ldr r1, [r4, #32] - 800b164: 602b str r3, [r5, #0] - 800b166: d030 beq.n 800b1ca <__sflush_r+0x92> - 800b168: 6d62 ldr r2, [r4, #84] @ 0x54 - 800b16a: 89a3 ldrh r3, [r4, #12] - 800b16c: 0759 lsls r1, r3, #29 - 800b16e: d505 bpl.n 800b17c <__sflush_r+0x44> - 800b170: 6863 ldr r3, [r4, #4] - 800b172: 1ad2 subs r2, r2, r3 - 800b174: 6b63 ldr r3, [r4, #52] @ 0x34 - 800b176: b10b cbz r3, 800b17c <__sflush_r+0x44> - 800b178: 6c23 ldr r3, [r4, #64] @ 0x40 - 800b17a: 1ad2 subs r2, r2, r3 - 800b17c: 2300 movs r3, #0 - 800b17e: 6ae6 ldr r6, [r4, #44] @ 0x2c - 800b180: 6a21 ldr r1, [r4, #32] - 800b182: 4628 mov r0, r5 - 800b184: 47b0 blx r6 - 800b186: 1c43 adds r3, r0, #1 - 800b188: 89a3 ldrh r3, [r4, #12] - 800b18a: d106 bne.n 800b19a <__sflush_r+0x62> - 800b18c: 6829 ldr r1, [r5, #0] - 800b18e: 291d cmp r1, #29 - 800b190: d82b bhi.n 800b1ea <__sflush_r+0xb2> - 800b192: 4a2a ldr r2, [pc, #168] @ (800b23c <__sflush_r+0x104>) - 800b194: 410a asrs r2, r1 - 800b196: 07d6 lsls r6, r2, #31 - 800b198: d427 bmi.n 800b1ea <__sflush_r+0xb2> - 800b19a: 2200 movs r2, #0 - 800b19c: 6062 str r2, [r4, #4] - 800b19e: 04d9 lsls r1, r3, #19 - 800b1a0: 6922 ldr r2, [r4, #16] - 800b1a2: 6022 str r2, [r4, #0] - 800b1a4: d504 bpl.n 800b1b0 <__sflush_r+0x78> - 800b1a6: 1c42 adds r2, r0, #1 - 800b1a8: d101 bne.n 800b1ae <__sflush_r+0x76> - 800b1aa: 682b ldr r3, [r5, #0] - 800b1ac: b903 cbnz r3, 800b1b0 <__sflush_r+0x78> - 800b1ae: 6560 str r0, [r4, #84] @ 0x54 - 800b1b0: 6b61 ldr r1, [r4, #52] @ 0x34 - 800b1b2: 602f str r7, [r5, #0] - 800b1b4: b1b9 cbz r1, 800b1e6 <__sflush_r+0xae> - 800b1b6: f104 0344 add.w r3, r4, #68 @ 0x44 - 800b1ba: 4299 cmp r1, r3 - 800b1bc: d002 beq.n 800b1c4 <__sflush_r+0x8c> - 800b1be: 4628 mov r0, r5 - 800b1c0: f7ff fbea bl 800a998 <_free_r> - 800b1c4: 2300 movs r3, #0 - 800b1c6: 6363 str r3, [r4, #52] @ 0x34 - 800b1c8: e00d b.n 800b1e6 <__sflush_r+0xae> - 800b1ca: 2301 movs r3, #1 - 800b1cc: 4628 mov r0, r5 - 800b1ce: 47b0 blx r6 - 800b1d0: 4602 mov r2, r0 - 800b1d2: 1c50 adds r0, r2, #1 - 800b1d4: d1c9 bne.n 800b16a <__sflush_r+0x32> - 800b1d6: 682b ldr r3, [r5, #0] - 800b1d8: 2b00 cmp r3, #0 - 800b1da: d0c6 beq.n 800b16a <__sflush_r+0x32> - 800b1dc: 2b1d cmp r3, #29 - 800b1de: d001 beq.n 800b1e4 <__sflush_r+0xac> - 800b1e0: 2b16 cmp r3, #22 - 800b1e2: d11e bne.n 800b222 <__sflush_r+0xea> - 800b1e4: 602f str r7, [r5, #0] - 800b1e6: 2000 movs r0, #0 - 800b1e8: e022 b.n 800b230 <__sflush_r+0xf8> - 800b1ea: f043 0340 orr.w r3, r3, #64 @ 0x40 - 800b1ee: b21b sxth r3, r3 - 800b1f0: e01b b.n 800b22a <__sflush_r+0xf2> - 800b1f2: 690f ldr r7, [r1, #16] - 800b1f4: 2f00 cmp r7, #0 - 800b1f6: d0f6 beq.n 800b1e6 <__sflush_r+0xae> - 800b1f8: 0793 lsls r3, r2, #30 - 800b1fa: 680e ldr r6, [r1, #0] - 800b1fc: bf08 it eq - 800b1fe: 694b ldreq r3, [r1, #20] - 800b200: 600f str r7, [r1, #0] - 800b202: bf18 it ne - 800b204: 2300 movne r3, #0 - 800b206: eba6 0807 sub.w r8, r6, r7 - 800b20a: 608b str r3, [r1, #8] - 800b20c: f1b8 0f00 cmp.w r8, #0 - 800b210: dde9 ble.n 800b1e6 <__sflush_r+0xae> - 800b212: 6a21 ldr r1, [r4, #32] - 800b214: 6aa6 ldr r6, [r4, #40] @ 0x28 - 800b216: 4643 mov r3, r8 - 800b218: 463a mov r2, r7 - 800b21a: 4628 mov r0, r5 - 800b21c: 47b0 blx r6 - 800b21e: 2800 cmp r0, #0 - 800b220: dc08 bgt.n 800b234 <__sflush_r+0xfc> - 800b222: f9b4 300c ldrsh.w r3, [r4, #12] - 800b226: f043 0340 orr.w r3, r3, #64 @ 0x40 - 800b22a: 81a3 strh r3, [r4, #12] - 800b22c: f04f 30ff mov.w r0, #4294967295 - 800b230: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 800b234: 4407 add r7, r0 - 800b236: eba8 0800 sub.w r8, r8, r0 - 800b23a: e7e7 b.n 800b20c <__sflush_r+0xd4> - 800b23c: dfbffffe .word 0xdfbffffe - -0800b240 <_fflush_r>: - 800b240: b538 push {r3, r4, r5, lr} - 800b242: 690b ldr r3, [r1, #16] - 800b244: 4605 mov r5, r0 - 800b246: 460c mov r4, r1 - 800b248: b913 cbnz r3, 800b250 <_fflush_r+0x10> - 800b24a: 2500 movs r5, #0 - 800b24c: 4628 mov r0, r5 - 800b24e: bd38 pop {r3, r4, r5, pc} - 800b250: b118 cbz r0, 800b25a <_fflush_r+0x1a> - 800b252: 6a03 ldr r3, [r0, #32] - 800b254: b90b cbnz r3, 800b25a <_fflush_r+0x1a> - 800b256: f7ff fa61 bl 800a71c <__sinit> - 800b25a: f9b4 300c ldrsh.w r3, [r4, #12] - 800b25e: 2b00 cmp r3, #0 - 800b260: d0f3 beq.n 800b24a <_fflush_r+0xa> - 800b262: 6e62 ldr r2, [r4, #100] @ 0x64 - 800b264: 07d0 lsls r0, r2, #31 - 800b266: d404 bmi.n 800b272 <_fflush_r+0x32> - 800b268: 0599 lsls r1, r3, #22 - 800b26a: d402 bmi.n 800b272 <_fflush_r+0x32> - 800b26c: 6da0 ldr r0, [r4, #88] @ 0x58 - 800b26e: f7ff fb64 bl 800a93a <__retarget_lock_acquire_recursive> - 800b272: 4628 mov r0, r5 - 800b274: 4621 mov r1, r4 - 800b276: f7ff ff5f bl 800b138 <__sflush_r> - 800b27a: 6e63 ldr r3, [r4, #100] @ 0x64 - 800b27c: 07da lsls r2, r3, #31 - 800b27e: 4605 mov r5, r0 - 800b280: d4e4 bmi.n 800b24c <_fflush_r+0xc> - 800b282: 89a3 ldrh r3, [r4, #12] - 800b284: 059b lsls r3, r3, #22 - 800b286: d4e1 bmi.n 800b24c <_fflush_r+0xc> - 800b288: 6da0 ldr r0, [r4, #88] @ 0x58 - 800b28a: f7ff fb57 bl 800a93c <__retarget_lock_release_recursive> - 800b28e: e7dd b.n 800b24c <_fflush_r+0xc> - -0800b290 : - 800b290: b40e push {r1, r2, r3} - 800b292: b503 push {r0, r1, lr} - 800b294: 4601 mov r1, r0 - 800b296: ab03 add r3, sp, #12 - 800b298: 4805 ldr r0, [pc, #20] @ (800b2b0 ) - 800b29a: f853 2b04 ldr.w r2, [r3], #4 - 800b29e: 6800 ldr r0, [r0, #0] - 800b2a0: 9301 str r3, [sp, #4] - 800b2a2: f7ff fca3 bl 800abec <_vfiprintf_r> - 800b2a6: b002 add sp, #8 - 800b2a8: f85d eb04 ldr.w lr, [sp], #4 - 800b2ac: b003 add sp, #12 - 800b2ae: 4770 bx lr - 800b2b0: 20000034 .word 0x20000034 - -0800b2b4 <__swbuf_r>: - 800b2b4: b5f8 push {r3, r4, r5, r6, r7, lr} - 800b2b6: 460e mov r6, r1 - 800b2b8: 4614 mov r4, r2 - 800b2ba: 4605 mov r5, r0 - 800b2bc: b118 cbz r0, 800b2c6 <__swbuf_r+0x12> - 800b2be: 6a03 ldr r3, [r0, #32] - 800b2c0: b90b cbnz r3, 800b2c6 <__swbuf_r+0x12> - 800b2c2: f7ff fa2b bl 800a71c <__sinit> - 800b2c6: 69a3 ldr r3, [r4, #24] - 800b2c8: 60a3 str r3, [r4, #8] - 800b2ca: 89a3 ldrh r3, [r4, #12] - 800b2cc: 071a lsls r2, r3, #28 - 800b2ce: d501 bpl.n 800b2d4 <__swbuf_r+0x20> - 800b2d0: 6923 ldr r3, [r4, #16] - 800b2d2: b943 cbnz r3, 800b2e6 <__swbuf_r+0x32> - 800b2d4: 4621 mov r1, r4 - 800b2d6: 4628 mov r0, r5 - 800b2d8: f000 f82a bl 800b330 <__swsetup_r> - 800b2dc: b118 cbz r0, 800b2e6 <__swbuf_r+0x32> - 800b2de: f04f 37ff mov.w r7, #4294967295 - 800b2e2: 4638 mov r0, r7 - 800b2e4: bdf8 pop {r3, r4, r5, r6, r7, pc} - 800b2e6: 6823 ldr r3, [r4, #0] - 800b2e8: 6922 ldr r2, [r4, #16] - 800b2ea: 1a98 subs r0, r3, r2 - 800b2ec: 6963 ldr r3, [r4, #20] - 800b2ee: b2f6 uxtb r6, r6 - 800b2f0: 4283 cmp r3, r0 - 800b2f2: 4637 mov r7, r6 - 800b2f4: dc05 bgt.n 800b302 <__swbuf_r+0x4e> - 800b2f6: 4621 mov r1, r4 - 800b2f8: 4628 mov r0, r5 - 800b2fa: f7ff ffa1 bl 800b240 <_fflush_r> - 800b2fe: 2800 cmp r0, #0 - 800b300: d1ed bne.n 800b2de <__swbuf_r+0x2a> - 800b302: 68a3 ldr r3, [r4, #8] - 800b304: 3b01 subs r3, #1 - 800b306: 60a3 str r3, [r4, #8] - 800b308: 6823 ldr r3, [r4, #0] - 800b30a: 1c5a adds r2, r3, #1 - 800b30c: 6022 str r2, [r4, #0] - 800b30e: 701e strb r6, [r3, #0] - 800b310: 6962 ldr r2, [r4, #20] - 800b312: 1c43 adds r3, r0, #1 - 800b314: 429a cmp r2, r3 - 800b316: d004 beq.n 800b322 <__swbuf_r+0x6e> - 800b318: 89a3 ldrh r3, [r4, #12] - 800b31a: 07db lsls r3, r3, #31 - 800b31c: d5e1 bpl.n 800b2e2 <__swbuf_r+0x2e> - 800b31e: 2e0a cmp r6, #10 - 800b320: d1df bne.n 800b2e2 <__swbuf_r+0x2e> - 800b322: 4621 mov r1, r4 - 800b324: 4628 mov r0, r5 - 800b326: f7ff ff8b bl 800b240 <_fflush_r> - 800b32a: 2800 cmp r0, #0 - 800b32c: d0d9 beq.n 800b2e2 <__swbuf_r+0x2e> - 800b32e: e7d6 b.n 800b2de <__swbuf_r+0x2a> - -0800b330 <__swsetup_r>: - 800b330: b538 push {r3, r4, r5, lr} - 800b332: 4b29 ldr r3, [pc, #164] @ (800b3d8 <__swsetup_r+0xa8>) - 800b334: 4605 mov r5, r0 - 800b336: 6818 ldr r0, [r3, #0] - 800b338: 460c mov r4, r1 - 800b33a: b118 cbz r0, 800b344 <__swsetup_r+0x14> - 800b33c: 6a03 ldr r3, [r0, #32] - 800b33e: b90b cbnz r3, 800b344 <__swsetup_r+0x14> - 800b340: f7ff f9ec bl 800a71c <__sinit> - 800b344: f9b4 300c ldrsh.w r3, [r4, #12] - 800b348: 0719 lsls r1, r3, #28 - 800b34a: d422 bmi.n 800b392 <__swsetup_r+0x62> - 800b34c: 06da lsls r2, r3, #27 - 800b34e: d407 bmi.n 800b360 <__swsetup_r+0x30> - 800b350: 2209 movs r2, #9 - 800b352: 602a str r2, [r5, #0] - 800b354: f043 0340 orr.w r3, r3, #64 @ 0x40 - 800b358: 81a3 strh r3, [r4, #12] - 800b35a: f04f 30ff mov.w r0, #4294967295 - 800b35e: e033 b.n 800b3c8 <__swsetup_r+0x98> - 800b360: 0758 lsls r0, r3, #29 - 800b362: d512 bpl.n 800b38a <__swsetup_r+0x5a> - 800b364: 6b61 ldr r1, [r4, #52] @ 0x34 - 800b366: b141 cbz r1, 800b37a <__swsetup_r+0x4a> - 800b368: f104 0344 add.w r3, r4, #68 @ 0x44 - 800b36c: 4299 cmp r1, r3 - 800b36e: d002 beq.n 800b376 <__swsetup_r+0x46> - 800b370: 4628 mov r0, r5 - 800b372: f7ff fb11 bl 800a998 <_free_r> - 800b376: 2300 movs r3, #0 - 800b378: 6363 str r3, [r4, #52] @ 0x34 - 800b37a: 89a3 ldrh r3, [r4, #12] - 800b37c: f023 0324 bic.w r3, r3, #36 @ 0x24 - 800b380: 81a3 strh r3, [r4, #12] - 800b382: 2300 movs r3, #0 - 800b384: 6063 str r3, [r4, #4] - 800b386: 6923 ldr r3, [r4, #16] - 800b388: 6023 str r3, [r4, #0] - 800b38a: 89a3 ldrh r3, [r4, #12] - 800b38c: f043 0308 orr.w r3, r3, #8 - 800b390: 81a3 strh r3, [r4, #12] - 800b392: 6923 ldr r3, [r4, #16] - 800b394: b94b cbnz r3, 800b3aa <__swsetup_r+0x7a> - 800b396: 89a3 ldrh r3, [r4, #12] - 800b398: f403 7320 and.w r3, r3, #640 @ 0x280 - 800b39c: f5b3 7f00 cmp.w r3, #512 @ 0x200 - 800b3a0: d003 beq.n 800b3aa <__swsetup_r+0x7a> - 800b3a2: 4621 mov r1, r4 - 800b3a4: 4628 mov r0, r5 - 800b3a6: f000 f856 bl 800b456 <__smakebuf_r> - 800b3aa: f9b4 300c ldrsh.w r3, [r4, #12] - 800b3ae: f013 0201 ands.w r2, r3, #1 - 800b3b2: d00a beq.n 800b3ca <__swsetup_r+0x9a> - 800b3b4: 2200 movs r2, #0 - 800b3b6: 60a2 str r2, [r4, #8] - 800b3b8: 6962 ldr r2, [r4, #20] - 800b3ba: 4252 negs r2, r2 - 800b3bc: 61a2 str r2, [r4, #24] - 800b3be: 6922 ldr r2, [r4, #16] - 800b3c0: b942 cbnz r2, 800b3d4 <__swsetup_r+0xa4> - 800b3c2: f013 0080 ands.w r0, r3, #128 @ 0x80 - 800b3c6: d1c5 bne.n 800b354 <__swsetup_r+0x24> - 800b3c8: bd38 pop {r3, r4, r5, pc} - 800b3ca: 0799 lsls r1, r3, #30 - 800b3cc: bf58 it pl - 800b3ce: 6962 ldrpl r2, [r4, #20] - 800b3d0: 60a2 str r2, [r4, #8] - 800b3d2: e7f4 b.n 800b3be <__swsetup_r+0x8e> - 800b3d4: 2000 movs r0, #0 - 800b3d6: e7f7 b.n 800b3c8 <__swsetup_r+0x98> - 800b3d8: 20000034 .word 0x20000034 - -0800b3dc <_sbrk_r>: - 800b3dc: b538 push {r3, r4, r5, lr} - 800b3de: 4d06 ldr r5, [pc, #24] @ (800b3f8 <_sbrk_r+0x1c>) - 800b3e0: 2300 movs r3, #0 - 800b3e2: 4604 mov r4, r0 - 800b3e4: 4608 mov r0, r1 - 800b3e6: 602b str r3, [r5, #0] - 800b3e8: f000 f910 bl 800b60c <_sbrk> - 800b3ec: 1c43 adds r3, r0, #1 - 800b3ee: d102 bne.n 800b3f6 <_sbrk_r+0x1a> - 800b3f0: 682b ldr r3, [r5, #0] - 800b3f2: b103 cbz r3, 800b3f6 <_sbrk_r+0x1a> - 800b3f4: 6023 str r3, [r4, #0] - 800b3f6: bd38 pop {r3, r4, r5, pc} - 800b3f8: 20018d58 .word 0x20018d58 - -0800b3fc : - 800b3fc: b508 push {r3, lr} - 800b3fe: 2006 movs r0, #6 - 800b400: f000 f88e bl 800b520 - 800b404: 2001 movs r0, #1 - 800b406: f000 f917 bl 800b638 <_exit> - -0800b40a <__swhatbuf_r>: - 800b40a: b570 push {r4, r5, r6, lr} - 800b40c: 460c mov r4, r1 - 800b40e: f9b1 100e ldrsh.w r1, [r1, #14] - 800b412: 2900 cmp r1, #0 - 800b414: b096 sub sp, #88 @ 0x58 - 800b416: 4615 mov r5, r2 - 800b418: 461e mov r6, r3 - 800b41a: da0d bge.n 800b438 <__swhatbuf_r+0x2e> - 800b41c: 89a3 ldrh r3, [r4, #12] - 800b41e: f013 0f80 tst.w r3, #128 @ 0x80 - 800b422: f04f 0100 mov.w r1, #0 - 800b426: bf14 ite ne - 800b428: 2340 movne r3, #64 @ 0x40 - 800b42a: f44f 6380 moveq.w r3, #1024 @ 0x400 - 800b42e: 2000 movs r0, #0 - 800b430: 6031 str r1, [r6, #0] - 800b432: 602b str r3, [r5, #0] - 800b434: b016 add sp, #88 @ 0x58 - 800b436: bd70 pop {r4, r5, r6, pc} - 800b438: 466a mov r2, sp - 800b43a: f000 f879 bl 800b530 <_fstat_r> - 800b43e: 2800 cmp r0, #0 - 800b440: dbec blt.n 800b41c <__swhatbuf_r+0x12> - 800b442: 9901 ldr r1, [sp, #4] - 800b444: f401 4170 and.w r1, r1, #61440 @ 0xf000 - 800b448: f5a1 5300 sub.w r3, r1, #8192 @ 0x2000 - 800b44c: 4259 negs r1, r3 - 800b44e: 4159 adcs r1, r3 - 800b450: f44f 6380 mov.w r3, #1024 @ 0x400 - 800b454: e7eb b.n 800b42e <__swhatbuf_r+0x24> - -0800b456 <__smakebuf_r>: - 800b456: 898b ldrh r3, [r1, #12] - 800b458: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} - 800b45a: 079d lsls r5, r3, #30 - 800b45c: 4606 mov r6, r0 - 800b45e: 460c mov r4, r1 - 800b460: d507 bpl.n 800b472 <__smakebuf_r+0x1c> - 800b462: f104 0347 add.w r3, r4, #71 @ 0x47 - 800b466: 6023 str r3, [r4, #0] - 800b468: 6123 str r3, [r4, #16] - 800b46a: 2301 movs r3, #1 - 800b46c: 6163 str r3, [r4, #20] - 800b46e: b003 add sp, #12 - 800b470: bdf0 pop {r4, r5, r6, r7, pc} - 800b472: ab01 add r3, sp, #4 - 800b474: 466a mov r2, sp - 800b476: f7ff ffc8 bl 800b40a <__swhatbuf_r> - 800b47a: 9f00 ldr r7, [sp, #0] - 800b47c: 4605 mov r5, r0 - 800b47e: 4639 mov r1, r7 - 800b480: 4630 mov r0, r6 - 800b482: f7ff fafd bl 800aa80 <_malloc_r> - 800b486: b948 cbnz r0, 800b49c <__smakebuf_r+0x46> - 800b488: f9b4 300c ldrsh.w r3, [r4, #12] - 800b48c: 059a lsls r2, r3, #22 - 800b48e: d4ee bmi.n 800b46e <__smakebuf_r+0x18> - 800b490: f023 0303 bic.w r3, r3, #3 - 800b494: f043 0302 orr.w r3, r3, #2 - 800b498: 81a3 strh r3, [r4, #12] - 800b49a: e7e2 b.n 800b462 <__smakebuf_r+0xc> - 800b49c: 89a3 ldrh r3, [r4, #12] - 800b49e: 6020 str r0, [r4, #0] - 800b4a0: f043 0380 orr.w r3, r3, #128 @ 0x80 - 800b4a4: 81a3 strh r3, [r4, #12] - 800b4a6: 9b01 ldr r3, [sp, #4] - 800b4a8: e9c4 0704 strd r0, r7, [r4, #16] - 800b4ac: b15b cbz r3, 800b4c6 <__smakebuf_r+0x70> - 800b4ae: f9b4 100e ldrsh.w r1, [r4, #14] - 800b4b2: 4630 mov r0, r6 - 800b4b4: f000 f84e bl 800b554 <_isatty_r> - 800b4b8: b128 cbz r0, 800b4c6 <__smakebuf_r+0x70> - 800b4ba: 89a3 ldrh r3, [r4, #12] - 800b4bc: f023 0303 bic.w r3, r3, #3 - 800b4c0: f043 0301 orr.w r3, r3, #1 - 800b4c4: 81a3 strh r3, [r4, #12] - 800b4c6: 89a3 ldrh r3, [r4, #12] - 800b4c8: 431d orrs r5, r3 - 800b4ca: 81a5 strh r5, [r4, #12] - 800b4cc: e7cf b.n 800b46e <__smakebuf_r+0x18> - -0800b4ce <_raise_r>: - 800b4ce: 291f cmp r1, #31 - 800b4d0: b538 push {r3, r4, r5, lr} - 800b4d2: 4605 mov r5, r0 - 800b4d4: 460c mov r4, r1 - 800b4d6: d904 bls.n 800b4e2 <_raise_r+0x14> - 800b4d8: 2316 movs r3, #22 - 800b4da: 6003 str r3, [r0, #0] - 800b4dc: f04f 30ff mov.w r0, #4294967295 - 800b4e0: bd38 pop {r3, r4, r5, pc} - 800b4e2: 6bc2 ldr r2, [r0, #60] @ 0x3c - 800b4e4: b112 cbz r2, 800b4ec <_raise_r+0x1e> - 800b4e6: f852 3021 ldr.w r3, [r2, r1, lsl #2] - 800b4ea: b94b cbnz r3, 800b500 <_raise_r+0x32> - 800b4ec: 4628 mov r0, r5 - 800b4ee: f000 f853 bl 800b598 <_getpid_r> - 800b4f2: 4622 mov r2, r4 - 800b4f4: 4601 mov r1, r0 - 800b4f6: 4628 mov r0, r5 - 800b4f8: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} - 800b4fc: f000 b83a b.w 800b574 <_kill_r> - 800b500: 2b01 cmp r3, #1 - 800b502: d00a beq.n 800b51a <_raise_r+0x4c> - 800b504: 1c59 adds r1, r3, #1 - 800b506: d103 bne.n 800b510 <_raise_r+0x42> - 800b508: 2316 movs r3, #22 - 800b50a: 6003 str r3, [r0, #0] - 800b50c: 2001 movs r0, #1 - 800b50e: e7e7 b.n 800b4e0 <_raise_r+0x12> - 800b510: 2100 movs r1, #0 - 800b512: f842 1024 str.w r1, [r2, r4, lsl #2] - 800b516: 4620 mov r0, r4 - 800b518: 4798 blx r3 - 800b51a: 2000 movs r0, #0 - 800b51c: e7e0 b.n 800b4e0 <_raise_r+0x12> - ... - -0800b520 : - 800b520: 4b02 ldr r3, [pc, #8] @ (800b52c ) - 800b522: 4601 mov r1, r0 - 800b524: 6818 ldr r0, [r3, #0] - 800b526: f7ff bfd2 b.w 800b4ce <_raise_r> - 800b52a: bf00 nop - 800b52c: 20000034 .word 0x20000034 - -0800b530 <_fstat_r>: - 800b530: b538 push {r3, r4, r5, lr} - 800b532: 4d07 ldr r5, [pc, #28] @ (800b550 <_fstat_r+0x20>) - 800b534: 2300 movs r3, #0 - 800b536: 4604 mov r4, r0 - 800b538: 4608 mov r0, r1 - 800b53a: 4611 mov r1, r2 - 800b53c: 602b str r3, [r5, #0] - 800b53e: f000 f835 bl 800b5ac <_fstat> - 800b542: 1c43 adds r3, r0, #1 - 800b544: d102 bne.n 800b54c <_fstat_r+0x1c> - 800b546: 682b ldr r3, [r5, #0] - 800b548: b103 cbz r3, 800b54c <_fstat_r+0x1c> - 800b54a: 6023 str r3, [r4, #0] - 800b54c: bd38 pop {r3, r4, r5, pc} - 800b54e: bf00 nop - 800b550: 20018d58 .word 0x20018d58 - -0800b554 <_isatty_r>: - 800b554: b538 push {r3, r4, r5, lr} - 800b556: 4d06 ldr r5, [pc, #24] @ (800b570 <_isatty_r+0x1c>) - 800b558: 2300 movs r3, #0 - 800b55a: 4604 mov r4, r0 - 800b55c: 4608 mov r0, r1 - 800b55e: 602b str r3, [r5, #0] - 800b560: f000 f834 bl 800b5cc <_isatty> - 800b564: 1c43 adds r3, r0, #1 - 800b566: d102 bne.n 800b56e <_isatty_r+0x1a> - 800b568: 682b ldr r3, [r5, #0] - 800b56a: b103 cbz r3, 800b56e <_isatty_r+0x1a> - 800b56c: 6023 str r3, [r4, #0] - 800b56e: bd38 pop {r3, r4, r5, pc} - 800b570: 20018d58 .word 0x20018d58 - -0800b574 <_kill_r>: - 800b574: b538 push {r3, r4, r5, lr} - 800b576: 4d07 ldr r5, [pc, #28] @ (800b594 <_kill_r+0x20>) - 800b578: 2300 movs r3, #0 - 800b57a: 4604 mov r4, r0 - 800b57c: 4608 mov r0, r1 - 800b57e: 4611 mov r1, r2 - 800b580: 602b str r3, [r5, #0] - 800b582: f000 f82b bl 800b5dc <_kill> - 800b586: 1c43 adds r3, r0, #1 - 800b588: d102 bne.n 800b590 <_kill_r+0x1c> - 800b58a: 682b ldr r3, [r5, #0] - 800b58c: b103 cbz r3, 800b590 <_kill_r+0x1c> - 800b58e: 6023 str r3, [r4, #0] - 800b590: bd38 pop {r3, r4, r5, pc} - 800b592: bf00 nop - 800b594: 20018d58 .word 0x20018d58 - -0800b598 <_getpid_r>: - 800b598: f000 b810 b.w 800b5bc <_getpid> - -0800b59c <_close>: - 800b59c: 4b02 ldr r3, [pc, #8] @ (800b5a8 <_close+0xc>) - 800b59e: 2258 movs r2, #88 @ 0x58 - 800b5a0: 601a str r2, [r3, #0] - 800b5a2: f04f 30ff mov.w r0, #4294967295 - 800b5a6: 4770 bx lr - 800b5a8: 20018d58 .word 0x20018d58 - -0800b5ac <_fstat>: - 800b5ac: 4b02 ldr r3, [pc, #8] @ (800b5b8 <_fstat+0xc>) - 800b5ae: 2258 movs r2, #88 @ 0x58 - 800b5b0: 601a str r2, [r3, #0] - 800b5b2: f04f 30ff mov.w r0, #4294967295 - 800b5b6: 4770 bx lr - 800b5b8: 20018d58 .word 0x20018d58 - -0800b5bc <_getpid>: - 800b5bc: 4b02 ldr r3, [pc, #8] @ (800b5c8 <_getpid+0xc>) - 800b5be: 2258 movs r2, #88 @ 0x58 - 800b5c0: 601a str r2, [r3, #0] - 800b5c2: f04f 30ff mov.w r0, #4294967295 - 800b5c6: 4770 bx lr - 800b5c8: 20018d58 .word 0x20018d58 - -0800b5cc <_isatty>: - 800b5cc: 4b02 ldr r3, [pc, #8] @ (800b5d8 <_isatty+0xc>) - 800b5ce: 2258 movs r2, #88 @ 0x58 - 800b5d0: 601a str r2, [r3, #0] - 800b5d2: 2000 movs r0, #0 - 800b5d4: 4770 bx lr - 800b5d6: bf00 nop - 800b5d8: 20018d58 .word 0x20018d58 - -0800b5dc <_kill>: - 800b5dc: 4b02 ldr r3, [pc, #8] @ (800b5e8 <_kill+0xc>) - 800b5de: 2258 movs r2, #88 @ 0x58 - 800b5e0: 601a str r2, [r3, #0] - 800b5e2: f04f 30ff mov.w r0, #4294967295 - 800b5e6: 4770 bx lr - 800b5e8: 20018d58 .word 0x20018d58 - -0800b5ec <_lseek>: - 800b5ec: 4b02 ldr r3, [pc, #8] @ (800b5f8 <_lseek+0xc>) - 800b5ee: 2258 movs r2, #88 @ 0x58 - 800b5f0: 601a str r2, [r3, #0] - 800b5f2: f04f 30ff mov.w r0, #4294967295 - 800b5f6: 4770 bx lr - 800b5f8: 20018d58 .word 0x20018d58 - -0800b5fc <_read>: - 800b5fc: 4b02 ldr r3, [pc, #8] @ (800b608 <_read+0xc>) - 800b5fe: 2258 movs r2, #88 @ 0x58 - 800b600: 601a str r2, [r3, #0] - 800b602: f04f 30ff mov.w r0, #4294967295 - 800b606: 4770 bx lr - 800b608: 20018d58 .word 0x20018d58 - -0800b60c <_sbrk>: - 800b60c: 4a04 ldr r2, [pc, #16] @ (800b620 <_sbrk+0x14>) - 800b60e: 6811 ldr r1, [r2, #0] - 800b610: 4603 mov r3, r0 - 800b612: b909 cbnz r1, 800b618 <_sbrk+0xc> - 800b614: 4903 ldr r1, [pc, #12] @ (800b624 <_sbrk+0x18>) - 800b616: 6011 str r1, [r2, #0] - 800b618: 6810 ldr r0, [r2, #0] - 800b61a: 4403 add r3, r0 - 800b61c: 6013 str r3, [r2, #0] - 800b61e: 4770 bx lr - 800b620: 20018d68 .word 0x20018d68 - 800b624: 20018d70 .word 0x20018d70 - -0800b628 <_write>: - 800b628: 4b02 ldr r3, [pc, #8] @ (800b634 <_write+0xc>) - 800b62a: 2258 movs r2, #88 @ 0x58 - 800b62c: 601a str r2, [r3, #0] - 800b62e: f04f 30ff mov.w r0, #4294967295 - 800b632: 4770 bx lr - 800b634: 20018d58 .word 0x20018d58 - -0800b638 <_exit>: - 800b638: e7fe b.n 800b638 <_exit> - ... - -0800b63c <_init>: - 800b63c: b5f8 push {r3, r4, r5, r6, r7, lr} - 800b63e: bf00 nop - 800b640: bcf8 pop {r3, r4, r5, r6, r7} - 800b642: bc08 pop {r3} - 800b644: 469e mov lr, r3 - 800b646: 4770 bx lr - -0800b648 <_fini>: - 800b648: b5f8 push {r3, r4, r5, r6, r7, lr} - 800b64a: bf00 nop - 800b64c: bcf8 pop {r3, r4, r5, r6, r7} - 800b64e: bc08 pop {r3} - 800b650: 469e mov lr, r3 - 800b652: 4770 bx lr