From a6beb2a52df97fd78c86d09cc3408f36598391d1 Mon Sep 17 00:00:00 2001 From: lepustse Date: Thu, 18 May 2023 23:03:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0qemu-zynqmp-r5=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=E7=A7=BB=E6=A4=8D=EF=BC=88libcpu=E9=83=A8=E5=88=86?= =?UTF-8?q?=E5=92=8Cbsp=E9=83=A8=E5=88=86=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bsp/qemu-zynqmp-r5/.config | 906 + bsp/qemu-zynqmp-r5/.cproject | 175 + bsp/qemu-zynqmp-r5/.gitignore | 44 + bsp/qemu-zynqmp-r5/.project | 54 + bsp/qemu-zynqmp-r5/Kconfig | 20 + bsp/qemu-zynqmp-r5/README.md | 61 + bsp/qemu-zynqmp-r5/SConscript | 15 + bsp/qemu-zynqmp-r5/SConstruct | 36 + bsp/qemu-zynqmp-r5/applications/SConscript | 15 + bsp/qemu-zynqmp-r5/applications/main.c | 20 + bsp/qemu-zynqmp-r5/drivers/Kconfig | 19 + bsp/qemu-zynqmp-r5/drivers/SConscript | 17 + bsp/qemu-zynqmp-r5/drivers/board.c | 38 + bsp/qemu-zynqmp-r5/drivers/board.h | 29 + bsp/qemu-zynqmp-r5/drivers/drv_timer.c | 64 + bsp/qemu-zynqmp-r5/drivers/drv_timer.h | 46 + bsp/qemu-zynqmp-r5/drivers/drv_uart.c | 138 + bsp/qemu-zynqmp-r5/drivers/drv_uart.h | 56 + bsp/qemu-zynqmp-r5/drivers/zynqmp_r5.h | 60 + bsp/qemu-zynqmp-r5/link.ld | 124 + bsp/qemu-zynqmp-r5/makefile.targets | 4 + bsp/qemu-zynqmp-r5/qemu-nographic.sh | 9 + bsp/qemu-zynqmp-r5/rtconfig.h | 273 + bsp/qemu-zynqmp-r5/rtconfig.py | 54 + bsp/qemu-zynqmp-r5/rtthread.elf.dump | 67489 +++++++++++++++++++ bsp/qemu-zynqmp-r5/rtthread.elf.sym | 1996 + bsp/qemu-zynqmp-r5/zcu102-arm.dtb | Bin 0 -> 67880 bytes libcpu/arm/cortex-r5/SConscript | 23 + libcpu/arm/cortex-r5/context_gcc.S | 90 + libcpu/arm/cortex-r5/cp15.h | 17 + libcpu/arm/cortex-r5/cp15_gcc.S | 19 + libcpu/arm/cortex-r5/cpuport.c | 50 + libcpu/arm/cortex-r5/cpuport.h | 103 + libcpu/arm/cortex-r5/gic.c | 485 + libcpu/arm/cortex-r5/gic.h | 62 + libcpu/arm/cortex-r5/interrupt.c | 347 + libcpu/arm/cortex-r5/interrupt.h | 61 + libcpu/arm/cortex-r5/stack.c | 57 + libcpu/arm/cortex-r5/start_gcc.S | 180 + libcpu/arm/cortex-r5/trap.c | 182 + libcpu/arm/cortex-r5/vector_gcc.S | 41 + 41 files changed, 73479 insertions(+) create mode 100644 bsp/qemu-zynqmp-r5/.config create mode 100644 bsp/qemu-zynqmp-r5/.cproject create mode 100644 bsp/qemu-zynqmp-r5/.gitignore create mode 100644 bsp/qemu-zynqmp-r5/.project create mode 100644 bsp/qemu-zynqmp-r5/Kconfig create mode 100644 bsp/qemu-zynqmp-r5/README.md create mode 100644 bsp/qemu-zynqmp-r5/SConscript create mode 100644 bsp/qemu-zynqmp-r5/SConstruct create mode 100644 bsp/qemu-zynqmp-r5/applications/SConscript create mode 100644 bsp/qemu-zynqmp-r5/applications/main.c create mode 100644 bsp/qemu-zynqmp-r5/drivers/Kconfig create mode 100644 bsp/qemu-zynqmp-r5/drivers/SConscript create mode 100644 bsp/qemu-zynqmp-r5/drivers/board.c create mode 100644 bsp/qemu-zynqmp-r5/drivers/board.h create mode 100644 bsp/qemu-zynqmp-r5/drivers/drv_timer.c create mode 100644 bsp/qemu-zynqmp-r5/drivers/drv_timer.h create mode 100644 bsp/qemu-zynqmp-r5/drivers/drv_uart.c create mode 100644 bsp/qemu-zynqmp-r5/drivers/drv_uart.h create mode 100644 bsp/qemu-zynqmp-r5/drivers/zynqmp_r5.h create mode 100644 bsp/qemu-zynqmp-r5/link.ld create mode 100644 bsp/qemu-zynqmp-r5/makefile.targets create mode 100644 bsp/qemu-zynqmp-r5/qemu-nographic.sh create mode 100644 bsp/qemu-zynqmp-r5/rtconfig.h create mode 100644 bsp/qemu-zynqmp-r5/rtconfig.py create mode 100644 bsp/qemu-zynqmp-r5/rtthread.elf.dump create mode 100644 bsp/qemu-zynqmp-r5/rtthread.elf.sym create mode 100644 bsp/qemu-zynqmp-r5/zcu102-arm.dtb create mode 100644 libcpu/arm/cortex-r5/SConscript create mode 100644 libcpu/arm/cortex-r5/context_gcc.S create mode 100644 libcpu/arm/cortex-r5/cp15.h create mode 100644 libcpu/arm/cortex-r5/cp15_gcc.S create mode 100644 libcpu/arm/cortex-r5/cpuport.c create mode 100644 libcpu/arm/cortex-r5/cpuport.h create mode 100644 libcpu/arm/cortex-r5/gic.c create mode 100644 libcpu/arm/cortex-r5/gic.h create mode 100644 libcpu/arm/cortex-r5/interrupt.c create mode 100644 libcpu/arm/cortex-r5/interrupt.h create mode 100644 libcpu/arm/cortex-r5/stack.c create mode 100644 libcpu/arm/cortex-r5/start_gcc.S create mode 100644 libcpu/arm/cortex-r5/trap.c create mode 100644 libcpu/arm/cortex-r5/vector_gcc.S diff --git a/bsp/qemu-zynqmp-r5/.config b/bsp/qemu-zynqmp-r5/.config new file mode 100644 index 0000000000..1313f5ebb7 --- /dev/null +++ b/bsp/qemu-zynqmp-r5/.config @@ -0,0 +1,906 @@ +# +# Automatically generated file; DO NOT EDIT. +# RT-Thread Project Configuration +# + +# +# RT-Thread Kernel +# +CONFIG_RT_NAME_MAX=8 +# CONFIG_RT_USING_ARCH_DATA_TYPE is not set +# CONFIG_RT_USING_SMP is not set +CONFIG_RT_ALIGN_SIZE=8 +# CONFIG_RT_THREAD_PRIORITY_8 is not set +# CONFIG_RT_THREAD_PRIORITY_32 is not set +CONFIG_RT_THREAD_PRIORITY_256=y +CONFIG_RT_THREAD_PRIORITY_MAX=256 +CONFIG_RT_TICK_PER_SECOND=100 +CONFIG_RT_USING_OVERFLOW_CHECK=y +CONFIG_RT_USING_HOOK=y +CONFIG_RT_HOOK_USING_FUNC_PTR=y +CONFIG_RT_USING_IDLE_HOOK=y +CONFIG_RT_IDLE_HOOK_LIST_SIZE=4 +CONFIG_IDLE_THREAD_STACK_SIZE=4096 +CONFIG_RT_USING_TIMER_SOFT=y +CONFIG_RT_TIMER_THREAD_PRIO=4 +CONFIG_RT_TIMER_THREAD_STACK_SIZE=1024 + +# +# kservice optimization +# +# CONFIG_RT_KSERVICE_USING_STDLIB is not set +# CONFIG_RT_KSERVICE_USING_TINY_SIZE is not set +# CONFIG_RT_USING_TINY_FFS is not set +# CONFIG_RT_KPRINTF_USING_LONGLONG is not set +CONFIG_RT_DEBUG=y +CONFIG_RT_DEBUG_COLOR=y +# CONFIG_RT_DEBUG_INIT_CONFIG is not set +# CONFIG_RT_DEBUG_THREAD_CONFIG is not set +# CONFIG_RT_DEBUG_SCHEDULER_CONFIG is not set +# CONFIG_RT_DEBUG_IPC_CONFIG is not set +# CONFIG_RT_DEBUG_TIMER_CONFIG is not set +# CONFIG_RT_DEBUG_IRQ_CONFIG is not set +# CONFIG_RT_DEBUG_MEM_CONFIG is not set +# CONFIG_RT_DEBUG_SLAB_CONFIG is not set +# CONFIG_RT_DEBUG_MEMHEAP_CONFIG is not set +# CONFIG_RT_DEBUG_MODULE_CONFIG is not set + +# +# Inter-Thread communication +# +CONFIG_RT_USING_SEMAPHORE=y +CONFIG_RT_USING_MUTEX=y +CONFIG_RT_USING_EVENT=y +CONFIG_RT_USING_MAILBOX=y +CONFIG_RT_USING_MESSAGEQUEUE=y +# CONFIG_RT_USING_SIGNALS is not set + +# +# Memory Management +# +CONFIG_RT_USING_MEMPOOL=y +CONFIG_RT_USING_SMALL_MEM=y +# CONFIG_RT_USING_SLAB is not set +CONFIG_RT_USING_MEMHEAP=y +CONFIG_RT_MEMHEAP_FAST_MODE=y +# CONFIG_RT_MEMHEAP_BEST_MODE is not set +CONFIG_RT_USING_SMALL_MEM_AS_HEAP=y +# CONFIG_RT_USING_MEMHEAP_AS_HEAP is not set +# CONFIG_RT_USING_SLAB_AS_HEAP is not set +# CONFIG_RT_USING_USERHEAP is not set +# CONFIG_RT_USING_NOHEAP is not set +CONFIG_RT_USING_MEMTRACE=y +# CONFIG_RT_USING_HEAP_ISR is not set +CONFIG_RT_USING_HEAP=y + +# +# Kernel Device Object +# +CONFIG_RT_USING_DEVICE=y +CONFIG_RT_USING_DEVICE_OPS=y +# CONFIG_RT_USING_DM is not set +CONFIG_RT_USING_INTERRUPT_INFO=y +CONFIG_RT_USING_CONSOLE=y +CONFIG_RT_CONSOLEBUF_SIZE=256 +CONFIG_RT_CONSOLE_DEVICE_NAME="uart0" +CONFIG_RT_VER_NUM=0x50001 +# CONFIG_RT_USING_STDC_ATOMIC is not set +CONFIG_RT_USING_CACHE=y +# CONFIG_RT_USING_HW_ATOMIC is not set +# CONFIG_ARCH_ARM_BOOTWITH_FLUSH_CACHE is not set +# CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set +# CONFIG_RT_USING_CPU_FFS is not set + +# +# RT-Thread Components +# +CONFIG_RT_USING_COMPONENTS_INIT=y +CONFIG_RT_USING_USER_MAIN=y +CONFIG_RT_MAIN_THREAD_STACK_SIZE=2048 +CONFIG_RT_MAIN_THREAD_PRIORITY=10 +# CONFIG_RT_USING_LEGACY is not set +CONFIG_RT_USING_MSH=y +CONFIG_RT_USING_FINSH=y +CONFIG_FINSH_USING_MSH=y +CONFIG_FINSH_THREAD_NAME="tshell" +CONFIG_FINSH_THREAD_PRIORITY=20 +CONFIG_FINSH_THREAD_STACK_SIZE=4096 +CONFIG_FINSH_USING_HISTORY=y +CONFIG_FINSH_HISTORY_LINES=10 +CONFIG_FINSH_USING_SYMTAB=y +CONFIG_FINSH_CMD_SIZE=256 +CONFIG_MSH_USING_BUILT_IN_COMMANDS=y +CONFIG_FINSH_USING_DESCRIPTION=y +# CONFIG_FINSH_ECHO_DISABLE_DEFAULT is not set +# CONFIG_FINSH_USING_AUTH is not set +CONFIG_FINSH_ARG_MAX=10 + +# +# DFS: device virtual file system +# +CONFIG_RT_USING_DFS=y +CONFIG_DFS_USING_POSIX=y +CONFIG_DFS_USING_WORKDIR=y +# CONFIG_RT_USING_DFS_MNTTABLE is not set +CONFIG_DFS_FD_MAX=32 +CONFIG_RT_USING_DFS_V1=y +# CONFIG_RT_USING_DFS_V2 is not set +CONFIG_DFS_FILESYSTEMS_MAX=8 +CONFIG_DFS_FILESYSTEM_TYPES_MAX=8 +CONFIG_RT_USING_DFS_ELMFAT=y + +# +# elm-chan's FatFs, Generic FAT Filesystem Module +# +CONFIG_RT_DFS_ELM_CODE_PAGE=437 +CONFIG_RT_DFS_ELM_WORD_ACCESS=y +# CONFIG_RT_DFS_ELM_USE_LFN_0 is not set +# CONFIG_RT_DFS_ELM_USE_LFN_1 is not set +# CONFIG_RT_DFS_ELM_USE_LFN_2 is not set +CONFIG_RT_DFS_ELM_USE_LFN_3=y +CONFIG_RT_DFS_ELM_USE_LFN=3 +CONFIG_RT_DFS_ELM_LFN_UNICODE_0=y +# CONFIG_RT_DFS_ELM_LFN_UNICODE_1 is not set +# CONFIG_RT_DFS_ELM_LFN_UNICODE_2 is not set +# CONFIG_RT_DFS_ELM_LFN_UNICODE_3 is not set +CONFIG_RT_DFS_ELM_LFN_UNICODE=0 +CONFIG_RT_DFS_ELM_MAX_LFN=255 +CONFIG_RT_DFS_ELM_DRIVES=2 +CONFIG_RT_DFS_ELM_MAX_SECTOR_SIZE=4096 +# CONFIG_RT_DFS_ELM_USE_ERASE is not set +CONFIG_RT_DFS_ELM_REENTRANT=y +CONFIG_RT_DFS_ELM_MUTEX_TIMEOUT=3000 +CONFIG_RT_USING_DFS_DEVFS=y +CONFIG_RT_USING_DFS_ROMFS=y +# CONFIG_RT_USING_DFS_CROMFS is not set +# CONFIG_RT_USING_DFS_RAMFS is not set +CONFIG_RT_USING_DFS_TMPFS=y +# CONFIG_RT_USING_FAL is not set + +# +# Device Drivers +# +CONFIG_RT_USING_DEVICE_IPC=y +CONFIG_RT_UNAMED_PIPE_NUMBER=64 +CONFIG_RT_USING_SYSTEM_WORKQUEUE=y +CONFIG_RT_SYSTEM_WORKQUEUE_STACKSIZE=2048 +CONFIG_RT_SYSTEM_WORKQUEUE_PRIORITY=23 +CONFIG_RT_USING_SERIAL=y +CONFIG_RT_USING_SERIAL_V1=y +# CONFIG_RT_USING_SERIAL_V2 is not set +CONFIG_RT_SERIAL_USING_DMA=y +CONFIG_RT_SERIAL_RB_BUFSZ=64 +# CONFIG_RT_USING_CAN is not set +# CONFIG_RT_USING_HWTIMER is not set +# CONFIG_RT_USING_CPUTIME is not set +# CONFIG_RT_USING_I2C is not set +# CONFIG_RT_USING_PHY is not set +# CONFIG_RT_USING_PIN is not set +# CONFIG_RT_USING_ADC is not set +# CONFIG_RT_USING_DAC is not set +# CONFIG_RT_USING_NULL is not set +# CONFIG_RT_USING_ZERO is not set +# CONFIG_RT_USING_RANDOM is not set +# CONFIG_RT_USING_PWM is not set +# CONFIG_RT_USING_MTD_NOR is not set +# CONFIG_RT_USING_MTD_NAND is not set +# CONFIG_RT_USING_PM is not set +# CONFIG_RT_USING_FDT is not set +# CONFIG_RT_USING_RTC is not set +# CONFIG_RT_USING_SDIO is not set +# CONFIG_RT_USING_SPI is not set +# CONFIG_RT_USING_WDT is not set +# CONFIG_RT_USING_AUDIO is not set +# CONFIG_RT_USING_SENSOR is not set +# CONFIG_RT_USING_TOUCH is not set +# CONFIG_RT_USING_LCD is not set +# CONFIG_RT_USING_HWCRYPTO is not set +# CONFIG_RT_USING_PULSE_ENCODER is not set +# CONFIG_RT_USING_INPUT_CAPTURE is not set +# CONFIG_RT_USING_DEV_BUS is not set +# CONFIG_RT_USING_WIFI is not set +# CONFIG_RT_USING_VIRTIO is not set + +# +# Using USB +# +# CONFIG_RT_USING_USB is not set +# CONFIG_RT_USING_USB_HOST is not set +# CONFIG_RT_USING_USB_DEVICE is not set + +# +# C/C++ and POSIX layer +# +CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 + +# +# POSIX (Portable Operating System Interface) layer +# +CONFIG_RT_USING_POSIX_FS=y +CONFIG_RT_USING_POSIX_DEVIO=y +CONFIG_RT_USING_POSIX_STDIO=y +CONFIG_RT_USING_POSIX_POLL=y +CONFIG_RT_USING_POSIX_SELECT=y +# CONFIG_RT_USING_POSIX_SOCKET is not set +CONFIG_RT_USING_POSIX_TERMIOS=y +CONFIG_RT_USING_POSIX_AIO=y +# CONFIG_RT_USING_POSIX_MMAN is not set +CONFIG_RT_USING_POSIX_DELAY=y +CONFIG_RT_USING_POSIX_CLOCK=y +CONFIG_RT_USING_POSIX_TIMER=y +# CONFIG_RT_USING_PTHREADS is not set +# CONFIG_RT_USING_MODULE is not set + +# +# Interprocess Communication (IPC) +# +CONFIG_RT_USING_POSIX_PIPE=y +CONFIG_RT_USING_POSIX_PIPE_SIZE=512 +CONFIG_RT_USING_POSIX_MESSAGE_QUEUE=y +CONFIG_RT_USING_POSIX_MESSAGE_SEMAPHORE=y + +# +# Socket is in the 'Network' category +# +# CONFIG_RT_USING_CPLUSPLUS is not set + +# +# Network +# +# CONFIG_RT_USING_SAL is not set +# CONFIG_RT_USING_NETDEV is not set +# CONFIG_RT_USING_LWIP is not set +# CONFIG_RT_USING_AT is not set + +# +# Utilities +# +# CONFIG_RT_USING_RYM is not set +# CONFIG_RT_USING_ULOG is not set +# CONFIG_RT_USING_UTEST is not set +# CONFIG_RT_USING_VAR_EXPORT is not set +CONFIG_RT_USING_ADT=y +# CONFIG_RT_USING_RT_LINK is not set +# CONFIG_RT_USING_VBUS is not set + +# +# RT-Thread Utestcases +# +# CONFIG_RT_USING_UTESTCASES is not set + +# +# RT-Thread online packages +# + +# +# IoT - internet of things +# +# CONFIG_PKG_USING_LWIP is not set +# CONFIG_PKG_USING_LORAWAN_DRIVER is not set +# CONFIG_PKG_USING_PAHOMQTT is not set +# CONFIG_PKG_USING_UMQTT is not set +# CONFIG_PKG_USING_WEBCLIENT is not set +# CONFIG_PKG_USING_WEBNET is not set +# CONFIG_PKG_USING_MONGOOSE is not set +# CONFIG_PKG_USING_MYMQTT is not set +# CONFIG_PKG_USING_KAWAII_MQTT is not set +# CONFIG_PKG_USING_BC28_MQTT is not set +# CONFIG_PKG_USING_WEBTERMINAL is not set +# CONFIG_PKG_USING_LIBMODBUS is not set +# CONFIG_PKG_USING_FREEMODBUS is not set +# CONFIG_PKG_USING_NANOPB is not set + +# +# Wi-Fi +# + +# +# Marvell WiFi +# +# CONFIG_PKG_USING_WLANMARVELL is not set + +# +# Wiced WiFi +# +# CONFIG_PKG_USING_WLAN_WICED is not set +# CONFIG_PKG_USING_RW007 is not set +# CONFIG_PKG_USING_COAP is not set +# CONFIG_PKG_USING_NOPOLL is not set +# CONFIG_PKG_USING_NETUTILS is not set +# CONFIG_PKG_USING_CMUX is not set +# CONFIG_PKG_USING_PPP_DEVICE is not set +# CONFIG_PKG_USING_AT_DEVICE is not set +# CONFIG_PKG_USING_ATSRV_SOCKET is not set +# CONFIG_PKG_USING_WIZNET is not set +# CONFIG_PKG_USING_ZB_COORDINATOR is not set + +# +# IoT Cloud +# +# CONFIG_PKG_USING_ONENET is not set +# CONFIG_PKG_USING_GAGENT_CLOUD is not set +# CONFIG_PKG_USING_ALI_IOTKIT is not set +# CONFIG_PKG_USING_AZURE is not set +# CONFIG_PKG_USING_TENCENT_IOT_EXPLORER is not set +# CONFIG_PKG_USING_JIOT-C-SDK is not set +# CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set +# CONFIG_PKG_USING_JOYLINK is not set +# CONFIG_PKG_USING_EZ_IOT_OS is not set +# CONFIG_PKG_USING_IOTSHARP_SDK is not set +# CONFIG_PKG_USING_NIMBLE is not set +# CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set +# CONFIG_PKG_USING_OTA_DOWNLOADER is not set +# CONFIG_PKG_USING_IPMSG is not set +# CONFIG_PKG_USING_LSSDP is not set +# CONFIG_PKG_USING_AIRKISS_OPEN is not set +# CONFIG_PKG_USING_LIBRWS is not set +# CONFIG_PKG_USING_TCPSERVER is not set +# CONFIG_PKG_USING_PROTOBUF_C is not set +# CONFIG_PKG_USING_DLT645 is not set +# CONFIG_PKG_USING_QXWZ is not set +# CONFIG_PKG_USING_SMTP_CLIENT is not set +# CONFIG_PKG_USING_ABUP_FOTA is not set +# CONFIG_PKG_USING_LIBCURL2RTT is not set +# CONFIG_PKG_USING_CAPNP is not set +# CONFIG_PKG_USING_AGILE_TELNET is not set +# CONFIG_PKG_USING_NMEALIB is not set +# CONFIG_PKG_USING_PDULIB is not set +# CONFIG_PKG_USING_BTSTACK is not set +# CONFIG_PKG_USING_LORAWAN_ED_STACK is not set +# CONFIG_PKG_USING_WAYZ_IOTKIT is not set +# CONFIG_PKG_USING_MAVLINK is not set +# CONFIG_PKG_USING_BSAL is not set +# CONFIG_PKG_USING_AGILE_MODBUS is not set +# CONFIG_PKG_USING_AGILE_FTP is not set +# CONFIG_PKG_USING_EMBEDDEDPROTO is not set +# CONFIG_PKG_USING_RT_LINK_HW is not set +# CONFIG_PKG_USING_LORA_PKT_FWD is not set +# CONFIG_PKG_USING_LORA_GW_DRIVER_LIB is not set +# CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set +# CONFIG_PKG_USING_HM is not set +# CONFIG_PKG_USING_SMALL_MODBUS is not set +# CONFIG_PKG_USING_NET_SERVER is not set +# CONFIG_PKG_USING_ZFTP is not set + +# +# security packages +# +# CONFIG_PKG_USING_MBEDTLS is not set +# CONFIG_PKG_USING_LIBSODIUM is not set +# CONFIG_PKG_USING_LIBHYDROGEN is not set +# CONFIG_PKG_USING_TINYCRYPT is not set +# CONFIG_PKG_USING_TFM is not set +# CONFIG_PKG_USING_YD_CRYPTO is not set + +# +# language packages +# + +# +# JSON: JavaScript Object Notation, a lightweight data-interchange format +# +# CONFIG_PKG_USING_CJSON is not set +# CONFIG_PKG_USING_LJSON is not set +# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set +# CONFIG_PKG_USING_RAPIDJSON is not set +# CONFIG_PKG_USING_JSMN is not set +# CONFIG_PKG_USING_AGILE_JSMN is not set +# CONFIG_PKG_USING_PARSON is not set + +# +# XML: Extensible Markup Language +# +# CONFIG_PKG_USING_SIMPLE_XML is not set +# CONFIG_PKG_USING_EZXML is not set +# CONFIG_PKG_USING_LUATOS_SOC is not set +# CONFIG_PKG_USING_LUA is not set +# CONFIG_PKG_USING_JERRYSCRIPT is not set +# CONFIG_PKG_USING_MICROPYTHON is not set +# CONFIG_PKG_USING_PIKASCRIPT is not set +# CONFIG_PKG_USING_RTT_RUST is not set + +# +# multimedia packages +# + +# +# LVGL: powerful and easy-to-use embedded GUI library +# +# CONFIG_PKG_USING_LVGL is not set +# CONFIG_PKG_USING_LITTLEVGL2RTT is not set +# CONFIG_PKG_USING_LV_MUSIC_DEMO is not set +# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set + +# +# u8g2: a monochrome graphic library +# +# CONFIG_PKG_USING_U8G2_OFFICIAL is not set +# CONFIG_PKG_USING_U8G2 is not set +# CONFIG_PKG_USING_OPENMV is not set +# CONFIG_PKG_USING_MUPDF is not set +# CONFIG_PKG_USING_STEMWIN is not set +# CONFIG_PKG_USING_WAVPLAYER is not set +# CONFIG_PKG_USING_TJPGD is not set +# CONFIG_PKG_USING_PDFGEN is not set +# CONFIG_PKG_USING_HELIX is not set +# CONFIG_PKG_USING_AZUREGUIX is not set +# CONFIG_PKG_USING_TOUCHGFX2RTT is not set +# CONFIG_PKG_USING_NUEMWIN is not set +# CONFIG_PKG_USING_MP3PLAYER is not set +# CONFIG_PKG_USING_TINYJPEG is not set +# CONFIG_PKG_USING_UGUI is not set + +# +# PainterEngine: A cross-platform graphics application framework written in C language +# +# CONFIG_PKG_USING_PAINTERENGINE is not set +# CONFIG_PKG_USING_PAINTERENGINE_AUX is not set +# CONFIG_PKG_USING_MCURSES is not set +# CONFIG_PKG_USING_TERMBOX is not set +# CONFIG_PKG_USING_VT100 is not set +# CONFIG_PKG_USING_QRCODE is not set +# CONFIG_PKG_USING_GUIENGINE is not set + +# +# tools packages +# +# CONFIG_PKG_USING_CMBACKTRACE is not set +# CONFIG_PKG_USING_EASYFLASH is not set +# CONFIG_PKG_USING_EASYLOGGER is not set +# CONFIG_PKG_USING_SYSTEMVIEW is not set +# CONFIG_PKG_USING_SEGGER_RTT is not set +# CONFIG_PKG_USING_RDB is not set +# CONFIG_PKG_USING_ULOG_EASYFLASH is not set +# CONFIG_PKG_USING_ULOG_FILE is not set +# CONFIG_PKG_USING_LOGMGR is not set +# CONFIG_PKG_USING_ADBD is not set +# CONFIG_PKG_USING_COREMARK is not set +# CONFIG_PKG_USING_DHRYSTONE is not set +# CONFIG_PKG_USING_MEMORYPERF is not set +# CONFIG_PKG_USING_NR_MICRO_SHELL is not set +# CONFIG_PKG_USING_CHINESE_FONT_LIBRARY is not set +# CONFIG_PKG_USING_LUNAR_CALENDAR is not set +# CONFIG_PKG_USING_BS8116A is not set +# CONFIG_PKG_USING_GPS_RMC is not set +# CONFIG_PKG_USING_URLENCODE is not set +# CONFIG_PKG_USING_UMCN is not set +# CONFIG_PKG_USING_LWRB2RTT is not set +# CONFIG_PKG_USING_CPU_USAGE is not set +# CONFIG_PKG_USING_GBK2UTF8 is not set +# CONFIG_PKG_USING_VCONSOLE is not set +# CONFIG_PKG_USING_KDB is not set +# CONFIG_PKG_USING_WAMR is not set +# CONFIG_PKG_USING_MICRO_XRCE_DDS_CLIENT is not set +# CONFIG_PKG_USING_LWLOG is not set +# CONFIG_PKG_USING_ANV_TRACE is not set +# CONFIG_PKG_USING_ANV_MEMLEAK is not set +# CONFIG_PKG_USING_ANV_TESTSUIT is not set +# CONFIG_PKG_USING_ANV_BENCH is not set +# CONFIG_PKG_USING_DEVMEM is not set +# CONFIG_PKG_USING_REGEX is not set +# CONFIG_PKG_USING_MEM_SANDBOX is not set +# CONFIG_PKG_USING_SOLAR_TERMS is not set +# CONFIG_PKG_USING_GAN_ZHI is not set +# CONFIG_PKG_USING_FDT is not set +# CONFIG_PKG_USING_CBOX is not set +# CONFIG_PKG_USING_SNOWFLAKE is not set +# CONFIG_PKG_USING_HASH_MATCH is not set +# CONFIG_PKG_USING_FIRE_PID_CURVE is not set +# CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set +# CONFIG_PKG_USING_VOFA_PLUS is not set + +# +# system packages +# + +# +# enhanced kernel services +# +# CONFIG_PKG_USING_RT_MEMCPY_CM is not set +# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set +# CONFIG_PKG_USING_RT_VSNPRINTF_FULL is not set + +# +# acceleration: Assembly language or algorithmic acceleration packages +# +# CONFIG_PKG_USING_QFPLIB_M0_FULL is not set +# CONFIG_PKG_USING_QFPLIB_M0_TINY is not set +# CONFIG_PKG_USING_QFPLIB_M3 is not set + +# +# CMSIS: ARM Cortex-M Microcontroller Software Interface Standard +# +# CONFIG_PKG_USING_CMSIS_5 is not set +# CONFIG_PKG_USING_CMSIS_RTOS1 is not set +# CONFIG_PKG_USING_CMSIS_RTOS2 is not set + +# +# Micrium: Micrium software products porting for RT-Thread +# +# CONFIG_PKG_USING_UCOSIII_WRAPPER is not set +# CONFIG_PKG_USING_UCOSII_WRAPPER is not set +# CONFIG_PKG_USING_UC_CRC is not set +# CONFIG_PKG_USING_UC_CLK is not set +# CONFIG_PKG_USING_UC_COMMON is not set +# CONFIG_PKG_USING_UC_MODBUS is not set +# CONFIG_PKG_USING_FREERTOS_WRAPPER is not set +# CONFIG_PKG_USING_CAIRO is not set +# CONFIG_PKG_USING_PIXMAN is not set +# CONFIG_PKG_USING_PARTITION is not set +# CONFIG_PKG_USING_PERF_COUNTER is not set +# CONFIG_PKG_USING_FLASHDB is not set +# CONFIG_PKG_USING_SQLITE is not set +# CONFIG_PKG_USING_RTI is not set +# CONFIG_PKG_USING_DFS_YAFFS is not set +# CONFIG_PKG_USING_LITTLEFS is not set +# CONFIG_PKG_USING_DFS_JFFS2 is not set +# CONFIG_PKG_USING_DFS_UFFS is not set +# CONFIG_PKG_USING_LWEXT4 is not set +# CONFIG_PKG_USING_THREAD_POOL is not set +# CONFIG_PKG_USING_ROBOTS is not set +# CONFIG_PKG_USING_EV is not set +# CONFIG_PKG_USING_SYSWATCH is not set +# CONFIG_PKG_USING_SYS_LOAD_MONITOR is not set +# CONFIG_PKG_USING_PLCCORE is not set +# CONFIG_PKG_USING_RAMDISK is not set +# CONFIG_PKG_USING_MININI is not set +# CONFIG_PKG_USING_QBOOT is not set +# CONFIG_PKG_USING_PPOOL is not set +# CONFIG_PKG_USING_OPENAMP is not set +# CONFIG_PKG_USING_LPM is not set +# CONFIG_PKG_USING_TLSF is not set +# CONFIG_PKG_USING_EVENT_RECORDER is not set +# CONFIG_PKG_USING_ARM_2D is not set +# CONFIG_PKG_USING_MCUBOOT is not set +# CONFIG_PKG_USING_TINYUSB is not set +# CONFIG_PKG_USING_CHERRYUSB is not set +# CONFIG_PKG_USING_KMULTI_RTIMER is not set +# CONFIG_PKG_USING_TFDB is not set +# CONFIG_PKG_USING_QPC is not set +# CONFIG_PKG_USING_AGILE_UPGRADE is not set + +# +# peripheral libraries and drivers +# +# CONFIG_PKG_USING_SENSORS_DRIVERS is not set +# CONFIG_PKG_USING_REALTEK_AMEBA is not set +# CONFIG_PKG_USING_SHT2X is not set +# CONFIG_PKG_USING_SHT3X is not set +# CONFIG_PKG_USING_ADT74XX is not set +# CONFIG_PKG_USING_AS7341 is not set +# CONFIG_PKG_USING_STM32_SDIO is not set +# CONFIG_PKG_USING_ESP_IDF is not set +# CONFIG_PKG_USING_ICM20608 is not set +# CONFIG_PKG_USING_BUTTON is not set +# CONFIG_PKG_USING_PCF8574 is not set +# CONFIG_PKG_USING_SX12XX is not set +# CONFIG_PKG_USING_SIGNAL_LED is not set +# CONFIG_PKG_USING_LEDBLINK is not set +# CONFIG_PKG_USING_LITTLED is not set +# CONFIG_PKG_USING_LKDGUI is not set +# CONFIG_PKG_USING_NRF5X_SDK is not set +# CONFIG_PKG_USING_NRFX is not set +# CONFIG_PKG_USING_WM_LIBRARIES is not set + +# +# Kendryte SDK +# +# CONFIG_PKG_USING_K210_SDK is not set +# CONFIG_PKG_USING_KENDRYTE_SDK is not set +# CONFIG_PKG_USING_INFRARED is not set +# CONFIG_PKG_USING_MULTI_INFRARED is not set +# CONFIG_PKG_USING_AGILE_BUTTON is not set +# CONFIG_PKG_USING_AGILE_LED is not set +# CONFIG_PKG_USING_AT24CXX is not set +# CONFIG_PKG_USING_MOTIONDRIVER2RTT is not set +# CONFIG_PKG_USING_AD7746 is not set +# CONFIG_PKG_USING_PCA9685 is not set +# CONFIG_PKG_USING_I2C_TOOLS is not set +# CONFIG_PKG_USING_NRF24L01 is not set +# CONFIG_PKG_USING_TOUCH_DRIVERS is not set +# CONFIG_PKG_USING_MAX17048 is not set +# CONFIG_PKG_USING_RPLIDAR is not set +# CONFIG_PKG_USING_AS608 is not set +# CONFIG_PKG_USING_RC522 is not set +# CONFIG_PKG_USING_WS2812B is not set +# CONFIG_PKG_USING_EMBARC_BSP is not set +# CONFIG_PKG_USING_EXTERN_RTC_DRIVERS is not set +# CONFIG_PKG_USING_MULTI_RTIMER is not set +# CONFIG_PKG_USING_MAX7219 is not set +# CONFIG_PKG_USING_BEEP is not set +# CONFIG_PKG_USING_EASYBLINK is not set +# CONFIG_PKG_USING_PMS_SERIES is not set +# CONFIG_PKG_USING_CAN_YMODEM is not set +# CONFIG_PKG_USING_LORA_RADIO_DRIVER is not set +# CONFIG_PKG_USING_QLED is not set +# CONFIG_PKG_USING_PAJ7620 is not set +# CONFIG_PKG_USING_AGILE_CONSOLE is not set +# CONFIG_PKG_USING_LD3320 is not set +# CONFIG_PKG_USING_WK2124 is not set +# CONFIG_PKG_USING_LY68L6400 is not set +# CONFIG_PKG_USING_DM9051 is not set +# CONFIG_PKG_USING_SSD1306 is not set +# CONFIG_PKG_USING_QKEY is not set +# CONFIG_PKG_USING_RS485 is not set +# CONFIG_PKG_USING_RS232 is not set +# CONFIG_PKG_USING_NES is not set +# CONFIG_PKG_USING_VIRTUAL_SENSOR is not set +# CONFIG_PKG_USING_VDEVICE is not set +# CONFIG_PKG_USING_SGM706 is not set +# CONFIG_PKG_USING_STM32WB55_SDK is not set +# CONFIG_PKG_USING_RDA58XX is not set +# CONFIG_PKG_USING_LIBNFC is not set +# CONFIG_PKG_USING_MFOC is not set +# CONFIG_PKG_USING_TMC51XX is not set +# CONFIG_PKG_USING_TCA9534 is not set +# CONFIG_PKG_USING_KOBUKI is not set +# CONFIG_PKG_USING_ROSSERIAL is not set +# CONFIG_PKG_USING_MICRO_ROS is not set +# CONFIG_PKG_USING_MCP23008 is not set +# CONFIG_PKG_USING_BLUETRUM_SDK is not set +# CONFIG_PKG_USING_MISAKA_AT24CXX is not set +# CONFIG_PKG_USING_MISAKA_RGB_BLING is not set +# CONFIG_PKG_USING_LORA_MODEM_DRIVER is not set +# CONFIG_PKG_USING_BL_MCU_SDK is not set +# CONFIG_PKG_USING_SOFT_SERIAL is not set +# CONFIG_PKG_USING_MB85RS16 is not set +# CONFIG_PKG_USING_CW2015 is not set +# CONFIG_PKG_USING_RFM300 is not set +# CONFIG_PKG_USING_IO_INPUT_FILTER is not set +# CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set + +# +# AI packages +# +# CONFIG_PKG_USING_LIBANN is not set +# CONFIG_PKG_USING_NNOM is not set +# CONFIG_PKG_USING_ONNX_BACKEND is not set +# CONFIG_PKG_USING_ONNX_PARSER is not set +# CONFIG_PKG_USING_TENSORFLOWLITEMICRO is not set +# CONFIG_PKG_USING_ELAPACK is not set +# CONFIG_PKG_USING_ULAPACK is not set +# CONFIG_PKG_USING_QUEST is not set +# CONFIG_PKG_USING_NAXOS is not set + +# +# miscellaneous packages +# + +# +# project laboratory +# + +# +# samples: kernel and components samples +# +# CONFIG_PKG_USING_KERNEL_SAMPLES is not set +# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set +# CONFIG_PKG_USING_NETWORK_SAMPLES is not set +# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set + +# +# entertainment: terminal games and other interesting software packages +# +# CONFIG_PKG_USING_CMATRIX is not set +# CONFIG_PKG_USING_SL is not set +# CONFIG_PKG_USING_CAL is not set +# CONFIG_PKG_USING_ACLOCK is not set +# CONFIG_PKG_USING_THREES is not set +# CONFIG_PKG_USING_2048 is not set +# CONFIG_PKG_USING_SNAKE is not set +# CONFIG_PKG_USING_TETRIS is not set +# CONFIG_PKG_USING_DONUT is not set +# CONFIG_PKG_USING_COWSAY is not set +# CONFIG_PKG_USING_LIBCSV is not set +# CONFIG_PKG_USING_OPTPARSE is not set +# CONFIG_PKG_USING_FASTLZ is not set +# CONFIG_PKG_USING_MINILZO is not set +# CONFIG_PKG_USING_QUICKLZ is not set +# CONFIG_PKG_USING_LZMA is not set +# CONFIG_PKG_USING_MULTIBUTTON is not set +# CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set +# CONFIG_PKG_USING_CANFESTIVAL is not set +# CONFIG_PKG_USING_ZLIB is not set +# CONFIG_PKG_USING_MINIZIP is not set +# CONFIG_PKG_USING_HEATSHRINK is not set +# CONFIG_PKG_USING_DSTR is not set +# CONFIG_PKG_USING_TINYFRAME is not set +# CONFIG_PKG_USING_KENDRYTE_DEMO is not set +# CONFIG_PKG_USING_DIGITALCTRL is not set +# CONFIG_PKG_USING_UPACKER is not set +# CONFIG_PKG_USING_UPARAM is not set +# CONFIG_PKG_USING_HELLO is not set +# CONFIG_PKG_USING_VI is not set +# CONFIG_PKG_USING_KI is not set +# CONFIG_PKG_USING_ARMv7M_DWT is not set +# CONFIG_PKG_USING_UKAL is not set +# CONFIG_PKG_USING_CRCLIB is not set +# CONFIG_PKG_USING_LWGPS is not set +# CONFIG_PKG_USING_STATE_MACHINE is not set +# CONFIG_PKG_USING_DESIGN_PATTERN is not set +# CONFIG_PKG_USING_CONTROLLER is not set +# CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set +# CONFIG_PKG_USING_MFBD is not set +# CONFIG_PKG_USING_SLCAN2RTT is not set +# CONFIG_PKG_USING_SOEM is not set +# CONFIG_PKG_USING_QPARAM is not set + +# +# Arduino libraries +# +# CONFIG_PKG_USING_RTDUINO is not set + +# +# Projects +# +# CONFIG_PKG_USING_ARDUINO_ULTRASOUND_RADAR is not set +# CONFIG_PKG_USING_ARDUINO_SENSOR_KIT is not set +# CONFIG_PKG_USING_ARDUINO_MATLAB_SUPPORT is not set + +# +# Sensors +# +# CONFIG_PKG_USING_ARDUINO_SEEED_BMP280 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL375 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL53L0X is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LIS3DHTR is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_DHT is not set +# CONFIG_PKG_USING_ARDUINO_CAPACITIVESENSOR is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSOR is not set +# CONFIG_PKG_USING_ADAFRUIT_MAX31855 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31865 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31856 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90614 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM9DS1 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AHTX0 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM9DS0 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP280 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADT7410 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP085 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BME680 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP9808 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP4728 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_INA219 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LTR390 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL345 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DHT is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP9600 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM6DS is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO055 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX1704X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MMC56X3 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90393 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90395 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ICM20X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DPS310 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTS221 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHT4X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHT31 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL343 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BME280 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AS726X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AMG88XX is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AM2320 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AM2315 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LTR329_LTR303 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP085_UNIFIED is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP183 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP183_UNIFIED is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP3XX is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MS8607 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS3MDL is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90640 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MMA8451 is not set +# CONFIG_PKG_USING_ADAFRUIT_MSA301 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPL115A2 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO08X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO08X_RVC is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS2MDL is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM303DLH_MAG is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LC709203F is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_CAP1188 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_CCS811 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_NAU7802 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS331 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LPS2X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LPS35HW is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM303_ACCEL is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS3DH is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCF8591 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPL3115A2 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPR121 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPRLS is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPU6050 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCT2075 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PM25AQI is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_EMC2101 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_FXAS21002C is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SCD30 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_FXOS8700 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HMC5883_UNIFIED is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SGP30 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP006 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TLA202X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TCS34725 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI7021 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI1145 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SGP40 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHTC3 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HDC1000 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTU21DF is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AS7341 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTU31D is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSORLAB is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_INA260 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP007_LIBRARY is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_L3GD20 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP117 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSC2007 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSL2561 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSL2591_LIBRARY is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VCNL4040 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML6070 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML6075 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML7700 is not set + +# +# Display +# +# CONFIG_PKG_USING_ARDUINO_U8G2 is not set + +# +# Timing +# +# CONFIG_PKG_USING_ARDUINO_MSTIMER2 is not set + +# +# Data Processing +# +# CONFIG_PKG_USING_ARDUINO_KALMANFILTER is not set +# CONFIG_PKG_USING_ARDUINO_ARDUINOJSON is not set + +# +# Data Storage +# + +# +# Communication +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PN532 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI4713 is not set + +# +# Device Control +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCF8574 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCA9685 is not set + +# +# Other +# + +# +# Signal IO +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BUSIO is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TCA8418 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP23017 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADS1X15 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AW9523 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP3008 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP4725 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BD3491FS is not set + +# +# Uncategorized +# + +# +# Hardware Drivers Config +# +CONFIG_SOC_ZYNQMP_R5=y + +# +# On-Chip Peripheral Drivers +# +CONFIG_BSP_USING_UART0=y diff --git a/bsp/qemu-zynqmp-r5/.cproject b/bsp/qemu-zynqmp-r5/.cproject new file mode 100644 index 0000000000..4c634d8554 --- /dev/null +++ b/bsp/qemu-zynqmp-r5/.cproject @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bsp/qemu-zynqmp-r5/.gitignore b/bsp/qemu-zynqmp-r5/.gitignore new file mode 100644 index 0000000000..fba5a7a92e --- /dev/null +++ b/bsp/qemu-zynqmp-r5/.gitignore @@ -0,0 +1,44 @@ +*.pyc +*.map +*.dblite +*.elf +*.bin +*.hex +*.axf +*.exe +*.pdb +*.idb +*.ilk +*.old +build +Debug +documentation/html +packages/ +*~ +*.o +*.obj +*.out +*.bak +*.dep +*.lib +*.i +*.d +.DS_Stor* +.config 3 +.config 4 +.config 5 +Midea-X1 +*.uimg +GPATH +GRTAGS +GTAGS +.vscode +JLinkLog.txt +JLinkSettings.ini +DebugConfig/ +RTE/ +settings/ +*.uvguix* +cconfig.h +.settings +drivers/automac.h diff --git a/bsp/qemu-zynqmp-r5/.project b/bsp/qemu-zynqmp-r5/.project new file mode 100644 index 0000000000..e5f00228c0 --- /dev/null +++ b/bsp/qemu-zynqmp-r5/.project @@ -0,0 +1,54 @@ + + + qemu-vexpress-a9 + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.core.rttnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + + + rt-thread + 2 + virtual:/virtual + + + rt-thread/components + 2 + $%7BPARENT-2-PROJECT_LOC%7D/components + + + rt-thread/include + 2 + $%7BPARENT-2-PROJECT_LOC%7D/include + + + rt-thread/libcpu + 2 + $%7BPARENT-2-PROJECT_LOC%7D/libcpu + + + rt-thread/src + 2 + $%7BPARENT-2-PROJECT_LOC%7D/src + + + diff --git a/bsp/qemu-zynqmp-r5/Kconfig b/bsp/qemu-zynqmp-r5/Kconfig new file mode 100644 index 0000000000..75aeadae60 --- /dev/null +++ b/bsp/qemu-zynqmp-r5/Kconfig @@ -0,0 +1,20 @@ +mainmenu "RT-Thread Project Configuration" + +config BSP_DIR + string + option env="BSP_ROOT" + default "." + +config RTT_DIR + string + option env="RTT_ROOT" + default "../.." + +config PKGS_DIR + string + option env="PKGS_ROOT" + default "packages" + +source "$RTT_DIR/Kconfig" +source "$PKGS_DIR/Kconfig" +source "$BSP_DIR/drivers/Kconfig" diff --git a/bsp/qemu-zynqmp-r5/README.md b/bsp/qemu-zynqmp-r5/README.md new file mode 100644 index 0000000000..113159ff08 --- /dev/null +++ b/bsp/qemu-zynqmp-r5/README.md @@ -0,0 +1,61 @@ +# QEMU ZynqMP 板级支持包说明 + +## 简介 +本文档是为 QEMU 模拟 Xilinx Zynq UltraScale+ (ZynqMP) 平台提供的说明。 +> qemu-zynqmp-r5平台的支持,同时提供了两个部分。一是cortex-r5独立的libcpu,二是BSP的实现。 + +## 板载信息 +| **核心** | **支持情况** | **备注** | +|:---------------|:------------:|:-----------------------| +| R5-CPU0 | 支持 | 运行系统的为R5核的CPU0 | +| **中断控制器** | **支持情况** | **备注** | +| GICV1 | 支持 | PL390 | +| **片上外设** | **支持情况** | **备注** | +| UART | 支持 | UART0 | +| TTC | 支持 | | + +## 环境搭建(非常重要) +根据 Xilinx 官方给出的方案,`qemu-system-aarch64` 自带的 `xlnx-zcu102` 并不完善,故使用 QEMU Xilinx 补丁版。 +> 笔者暂无 Windows 平台,故此说明文档是以 Linux 为背景的。 + +### QEMU 源码下载与编译 +[Building and Running QEMU from Source Code](https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/822312999/Building+and+Running+QEMU+from+Source+Code) + +## 编译 +`scons -j12` + +## 运行和退出 +### 运行脚本 +| 脚本文件 | 运行平台 | 备注 | +|-------------------|----------|:------------------------:| +| qemu-nographic.sh | Linux | 以不带界面的模式启动运行 | + +### 运行 +> 注意:`sh qemu-nographic.sh`后面一定要加上,上面编译的`qemu-system-aarch64` +```bash +$ sh qemu-nographic.sh qemu-system-aarch64 +QEMU emulator version 7.1.0 (v2.6.0-55407-g21adc9f99e) +Copyright (c) 2003-2022 Fabrice Bellard and the QEMU Project developers + +\ | / +- RT - Thread Operating System +/ | \ 5.0.1 build May 15 2023 22:41:21 + 2006 - 2022 Copyright by RT-Thread team +Hello RT-Thread! +msh /> +``` + +### 退出 +`ctrl c` + +## 调试 +此版本QEMU的实现目前无法支持GDB调试,所以只能通过串口打印作为调试手段! + +## 参考资料 +- ARMv7-A and ARMv7-R Architecture Reference Manual (ARM DDI 0406C ID051414) +- Cortex-R5 and Cortex-R5F Technical Reference Manual (ARM DDI 0460C ID021511) +- Zynq UltraScale+ Device Technical Reference Manual (UG1085) + +## 联系人信息 + +维护人:[lepustse](https://gitee.com/lepustse) diff --git a/bsp/qemu-zynqmp-r5/SConscript b/bsp/qemu-zynqmp-r5/SConscript new file mode 100644 index 0000000000..4c815c49b8 --- /dev/null +++ b/bsp/qemu-zynqmp-r5/SConscript @@ -0,0 +1,15 @@ +# RT-Thread building script for bridge + +import os +from building import * + +cwd = GetCurrentDir() +objs = [] +list = os.listdir(cwd) + +for d in list: + path = os.path.join(cwd, d) + if os.path.isfile(os.path.join(path, 'SConscript')): + objs = objs + SConscript(os.path.join(d, 'SConscript')) + +Return('objs') diff --git a/bsp/qemu-zynqmp-r5/SConstruct b/bsp/qemu-zynqmp-r5/SConstruct new file mode 100644 index 0000000000..aa95fff7df --- /dev/null +++ b/bsp/qemu-zynqmp-r5/SConstruct @@ -0,0 +1,36 @@ +import os +import sys +import rtconfig + +if os.getenv('RTT_ROOT'): + RTT_ROOT = os.getenv('RTT_ROOT') +else: + RTT_ROOT = os.path.join(os.getcwd(), '..', '..') + +sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')] +from building import * + +TARGET = 'rtthread.' + rtconfig.TARGET_EXT + +DefaultEnvironment(tools=[]) +env = Environment(tools = ['mingw'], + AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS, + CC = rtconfig.CC, CFLAGS = rtconfig.CFLAGS, + CXX = rtconfig.CXX, CXXFLAGS = rtconfig.CXXFLAGS, + AR = rtconfig.AR, ARFLAGS = '-rc', + LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) +env.PrependENVPath('PATH', rtconfig.EXEC_PATH) +env['ASCOM'] = env['ASPPCOM'] + +Export('RTT_ROOT') +Export('rtconfig') + +# prepare building environment +objs = PrepareBuilding(env, RTT_ROOT) + +if GetDepend('RT_USING_SMART'): + # use smart link.lds + env['LINKFLAGS'] = env['LINKFLAGS'].replace('link.lds', 'link_smart.lds') + +# make a building +DoBuilding(TARGET, objs) diff --git a/bsp/qemu-zynqmp-r5/applications/SConscript b/bsp/qemu-zynqmp-r5/applications/SConscript new file mode 100644 index 0000000000..83bada9f5d --- /dev/null +++ b/bsp/qemu-zynqmp-r5/applications/SConscript @@ -0,0 +1,15 @@ +import os +from building import * + +cwd = GetCurrentDir() +src = Glob('*.c') + Glob('*.cpp') +CPPPATH = [cwd] + +group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH) + +list = os.listdir(cwd) +for item in list: + if os.path.isfile(os.path.join(cwd, item, 'SConscript')): + group = group + SConscript(os.path.join(item, 'SConscript')) + +Return('group') diff --git a/bsp/qemu-zynqmp-r5/applications/main.c b/bsp/qemu-zynqmp-r5/applications/main.c new file mode 100644 index 0000000000..dcd040f616 --- /dev/null +++ b/bsp/qemu-zynqmp-r5/applications/main.c @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2023, lepustse@gmail.com + * + * License-Identifier: MIT + * + * Change Logs: + * Date Author Notes + * 2023-05-03 lepustse the first version + */ + +#include +#include +#include + +int main(void) +{ + printf("Hello RT-Thread!\n"); + + return 0; +} diff --git a/bsp/qemu-zynqmp-r5/drivers/Kconfig b/bsp/qemu-zynqmp-r5/drivers/Kconfig new file mode 100644 index 0000000000..5286c0357c --- /dev/null +++ b/bsp/qemu-zynqmp-r5/drivers/Kconfig @@ -0,0 +1,19 @@ +menu "Hardware Drivers Config" + + config SOC_ZYNQMP_R5 + bool + select RT_USING_CACHE + select RT_USING_COMPONENTS_INIT + select RT_USING_USER_MAIN + default y + + menu "On-Chip Peripheral Drivers" + + config BSP_USING_UART0 + bool "Enable UART0" + default y + + endmenu + +endmenu + diff --git a/bsp/qemu-zynqmp-r5/drivers/SConscript b/bsp/qemu-zynqmp-r5/drivers/SConscript new file mode 100644 index 0000000000..6cbc43e747 --- /dev/null +++ b/bsp/qemu-zynqmp-r5/drivers/SConscript @@ -0,0 +1,17 @@ +from building import * + +cwd = GetCurrentDir() +src = Glob('*.c') +list = os.listdir(cwd) +CPPPATH = [cwd] +objs = [] + +group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH) + +for d in list: + path = os.path.join(cwd, d) + if os.path.isfile(os.path.join(path, 'SConscript')): + objs = objs + SConscript(os.path.join(d, 'SConscript')) +objs = objs + group + +Return('objs') diff --git a/bsp/qemu-zynqmp-r5/drivers/board.c b/bsp/qemu-zynqmp-r5/drivers/board.c new file mode 100644 index 0000000000..3669ffca95 --- /dev/null +++ b/bsp/qemu-zynqmp-r5/drivers/board.c @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2023, lepustse@gmail.com + * + * License-Identifier: MIT + * + * Change Logs: + * Date Author Notes + * 2023-05-03 lepustse the first version + */ + +#include +#include + +#include "board.h" +#include "drv_timer.h" +void idle_wfi(void) +{ + asm volatile ("wfi"); +} + +/** + * This function will initialize board + */ + +void rt_hw_board_init(void) +{ + /* initialize system heap */ + rt_system_heap_init(HEAP_BEGIN, HEAP_END); + + /* initialize hardware interrupt */ + rt_hw_interrupt_init(); + + rt_components_board_init(); + rt_console_set_device(RT_CONSOLE_DEVICE_NAME); + + rt_thread_idle_sethook(idle_wfi); +} + diff --git a/bsp/qemu-zynqmp-r5/drivers/board.h b/bsp/qemu-zynqmp-r5/drivers/board.h new file mode 100644 index 0000000000..cc68b3c386 --- /dev/null +++ b/bsp/qemu-zynqmp-r5/drivers/board.h @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2023, lepustse@gmail.com + * + * License-Identifier: MIT + * + * Change Logs: + * Date Author Notes + * 2023-05-03 lepustse the first version + */ + +#ifndef __BOARD_H__ +#define __BOARD_H__ + +#include +#include "zynqmp_r5.h" + +#if defined(__CC_ARM) +extern int Image$$RW_IRAM1$$ZI$$Limit; +#define HEAP_BEGIN ((void*)&Image$$RW_IRAM1$$ZI$$Limit) +#elif defined(__GNUC__) +extern int __bss_end; +#define HEAP_BEGIN ((void*)&__bss_end) +#endif + +#define HEAP_END (void*)(0x80000000) + +void rt_hw_board_init(void); + +#endif diff --git a/bsp/qemu-zynqmp-r5/drivers/drv_timer.c b/bsp/qemu-zynqmp-r5/drivers/drv_timer.c new file mode 100644 index 0000000000..ce2659eae7 --- /dev/null +++ b/bsp/qemu-zynqmp-r5/drivers/drv_timer.c @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2023, lepustse@gmail.com + * + * License-Identifier: MIT + * + * Change Logs: + * Date Author Notes + * 2023-05-03 lepustse the first version + */ + +#include +#include +#include +#include "drv_timer.h" + +#define TTC0_0_BASEADDR ZYNQMP_TTC0_BASE +#define TTC0_0_CLK_FREQ_HZ 100000000UL + +static void rt_hw_timer_isr(int vector, void *param) +{ + rt_tick_increase(); + /* clear interrupt */ + TTC_ISR(TTC0_0_BASEADDR); +} + +int rt_hw_timer_init(void) +{ + /* Stop timer */ + TTC_CNT_CNTRL(TTC0_0_BASEADDR) |= TTC_CNT_CNTRL_DIS; + + /* Initialize TTC */ + TTC_CNT_CNTRL(TTC0_0_BASEADDR) = TTC_CNT_CNTRL_RESET_VALUE; + TTC_CLK_CNTRL(TTC0_0_BASEADDR) = 0x00; + TTC_INTERVAL_VAL(TTC0_0_BASEADDR) = 0x00; + TTC_MATCH_0(TTC0_0_BASEADDR) = 0x00; + TTC_MATCH_1(TTC0_0_BASEADDR) = 0x00; + TTC_MATCH_2(TTC0_0_BASEADDR) = 0x00; + TTC_IER(TTC0_0_BASEADDR) = 0x00; + TTC_ISR(TTC0_0_BASEADDR) = 0x00; + + /* Reset counter */ + TTC_CNT_CNTRL(TTC0_0_BASEADDR) |= TTC_CNT_CNTRL_RST; + + /* Interval mode select */ + TTC_CNT_CNTRL(TTC0_0_BASEADDR) |= TTC_CNT_CNTRL_INT; + /* Setup interval */ + TTC_INTERVAL_VAL(TTC0_0_BASEADDR) = TTC0_0_CLK_FREQ_HZ / RT_TICK_PER_SECOND; + /* Clear all of the prescaler control bits in the register */ + TTC_CLK_CNTRL(TTC0_0_BASEADDR) &= ~(TTC_CLK_CNTRL_PS_VAL_MASK | + TTC_CLK_CNTRL_PS_EN); + /* We do not need a prescaler*/ + + /* Register the ticker handler with the GIC */ + rt_hw_interrupt_install(IRQ_TTC0_0, rt_hw_timer_isr, RT_NULL, "tick"); + /* Enable TTC interrupts in the GIC */ + rt_hw_interrupt_umask(IRQ_TTC0_0); + /* Enable interval interrupt */ + TTC_IER(TTC0_0_BASEADDR) |= TTC_IXR_INTERVAL; + /* Start timer */ + TTC_CNT_CNTRL(TTC0_0_BASEADDR) &=~ TTC_CNT_CNTRL_DIS; + + return RT_EOK; +} +INIT_BOARD_EXPORT(rt_hw_timer_init); diff --git a/bsp/qemu-zynqmp-r5/drivers/drv_timer.h b/bsp/qemu-zynqmp-r5/drivers/drv_timer.h new file mode 100644 index 0000000000..207d01a2bd --- /dev/null +++ b/bsp/qemu-zynqmp-r5/drivers/drv_timer.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2023, lepustse@gmail.com + * + * License-Identifier: MIT + * + * Change Logs: + * Date Author Notes + * 2023-05-03 lepustse the first version + */ + +#ifndef __DRV_TIMER_H__ +#define __DRV_TIMER_H__ + +#include "board.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define TTC_CLK_CNTRL(hw_base) __REG32(hw_base + 0x00) +#define TTC_CLK_CNTRL_PS_VAL_MASK 0x0000001E /**< Prescale value */ +#define TTC_CLK_CNTRL_PS_EN (1 << 0) /**< Prescale enable */ + +#define TTC_CNT_CNTRL(hw_base) __REG32(hw_base + 0x0C) +#define TTC_CNT_CNTRL_RESET_VALUE 0x00000021 /**< Reset value */ +#define TTC_CNT_CNTRL_DIS (1 << 0) /**< Disable the counter */ +#define TTC_CNT_CNTRL_INT (1 << 1) /**< interval mode */ +#define TTC_CNT_CNTRL_DECR (1 << 2) /**< Decrement mode */ +#define TTC_CNT_CNTRL_RST (1 << 4) /**< Reset counter */ + +#define TTC_COUNT_VALUE(hw_base) __REG32(hw_base + 0x18) +#define TTC_INTERVAL_VAL(hw_base) __REG32(hw_base + 0x24) +#define TTC_MATCH_0(hw_base) __REG32(hw_base + 0x30) +#define TTC_MATCH_1(hw_base) __REG32(hw_base + 0x3C) +#define TTC_MATCH_2(hw_base) __REG32(hw_base + 0x48) + +#define TTC_ISR(hw_base) __REG32(hw_base + 0x54) +#define TTC_IXR_INTERVAL (1 << 0) /**< interval Interrupt */ + +#define TTC_IER(hw_base) __REG32(hw_base + 0x60) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/bsp/qemu-zynqmp-r5/drivers/drv_uart.c b/bsp/qemu-zynqmp-r5/drivers/drv_uart.c new file mode 100644 index 0000000000..0bb3c63df0 --- /dev/null +++ b/bsp/qemu-zynqmp-r5/drivers/drv_uart.c @@ -0,0 +1,138 @@ +/* + * Copyright (c) 2023, lepustse@gmail.com + * + * License-Identifier: MIT + * + * Change Logs: + * Date Author Notes + * 2023-05-03 lepustse the first version + */ + +#include +#include +#include "drv_uart.h" +#include "interrupt.h" + +struct hw_uart_device +{ + rt_uint32_t hw_base; + rt_uint32_t irqno; +}; + +static void rt_hw_uart_isr(int irqno, void *param) +{ + struct rt_serial_device *serial = (struct rt_serial_device *)param; + + rt_hw_serial_isr(serial, RT_SERIAL_EVENT_RX_IND); +} + +static rt_err_t uart_configure(struct rt_serial_device *serial, struct serial_configure *cfg) +{ + struct hw_uart_device *uart; + + RT_ASSERT(serial != RT_NULL); + uart = (struct hw_uart_device *)serial->parent.user_data; + + UART_RX_TRIG_LVL(uart->hw_base) = 1; + + return RT_EOK; +} + +extern rt_uint32_t rt_interrupt_to_thread; +static rt_err_t uart_control(struct rt_serial_device *serial, int cmd, void *param) +{ + + struct hw_uart_device *uart; + + RT_ASSERT(serial != RT_NULL); + uart = (struct hw_uart_device *)serial->parent.user_data; + + switch (cmd) + { + case RT_DEVICE_CTRL_CLR_INT: + /* disable rx irq */ + UART_IDR(uart->hw_base) |= UART_IXR_DIS_MASK; + break; + + case RT_DEVICE_CTRL_SET_INT: + /* enable rx irq */ + UART_IER(uart->hw_base) |= (UART_IXR_RX_TRIG); + rt_hw_interrupt_umask(uart->irqno); + break; + } + + return RT_EOK; +} + +static int uart_putc(struct rt_serial_device *serial, char c) +{ + struct hw_uart_device *uart; + + RT_ASSERT(serial != RT_NULL); + uart = (struct hw_uart_device *)serial->parent.user_data; + + while (UART_SR(uart->hw_base) & UART_SR_TXFULL); + UART_FIFO(uart->hw_base) = c; + + return 1; +} + +static int uart_getc(struct rt_serial_device *serial) +{ + int ch; + struct hw_uart_device *uart; + + RT_ASSERT(serial != RT_NULL); + uart = (struct hw_uart_device *)serial->parent.user_data; + + ch = -1; + if (UART_ISR(uart->hw_base) & UART_IXR_RX_TRIG) { + ch = UART_FIFO(uart->hw_base) & 0xff; + UART_ISR(uart->hw_base) = (UART_IXR_RX_TRIG); + } + + return ch; +} + +static const struct rt_uart_ops _uart_ops = +{ + uart_configure, + uart_control, + uart_putc, + uart_getc, +}; + + +#ifdef BSP_USING_UART0 +static struct hw_uart_device _uart0_device = +{ + ZYNQMP_UART0_BASE, + IRQ_UART_0, +}; +static struct rt_serial_device _serial0; +#endif + +int rt_hw_uart_init(void) +{ + struct hw_uart_device *uart; + struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; +#ifdef BSP_USING_UART0 + uart = &_uart0_device; + + _serial0.ops = &_uart_ops; + _serial0.config = config; + + /* register UART0 device */ + rt_hw_serial_register(&_serial0, "uart0", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, uart); + + /* about gic */ + rt_hw_interrupt_install(uart->irqno, rt_hw_uart_isr, &_serial0, "uart0"); + + /* enable Rx and Tx of UART */ + UART_CR(uart->hw_base) &= ~UART_CR_EN_DIS_MASK; + UART_CR(uart->hw_base) |= (UART_CR_RX_EN | UART_CR_TX_EN); +#endif + + return 0; +} +INIT_BOARD_EXPORT(rt_hw_uart_init); diff --git a/bsp/qemu-zynqmp-r5/drivers/drv_uart.h b/bsp/qemu-zynqmp-r5/drivers/drv_uart.h new file mode 100644 index 0000000000..46c1d786a5 --- /dev/null +++ b/bsp/qemu-zynqmp-r5/drivers/drv_uart.h @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2023, lepustse@gmail.com + * + * License-Identifier: MIT + * + * Change Logs: + * Date Author Notes + * 2023-05-03 lepustse the first version + */ + +#ifndef __DRV_UART_H +#define __DRV_UART_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define UART_CR(base) __REG32(base + 0x00) +#define UART_CR_EN_DIS_MASK 0x0000003F +#define UART_CR_TX_DIS (1 << 5) +#define UART_CR_TX_EN (1 << 4) +#define UART_CR_RX_DIS (1 << 3) +#define UART_CR_RX_EN (1 << 2) + +#define UART_IER(base) __REG32(base + 0x08) +#define UART_IDR(base) __REG32(base + 0x0C) +#define UART_ISR(base) __REG32(base + 0x14) + +#define UART_IXR_DIS_MASK 0x00003FFF +#define UART_IXR_TX_NFULL (1 << 11) +#define UART_IXR_TX_TRIG (1 << 10) +#define UART_IXR_RX_OVR (1 << 5) +#define UART_IXR_TX_FULL (1 << 4) +#define UART_IXR_TX_EMPTY (1 << 3) +#define UART_IXR_RX_FULL (1 << 2) +#define UART_IXR_RX_EMPTY (1 << 1) +#define UART_IXR_RX_TRIG (1 << 0) + +#define UART_RX_TRIG_LVL(hw_base) __REG32(hw_base + 0x20) +#define UART_TX_TRIG_LVL(hw_base) __REG32(hw_base + 0x44) +#define UART_TRIG_LVL_MASK 0x0000003F +#define UART_TRIG_LVL (1 << 0) + +#define UART_SR(base) __REG32(base + 0x2C) +#define UART_SR_TXFULL (1 << 4) +#define UART_SR_RXFULL (1 << 1) + +#define UART_FIFO(base) __REG32(base + 0x30) + + +#ifdef __cplusplus +} +#endif +#endif /*__DRV_UART_H*/ diff --git a/bsp/qemu-zynqmp-r5/drivers/zynqmp_r5.h b/bsp/qemu-zynqmp-r5/drivers/zynqmp_r5.h new file mode 100644 index 0000000000..7b877fb5a1 --- /dev/null +++ b/bsp/qemu-zynqmp-r5/drivers/zynqmp_r5.h @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2020-2023, Chertsoft Development Team + * + * License-Identifier: MIT + * + * Change Logs: + * Date Author Notes + * 2023-05-03 lepustse the first version + */ + +#ifndef __ZYNQMP_R5_H +#define __ZYNQMP_R5_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define __REG32(x) (*((volatile unsigned int *)(x))) +#define __REG16(x) (*((volatile unsigned short *)(x))) + +/* + * Peripheral addresses + */ +#define ZYNQMP_UART0_BASE 0xFF000000UL +#define ZYNQMP_TTC0_BASE 0xFF110000UL +#define ZYNQMP_TTC1_BASE 0xFF120000UL +#define ZYNQMP_TTC2_BASE 0xFF130000UL +#define ZYNQMP_TTC3_BASE 0xFF140000UL + +#define ZYNQMP_GIC_DIST_BASE 0xF9000000UL +#define ZYNQMP_GIC_CPU_BASE 0xF9001000UL + +/* + * Zynqmp on-board gic irq source + */ +#define IRQ_ZYNQMP_GIC_START (32 + 8) + +#define IRQ_UART_0 (IRQ_ZYNQMP_GIC_START + 13UL) +#define IRQ_TTC0_0 (IRQ_ZYNQMP_GIC_START + 28UL) +#define IRQ_TTC0_1 (IRQ_ZYNQMP_GIC_START + 29UL) +#define IRQ_TTC0_2 (IRQ_ZYNQMP_GIC_START + 30UL) +#define IRQ_TTC1_0 (IRQ_ZYNQMP_GIC_START + 31UL) + +#define IRQ_ZYNQMP_MAX_NR 187UL + +/* number of interrupts on board */ +#define ARM_GIC_NR_IRQS IRQ_ZYNQMP_MAX_NR +/* only one GIC available */ +#define ARM_GIC_MAX_NR 1 + +#define GIC_ACK_INTID_MASK 0x3FF + +#define MAX_HANDLERS IRQ_ZYNQMP_MAX_NR + +#define GIC_IRQ_START 0 + +#ifdef __cplusplus +} +#endif +#endif /*__ZYNQMP_R5_H*/ diff --git a/bsp/qemu-zynqmp-r5/link.ld b/bsp/qemu-zynqmp-r5/link.ld new file mode 100644 index 0000000000..0220092b32 --- /dev/null +++ b/bsp/qemu-zynqmp-r5/link.ld @@ -0,0 +1,124 @@ +MEMORY +{ + psu_ocm_ram_0_MEM_0 : ORIGIN = 0xFFFC0000, LENGTH = 0x40000 /* 256KB */ + psu_qspi_linear_0_MEM_0 : ORIGIN = 0xC0000000, LENGTH = 0x20000000 /* 512MB */ + psu_r5_0_atcm_MEM_0 : ORIGIN = 0x0, LENGTH = 0x10000 /* 64KB */ + psu_r5_0_btcm_MEM_0 : ORIGIN = 0x20000, LENGTH = 0x10000 /* 64KB */ + psu_r5_ddr_0_MEM_0 : ORIGIN = 0x100000, LENGTH = 0x7FE00000 + psu_r5_tcm_ram_0_MEM_0 : ORIGIN = 0x0, LENGTH = 0x40000 /* 256KB */ +} + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) + +ENTRY(_reset) + +SECTIONS +{ + + .vectors : + { + KEEP (*(.vectors)) + *(.text.isr) + } > psu_r5_0_atcm_MEM_0 + + __text_start = .; + .text : + { + *(.text) + *(.text.*) + + /* section information for utest */ + . = ALIGN(4); + __rt_utest_tc_tab_start = .; + KEEP(*(UtestTcTab)) + __rt_utest_tc_tab_end = .; + + /* section information for finsh shell */ + . = ALIGN(4); + __fsymtab_start = .; + KEEP(*(FSymTab)) + __fsymtab_end = .; + . = ALIGN(4); + __vsymtab_start = .; + KEEP(*(VSymTab)) + __vsymtab_end = .; + + /* section information for var export */ + . = ALIGN(4); + __ve_table_start = .; + KEEP(*(SORT(*.VarExpTab.*))) + __ve_table_end = .; + + /* section information for modules */ + . = ALIGN(4); + __rtmsymtab_start = .; + KEEP(*(RTMSymTab)) + __rtmsymtab_end = .; + + /* section information for initialization */ + . = ALIGN(4); + __rt_init_start = .; + KEEP(*(SORT(.rti_fn*))) + __rt_init_end = .; + } > psu_r5_ddr_0_MEM_0 = 0 + __text_end = .; + + __exidx_start = .; + .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } > psu_r5_ddr_0_MEM_0 + __exidx_end = .; + + __rodata_start = .; + .rodata : { *(.rodata) *(.rodata.*) } > psu_r5_ddr_0_MEM_0 + __rodata_end = .; + + . = ALIGN(4); + .ctors : + { + PROVIDE(__ctors_start__ = .); + /* new GCC version uses .init_array */ + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE(__ctors_end__ = .); + } > psu_r5_ddr_0_MEM_0 + + .dtors : + { + PROVIDE(__dtors_start__ = .); + KEEP(*(SORT(.fini_array.*))) + KEEP(*(.fini_array)) + PROVIDE(__dtors_end__ = .); + } > psu_r5_ddr_0_MEM_0 + + . = ALIGN(8); + __data_start = .; + .data : + { + *(.data) + *(.data.*) + } > psu_r5_ddr_0_MEM_0 + __data_end = .; + + . = ALIGN(4); + __bss_start = .; + .bss : + { + *(.bss) + *(.bss.*) + *(COMMON) + . = ALIGN(4); + } > psu_r5_ddr_0_MEM_0 + . = ALIGN(4); + __bss_end = .; + + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + + _end = .; +} diff --git a/bsp/qemu-zynqmp-r5/makefile.targets b/bsp/qemu-zynqmp-r5/makefile.targets new file mode 100644 index 0000000000..a00129bd90 --- /dev/null +++ b/bsp/qemu-zynqmp-r5/makefile.targets @@ -0,0 +1,4 @@ +clean2: + -$(RM) $(CC_DEPS)$(C++_DEPS)$(C_UPPER_DEPS)$(CXX_DEPS)$(SECONDARY_FLASH)$(SECONDARY_SIZE)$(ASM_DEPS)$(S_UPPER_DEPS)$(C_DEPS)$(CPP_DEPS) + -$(RM) $(OBJS) *.elf + -@echo ' ' \ No newline at end of file diff --git a/bsp/qemu-zynqmp-r5/qemu-nographic.sh b/bsp/qemu-zynqmp-r5/qemu-nographic.sh new file mode 100644 index 0000000000..4b2767ab48 --- /dev/null +++ b/bsp/qemu-zynqmp-r5/qemu-nographic.sh @@ -0,0 +1,9 @@ +$1 --version +$1\ + -machine arm-generic-fdt\ + -serial stdio\ + -device loader,file=rtthread.elf,cpu-num=4\ + -device loader,addr=0xff5e023c,data=0x80008fde,data-len=4\ + -device loader,addr=0xff9a0000,data=0x80000218,data-len=4\ + -hw-dtb zcu102-arm.dtb\ + -display none diff --git a/bsp/qemu-zynqmp-r5/rtconfig.h b/bsp/qemu-zynqmp-r5/rtconfig.h new file mode 100644 index 0000000000..1c138957b8 --- /dev/null +++ b/bsp/qemu-zynqmp-r5/rtconfig.h @@ -0,0 +1,273 @@ +#ifndef RT_CONFIG_H__ +#define RT_CONFIG_H__ + +/* Automatically generated file; DO NOT EDIT. */ +/* RT-Thread Project Configuration */ + +/* RT-Thread Kernel */ + +#define RT_NAME_MAX 8 +#define RT_ALIGN_SIZE 8 +#define RT_THREAD_PRIORITY_256 +#define RT_THREAD_PRIORITY_MAX 256 +#define RT_TICK_PER_SECOND 100 +#define RT_USING_OVERFLOW_CHECK +#define RT_USING_HOOK +#define RT_HOOK_USING_FUNC_PTR +#define RT_USING_IDLE_HOOK +#define RT_IDLE_HOOK_LIST_SIZE 4 +#define IDLE_THREAD_STACK_SIZE 4096 +#define RT_USING_TIMER_SOFT +#define RT_TIMER_THREAD_PRIO 4 +#define RT_TIMER_THREAD_STACK_SIZE 1024 + +/* kservice optimization */ + +#define RT_DEBUG +#define RT_DEBUG_COLOR + +/* Inter-Thread communication */ + +#define RT_USING_SEMAPHORE +#define RT_USING_MUTEX +#define RT_USING_EVENT +#define RT_USING_MAILBOX +#define RT_USING_MESSAGEQUEUE + +/* Memory Management */ + +#define RT_USING_MEMPOOL +#define RT_USING_SMALL_MEM +#define RT_USING_MEMHEAP +#define RT_MEMHEAP_FAST_MODE +#define RT_USING_SMALL_MEM_AS_HEAP +#define RT_USING_MEMTRACE +#define RT_USING_HEAP + +/* Kernel Device Object */ + +#define RT_USING_DEVICE +#define RT_USING_DEVICE_OPS +#define RT_USING_INTERRUPT_INFO +#define RT_USING_CONSOLE +#define RT_CONSOLEBUF_SIZE 256 +#define RT_CONSOLE_DEVICE_NAME "uart0" +#define RT_VER_NUM 0x50001 +#define RT_USING_CACHE + +/* RT-Thread Components */ + +#define RT_USING_COMPONENTS_INIT +#define RT_USING_USER_MAIN +#define RT_MAIN_THREAD_STACK_SIZE 2048 +#define RT_MAIN_THREAD_PRIORITY 10 +#define RT_USING_MSH +#define RT_USING_FINSH +#define FINSH_USING_MSH +#define FINSH_THREAD_NAME "tshell" +#define FINSH_THREAD_PRIORITY 20 +#define FINSH_THREAD_STACK_SIZE 4096 +#define FINSH_USING_HISTORY +#define FINSH_HISTORY_LINES 10 +#define FINSH_USING_SYMTAB +#define FINSH_CMD_SIZE 256 +#define MSH_USING_BUILT_IN_COMMANDS +#define FINSH_USING_DESCRIPTION +#define FINSH_ARG_MAX 10 + +/* DFS: device virtual file system */ + +#define RT_USING_DFS +#define DFS_USING_POSIX +#define DFS_USING_WORKDIR +#define DFS_FD_MAX 32 +#define RT_USING_DFS_V1 +#define DFS_FILESYSTEMS_MAX 8 +#define DFS_FILESYSTEM_TYPES_MAX 8 +#define RT_USING_DFS_ELMFAT + +/* elm-chan's FatFs, Generic FAT Filesystem Module */ + +#define RT_DFS_ELM_CODE_PAGE 437 +#define RT_DFS_ELM_WORD_ACCESS +#define RT_DFS_ELM_USE_LFN_3 +#define RT_DFS_ELM_USE_LFN 3 +#define RT_DFS_ELM_LFN_UNICODE_0 +#define RT_DFS_ELM_LFN_UNICODE 0 +#define RT_DFS_ELM_MAX_LFN 255 +#define RT_DFS_ELM_DRIVES 2 +#define RT_DFS_ELM_MAX_SECTOR_SIZE 4096 +#define RT_DFS_ELM_REENTRANT +#define RT_DFS_ELM_MUTEX_TIMEOUT 3000 +#define RT_USING_DFS_DEVFS +#define RT_USING_DFS_ROMFS +#define RT_USING_DFS_TMPFS + +/* Device Drivers */ + +#define RT_USING_DEVICE_IPC +#define RT_UNAMED_PIPE_NUMBER 64 +#define RT_USING_SYSTEM_WORKQUEUE +#define RT_SYSTEM_WORKQUEUE_STACKSIZE 2048 +#define RT_SYSTEM_WORKQUEUE_PRIORITY 23 +#define RT_USING_SERIAL +#define RT_USING_SERIAL_V1 +#define RT_SERIAL_USING_DMA +#define RT_SERIAL_RB_BUFSZ 64 + +/* Using USB */ + + +/* C/C++ and POSIX layer */ + +#define RT_LIBC_DEFAULT_TIMEZONE 8 + +/* POSIX (Portable Operating System Interface) layer */ + +#define RT_USING_POSIX_FS +#define RT_USING_POSIX_DEVIO +#define RT_USING_POSIX_STDIO +#define RT_USING_POSIX_POLL +#define RT_USING_POSIX_SELECT +#define RT_USING_POSIX_TERMIOS +#define RT_USING_POSIX_AIO +#define RT_USING_POSIX_DELAY +#define RT_USING_POSIX_CLOCK +#define RT_USING_POSIX_TIMER + +/* Interprocess Communication (IPC) */ + +#define RT_USING_POSIX_PIPE +#define RT_USING_POSIX_PIPE_SIZE 512 +#define RT_USING_POSIX_MESSAGE_QUEUE +#define RT_USING_POSIX_MESSAGE_SEMAPHORE + +/* Socket is in the 'Network' category */ + + +/* Network */ + + +/* Utilities */ + +#define RT_USING_ADT + +/* RT-Thread Utestcases */ + + +/* RT-Thread online packages */ + +/* IoT - internet of things */ + + +/* Wi-Fi */ + +/* Marvell WiFi */ + + +/* Wiced WiFi */ + + +/* IoT Cloud */ + + +/* security packages */ + + +/* language packages */ + +/* JSON: JavaScript Object Notation, a lightweight data-interchange format */ + + +/* XML: Extensible Markup Language */ + + +/* multimedia packages */ + +/* LVGL: powerful and easy-to-use embedded GUI library */ + + +/* u8g2: a monochrome graphic library */ + + +/* PainterEngine: A cross-platform graphics application framework written in C language */ + + +/* tools packages */ + + +/* system packages */ + +/* enhanced kernel services */ + + +/* acceleration: Assembly language or algorithmic acceleration packages */ + + +/* CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */ + + +/* Micrium: Micrium software products porting for RT-Thread */ + + +/* peripheral libraries and drivers */ + + +/* Kendryte SDK */ + + +/* AI packages */ + + +/* miscellaneous packages */ + +/* project laboratory */ + +/* samples: kernel and components samples */ + + +/* entertainment: terminal games and other interesting software packages */ + + +/* Arduino libraries */ + + +/* Projects */ + + +/* Sensors */ + + +/* Display */ + + +/* Timing */ + + +/* Data Processing */ + + +/* Data Storage */ + +/* Communication */ + + +/* Device Control */ + + +/* Other */ + +/* Signal IO */ + + +/* Uncategorized */ + +/* Hardware Drivers Config */ + +#define SOC_ZYNQMP_R5 + +/* On-Chip Peripheral Drivers */ + +#define BSP_USING_UART0 + +#endif diff --git a/bsp/qemu-zynqmp-r5/rtconfig.py b/bsp/qemu-zynqmp-r5/rtconfig.py new file mode 100644 index 0000000000..82d4394cc3 --- /dev/null +++ b/bsp/qemu-zynqmp-r5/rtconfig.py @@ -0,0 +1,54 @@ +import os + +# toolchains options +ARCH ='arm' +CPU ='cortex-r5' +CROSS_TOOL ='gcc' + +if os.getenv('RTT_ROOT'): + RTT_ROOT = os.getenv('RTT_ROOT') +else: + RTT_ROOT = r'../../..' + +if os.getenv('RTT_CC'): + CROSS_TOOL = os.getenv('RTT_CC') + +PLATFORM = 'gcc' +EXEC_PATH = r'/usr/bin' + +BUILD = 'debug' + +if os.getenv('RTT_EXEC_PATH'): + EXEC_PATH = os.getenv('RTT_EXEC_PATH') + +if PLATFORM == 'gcc': + # toolchains + # PREFIX = 'arm-none-eabi-' + PREFIX = os.getenv('RTT_CC_PREFIX') or 'arm-none-eabi-' + CC = PREFIX + 'gcc' + CXX = PREFIX + 'g++' + AS = PREFIX + 'gcc' + AR = PREFIX + 'ar' + LINK = PREFIX + 'gcc' + TARGET_EXT = 'elf' + SIZE = PREFIX + 'size' + OBJDUMP = PREFIX + 'objdump' + OBJCPY = PREFIX + 'objcopy' + + DEVICE = ' -march=armv7-r -mtune=cortex-r5' + CFLAGS = DEVICE + ' -Wall -Wno-cpp' + AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -D__ASSEMBLY__' + LFLAGS = DEVICE + ' -nostartfiles -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,system_vectors -T link.ld' + CPATH = '' + LPATH = '' + + if BUILD == 'debug': + CFLAGS += ' -O0 -gdwarf-2' + AFLAGS += ' -gdwarf-2' + else: + CFLAGS += ' -O2' + + CXXFLAGS = CFLAGS + +DUMP_ACTION = OBJDUMP + ' -D -S $TARGET > rtt.asm\n' +POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n' diff --git a/bsp/qemu-zynqmp-r5/rtthread.elf.dump b/bsp/qemu-zynqmp-r5/rtthread.elf.dump new file mode 100644 index 0000000000..eb32707893 --- /dev/null +++ b/bsp/qemu-zynqmp-r5/rtthread.elf.dump @@ -0,0 +1,67489 @@ + +rtthread.elf: file format elf32-littlearm + + +Disassembly of section .vectors: + +00000000 : + 0: e59ff018 ldr pc, [pc, #24] ; 20 <_vector_reset> + 4: e59ff018 ldr pc, [pc, #24] ; 24 <_vector_undef> + 8: e59ff018 ldr pc, [pc, #24] ; 28 <_vector_swi> + c: e59ff018 ldr pc, [pc, #24] ; 2c <_vector_pabt> + 10: e59ff018 ldr pc, [pc, #24] ; 30 <_vector_dabt> + 14: e59ff018 ldr pc, [pc, #24] ; 34 <_vector_resv> + 18: e59ff018 ldr pc, [pc, #24] ; 38 <_vector_irq> + 1c: e59ff018 ldr pc, [pc, #24] ; 3c <_vector_fiq> + +00000020 <_vector_reset>: + 20: 0013c158 .word 0x0013c158 + +00000024 <_vector_undef>: + 24: 00000040 .word 0x00000040 + +00000028 <_vector_swi>: + 28: 00000044 .word 0x00000044 + +0000002c <_vector_pabt>: + 2c: 00000048 .word 0x00000048 + +00000030 <_vector_dabt>: + 30: 0000004c .word 0x0000004c + +00000034 <_vector_resv>: + 34: 00000050 .word 0x00000050 + +00000038 <_vector_irq>: + 38: 00000054 .word 0x00000054 + +0000003c <_vector_fiq>: + 3c: 000000e4 .word 0x000000e4 + +00000040 : + 40: eafffffe b 40 + +00000044 : + 44: eafffffe b 44 + +00000048 : + 48: eafffffe b 48 + +0000004c : + 4c: eafffffe b 4c + +00000050 : + 50: eafffffe b 50 + +00000054 : + 54: eafffffe b 54 + 58: e24ee004 sub lr, lr, #4 + 5c: e92d5fff push {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, lr} + 60: eb04acdb bl 12b3d4 + 64: eb04935b bl 124dd8 + 68: eb04acf5 bl 12b444 + 6c: e59fe074 ldr lr, [pc, #116] ; e8 + 70: e59e0000 ldr r0, [lr] + 74: e3a01001 mov r1, #1 + 78: e1500001 cmp r0, r1 + 7c: 0a000000 beq 84 + 80: e8fd9fff ldm sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, pc}^ + +00000084 : + 84: e3a01000 mov r1, #0 + 88: e58e1000 str r1, [lr] + 8c: e1a0000d mov r0, sp + 90: e14f1000 mrs r1, SPSR + 94: e28dd038 add sp, sp, #56 ; 0x38 + 98: e321f0d3 msr CPSR_c, #211 ; 0xd3 + 9c: e5902034 ldr r2, [r0, #52] ; 0x34 + a0: e92d0004 stmfd sp!, {r2} + a4: e92d4000 stmfd sp!, {lr} + a8: e2800010 add r0, r0, #16 + ac: e8901ff0 ldm r0, {r4, r5, r6, r7, r8, r9, sl, fp, ip} + b0: e92d1ff0 push {r4, r5, r6, r7, r8, r9, sl, fp, ip} + b4: e91000f0 ldmdb r0, {r4, r5, r6, r7} + b8: e92d00f0 push {r4, r5, r6, r7} + bc: e92d0002 stmfd sp!, {r1} + c0: e59fe024 ldr lr, [pc, #36] ; ec + c4: e59ee000 ldr lr, [lr] + c8: e58ed000 str sp, [lr] + cc: e59fe01c ldr lr, [pc, #28] ; f0 + d0: e59ee000 ldr lr, [lr] + d4: e59ed000 ldr sp, [lr] + d8: e8bd4000 ldmfd sp!, {lr} + dc: e16ff00e msr SPSR_fsxc, lr + e0: e8fddfff ldm sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, lr, pc}^ + +000000e4 : + e4: eafffffe b e4 + e8: 001426e4 .word 0x001426e4 + ec: 001426dc .word 0x001426dc + f0: 001426e0 .word 0x001426e0 + +Disassembly of section .text: + +00100000 : + 100000: e52db004 push {fp} ; (str fp, [sp, #-4]!) + 100004: e28db000 add fp, sp, #0 + 100008: e24dd014 sub sp, sp, #20 + 10000c: e50b0008 str r0, [fp, #-8] + 100010: e50b100c str r1, [fp, #-12] + 100014: e50b2010 str r2, [fp, #-16] + 100018: e3a03000 mov r3, #0 + 10001c: e1a00003 mov r0, r3 + 100020: e28bd000 add sp, fp, #0 + 100024: e49db004 pop {fp} ; (ldr fp, [sp], #4) + 100028: e12fff1e bx lr + +0010002c : + 10002c: e52db004 push {fp} ; (str fp, [sp, #-4]!) + 100030: e28db000 add fp, sp, #0 + 100034: e24dd00c sub sp, sp, #12 + 100038: e50b0008 str r0, [fp, #-8] + 10003c: e50b100c str r1, [fp, #-12] + 100040: e51b300c ldr r3, [fp, #-12] + 100044: e3a02c02 mov r2, #512 ; 0x200 + 100048: e5832000 str r2, [r3] + 10004c: e51b300c ldr r3, [fp, #-12] + 100050: e3a02802 mov r2, #131072 ; 0x20000 + 100054: e5832004 str r2, [r3, #4] + 100058: e51b300c ldr r3, [fp, #-12] + 10005c: e5932004 ldr r2, [r3, #4] + 100060: e51b300c ldr r3, [fp, #-12] + 100064: e5832008 str r2, [r3, #8] + 100068: e51b300c ldr r3, [fp, #-12] + 10006c: e5932008 ldr r2, [r3, #8] + 100070: e51b300c ldr r3, [fp, #-12] + 100074: e583200c str r2, [r3, #12] + 100078: e3a03000 mov r3, #0 + 10007c: e1a00003 mov r0, r3 + 100080: e28bd000 add sp, fp, #0 + 100084: e49db004 pop {fp} ; (ldr fp, [sp], #4) + 100088: e12fff1e bx lr + +0010008c : + 10008c: e92d4800 push {fp, lr} + 100090: e28db004 add fp, sp, #4 + 100094: e24dd018 sub sp, sp, #24 + 100098: e50b0010 str r0, [fp, #-16] + 10009c: e50b1014 str r1, [fp, #-20] ; 0xffffffec + 1000a0: e50b2018 str r2, [fp, #-24] ; 0xffffffe8 + 1000a4: e51b3010 ldr r3, [fp, #-16] + 1000a8: e3530000 cmp r3, #0 + 1000ac: 1a000005 bne 1000c8 + 1000b0: e3a0202f mov r2, #47 ; 0x2f + 1000b4: e30c1434 movw r1, #50228 ; 0xc434 + 1000b8: e3401013 movt r1, #19 + 1000bc: e30c0330 movw r0, #49968 ; 0xc330 + 1000c0: e3400013 movt r0, #19 + 1000c4: eb00b695 bl 12db20 + 1000c8: e51b3010 ldr r3, [fp, #-16] + 1000cc: e5933010 ldr r3, [r3, #16] + 1000d0: e5933028 ldr r3, [r3, #40] ; 0x28 + 1000d4: e50b3008 str r3, [fp, #-8] + 1000d8: e51b3008 ldr r3, [fp, #-8] + 1000dc: e3530000 cmp r3, #0 + 1000e0: 1a000005 bne 1000fc + 1000e4: e3a02033 mov r2, #51 ; 0x33 + 1000e8: e30c1434 movw r1, #50228 ; 0xc434 + 1000ec: e3401013 movt r1, #19 + 1000f0: e30c0340 movw r0, #49984 ; 0xc340 + 1000f4: e3400013 movt r0, #19 + 1000f8: eb00b688 bl 12db20 + 1000fc: e51b3010 ldr r3, [fp, #-16] + 100100: e5933010 ldr r3, [r3, #16] + 100104: e5933004 ldr r3, [r3, #4] + 100108: e5d33000 ldrb r3, [r3] + 10010c: e353002f cmp r3, #47 ; 0x2f + 100110: 1a000008 bne 100138 + 100114: e51b3010 ldr r3, [fp, #-16] + 100118: e5933010 ldr r3, [r3, #16] + 10011c: e5933004 ldr r3, [r3, #4] + 100120: e2833001 add r3, r3, #1 + 100124: e5d33000 ldrb r3, [r3] + 100128: e3530000 cmp r3, #0 + 10012c: 1a000001 bne 100138 + 100130: e3e03005 mvn r3, #5 + 100134: ea00000a b 100164 + 100138: e51b2018 ldr r2, [fp, #-24] ; 0xffffffe8 + 10013c: e51b1014 ldr r1, [fp, #-20] ; 0xffffffec + 100140: e51b0008 ldr r0, [fp, #-8] + 100144: eb0096ed bl 125d00 + 100148: e50b000c str r0, [fp, #-12] + 10014c: e51b300c ldr r3, [fp, #-12] + 100150: e3530000 cmp r3, #0 + 100154: 1a000001 bne 100160 + 100158: e3a03000 mov r3, #0 + 10015c: ea000000 b 100164 + 100160: e51b300c ldr r3, [fp, #-12] + 100164: e1a00003 mov r0, r3 + 100168: e24bd004 sub sp, fp, #4 + 10016c: e8bd8800 pop {fp, pc} + +00100170 : + 100170: e92d4800 push {fp, lr} + 100174: e28db004 add fp, sp, #4 + 100178: e24dd018 sub sp, sp, #24 + 10017c: e50b0010 str r0, [fp, #-16] + 100180: e50b1014 str r1, [fp, #-20] ; 0xffffffec + 100184: e50b2018 str r2, [fp, #-24] ; 0xffffffe8 + 100188: e51b3010 ldr r3, [fp, #-16] + 10018c: e3530000 cmp r3, #0 + 100190: 1a000005 bne 1001ac + 100194: e3a02045 mov r2, #69 ; 0x45 + 100198: e30c1448 movw r1, #50248 ; 0xc448 + 10019c: e3401013 movt r1, #19 + 1001a0: e30c0330 movw r0, #49968 ; 0xc330 + 1001a4: e3400013 movt r0, #19 + 1001a8: eb00b65c bl 12db20 + 1001ac: e51b3010 ldr r3, [fp, #-16] + 1001b0: e5933010 ldr r3, [r3, #16] + 1001b4: e5933028 ldr r3, [r3, #40] ; 0x28 + 1001b8: e50b3008 str r3, [fp, #-8] + 1001bc: e51b3008 ldr r3, [fp, #-8] + 1001c0: e3530000 cmp r3, #0 + 1001c4: 1a000005 bne 1001e0 + 1001c8: e3a02049 mov r2, #73 ; 0x49 + 1001cc: e30c1448 movw r1, #50248 ; 0xc448 + 1001d0: e3401013 movt r1, #19 + 1001d4: e30c0340 movw r0, #49984 ; 0xc340 + 1001d8: e3400013 movt r0, #19 + 1001dc: eb00b64f bl 12db20 + 1001e0: e51b3010 ldr r3, [fp, #-16] + 1001e4: e5933010 ldr r3, [r3, #16] + 1001e8: e5933004 ldr r3, [r3, #4] + 1001ec: e5d33000 ldrb r3, [r3] + 1001f0: e353002f cmp r3, #47 ; 0x2f + 1001f4: 1a000008 bne 10021c + 1001f8: e51b3010 ldr r3, [fp, #-16] + 1001fc: e5933010 ldr r3, [r3, #16] + 100200: e5933004 ldr r3, [r3, #4] + 100204: e2833001 add r3, r3, #1 + 100208: e5d33000 ldrb r3, [r3] + 10020c: e3530000 cmp r3, #0 + 100210: 1a000001 bne 10021c + 100214: e3e03005 mvn r3, #5 + 100218: ea00000d b 100254 + 10021c: e51b3010 ldr r3, [fp, #-16] + 100220: e593100c ldr r1, [r3, #12] + 100224: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 100228: e51b2014 ldr r2, [fp, #-20] ; 0xffffffec + 10022c: e51b0008 ldr r0, [fp, #-8] + 100230: eb009640 bl 125b38 + 100234: e50b000c str r0, [fp, #-12] + 100238: e51b3010 ldr r3, [fp, #-16] + 10023c: e593200c ldr r2, [r3, #12] + 100240: e51b300c ldr r3, [fp, #-12] + 100244: e0822003 add r2, r2, r3 + 100248: e51b3010 ldr r3, [fp, #-16] + 10024c: e583200c str r2, [r3, #12] + 100250: e51b300c ldr r3, [fp, #-12] + 100254: e1a00003 mov r0, r3 + 100258: e24bd004 sub sp, fp, #4 + 10025c: e8bd8800 pop {fp, pc} + +00100260 : + 100260: e92d4800 push {fp, lr} + 100264: e28db004 add fp, sp, #4 + 100268: e24dd018 sub sp, sp, #24 + 10026c: e50b0010 str r0, [fp, #-16] + 100270: e50b1014 str r1, [fp, #-20] ; 0xffffffec + 100274: e50b2018 str r2, [fp, #-24] ; 0xffffffe8 + 100278: e51b3010 ldr r3, [fp, #-16] + 10027c: e3530000 cmp r3, #0 + 100280: 1a000005 bne 10029c + 100284: e3a0205a mov r2, #90 ; 0x5a + 100288: e30c145c movw r1, #50268 ; 0xc45c + 10028c: e3401013 movt r1, #19 + 100290: e30c0330 movw r0, #49968 ; 0xc330 + 100294: e3400013 movt r0, #19 + 100298: eb00b620 bl 12db20 + 10029c: e51b3010 ldr r3, [fp, #-16] + 1002a0: e5933010 ldr r3, [r3, #16] + 1002a4: e5933028 ldr r3, [r3, #40] ; 0x28 + 1002a8: e50b3008 str r3, [fp, #-8] + 1002ac: e51b3008 ldr r3, [fp, #-8] + 1002b0: e3530000 cmp r3, #0 + 1002b4: 1a000005 bne 1002d0 + 1002b8: e3a0205e mov r2, #94 ; 0x5e + 1002bc: e30c145c movw r1, #50268 ; 0xc45c + 1002c0: e3401013 movt r1, #19 + 1002c4: e30c0340 movw r0, #49984 ; 0xc340 + 1002c8: e3400013 movt r0, #19 + 1002cc: eb00b613 bl 12db20 + 1002d0: e51b3010 ldr r3, [fp, #-16] + 1002d4: e5933010 ldr r3, [r3, #16] + 1002d8: e5933004 ldr r3, [r3, #4] + 1002dc: e5d33000 ldrb r3, [r3] + 1002e0: e353002f cmp r3, #47 ; 0x2f + 1002e4: 1a000008 bne 10030c + 1002e8: e51b3010 ldr r3, [fp, #-16] + 1002ec: e5933010 ldr r3, [r3, #16] + 1002f0: e5933004 ldr r3, [r3, #4] + 1002f4: e2833001 add r3, r3, #1 + 1002f8: e5d33000 ldrb r3, [r3] + 1002fc: e3530000 cmp r3, #0 + 100300: 1a000001 bne 10030c + 100304: e3e03005 mvn r3, #5 + 100308: ea00000d b 100344 + 10030c: e51b3010 ldr r3, [fp, #-16] + 100310: e593100c ldr r1, [r3, #12] + 100314: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 100318: e51b2014 ldr r2, [fp, #-20] ; 0xffffffec + 10031c: e51b0008 ldr r0, [fp, #-8] + 100320: eb00963d bl 125c1c + 100324: e50b000c str r0, [fp, #-12] + 100328: e51b3010 ldr r3, [fp, #-16] + 10032c: e593200c ldr r2, [r3, #12] + 100330: e51b300c ldr r3, [fp, #-12] + 100334: e0822003 add r2, r2, r3 + 100338: e51b3010 ldr r3, [fp, #-16] + 10033c: e583200c str r2, [r3, #12] + 100340: e51b300c ldr r3, [fp, #-12] + 100344: e1a00003 mov r0, r3 + 100348: e24bd004 sub sp, fp, #4 + 10034c: e8bd8800 pop {fp, pc} + +00100350 : + 100350: e92d4800 push {fp, lr} + 100354: e28db004 add fp, sp, #4 + 100358: e24dd018 sub sp, sp, #24 + 10035c: e50b0018 str r0, [fp, #-24] ; 0xffffffe8 + 100360: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 100364: e3530000 cmp r3, #0 + 100368: 1a000005 bne 100384 + 10036c: e3a0206f mov r2, #111 ; 0x6f + 100370: e30c1470 movw r1, #50288 ; 0xc470 + 100374: e3401013 movt r1, #19 + 100378: e30c0330 movw r0, #49968 ; 0xc330 + 10037c: e3400013 movt r0, #19 + 100380: eb00b5e6 bl 12db20 + 100384: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 100388: e5933010 ldr r3, [r3, #16] + 10038c: e593300c ldr r3, [r3, #12] + 100390: e3530000 cmp r3, #0 + 100394: ca000005 bgt 1003b0 + 100398: e3a02070 mov r2, #112 ; 0x70 + 10039c: e30c1470 movw r1, #50288 ; 0xc470 + 1003a0: e3401013 movt r1, #19 + 1003a4: e30c0354 movw r0, #50004 ; 0xc354 + 1003a8: e3400013 movt r0, #19 + 1003ac: eb00b5db bl 12db20 + 1003b0: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 1003b4: e5933010 ldr r3, [r3, #16] + 1003b8: e593300c ldr r3, [r3, #12] + 1003bc: e3530001 cmp r3, #1 + 1003c0: da000001 ble 1003cc + 1003c4: e3a03000 mov r3, #0 + 1003c8: ea00003c b 1004c0 + 1003cc: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 1003d0: e5933010 ldr r3, [r3, #16] + 1003d4: e1d330b0 ldrh r3, [r3] + 1003d8: e3530002 cmp r3, #2 + 1003dc: 1a00001d bne 100458 + 1003e0: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 1003e4: e5933010 ldr r3, [r3, #16] + 1003e8: e5933004 ldr r3, [r3, #4] + 1003ec: e5d33000 ldrb r3, [r3] + 1003f0: e353002f cmp r3, #47 ; 0x2f + 1003f4: 1a000017 bne 100458 + 1003f8: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 1003fc: e5933010 ldr r3, [r3, #16] + 100400: e5933004 ldr r3, [r3, #4] + 100404: e2833001 add r3, r3, #1 + 100408: e5d33000 ldrb r3, [r3] + 10040c: e3530000 cmp r3, #0 + 100410: 1a000010 bne 100458 + 100414: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 100418: e5933010 ldr r3, [r3, #16] + 10041c: e5933028 ldr r3, [r3, #40] ; 0x28 + 100420: e50b3008 str r3, [fp, #-8] + 100424: e51b3008 ldr r3, [fp, #-8] + 100428: e3530000 cmp r3, #0 + 10042c: 1a000005 bne 100448 + 100430: e3a0207c mov r2, #124 ; 0x7c + 100434: e30c1470 movw r1, #50288 ; 0xc470 + 100438: e3401013 movt r1, #19 + 10043c: e30c0370 movw r0, #50032 ; 0xc370 + 100440: e3400013 movt r0, #19 + 100444: eb00b5b5 bl 12db20 + 100448: e51b0008 ldr r0, [fp, #-8] + 10044c: eb00b4ec bl 12d804 + 100450: e3a03000 mov r3, #0 + 100454: ea000019 b 1004c0 + 100458: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 10045c: e5933010 ldr r3, [r3, #16] + 100460: e5933028 ldr r3, [r3, #40] ; 0x28 + 100464: e50b300c str r3, [fp, #-12] + 100468: e51b300c ldr r3, [fp, #-12] + 10046c: e3530000 cmp r3, #0 + 100470: 1a000005 bne 10048c + 100474: e3a02085 mov r2, #133 ; 0x85 + 100478: e30c1470 movw r1, #50288 ; 0xc470 + 10047c: e3401013 movt r1, #19 + 100480: e30c0340 movw r0, #49984 ; 0xc340 + 100484: e3400013 movt r0, #19 + 100488: eb00b5a4 bl 12db20 + 10048c: e51b000c ldr r0, [fp, #-12] + 100490: eb009563 bl 125a24 + 100494: e50b0010 str r0, [fp, #-16] + 100498: e51b3010 ldr r3, [fp, #-16] + 10049c: e3530000 cmp r3, #0 + 1004a0: 1a000005 bne 1004bc + 1004a4: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 1004a8: e5933010 ldr r3, [r3, #16] + 1004ac: e3a02000 mov r2, #0 + 1004b0: e5832028 str r2, [r3, #40] ; 0x28 + 1004b4: e3a03000 mov r3, #0 + 1004b8: ea000000 b 1004c0 + 1004bc: e3e03004 mvn r3, #4 + 1004c0: e1a00003 mov r0, r3 + 1004c4: e24bd004 sub sp, fp, #4 + 1004c8: e8bd8800 pop {fp, pc} + +001004cc : + 1004cc: e92d4800 push {fp, lr} + 1004d0: e28db004 add fp, sp, #4 + 1004d4: e24dd028 sub sp, sp, #40 ; 0x28 + 1004d8: e50b0028 str r0, [fp, #-40] ; 0xffffffd8 + 1004dc: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 1004e0: e5933010 ldr r3, [r3, #16] + 1004e4: e593300c ldr r3, [r3, #12] + 1004e8: e3530000 cmp r3, #0 + 1004ec: ca000005 bgt 100508 + 1004f0: e3a02098 mov r2, #152 ; 0x98 + 1004f4: e30c1484 movw r1, #50308 ; 0xc484 + 1004f8: e3401013 movt r1, #19 + 1004fc: e30c0354 movw r0, #50004 ; 0xc354 + 100500: e3400013 movt r0, #19 + 100504: eb00b585 bl 12db20 + 100508: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 10050c: e5933010 ldr r3, [r3, #16] + 100510: e593300c ldr r3, [r3, #12] + 100514: e3530001 cmp r3, #1 + 100518: da000004 ble 100530 + 10051c: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 100520: e3a02000 mov r2, #0 + 100524: e583200c str r2, [r3, #12] + 100528: e3a03000 mov r3, #0 + 10052c: ea0000bc b 100824 + 100530: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 100534: e5933010 ldr r3, [r3, #16] + 100538: e5933004 ldr r3, [r3, #4] + 10053c: e5d33000 ldrb r3, [r3] + 100540: e353002f cmp r3, #47 ; 0x2f + 100544: 1a00006b bne 1006f8 + 100548: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 10054c: e5933010 ldr r3, [r3, #16] + 100550: e5933004 ldr r3, [r3, #4] + 100554: e2833001 add r3, r3, #1 + 100558: e5d33000 ldrb r3, [r3] + 10055c: e3530000 cmp r3, #0 + 100560: 1a000064 bne 1006f8 + 100564: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 100568: e5933004 ldr r3, [r3, #4] + 10056c: e2033602 and r3, r3, #2097152 ; 0x200000 + 100570: e3530000 cmp r3, #0 + 100574: 0a00005f beq 1006f8 + 100578: e3a03000 mov r3, #0 + 10057c: e50b300c str r3, [fp, #-12] + 100580: eb00c5c8 bl 131ca8 + 100584: e3a00009 mov r0, #9 + 100588: eb00c0ec bl 130940 + 10058c: e50b0010 str r0, [fp, #-16] + 100590: e51b3010 ldr r3, [fp, #-16] + 100594: e3530000 cmp r3, #0 + 100598: 1a000005 bne 1005b4 + 10059c: e3a020ad mov r2, #173 ; 0xad + 1005a0: e30c1484 movw r1, #50308 ; 0xc484 + 1005a4: e3401013 movt r1, #19 + 1005a8: e30c0388 movw r0, #50056 ; 0xc388 + 1005ac: e3400013 movt r0, #19 + 1005b0: eb00b55a bl 12db20 + 1005b4: e51b3010 ldr r3, [fp, #-16] + 1005b8: e5933004 ldr r3, [r3, #4] + 1005bc: e50b3008 str r3, [fp, #-8] + 1005c0: ea000005 b 1005dc + 1005c4: e51b300c ldr r3, [fp, #-12] + 1005c8: e2833001 add r3, r3, #1 + 1005cc: e50b300c str r3, [fp, #-12] + 1005d0: e51b3008 ldr r3, [fp, #-8] + 1005d4: e5933000 ldr r3, [r3] + 1005d8: e50b3008 str r3, [fp, #-8] + 1005dc: e51b3010 ldr r3, [fp, #-16] + 1005e0: e2833004 add r3, r3, #4 + 1005e4: e51b2008 ldr r2, [fp, #-8] + 1005e8: e1520003 cmp r2, r3 + 1005ec: 1afffff4 bne 1005c4 + 1005f0: eb00c5c0 bl 131cf8 + 1005f4: e51b300c ldr r3, [fp, #-12] + 1005f8: e2833002 add r3, r3, #2 + 1005fc: e1a03103 lsl r3, r3, #2 + 100600: e1a00003 mov r0, r3 + 100604: eb00b432 bl 12d6d4 + 100608: e50b0014 str r0, [fp, #-20] ; 0xffffffec + 10060c: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec + 100610: e3530000 cmp r3, #0 + 100614: 0a000031 beq 1006e0 + 100618: eb00c5a2 bl 131ca8 + 10061c: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec + 100620: e2832008 add r2, r3, #8 + 100624: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec + 100628: e5832000 str r2, [r3] + 10062c: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec + 100630: e3a02000 mov r2, #0 + 100634: e1c320b4 strh r2, [r3, #4] + 100638: e51b300c ldr r3, [fp, #-12] + 10063c: e6ff2073 uxth r2, r3 + 100640: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec + 100644: e1c320b6 strh r2, [r3, #6] + 100648: e3a03000 mov r3, #0 + 10064c: e50b300c str r3, [fp, #-12] + 100650: e51b3010 ldr r3, [fp, #-16] + 100654: e5933004 ldr r3, [r3, #4] + 100658: e50b3008 str r3, [fp, #-8] + 10065c: ea000019 b 1006c8 + 100660: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec + 100664: e1d330b6 ldrh r3, [r3, #6] + 100668: e1a02003 mov r2, r3 + 10066c: e51b300c ldr r3, [fp, #-12] + 100670: e1530002 cmp r3, r2 + 100674: 1a000003 bne 100688 + 100678: e30c03a0 movw r0, #50080 ; 0xc3a0 + 10067c: e3400013 movt r0, #19 + 100680: eb00b354 bl 12d3d8 + 100684: ea000014 b 1006dc + 100688: e51b3008 ldr r3, [fp, #-8] + 10068c: e243300c sub r3, r3, #12 + 100690: e50b3018 str r3, [fp, #-24] ; 0xffffffe8 + 100694: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec + 100698: e5932000 ldr r2, [r3] + 10069c: e51b300c ldr r3, [fp, #-12] + 1006a0: e1a03103 lsl r3, r3, #2 + 1006a4: e0823003 add r3, r2, r3 + 1006a8: e51b2018 ldr r2, [fp, #-24] ; 0xffffffe8 + 1006ac: e5832000 str r2, [r3] + 1006b0: e51b300c ldr r3, [fp, #-12] + 1006b4: e2833001 add r3, r3, #1 + 1006b8: e50b300c str r3, [fp, #-12] + 1006bc: e51b3008 ldr r3, [fp, #-8] + 1006c0: e5933000 ldr r3, [r3] + 1006c4: e50b3008 str r3, [fp, #-8] + 1006c8: e51b3010 ldr r3, [fp, #-16] + 1006cc: e2833004 add r3, r3, #4 + 1006d0: e51b2008 ldr r2, [fp, #-8] + 1006d4: e1520003 cmp r2, r3 + 1006d8: 1affffe0 bne 100660 + 1006dc: eb00c585 bl 131cf8 + 1006e0: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 1006e4: e5933010 ldr r3, [r3, #16] + 1006e8: e51b2014 ldr r2, [fp, #-20] ; 0xffffffec + 1006ec: e5832028 str r2, [r3, #40] ; 0x28 + 1006f0: e3a03000 mov r3, #0 + 1006f4: ea00004a b 100824 + 1006f8: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 1006fc: e5933010 ldr r3, [r3, #16] + 100700: e5933004 ldr r3, [r3, #4] + 100704: e2833001 add r3, r3, #1 + 100708: e1a00003 mov r0, r3 + 10070c: eb0093b8 bl 1255f4 + 100710: e50b001c str r0, [fp, #-28] ; 0xffffffe4 + 100714: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 + 100718: e3530000 cmp r3, #0 + 10071c: 1a000001 bne 100728 + 100720: e3e03012 mvn r3, #18 + 100724: ea00003e b 100824 + 100728: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 + 10072c: e5933028 ldr r3, [r3, #40] ; 0x28 + 100730: e3530000 cmp r3, #0 + 100734: 0a000021 beq 1007c0 + 100738: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 10073c: e5933010 ldr r3, [r3, #16] + 100740: e51b201c ldr r2, [fp, #-28] ; 0xffffffe4 + 100744: e5922028 ldr r2, [r2, #40] ; 0x28 + 100748: e583201c str r2, [r3, #28] + 10074c: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 100750: e5933010 ldr r3, [r3, #16] + 100754: e51b201c ldr r2, [fp, #-28] ; 0xffffffe4 + 100758: e5832028 str r2, [r3, #40] ; 0x28 + 10075c: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 100760: e5933010 ldr r3, [r3, #16] + 100764: e593301c ldr r3, [r3, #28] + 100768: e5933000 ldr r3, [r3] + 10076c: e3530000 cmp r3, #0 + 100770: 0a000026 beq 100810 + 100774: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 100778: e5933010 ldr r3, [r3, #16] + 10077c: e593301c ldr r3, [r3, #28] + 100780: e5933000 ldr r3, [r3] + 100784: e51b0028 ldr r0, [fp, #-40] ; 0xffffffd8 + 100788: e12fff33 blx r3 + 10078c: e50b0020 str r0, [fp, #-32] ; 0xffffffe0 + 100790: e51b3020 ldr r3, [fp, #-32] ; 0xffffffe0 + 100794: e3530000 cmp r3, #0 + 100798: 0a000002 beq 1007a8 + 10079c: e51b3020 ldr r3, [fp, #-32] ; 0xffffffe0 + 1007a0: e3730006 cmn r3, #6 + 1007a4: 1a000019 bne 100810 + 1007a8: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 1007ac: e5933010 ldr r3, [r3, #16] + 1007b0: e3a02004 mov r2, #4 + 1007b4: e1c320b0 strh r2, [r3] + 1007b8: e3a03000 mov r3, #0 + 1007bc: ea000018 b 100824 + 1007c0: e3a01003 mov r1, #3 + 1007c4: e51b001c ldr r0, [fp, #-28] ; 0xffffffe4 + 1007c8: eb009416 bl 125828 + 1007cc: e50b0020 str r0, [fp, #-32] ; 0xffffffe0 + 1007d0: e51b3020 ldr r3, [fp, #-32] ; 0xffffffe0 + 1007d4: e3530000 cmp r3, #0 + 1007d8: 0a000002 beq 1007e8 + 1007dc: e51b3020 ldr r3, [fp, #-32] ; 0xffffffe0 + 1007e0: e3730006 cmn r3, #6 + 1007e4: 1a000009 bne 100810 + 1007e8: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 1007ec: e5933010 ldr r3, [r3, #16] + 1007f0: e51b201c ldr r2, [fp, #-28] ; 0xffffffe4 + 1007f4: e5832028 str r2, [r3, #40] ; 0x28 + 1007f8: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 1007fc: e5933010 ldr r3, [r3, #16] + 100800: e3a02004 mov r2, #4 + 100804: e1c320b0 strh r2, [r3] + 100808: e3a03000 mov r3, #0 + 10080c: ea000004 b 100824 + 100810: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 100814: e5933010 ldr r3, [r3, #16] + 100818: e3a02000 mov r2, #0 + 10081c: e5832028 str r2, [r3, #40] ; 0x28 + 100820: e3e03004 mvn r3, #4 + 100824: e1a00003 mov r0, r3 + 100828: e24bd004 sub sp, fp, #4 + 10082c: e8bd8800 pop {fp, pc} + +00100830 : + 100830: e52db004 push {fp} ; (str fp, [sp, #-4]!) + 100834: e28db000 add fp, sp, #0 + 100838: e24dd00c sub sp, sp, #12 + 10083c: e50b0008 str r0, [fp, #-8] + 100840: e50b100c str r1, [fp, #-12] + 100844: e3a03000 mov r3, #0 + 100848: e1a00003 mov r0, r3 + 10084c: e28bd000 add sp, fp, #0 + 100850: e49db004 pop {fp} ; (ldr fp, [sp], #4) + 100854: e12fff1e bx lr + +00100858 : + 100858: e92d4800 push {fp, lr} + 10085c: e28db004 add fp, sp, #4 + 100860: e24dd018 sub sp, sp, #24 + 100864: e50b0010 str r0, [fp, #-16] + 100868: e50b1014 str r1, [fp, #-20] ; 0xffffffec + 10086c: e50b2018 str r2, [fp, #-24] ; 0xffffffe8 + 100870: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec + 100874: e5d33000 ldrb r3, [r3] + 100878: e353002f cmp r3, #47 ; 0x2f + 10087c: 1a00001e bne 1008fc + 100880: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec + 100884: e2833001 add r3, r3, #1 + 100888: e5d33000 ldrb r3, [r3] + 10088c: e3530000 cmp r3, #0 + 100890: 1a000019 bne 1008fc + 100894: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 100898: e3a02000 mov r2, #0 + 10089c: e1c320b0 strh r2, [r3] + 1008a0: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 1008a4: e30821b6 movw r2, #33206 ; 0x81b6 + 1008a8: e5832004 str r2, [r3, #4] + 1008ac: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 1008b0: e5933004 ldr r3, [r3, #4] + 1008b4: e3c32902 bic r2, r3, #32768 ; 0x8000 + 1008b8: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 1008bc: e5832004 str r2, [r3, #4] + 1008c0: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 1008c4: e5933004 ldr r3, [r3, #4] + 1008c8: e3833901 orr r3, r3, #16384 ; 0x4000 + 1008cc: e3833049 orr r3, r3, #73 ; 0x49 + 1008d0: e51b2018 ldr r2, [fp, #-24] ; 0xffffffe8 + 1008d4: e5823004 str r3, [r2, #4] + 1008d8: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 1008dc: e3a02000 mov r2, #0 + 1008e0: e5832010 str r2, [r3, #16] + 1008e4: e51b1018 ldr r1, [fp, #-24] ; 0xffffffe8 + 1008e8: e3a02000 mov r2, #0 + 1008ec: e3a03000 mov r3, #0 + 1008f0: e1c122f8 strd r2, [r1, #40] ; 0x28 + 1008f4: e3a03000 mov r3, #0 + 1008f8: ea000044 b 100a10 + 1008fc: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec + 100900: e2833001 add r3, r3, #1 + 100904: e1a00003 mov r0, r3 + 100908: eb009339 bl 1255f4 + 10090c: e50b0008 str r0, [fp, #-8] + 100910: e51b3008 ldr r3, [fp, #-8] + 100914: e3530000 cmp r3, #0 + 100918: 0a00003b beq 100a0c + 10091c: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 100920: e3a02000 mov r2, #0 + 100924: e1c320b0 strh r2, [r3] + 100928: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 10092c: e30021b6 movw r2, #438 ; 0x1b6 + 100930: e5832004 str r2, [r3, #4] + 100934: e51b3008 ldr r3, [fp, #-8] + 100938: e5d33014 ldrb r3, [r3, #20] + 10093c: e3530000 cmp r3, #0 + 100940: 1a000005 bne 10095c + 100944: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 100948: e5933004 ldr r3, [r3, #4] + 10094c: e3832a02 orr r2, r3, #8192 ; 0x2000 + 100950: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 100954: e5832004 str r2, [r3, #4] + 100958: ea000022 b 1009e8 + 10095c: e51b3008 ldr r3, [fp, #-8] + 100960: e5d33014 ldrb r3, [r3, #20] + 100964: e3530001 cmp r3, #1 + 100968: 1a000005 bne 100984 + 10096c: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 100970: e5933004 ldr r3, [r3, #4] + 100974: e3832a06 orr r2, r3, #24576 ; 0x6000 + 100978: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 10097c: e5832004 str r2, [r3, #4] + 100980: ea000018 b 1009e8 + 100984: e51b3008 ldr r3, [fp, #-8] + 100988: e5d33014 ldrb r3, [r3, #20] + 10098c: e3530010 cmp r3, #16 + 100990: 1a000005 bne 1009ac + 100994: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 100998: e5933004 ldr r3, [r3, #4] + 10099c: e3832a01 orr r2, r3, #4096 ; 0x1000 + 1009a0: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 1009a4: e5832004 str r2, [r3, #4] + 1009a8: ea00000e b 1009e8 + 1009ac: e51b3008 ldr r3, [fp, #-8] + 1009b0: e5d33014 ldrb r3, [r3, #20] + 1009b4: e353001e cmp r3, #30 + 1009b8: 1a000005 bne 1009d4 + 1009bc: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 1009c0: e5933004 ldr r3, [r3, #4] + 1009c4: e3832901 orr r2, r3, #16384 ; 0x4000 + 1009c8: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 1009cc: e5832004 str r2, [r3, #4] + 1009d0: ea000004 b 1009e8 + 1009d4: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 1009d8: e5933004 ldr r3, [r3, #4] + 1009dc: e3832902 orr r2, r3, #32768 ; 0x8000 + 1009e0: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 1009e4: e5832004 str r2, [r3, #4] + 1009e8: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 1009ec: e3a02000 mov r2, #0 + 1009f0: e5832010 str r2, [r3, #16] + 1009f4: e51b1018 ldr r1, [fp, #-24] ; 0xffffffe8 + 1009f8: e3a02000 mov r2, #0 + 1009fc: e3a03000 mov r3, #0 + 100a00: e1c122f8 strd r2, [r1, #40] ; 0x28 + 100a04: e3a03000 mov r3, #0 + 100a08: ea000000 b 100a10 + 100a0c: e3e03001 mvn r3, #1 + 100a10: e1a00003 mov r0, r3 + 100a14: e24bd004 sub sp, fp, #4 + 100a18: e8bd8800 pop {fp, pc} + +00100a1c : + 100a1c: e92d4800 push {fp, lr} + 100a20: e28db004 add fp, sp, #4 + 100a24: e24dd020 sub sp, sp, #32 + 100a28: e50b0018 str r0, [fp, #-24] ; 0xffffffe8 + 100a2c: e50b101c str r1, [fp, #-28] ; 0xffffffe4 + 100a30: e50b2020 str r2, [fp, #-32] ; 0xffffffe0 + 100a34: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 100a38: e5933010 ldr r3, [r3, #16] + 100a3c: e5933028 ldr r3, [r3, #40] ; 0x28 + 100a40: e50b300c str r3, [fp, #-12] + 100a44: e51b300c ldr r3, [fp, #-12] + 100a48: e3530000 cmp r3, #0 + 100a4c: 1a000005 bne 100a68 + 100a50: e3002159 movw r2, #345 ; 0x159 + 100a54: e30c1498 movw r1, #50328 ; 0xc498 + 100a58: e3401013 movt r1, #19 + 100a5c: e30c0370 movw r0, #50032 ; 0xc370 + 100a60: e3400013 movt r0, #19 + 100a64: eb00b42d bl 12db20 + 100a68: e51b2020 ldr r2, [fp, #-32] ; 0xffffffe0 + 100a6c: e30c30fd movw r3, #49405 ; 0xc0fd + 100a70: e34f3c0f movt r3, #64527 ; 0xfc0f + 100a74: e0832293 umull r2, r3, r3, r2 + 100a78: e1a03423 lsr r3, r3, #8 + 100a7c: e50b3020 str r3, [fp, #-32] ; 0xffffffe0 + 100a80: e51b3020 ldr r3, [fp, #-32] ; 0xffffffe0 + 100a84: e3530000 cmp r3, #0 + 100a88: 1a000001 bne 100a94 + 100a8c: e3e03015 mvn r3, #21 + 100a90: ea00004a b 100bc0 + 100a94: e3a03000 mov r3, #0 + 100a98: e50b3008 str r3, [fp, #-8] + 100a9c: ea00002d b 100b58 + 100aa0: e51b300c ldr r3, [fp, #-12] + 100aa4: e5932000 ldr r2, [r3] + 100aa8: e51b300c ldr r3, [fp, #-12] + 100aac: e1d330b4 ldrh r3, [r3, #4] + 100ab0: e1a01003 mov r1, r3 + 100ab4: e51b3008 ldr r3, [fp, #-8] + 100ab8: e0813003 add r3, r1, r3 + 100abc: e1a03103 lsl r3, r3, #2 + 100ac0: e0823003 add r3, r2, r3 + 100ac4: e5933000 ldr r3, [r3] + 100ac8: e50b3010 str r3, [fp, #-16] + 100acc: e51b2008 ldr r2, [fp, #-8] + 100ad0: e1a03002 mov r3, r2 + 100ad4: e1a03303 lsl r3, r3, #6 + 100ad8: e0833002 add r3, r3, r2 + 100adc: e1a03103 lsl r3, r3, #2 + 100ae0: e1a02003 mov r2, r3 + 100ae4: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 + 100ae8: e0833002 add r3, r3, r2 + 100aec: e50b3014 str r3, [fp, #-20] ; 0xffffffec + 100af0: e51b3010 ldr r3, [fp, #-16] + 100af4: e5d33014 ldrb r3, [r3, #20] + 100af8: e353001e cmp r3, #30 + 100afc: 1a000003 bne 100b10 + 100b00: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec + 100b04: e3a02002 mov r2, #2 + 100b08: e5c32000 strb r2, [r3] + 100b0c: ea000002 b 100b1c + 100b10: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec + 100b14: e3a02001 mov r2, #1 + 100b18: e5c32000 strb r2, [r3] + 100b1c: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec + 100b20: e3a02008 mov r2, #8 + 100b24: e5c32001 strb r2, [r3, #1] + 100b28: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec + 100b2c: e3a02f41 mov r2, #260 ; 0x104 + 100b30: e1c320b2 strh r2, [r3, #2] + 100b34: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec + 100b38: e2833004 add r3, r3, #4 + 100b3c: e51b1010 ldr r1, [fp, #-16] + 100b40: e3a02008 mov r2, #8 + 100b44: e1a00003 mov r0, r3 + 100b48: eb00ac7e bl 12bd48 + 100b4c: e51b3008 ldr r3, [fp, #-8] + 100b50: e2833001 add r3, r3, #1 + 100b54: e50b3008 str r3, [fp, #-8] + 100b58: e51b2008 ldr r2, [fp, #-8] + 100b5c: e51b3020 ldr r3, [fp, #-32] ; 0xffffffe0 + 100b60: e1520003 cmp r2, r3 + 100b64: 2a000008 bcs 100b8c + 100b68: e51b300c ldr r3, [fp, #-12] + 100b6c: e1d330b4 ldrh r3, [r3, #4] + 100b70: e1a02003 mov r2, r3 + 100b74: e51b3008 ldr r3, [fp, #-8] + 100b78: e0823003 add r3, r2, r3 + 100b7c: e51b200c ldr r2, [fp, #-12] + 100b80: e1d220b6 ldrh r2, [r2, #6] + 100b84: e1530002 cmp r3, r2 + 100b88: 3affffc4 bcc 100aa0 + 100b8c: e51b300c ldr r3, [fp, #-12] + 100b90: e1d320b4 ldrh r2, [r3, #4] + 100b94: e51b3008 ldr r3, [fp, #-8] + 100b98: e6ff3073 uxth r3, r3 + 100b9c: e0823003 add r3, r2, r3 + 100ba0: e6ff2073 uxth r2, r3 + 100ba4: e51b300c ldr r3, [fp, #-12] + 100ba8: e1c320b4 strh r2, [r3, #4] + 100bac: e51b2008 ldr r2, [fp, #-8] + 100bb0: e1a03002 mov r3, r2 + 100bb4: e1a03303 lsl r3, r3, #6 + 100bb8: e0833002 add r3, r3, r2 + 100bbc: e1a03103 lsl r3, r3, #2 + 100bc0: e1a00003 mov r0, r3 + 100bc4: e24bd004 sub sp, fp, #4 + 100bc8: e8bd8800 pop {fp, pc} + +00100bcc : + 100bcc: e52db004 push {fp} ; (str fp, [sp, #-4]!) + 100bd0: e28db000 add fp, sp, #0 + 100bd4: e24dd014 sub sp, sp, #20 + 100bd8: e50b0010 str r0, [fp, #-16] + 100bdc: e50b1014 str r1, [fp, #-20] ; 0xffffffec + 100be0: e3a03000 mov r3, #0 + 100be4: e50b3008 str r3, [fp, #-8] + 100be8: e51b3008 ldr r3, [fp, #-8] + 100bec: e1a00003 mov r0, r3 + 100bf0: e28bd000 add sp, fp, #0 + 100bf4: e49db004 pop {fp} ; (ldr fp, [sp], #4) + 100bf8: e12fff1e bx lr + +00100bfc : + 100bfc: e92d4800 push {fp, lr} + 100c00: e28db004 add fp, sp, #4 + 100c04: e30c040c movw r0, #50188 ; 0xc40c + 100c08: e3400013 movt r0, #19 + 100c0c: eb003fef bl 110bd0 + 100c10: e3a03000 mov r3, #0 + 100c14: e1a00003 mov r0, r3 + 100c18: e8bd8800 pop {fp, pc} + +00100c1c : + 100c1c: e52db004 push {fp} ; (str fp, [sp, #-4]!) + 100c20: e28db000 add fp, sp, #0 + 100c24: e24dd014 sub sp, sp, #20 + 100c28: e1a03000 mov r3, r0 + 100c2c: e54b300d strb r3, [fp, #-13] + 100c30: e3a03000 mov r3, #0 + 100c34: e50b3008 str r3, [fp, #-8] + 100c38: e55b300d ldrb r3, [fp, #-13] + 100c3c: e353000e cmp r3, #14 + 100c40: 979ff103 ldrls pc, [pc, r3, lsl #2] + 100c44: ea000020 b 100ccc + 100c48: 00100cd8 .word 0x00100cd8 + 100c4c: 00100ca8 .word 0x00100ca8 + 100c50: 00100ca8 .word 0x00100ca8 + 100c54: 00100ca8 .word 0x00100ca8 + 100c58: 00100c84 .word 0x00100c84 + 100c5c: 00100c84 .word 0x00100c84 + 100c60: 00100c90 .word 0x00100c90 + 100c64: 00100cb4 .word 0x00100cb4 + 100c68: 00100c9c .word 0x00100c9c + 100c6c: 00100c9c .word 0x00100c9c + 100c70: 00100cb4 .word 0x00100cb4 + 100c74: 00100ccc .word 0x00100ccc + 100c78: 00100ccc .word 0x00100ccc + 100c7c: 00100c84 .word 0x00100c84 + 100c80: 00100cc0 .word 0x00100cc0 + 100c84: e3e03001 mvn r3, #1 + 100c88: e50b3008 str r3, [fp, #-8] + 100c8c: ea000012 b 100cdc + 100c90: e3e03015 mvn r3, #21 + 100c94: e50b3008 str r3, [fp, #-8] + 100c98: ea00000f b 100cdc + 100c9c: e3e03010 mvn r3, #16 + 100ca0: e50b3008 str r3, [fp, #-8] + 100ca4: ea00000c b 100cdc + 100ca8: e3e03004 mvn r3, #4 + 100cac: e50b3008 str r3, [fp, #-8] + 100cb0: ea000009 b 100cdc + 100cb4: e3e0301d mvn r3, #29 + 100cb8: e50b3008 str r3, [fp, #-8] + 100cbc: ea000006 b 100cdc + 100cc0: e3e03015 mvn r3, #21 + 100cc4: e50b3008 str r3, [fp, #-8] + 100cc8: ea000003 b 100cdc + 100ccc: e3e03000 mvn r3, #0 + 100cd0: e50b3008 str r3, [fp, #-8] + 100cd4: ea000000 b 100cdc + 100cd8: e320f000 nop {0} + 100cdc: e51b3008 ldr r3, [fp, #-8] + 100ce0: e1a00003 mov r0, r3 + 100ce4: e28bd000 add sp, fp, #0 + 100ce8: e49db004 pop {fp} ; (ldr fp, [sp], #4) + 100cec: e12fff1e bx lr + +00100cf0 : + 100cf0: e52db004 push {fp} ; (str fp, [sp, #-4]!) + 100cf4: e28db000 add fp, sp, #0 + 100cf8: e24dd014 sub sp, sp, #20 + 100cfc: e50b0010 str r0, [fp, #-16] + 100d00: e3a03000 mov r3, #0 + 100d04: e50b3008 str r3, [fp, #-8] + 100d08: ea00000b b 100d3c + 100d0c: e3013f88 movw r3, #8072 ; 0x1f88 + 100d10: e3403014 movt r3, #20 + 100d14: e51b2008 ldr r2, [fp, #-8] + 100d18: e7933102 ldr r3, [r3, r2, lsl #2] + 100d1c: e51b2010 ldr r2, [fp, #-16] + 100d20: e1520003 cmp r2, r3 + 100d24: 1a000001 bne 100d30 + 100d28: e51b3008 ldr r3, [fp, #-8] + 100d2c: ea000006 b 100d4c + 100d30: e51b3008 ldr r3, [fp, #-8] + 100d34: e2833001 add r3, r3, #1 + 100d38: e50b3008 str r3, [fp, #-8] + 100d3c: e51b3008 ldr r3, [fp, #-8] + 100d40: e3530001 cmp r3, #1 + 100d44: dafffff0 ble 100d0c + 100d48: e3e03000 mvn r3, #0 + 100d4c: e1a00003 mov r0, r3 + 100d50: e28bd000 add sp, fp, #0 + 100d54: e49db004 pop {fp} ; (ldr fp, [sp], #4) + 100d58: e12fff1e bx lr + +00100d5c : + 100d5c: e92d4800 push {fp, lr} + 100d60: e28db004 add fp, sp, #4 + 100d64: e24dd040 sub sp, sp, #64 ; 0x40 + 100d68: e50b0038 str r0, [fp, #-56] ; 0xffffffc8 + 100d6c: e50b103c str r1, [fp, #-60] ; 0xffffffc4 + 100d70: e50b2040 str r2, [fp, #-64] ; 0xffffffc0 + 100d74: e30c24fc movw r2, #50428 ; 0xc4fc + 100d78: e3402013 movt r2, #19 + 100d7c: e24b3028 sub r3, fp, #40 ; 0x28 + 100d80: e5922000 ldr r2, [r2] + 100d84: e1c320b0 strh r2, [r3] + 100d88: e2833002 add r3, r3, #2 + 100d8c: e1a02822 lsr r2, r2, #16 + 100d90: e5c32000 strb r2, [r3] + 100d94: e3a00000 mov r0, #0 + 100d98: ebffffd4 bl 100cf0 + 100d9c: e50b000c str r0, [fp, #-12] + 100da0: e51b300c ldr r3, [fp, #-12] + 100da4: e3730001 cmn r3, #1 + 100da8: 1a000001 bne 100db4 + 100dac: e3e03001 mvn r3, #1 + 100db0: ea00006f b 100f74 + 100db4: e51b300c ldr r3, [fp, #-12] + 100db8: e6ef3073 uxtb r3, r3 + 100dbc: e2833030 add r3, r3, #48 ; 0x30 + 100dc0: e6ef3073 uxtb r3, r3 + 100dc4: e54b3028 strb r3, [fp, #-40] ; 0xffffffd8 + 100dc8: e51b3038 ldr r3, [fp, #-56] ; 0xffffffc8 + 100dcc: e5931000 ldr r1, [r3] + 100dd0: e3013f88 movw r3, #8072 ; 0x1f88 + 100dd4: e3403014 movt r3, #20 + 100dd8: e51b200c ldr r2, [fp, #-12] + 100ddc: e7831102 str r1, [r3, r2, lsl #2] + 100de0: e51b3038 ldr r3, [fp, #-56] ; 0xffffffc8 + 100de4: e5933000 ldr r3, [r3] + 100de8: e24b2024 sub r2, fp, #36 ; 0x24 + 100dec: e3001201 movw r1, #513 ; 0x201 + 100df0: e1a00003 mov r0, r3 + 100df4: eb0093c1 bl 125d00 + 100df8: e1a03000 mov r3, r0 + 100dfc: e3530000 cmp r3, #0 + 100e00: 1a000007 bne 100e24 + 100e04: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 + 100e08: e3530a01 cmp r3, #4096 ; 0x1000 + 100e0c: 9a000004 bls 100e24 + 100e10: e30c04b0 movw r0, #50352 ; 0xc4b0 + 100e14: e3400013 movt r0, #19 + 100e18: eb00b16e bl 12d3d8 + 100e1c: e3e03015 mvn r3, #21 + 100e20: ea000053 b 100f74 + 100e24: e301003c movw r0, #4156 ; 0x103c + 100e28: eb00b229 bl 12d6d4 + 100e2c: e50b0010 str r0, [fp, #-16] + 100e30: e51b3010 ldr r3, [fp, #-16] + 100e34: e3530000 cmp r3, #0 + 100e38: 1a000006 bne 100e58 + 100e3c: e3013f88 movw r3, #8072 ; 0x1f88 + 100e40: e3403014 movt r3, #20 + 100e44: e51b200c ldr r2, [fp, #-12] + 100e48: e3a01000 mov r1, #0 + 100e4c: e7831102 str r1, [r3, r2, lsl #2] + 100e50: e3e0300b mvn r3, #11 + 100e54: ea000046 b 100f74 + 100e58: e24b3028 sub r3, fp, #40 ; 0x28 + 100e5c: e3a02001 mov r2, #1 + 100e60: e1a01003 mov r1, r3 + 100e64: e51b0010 ldr r0, [fp, #-16] + 100e68: eb0018a1 bl 1070f4 + 100e6c: e1a03000 mov r3, r0 + 100e70: e54b3005 strb r3, [fp, #-5] + 100e74: e55b3005 ldrb r3, [fp, #-5] + 100e78: e3530000 cmp r3, #0 + 100e7c: 1a000029 bne 100f28 + 100e80: e24b0030 sub r0, fp, #48 ; 0x30 + 100e84: e51b300c ldr r3, [fp, #-12] + 100e88: e30c24f4 movw r2, #50420 ; 0xc4f4 + 100e8c: e3402013 movt r2, #19 + 100e90: e3a01008 mov r1, #8 + 100e94: eb00b0bf bl 12d198 + 100e98: e3a00030 mov r0, #48 ; 0x30 + 100e9c: eb00b20c bl 12d6d4 + 100ea0: e50b0014 str r0, [fp, #-20] ; 0xffffffec + 100ea4: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec + 100ea8: e3530000 cmp r3, #0 + 100eac: 1a00000d bne 100ee8 + 100eb0: e24b3028 sub r3, fp, #40 ; 0x28 + 100eb4: e3a02001 mov r2, #1 + 100eb8: e1a01003 mov r1, r3 + 100ebc: e3a00000 mov r0, #0 + 100ec0: eb00188b bl 1070f4 + 100ec4: e3013f88 movw r3, #8072 ; 0x1f88 + 100ec8: e3403014 movt r3, #20 + 100ecc: e51b200c ldr r2, [fp, #-12] + 100ed0: e3a01000 mov r1, #0 + 100ed4: e7831102 str r1, [r3, r2, lsl #2] + 100ed8: e51b0010 ldr r0, [fp, #-16] + 100edc: eb00b248 bl 12d804 + 100ee0: e3e0300b mvn r3, #11 + 100ee4: ea000022 b 100f74 + 100ee8: e24b3030 sub r3, fp, #48 ; 0x30 + 100eec: e1a01003 mov r1, r3 + 100ef0: e51b0014 ldr r0, [fp, #-20] ; 0xffffffec + 100ef4: eb00200b bl 108f28 + 100ef8: e1a03000 mov r3, r0 + 100efc: e54b3005 strb r3, [fp, #-5] + 100f00: e55b3005 ldrb r3, [fp, #-5] + 100f04: e3530000 cmp r3, #0 + 100f08: 1a000008 bne 100f30 + 100f0c: e51b3038 ldr r3, [fp, #-56] ; 0xffffffc8 + 100f10: e51b2010 ldr r2, [fp, #-16] + 100f14: e583200c str r2, [r3, #12] + 100f18: e51b0014 ldr r0, [fp, #-20] ; 0xffffffec + 100f1c: eb00b238 bl 12d804 + 100f20: e3a03000 mov r3, #0 + 100f24: ea000012 b 100f74 + 100f28: e320f000 nop {0} + 100f2c: ea000000 b 100f34 + 100f30: e320f000 nop {0} + 100f34: e24b3028 sub r3, fp, #40 ; 0x28 + 100f38: e3a02001 mov r2, #1 + 100f3c: e1a01003 mov r1, r3 + 100f40: e3a00000 mov r0, #0 + 100f44: eb00186a bl 1070f4 + 100f48: e3013f88 movw r3, #8072 ; 0x1f88 + 100f4c: e3403014 movt r3, #20 + 100f50: e51b200c ldr r2, [fp, #-12] + 100f54: e3a01000 mov r1, #0 + 100f58: e7831102 str r1, [r3, r2, lsl #2] + 100f5c: e51b0010 ldr r0, [fp, #-16] + 100f60: eb00b227 bl 12d804 + 100f64: e55b3005 ldrb r3, [fp, #-5] + 100f68: e1a00003 mov r0, r3 + 100f6c: ebffff2a bl 100c1c + 100f70: e1a03000 mov r3, r0 + 100f74: e1a00003 mov r0, r3 + 100f78: e24bd004 sub sp, fp, #4 + 100f7c: e8bd8800 pop {fp, pc} + +00100f80 : + 100f80: e92d4800 push {fp, lr} + 100f84: e28db004 add fp, sp, #4 + 100f88: e24dd018 sub sp, sp, #24 + 100f8c: e50b0018 str r0, [fp, #-24] ; 0xffffffe8 + 100f90: e30c24fc movw r2, #50428 ; 0xc4fc + 100f94: e3402013 movt r2, #19 + 100f98: e24b3010 sub r3, fp, #16 + 100f9c: e5922000 ldr r2, [r2] + 100fa0: e1c320b0 strh r2, [r3] + 100fa4: e2833002 add r3, r3, #2 + 100fa8: e1a02822 lsr r2, r2, #16 + 100fac: e5c32000 strb r2, [r3] + 100fb0: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 100fb4: e593300c ldr r3, [r3, #12] + 100fb8: e50b3008 str r3, [fp, #-8] + 100fbc: e51b3008 ldr r3, [fp, #-8] + 100fc0: e3530000 cmp r3, #0 + 100fc4: 1a000005 bne 100fe0 + 100fc8: e3a020b6 mov r2, #182 ; 0xb6 + 100fcc: e30c1614 movw r1, #50708 ; 0xc614 + 100fd0: e3401013 movt r1, #19 + 100fd4: e30c0500 movw r0, #50432 ; 0xc500 + 100fd8: e3400013 movt r0, #19 + 100fdc: eb00b2cf bl 12db20 + 100fe0: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 100fe4: e5933000 ldr r3, [r3] + 100fe8: e1a00003 mov r0, r3 + 100fec: ebffff3f bl 100cf0 + 100ff0: e50b000c str r0, [fp, #-12] + 100ff4: e51b300c ldr r3, [fp, #-12] + 100ff8: e3730001 cmn r3, #1 + 100ffc: 1a000001 bne 101008 + 101000: e3e03001 mvn r3, #1 + 101004: ea00001e b 101084 + 101008: e51b300c ldr r3, [fp, #-12] + 10100c: e6ef3073 uxtb r3, r3 + 101010: e2833030 add r3, r3, #48 ; 0x30 + 101014: e6ef3073 uxtb r3, r3 + 101018: e54b3010 strb r3, [fp, #-16] + 10101c: e24b3010 sub r3, fp, #16 + 101020: e3a02000 mov r2, #0 + 101024: e1a01003 mov r1, r3 + 101028: e3a00000 mov r0, #0 + 10102c: eb001830 bl 1070f4 + 101030: e1a03000 mov r3, r0 + 101034: e54b300d strb r3, [fp, #-13] + 101038: e55b300d ldrb r3, [fp, #-13] + 10103c: e3530000 cmp r3, #0 + 101040: 0a000004 beq 101058 + 101044: e55b300d ldrb r3, [fp, #-13] + 101048: e1a00003 mov r0, r3 + 10104c: ebfffef2 bl 100c1c + 101050: e1a03000 mov r3, r0 + 101054: ea00000a b 101084 + 101058: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 10105c: e3a02000 mov r2, #0 + 101060: e583200c str r2, [r3, #12] + 101064: e3013f88 movw r3, #8072 ; 0x1f88 + 101068: e3403014 movt r3, #20 + 10106c: e51b200c ldr r2, [fp, #-12] + 101070: e3a01000 mov r1, #0 + 101074: e7831102 str r1, [r3, r2, lsl #2] + 101078: e51b0008 ldr r0, [fp, #-8] + 10107c: eb00b1e0 bl 12d804 + 101080: e3a03000 mov r3, #0 + 101084: e1a00003 mov r0, r3 + 101088: e24bd004 sub sp, fp, #4 + 10108c: e8bd8800 pop {fp, pc} + +00101090 : + 101090: e92d4800 push {fp, lr} + 101094: e28db004 add fp, sp, #4 + 101098: e24dd030 sub sp, sp, #48 ; 0x30 + 10109c: e50b0030 str r0, [fp, #-48] ; 0xffffffd0 + 1010a0: e50b1034 str r1, [fp, #-52] ; 0xffffffcc + 1010a4: e3a03000 mov r3, #0 + 1010a8: e50b3008 str r3, [fp, #-8] + 1010ac: e30c24fc movw r2, #50428 ; 0xc4fc + 1010b0: e3402013 movt r2, #19 + 1010b4: e24b3018 sub r3, fp, #24 + 1010b8: e5922000 ldr r2, [r2] + 1010bc: e1c320b0 strh r2, [r3] + 1010c0: e2833002 add r3, r3, #2 + 1010c4: e1a02822 lsr r2, r2, #16 + 1010c8: e5c32000 strb r2, [r3] + 1010cc: e3a00a01 mov r0, #4096 ; 0x1000 + 1010d0: eb00b17f bl 12d6d4 + 1010d4: e50b0014 str r0, [fp, #-20] ; 0xffffffec + 1010d8: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec + 1010dc: e3530000 cmp r3, #0 + 1010e0: 1a000001 bne 1010ec + 1010e4: e3e0300b mvn r3, #11 + 1010e8: ea000072 b 1012b8 + 1010ec: e51b3030 ldr r3, [fp, #-48] ; 0xffffffd0 + 1010f0: e3530000 cmp r3, #0 + 1010f4: 1a000003 bne 101108 + 1010f8: e51b0014 ldr r0, [fp, #-20] ; 0xffffffec + 1010fc: eb00b1c0 bl 12d804 + 101100: e3e03015 mvn r3, #21 + 101104: ea00006b b 1012b8 + 101108: e3a03000 mov r3, #0 + 10110c: e50b300c str r3, [fp, #-12] + 101110: e51b0030 ldr r0, [fp, #-48] ; 0xffffffd0 + 101114: ebfffef5 bl 100cf0 + 101118: e50b0010 str r0, [fp, #-16] + 10111c: e51b3010 ldr r3, [fp, #-16] + 101120: e3730001 cmn r3, #1 + 101124: 1a00002c bne 1011dc + 101128: e3a00000 mov r0, #0 + 10112c: ebfffeef bl 100cf0 + 101130: e50b0010 str r0, [fp, #-16] + 101134: e51b3010 ldr r3, [fp, #-16] + 101138: e3730001 cmn r3, #1 + 10113c: 1a000006 bne 10115c + 101140: e30c0510 movw r0, #50448 ; 0xc510 + 101144: e3400013 movt r0, #19 + 101148: eb00b0a2 bl 12d3d8 + 10114c: e51b0014 ldr r0, [fp, #-20] ; 0xffffffec + 101150: eb00b1ab bl 12d804 + 101154: e3e0301b mvn r3, #27 + 101158: ea000056 b 1012b8 + 10115c: e301003c movw r0, #4156 ; 0x103c + 101160: eb00b15b bl 12d6d4 + 101164: e50b0008 str r0, [fp, #-8] + 101168: e51b3008 ldr r3, [fp, #-8] + 10116c: e3530000 cmp r3, #0 + 101170: 1a000003 bne 101184 + 101174: e51b0014 ldr r0, [fp, #-20] ; 0xffffffec + 101178: eb00b1a1 bl 12d804 + 10117c: e3e0300b mvn r3, #11 + 101180: ea00004c b 1012b8 + 101184: e3a03001 mov r3, #1 + 101188: e50b300c str r3, [fp, #-12] + 10118c: e3013f88 movw r3, #8072 ; 0x1f88 + 101190: e3403014 movt r3, #20 + 101194: e51b2010 ldr r2, [fp, #-16] + 101198: e51b1030 ldr r1, [fp, #-48] ; 0xffffffd0 + 10119c: e7831102 str r1, [r3, r2, lsl #2] + 1011a0: e3a01003 mov r1, #3 + 1011a4: e51b0030 ldr r0, [fp, #-48] ; 0xffffffd0 + 1011a8: eb00919e bl 125828 + 1011ac: e51b3010 ldr r3, [fp, #-16] + 1011b0: e6ef3073 uxtb r3, r3 + 1011b4: e2833030 add r3, r3, #48 ; 0x30 + 1011b8: e6ef3073 uxtb r3, r3 + 1011bc: e54b3018 strb r3, [fp, #-24] ; 0xffffffe8 + 1011c0: e51b3010 ldr r3, [fp, #-16] + 1011c4: e6ef2073 uxtb r2, r3 + 1011c8: e24b3018 sub r3, fp, #24 + 1011cc: e1a01003 mov r1, r3 + 1011d0: e51b0008 ldr r0, [fp, #-8] + 1011d4: eb0017c6 bl 1070f4 + 1011d8: ea000004 b 1011f0 + 1011dc: e51b3010 ldr r3, [fp, #-16] + 1011e0: e6ef3073 uxtb r3, r3 + 1011e4: e2833030 add r3, r3, #48 ; 0x30 + 1011e8: e6ef3073 uxtb r3, r3 + 1011ec: e54b3018 strb r3, [fp, #-24] ; 0xffffffe8 + 1011f0: e24b3028 sub r3, fp, #40 ; 0x28 + 1011f4: e3a02010 mov r2, #16 + 1011f8: e3a01000 mov r1, #0 + 1011fc: e1a00003 mov r0, r3 + 101200: eb00a937 bl 12b6e4 + 101204: e3a0300f mov r3, #15 + 101208: e54b3028 strb r3, [fp, #-40] ; 0xffffffd8 + 10120c: e24b1028 sub r1, fp, #40 ; 0x28 + 101210: e24b0018 sub r0, fp, #24 + 101214: e3a03a01 mov r3, #4096 ; 0x1000 + 101218: e51b2014 ldr r2, [fp, #-20] ; 0xffffffec + 10121c: eb0024ed bl 10a5d8 + 101220: e1a03000 mov r3, r0 + 101224: e54b3015 strb r3, [fp, #-21] ; 0xffffffeb + 101228: e51b0014 ldr r0, [fp, #-20] ; 0xffffffec + 10122c: eb00b174 bl 12d804 + 101230: e3a03000 mov r3, #0 + 101234: e50b3014 str r3, [fp, #-20] ; 0xffffffec + 101238: e51b300c ldr r3, [fp, #-12] + 10123c: e3530001 cmp r3, #1 + 101240: 1a00000e bne 101280 + 101244: e51b0008 ldr r0, [fp, #-8] + 101248: eb00b16d bl 12d804 + 10124c: e51b3010 ldr r3, [fp, #-16] + 101250: e6ef2073 uxtb r2, r3 + 101254: e24b3018 sub r3, fp, #24 + 101258: e1a01003 mov r1, r3 + 10125c: e3a00000 mov r0, #0 + 101260: eb0017a3 bl 1070f4 + 101264: e3013f88 movw r3, #8072 ; 0x1f88 + 101268: e3403014 movt r3, #20 + 10126c: e51b2010 ldr r2, [fp, #-16] + 101270: e3a01000 mov r1, #0 + 101274: e7831102 str r1, [r3, r2, lsl #2] + 101278: e51b0030 ldr r0, [fp, #-48] ; 0xffffffd0 + 10127c: eb0091e8 bl 125a24 + 101280: e55b3015 ldrb r3, [fp, #-21] ; 0xffffffeb + 101284: e3530000 cmp r3, #0 + 101288: 0a000009 beq 1012b4 + 10128c: e55b3015 ldrb r3, [fp, #-21] ; 0xffffffeb + 101290: e1a01003 mov r1, r3 + 101294: e30c0538 movw r0, #50488 ; 0xc538 + 101298: e3400013 movt r0, #19 + 10129c: eb00b04d bl 12d3d8 + 1012a0: e55b3015 ldrb r3, [fp, #-21] ; 0xffffffeb + 1012a4: e1a00003 mov r0, r3 + 1012a8: ebfffe5b bl 100c1c + 1012ac: e1a03000 mov r3, r0 + 1012b0: ea000000 b 1012b8 + 1012b4: e3a03000 mov r3, #0 + 1012b8: e1a00003 mov r0, r3 + 1012bc: e24bd004 sub sp, fp, #4 + 1012c0: e8bd8800 pop {fp, pc} + +001012c4 : + 1012c4: e92d4800 push {fp, lr} + 1012c8: e28db004 add fp, sp, #4 + 1012cc: e24dd020 sub sp, sp, #32 + 1012d0: e50b0020 str r0, [fp, #-32] ; 0xffffffe0 + 1012d4: e50b1024 str r1, [fp, #-36] ; 0xffffffdc + 1012d8: e51b3020 ldr r3, [fp, #-32] ; 0xffffffe0 + 1012dc: e3530000 cmp r3, #0 + 1012e0: 1a000005 bne 1012fc + 1012e4: e3002132 movw r2, #306 ; 0x132 + 1012e8: e30c1624 movw r1, #50724 ; 0xc624 + 1012ec: e3401013 movt r1, #19 + 1012f0: e30c0554 movw r0, #50516 ; 0xc554 + 1012f4: e3400013 movt r0, #19 + 1012f8: eb00b208 bl 12db20 + 1012fc: e51b3024 ldr r3, [fp, #-36] ; 0xffffffdc + 101300: e3530000 cmp r3, #0 + 101304: 1a000005 bne 101320 + 101308: e3002133 movw r2, #307 ; 0x133 + 10130c: e30c1624 movw r1, #50724 ; 0xc624 + 101310: e3401013 movt r1, #19 + 101314: e30c0564 movw r0, #50532 ; 0xc564 + 101318: e3400013 movt r0, #19 + 10131c: eb00b1ff bl 12db20 + 101320: e51b3020 ldr r3, [fp, #-32] ; 0xffffffe0 + 101324: e593300c ldr r3, [r3, #12] + 101328: e50b3014 str r3, [fp, #-20] ; 0xffffffec + 10132c: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec + 101330: e5d33001 ldrb r3, [r3, #1] + 101334: e24b0018 sub r0, fp, #24 + 101338: e30c2574 movw r2, #50548 ; 0xc574 + 10133c: e3402013 movt r2, #19 + 101340: e3a01004 mov r1, #4 + 101344: eb00af93 bl 12d198 + 101348: e24b2014 sub r2, fp, #20 + 10134c: e24b101c sub r1, fp, #28 + 101350: e24b3018 sub r3, fp, #24 + 101354: e1a00003 mov r0, r3 + 101358: eb00202a bl 109408 + 10135c: e1a03000 mov r3, r0 + 101360: e54b3005 strb r3, [fp, #-5] + 101364: e55b3005 ldrb r3, [fp, #-5] + 101368: e3530000 cmp r3, #0 + 10136c: 0a000004 beq 101384 + 101370: e55b3005 ldrb r3, [fp, #-5] + 101374: e1a00003 mov r0, r3 + 101378: ebfffe27 bl 100c1c + 10137c: e1a03000 mov r3, r0 + 101380: ea000018 b 1013e8 + 101384: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec + 101388: e5933020 ldr r3, [r3, #32] + 10138c: e2433002 sub r3, r3, #2 + 101390: e51b2014 ldr r2, [fp, #-20] ; 0xffffffec + 101394: e1d220ba ldrh r2, [r2, #10] + 101398: e0030392 mul r3, r2, r3 + 10139c: e50b300c str r3, [fp, #-12] + 1013a0: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec + 1013a4: e1d330ba ldrh r3, [r3, #10] + 1013a8: e1a02003 mov r2, r3 + 1013ac: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 + 1013b0: e0030293 mul r3, r3, r2 + 1013b4: e50b3010 str r3, [fp, #-16] + 1013b8: e51b3024 ldr r3, [fp, #-36] ; 0xffffffdc + 1013bc: e51b2010 ldr r2, [fp, #-16] + 1013c0: e5832008 str r2, [r3, #8] + 1013c4: e51b3024 ldr r3, [fp, #-36] ; 0xffffffdc + 1013c8: e51b200c ldr r2, [fp, #-12] + 1013cc: e5832004 str r2, [r3, #4] + 1013d0: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec + 1013d4: e1d330bc ldrh r3, [r3, #12] + 1013d8: e1a02003 mov r2, r3 + 1013dc: e51b3024 ldr r3, [fp, #-36] ; 0xffffffdc + 1013e0: e5832000 str r2, [r3] + 1013e4: e3a03000 mov r3, #0 + 1013e8: e1a00003 mov r0, r3 + 1013ec: e24bd004 sub sp, fp, #4 + 1013f0: e8bd8800 pop {fp, pc} + +001013f4 : + 1013f4: e92d4800 push {fp, lr} + 1013f8: e28db004 add fp, sp, #4 + 1013fc: e24dd030 sub sp, sp, #48 ; 0x30 + 101400: e50b0028 str r0, [fp, #-40] ; 0xffffffd8 + 101404: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 101408: e5933010 ldr r3, [r3, #16] + 10140c: e5933018 ldr r3, [r3, #24] + 101410: e50b300c str r3, [fp, #-12] + 101414: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 101418: e5933010 ldr r3, [r3, #16] + 10141c: e593300c ldr r3, [r3, #12] + 101420: e3530000 cmp r3, #0 + 101424: ca000005 bgt 101440 + 101428: e3002157 movw r2, #343 ; 0x157 + 10142c: e30c1634 movw r1, #50740 ; 0xc634 + 101430: e3401013 movt r1, #19 + 101434: e30c0578 movw r0, #50552 ; 0xc578 + 101438: e3400013 movt r0, #19 + 10143c: eb00b1b7 bl 12db20 + 101440: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 101444: e5933010 ldr r3, [r3, #16] + 101448: e593300c ldr r3, [r3, #12] + 10144c: e3530001 cmp r3, #1 + 101450: da000010 ble 101498 + 101454: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 101458: e5933010 ldr r3, [r3, #16] + 10145c: e1d330b0 ldrh r3, [r3] + 101460: e3530002 cmp r3, #2 + 101464: 1a000006 bne 101484 + 101468: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 10146c: e5933004 ldr r3, [r3, #4] + 101470: e2033602 and r3, r3, #2097152 ; 0x200000 + 101474: e3530000 cmp r3, #0 + 101478: 1a000001 bne 101484 + 10147c: e3e03001 mvn r3, #1 + 101480: ea0000c6 b 1017a0 + 101484: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 101488: e3a02000 mov r2, #0 + 10148c: e583200c str r2, [r3, #12] + 101490: e3a03000 mov r3, #0 + 101494: ea0000c1 b 1017a0 + 101498: e51b300c ldr r3, [fp, #-12] + 10149c: e3530000 cmp r3, #0 + 1014a0: 1a000001 bne 1014ac + 1014a4: e3e03001 mvn r3, #1 + 1014a8: ea0000bc b 1017a0 + 1014ac: e51b300c ldr r3, [fp, #-12] + 1014b0: e593300c ldr r3, [r3, #12] + 1014b4: e1a00003 mov r0, r3 + 1014b8: eb00285e bl 10b638 + 1014bc: e50b0010 str r0, [fp, #-16] + 1014c0: e51b3010 ldr r3, [fp, #-16] + 1014c4: e3530000 cmp r3, #0 + 1014c8: aa000001 bge 1014d4 + 1014cc: e3e03001 mvn r3, #1 + 1014d0: ea0000b2 b 1017a0 + 1014d4: e3a00c01 mov r0, #256 ; 0x100 + 1014d8: eb00b07d bl 12d6d4 + 1014dc: e50b0014 str r0, [fp, #-20] ; 0xffffffec + 1014e0: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec + 1014e4: e3530000 cmp r3, #0 + 1014e8: 1a000001 bne 1014f4 + 1014ec: e3e0300b mvn r3, #11 + 1014f0: ea0000aa b 1017a0 + 1014f4: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 1014f8: e5933010 ldr r3, [r3, #16] + 1014fc: e5933004 ldr r3, [r3, #4] + 101500: e58d3000 str r3, [sp] + 101504: e51b3010 ldr r3, [fp, #-16] + 101508: e30c2594 movw r2, #50580 ; 0xc594 + 10150c: e3402013 movt r2, #19 + 101510: e3a01c01 mov r1, #256 ; 0x100 + 101514: e51b0014 ldr r0, [fp, #-20] ; 0xffffffec + 101518: eb00af1e bl 12d198 + 10151c: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 101520: e5933004 ldr r3, [r3, #4] + 101524: e2033602 and r3, r3, #2097152 ; 0x200000 + 101528: e3530000 cmp r3, #0 + 10152c: 0a000032 beq 1015fc + 101530: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 101534: e5933004 ldr r3, [r3, #4] + 101538: e2033c02 and r3, r3, #512 ; 0x200 + 10153c: e3530000 cmp r3, #0 + 101540: 0a00000d beq 10157c + 101544: e51b0014 ldr r0, [fp, #-20] ; 0xffffffec + 101548: eb00217f bl 109b4c + 10154c: e1a03000 mov r3, r0 + 101550: e54b3019 strb r3, [fp, #-25] ; 0xffffffe7 + 101554: e55b3019 ldrb r3, [fp, #-25] ; 0xffffffe7 + 101558: e3530000 cmp r3, #0 + 10155c: 0a000006 beq 10157c + 101560: e51b0014 ldr r0, [fp, #-20] ; 0xffffffec + 101564: eb00b0a6 bl 12d804 + 101568: e55b3019 ldrb r3, [fp, #-25] ; 0xffffffe7 + 10156c: e1a00003 mov r0, r3 + 101570: ebfffda9 bl 100c1c + 101574: e1a03000 mov r3, r0 + 101578: ea000088 b 1017a0 + 10157c: e3a00030 mov r0, #48 ; 0x30 + 101580: eb00b053 bl 12d6d4 + 101584: e50b0020 str r0, [fp, #-32] ; 0xffffffe0 + 101588: e51b3020 ldr r3, [fp, #-32] ; 0xffffffe0 + 10158c: e3530000 cmp r3, #0 + 101590: 1a000003 bne 1015a4 + 101594: e51b0014 ldr r0, [fp, #-20] ; 0xffffffec + 101598: eb00b099 bl 12d804 + 10159c: e3e0300b mvn r3, #11 + 1015a0: ea00007e b 1017a0 + 1015a4: e51b1014 ldr r1, [fp, #-20] ; 0xffffffec + 1015a8: e51b0020 ldr r0, [fp, #-32] ; 0xffffffe0 + 1015ac: eb001e5d bl 108f28 + 1015b0: e1a03000 mov r3, r0 + 1015b4: e54b3019 strb r3, [fp, #-25] ; 0xffffffe7 + 1015b8: e51b0014 ldr r0, [fp, #-20] ; 0xffffffec + 1015bc: eb00b090 bl 12d804 + 1015c0: e55b3019 ldrb r3, [fp, #-25] ; 0xffffffe7 + 1015c4: e3530000 cmp r3, #0 + 1015c8: 0a000006 beq 1015e8 + 1015cc: e51b0020 ldr r0, [fp, #-32] ; 0xffffffe0 + 1015d0: eb00b08b bl 12d804 + 1015d4: e55b3019 ldrb r3, [fp, #-25] ; 0xffffffe7 + 1015d8: e1a00003 mov r0, r3 + 1015dc: ebfffd8e bl 100c1c + 1015e0: e1a03000 mov r3, r0 + 1015e4: ea00006d b 1017a0 + 1015e8: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 1015ec: e51b2020 ldr r2, [fp, #-32] ; 0xffffffe0 + 1015f0: e5832014 str r2, [r3, #20] + 1015f4: e3a03000 mov r3, #0 + 1015f8: ea000068 b 1017a0 + 1015fc: e3a03001 mov r3, #1 + 101600: e54b3005 strb r3, [fp, #-5] + 101604: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 101608: e5933004 ldr r3, [r3, #4] + 10160c: e2033001 and r3, r3, #1 + 101610: e3530000 cmp r3, #0 + 101614: 0a000002 beq 101624 + 101618: e55b3005 ldrb r3, [fp, #-5] + 10161c: e3833002 orr r3, r3, #2 + 101620: e54b3005 strb r3, [fp, #-5] + 101624: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 101628: e5933004 ldr r3, [r3, #4] + 10162c: e2033002 and r3, r3, #2 + 101630: e3530000 cmp r3, #0 + 101634: 0a000002 beq 101644 + 101638: e55b3005 ldrb r3, [fp, #-5] + 10163c: e3833002 orr r3, r3, #2 + 101640: e54b3005 strb r3, [fp, #-5] + 101644: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 101648: e5933004 ldr r3, [r3, #4] + 10164c: e2033c02 and r3, r3, #512 ; 0x200 + 101650: e3530000 cmp r3, #0 + 101654: 0a000002 beq 101664 + 101658: e55b3005 ldrb r3, [fp, #-5] + 10165c: e3833010 orr r3, r3, #16 + 101660: e54b3005 strb r3, [fp, #-5] + 101664: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 101668: e5933004 ldr r3, [r3, #4] + 10166c: e2033b01 and r3, r3, #1024 ; 0x400 + 101670: e3530000 cmp r3, #0 + 101674: 0a000002 beq 101684 + 101678: e55b3005 ldrb r3, [fp, #-5] + 10167c: e3833008 orr r3, r3, #8 + 101680: e54b3005 strb r3, [fp, #-5] + 101684: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 101688: e5933004 ldr r3, [r3, #4] + 10168c: e2033b02 and r3, r3, #2048 ; 0x800 + 101690: e3530000 cmp r3, #0 + 101694: 0a000002 beq 1016a4 + 101698: e55b3005 ldrb r3, [fp, #-5] + 10169c: e3833004 orr r3, r3, #4 + 1016a0: e54b3005 strb r3, [fp, #-5] + 1016a4: e301002c movw r0, #4140 ; 0x102c + 1016a8: eb00b009 bl 12d6d4 + 1016ac: e50b0018 str r0, [fp, #-24] ; 0xffffffe8 + 1016b0: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 1016b4: e3530000 cmp r3, #0 + 1016b8: 1a000003 bne 1016cc + 1016bc: e51b0014 ldr r0, [fp, #-20] ; 0xffffffec + 1016c0: eb00b04f bl 12d804 + 1016c4: e3e0300b mvn r3, #11 + 1016c8: ea000034 b 1017a0 + 1016cc: e55b3005 ldrb r3, [fp, #-5] + 1016d0: e1a02003 mov r2, r3 + 1016d4: e51b1014 ldr r1, [fp, #-20] ; 0xffffffec + 1016d8: e51b0018 ldr r0, [fp, #-24] ; 0xffffffe8 + 1016dc: eb0016d6 bl 10723c + 1016e0: e1a03000 mov r3, r0 + 1016e4: e54b3019 strb r3, [fp, #-25] ; 0xffffffe7 + 1016e8: e51b0014 ldr r0, [fp, #-20] ; 0xffffffec + 1016ec: eb00b044 bl 12d804 + 1016f0: e55b3019 ldrb r3, [fp, #-25] ; 0xffffffe7 + 1016f4: e3530000 cmp r3, #0 + 1016f8: 1a000020 bne 101780 + 1016fc: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 101700: e5933014 ldr r3, [r3, #20] + 101704: e1a02003 mov r2, r3 + 101708: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 10170c: e583200c str r2, [r3, #12] + 101710: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 101714: e5933010 ldr r3, [r3, #16] + 101718: e51b2018 ldr r2, [fp, #-24] ; 0xffffffe8 + 10171c: e592200c ldr r2, [r2, #12] + 101720: e5832024 str r2, [r3, #36] ; 0x24 + 101724: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 101728: e5933010 ldr r3, [r3, #16] + 10172c: e3a02000 mov r2, #0 + 101730: e1c320b0 strh r2, [r3] + 101734: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 101738: e51b2018 ldr r2, [fp, #-24] ; 0xffffffe8 + 10173c: e5832014 str r2, [r3, #20] + 101740: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 101744: e5933004 ldr r3, [r3, #4] + 101748: e2033008 and r3, r3, #8 + 10174c: e3530000 cmp r3, #0 + 101750: 0a000011 beq 10179c + 101754: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 101758: e593300c ldr r3, [r3, #12] + 10175c: e1a01003 mov r1, r3 + 101760: e51b0018 ldr r0, [fp, #-24] ; 0xffffffe8 + 101764: eb001bb5 bl 108640 + 101768: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 10176c: e5933014 ldr r3, [r3, #20] + 101770: e1a02003 mov r2, r3 + 101774: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 101778: e583200c str r2, [r3, #12] + 10177c: ea000006 b 10179c + 101780: e51b0018 ldr r0, [fp, #-24] ; 0xffffffe8 + 101784: eb00b01e bl 12d804 + 101788: e55b3019 ldrb r3, [fp, #-25] ; 0xffffffe7 + 10178c: e1a00003 mov r0, r3 + 101790: ebfffd21 bl 100c1c + 101794: e1a03000 mov r3, r0 + 101798: ea000000 b 1017a0 + 10179c: e3a03000 mov r3, #0 + 1017a0: e1a00003 mov r0, r3 + 1017a4: e24bd004 sub sp, fp, #4 + 1017a8: e8bd8800 pop {fp, pc} + +001017ac : + 1017ac: e92d4800 push {fp, lr} + 1017b0: e28db004 add fp, sp, #4 + 1017b4: e24dd018 sub sp, sp, #24 + 1017b8: e50b0018 str r0, [fp, #-24] ; 0xffffffe8 + 1017bc: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 1017c0: e5933010 ldr r3, [r3, #16] + 1017c4: e593300c ldr r3, [r3, #12] + 1017c8: e3530000 cmp r3, #0 + 1017cc: ca000005 bgt 1017e8 + 1017d0: e30021d7 movw r2, #471 ; 0x1d7 + 1017d4: e30c1644 movw r1, #50756 ; 0xc644 + 1017d8: e3401013 movt r1, #19 + 1017dc: e30c0578 movw r0, #50552 ; 0xc578 + 1017e0: e3400013 movt r0, #19 + 1017e4: eb00b0cd bl 12db20 + 1017e8: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 1017ec: e5933010 ldr r3, [r3, #16] + 1017f0: e593300c ldr r3, [r3, #12] + 1017f4: e3530001 cmp r3, #1 + 1017f8: da000001 ble 101804 + 1017fc: e3a03000 mov r3, #0 + 101800: ea000037 b 1018e4 + 101804: e3a03000 mov r3, #0 + 101808: e54b3005 strb r3, [fp, #-5] + 10180c: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 101810: e5933010 ldr r3, [r3, #16] + 101814: e1d330b0 ldrh r3, [r3] + 101818: e3530002 cmp r3, #2 + 10181c: 1a000010 bne 101864 + 101820: e3a03000 mov r3, #0 + 101824: e50b3010 str r3, [fp, #-16] + 101828: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 10182c: e5933014 ldr r3, [r3, #20] + 101830: e50b3010 str r3, [fp, #-16] + 101834: e51b3010 ldr r3, [fp, #-16] + 101838: e3530000 cmp r3, #0 + 10183c: 1a000005 bne 101858 + 101840: e30021e2 movw r2, #482 ; 0x1e2 + 101844: e30c1644 movw r1, #50756 ; 0xc644 + 101848: e3401013 movt r1, #19 + 10184c: e30c059c movw r0, #50588 ; 0xc59c + 101850: e3400013 movt r0, #19 + 101854: eb00b0b1 bl 12db20 + 101858: e51b0010 ldr r0, [fp, #-16] + 10185c: eb00afe8 bl 12d804 + 101860: ea00001b b 1018d4 + 101864: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 101868: e5933010 ldr r3, [r3, #16] + 10186c: e1d330b0 ldrh r3, [r3] + 101870: e3530000 cmp r3, #0 + 101874: 1a000016 bne 1018d4 + 101878: e3a03000 mov r3, #0 + 10187c: e50b300c str r3, [fp, #-12] + 101880: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 101884: e5933014 ldr r3, [r3, #20] + 101888: e50b300c str r3, [fp, #-12] + 10188c: e51b300c ldr r3, [fp, #-12] + 101890: e3530000 cmp r3, #0 + 101894: 1a000005 bne 1018b0 + 101898: e30021eb movw r2, #491 ; 0x1eb + 10189c: e30c1644 movw r1, #50756 ; 0xc644 + 1018a0: e3401013 movt r1, #19 + 1018a4: e30c05ac movw r0, #50604 ; 0xc5ac + 1018a8: e3400013 movt r0, #19 + 1018ac: eb00b09b bl 12db20 + 1018b0: e51b000c ldr r0, [fp, #-12] + 1018b4: eb001b41 bl 1085c0 + 1018b8: e1a03000 mov r3, r0 + 1018bc: e54b3005 strb r3, [fp, #-5] + 1018c0: e55b3005 ldrb r3, [fp, #-5] + 1018c4: e3530000 cmp r3, #0 + 1018c8: 1a000001 bne 1018d4 + 1018cc: e51b000c ldr r0, [fp, #-12] + 1018d0: eb00afcb bl 12d804 + 1018d4: e55b3005 ldrb r3, [fp, #-5] + 1018d8: e1a00003 mov r0, r3 + 1018dc: ebfffcce bl 100c1c + 1018e0: e1a03000 mov r3, r0 + 1018e4: e1a00003 mov r0, r3 + 1018e8: e24bd004 sub sp, fp, #4 + 1018ec: e8bd8800 pop {fp, pc} + +001018f0 : + 1018f0: e92d4800 push {fp, lr} + 1018f4: e28db004 add fp, sp, #4 + 1018f8: e24dd020 sub sp, sp, #32 + 1018fc: e50b0018 str r0, [fp, #-24] ; 0xffffffe8 + 101900: e50b101c str r1, [fp, #-28] ; 0xffffffe4 + 101904: e50b2020 str r2, [fp, #-32] ; 0xffffffe0 + 101908: e51b201c ldr r2, [fp, #-28] ; 0xffffffe4 + 10190c: e3a03000 mov r3, #0 + 101910: e3453254 movt r3, #21076 ; 0x5254 + 101914: e1520003 cmp r2, r3 + 101918: 0a00000b beq 10194c + 10191c: e51b201c ldr r2, [fp, #-28] ; 0xffffffe4 + 101920: e3a03000 mov r3, #0 + 101924: e3453254 movt r3, #21076 ; 0x5254 + 101928: e1520003 cmp r2, r3 + 10192c: ca000038 bgt 101a14 + 101930: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 + 101934: e3530007 cmp r3, #7 + 101938: 0a000031 beq 101a04 + 10193c: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 + 101940: e3530008 cmp r3, #8 + 101944: 0a000030 beq 101a0c + 101948: ea000031 b 101a14 + 10194c: e3a03000 mov r3, #0 + 101950: e54b3005 strb r3, [fp, #-5] + 101954: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 101958: e5933014 ldr r3, [r3, #20] + 10195c: e50b300c str r3, [fp, #-12] + 101960: e51b300c ldr r3, [fp, #-12] + 101964: e3530000 cmp r3, #0 + 101968: 1a000005 bne 101984 + 10196c: e3002202 movw r2, #514 ; 0x202 + 101970: e30c1654 movw r1, #50772 ; 0xc654 + 101974: e3401013 movt r1, #19 + 101978: e30c05ac movw r0, #50604 ; 0xc5ac + 10197c: e3400013 movt r0, #19 + 101980: eb00b066 bl 12db20 + 101984: e51b300c ldr r3, [fp, #-12] + 101988: e5933014 ldr r3, [r3, #20] + 10198c: e50b3010 str r3, [fp, #-16] + 101990: e51b3020 ldr r3, [fp, #-32] ; 0xffffffe0 + 101994: e5933000 ldr r3, [r3] + 101998: e50b3014 str r3, [fp, #-20] ; 0xffffffec + 10199c: e51b300c ldr r3, [fp, #-12] + 1019a0: e593300c ldr r3, [r3, #12] + 1019a4: e51b2014 ldr r2, [fp, #-20] ; 0xffffffec + 1019a8: e1520003 cmp r2, r3 + 1019ac: 8a000007 bhi 1019d0 + 1019b0: e51b300c ldr r3, [fp, #-12] + 1019b4: e51b2014 ldr r2, [fp, #-20] ; 0xffffffec + 1019b8: e5832014 str r2, [r3, #20] + 1019bc: e51b000c ldr r0, [fp, #-12] + 1019c0: eb001f3c bl 1096b8 + 1019c4: e1a03000 mov r3, r0 + 1019c8: e54b3005 strb r3, [fp, #-5] + 1019cc: ea000004 b 1019e4 + 1019d0: e51b1014 ldr r1, [fp, #-20] ; 0xffffffec + 1019d4: e51b000c ldr r0, [fp, #-12] + 1019d8: eb001b18 bl 108640 + 1019dc: e1a03000 mov r3, r0 + 1019e0: e54b3005 strb r3, [fp, #-5] + 1019e4: e51b300c ldr r3, [fp, #-12] + 1019e8: e51b2010 ldr r2, [fp, #-16] + 1019ec: e5832014 str r2, [r3, #20] + 1019f0: e55b3005 ldrb r3, [fp, #-5] + 1019f4: e1a00003 mov r0, r3 + 1019f8: ebfffc87 bl 100c1c + 1019fc: e1a03000 mov r3, r0 + 101a00: ea000004 b 101a18 + 101a04: e3a03000 mov r3, #0 + 101a08: ea000002 b 101a18 + 101a0c: e3a03000 mov r3, #0 + 101a10: ea000000 b 101a18 + 101a14: e3e03057 mvn r3, #87 ; 0x57 + 101a18: e1a00003 mov r0, r3 + 101a1c: e24bd004 sub sp, fp, #4 + 101a20: e8bd8800 pop {fp, pc} + +00101a24 : + 101a24: e92d4800 push {fp, lr} + 101a28: e28db004 add fp, sp, #4 + 101a2c: e24dd020 sub sp, sp, #32 + 101a30: e50b0018 str r0, [fp, #-24] ; 0xffffffe8 + 101a34: e50b101c str r1, [fp, #-28] ; 0xffffffe4 + 101a38: e50b2020 str r2, [fp, #-32] ; 0xffffffe0 + 101a3c: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 101a40: e5933010 ldr r3, [r3, #16] + 101a44: e1d330b0 ldrh r3, [r3] + 101a48: e3530002 cmp r3, #2 + 101a4c: 1a000001 bne 101a58 + 101a50: e3e03014 mvn r3, #20 + 101a54: ea000020 b 101adc + 101a58: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 101a5c: e5933014 ldr r3, [r3, #20] + 101a60: e50b3008 str r3, [fp, #-8] + 101a64: e51b3008 ldr r3, [fp, #-8] + 101a68: e3530000 cmp r3, #0 + 101a6c: 1a000005 bne 101a88 + 101a70: e3a02f8a mov r2, #552 ; 0x228 + 101a74: e30c1664 movw r1, #50788 ; 0xc664 + 101a78: e3401013 movt r1, #19 + 101a7c: e30c05ac movw r0, #50604 ; 0xc5ac + 101a80: e3400013 movt r0, #19 + 101a84: eb00b025 bl 12db20 + 101a88: e24b3010 sub r3, fp, #16 + 101a8c: e51b2020 ldr r2, [fp, #-32] ; 0xffffffe0 + 101a90: e51b101c ldr r1, [fp, #-28] ; 0xffffffe4 + 101a94: e51b0008 ldr r0, [fp, #-8] + 101a98: eb001751 bl 1077e4 + 101a9c: e1a03000 mov r3, r0 + 101aa0: e54b3009 strb r3, [fp, #-9] + 101aa4: e51b3008 ldr r3, [fp, #-8] + 101aa8: e5933014 ldr r3, [r3, #20] + 101aac: e1a02003 mov r2, r3 + 101ab0: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 101ab4: e583200c str r2, [r3, #12] + 101ab8: e55b3009 ldrb r3, [fp, #-9] + 101abc: e3530000 cmp r3, #0 + 101ac0: 1a000001 bne 101acc + 101ac4: e51b3010 ldr r3, [fp, #-16] + 101ac8: ea000003 b 101adc + 101acc: e55b3009 ldrb r3, [fp, #-9] + 101ad0: e1a00003 mov r0, r3 + 101ad4: ebfffc50 bl 100c1c + 101ad8: e1a03000 mov r3, r0 + 101adc: e1a00003 mov r0, r3 + 101ae0: e24bd004 sub sp, fp, #4 + 101ae4: e8bd8800 pop {fp, pc} + +00101ae8 : + 101ae8: e92d4800 push {fp, lr} + 101aec: e28db004 add fp, sp, #4 + 101af0: e24dd020 sub sp, sp, #32 + 101af4: e50b0018 str r0, [fp, #-24] ; 0xffffffe8 + 101af8: e50b101c str r1, [fp, #-28] ; 0xffffffe4 + 101afc: e50b2020 str r2, [fp, #-32] ; 0xffffffe0 + 101b00: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 101b04: e5933010 ldr r3, [r3, #16] + 101b08: e1d330b0 ldrh r3, [r3] + 101b0c: e3530002 cmp r3, #2 + 101b10: 1a000001 bne 101b1c + 101b14: e3e03014 mvn r3, #20 + 101b18: ea000025 b 101bb4 + 101b1c: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 101b20: e5933014 ldr r3, [r3, #20] + 101b24: e50b3008 str r3, [fp, #-8] + 101b28: e51b3008 ldr r3, [fp, #-8] + 101b2c: e3530000 cmp r3, #0 + 101b30: 1a000005 bne 101b4c + 101b34: e300223f movw r2, #575 ; 0x23f + 101b38: e30c1674 movw r1, #50804 ; 0xc674 + 101b3c: e3401013 movt r1, #19 + 101b40: e30c05ac movw r0, #50604 ; 0xc5ac + 101b44: e3400013 movt r0, #19 + 101b48: eb00aff4 bl 12db20 + 101b4c: e24b3010 sub r3, fp, #16 + 101b50: e51b2020 ldr r2, [fp, #-32] ; 0xffffffe0 + 101b54: e51b101c ldr r1, [fp, #-28] ; 0xffffffe4 + 101b58: e51b0008 ldr r0, [fp, #-8] + 101b5c: eb001888 bl 107d84 + 101b60: e1a03000 mov r3, r0 + 101b64: e54b3009 strb r3, [fp, #-9] + 101b68: e51b3008 ldr r3, [fp, #-8] + 101b6c: e5933014 ldr r3, [r3, #20] + 101b70: e1a02003 mov r2, r3 + 101b74: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 101b78: e583200c str r2, [r3, #12] + 101b7c: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 101b80: e5933010 ldr r3, [r3, #16] + 101b84: e51b2008 ldr r2, [fp, #-8] + 101b88: e592200c ldr r2, [r2, #12] + 101b8c: e5832024 str r2, [r3, #36] ; 0x24 + 101b90: e55b3009 ldrb r3, [fp, #-9] + 101b94: e3530000 cmp r3, #0 + 101b98: 1a000001 bne 101ba4 + 101b9c: e51b3010 ldr r3, [fp, #-16] + 101ba0: ea000003 b 101bb4 + 101ba4: e55b3009 ldrb r3, [fp, #-9] + 101ba8: e1a00003 mov r0, r3 + 101bac: ebfffc1a bl 100c1c + 101bb0: e1a03000 mov r3, r0 + 101bb4: e1a00003 mov r0, r3 + 101bb8: e24bd004 sub sp, fp, #4 + 101bbc: e8bd8800 pop {fp, pc} + +00101bc0 : + 101bc0: e92d4800 push {fp, lr} + 101bc4: e28db004 add fp, sp, #4 + 101bc8: e24dd010 sub sp, sp, #16 + 101bcc: e50b0010 str r0, [fp, #-16] + 101bd0: e51b3010 ldr r3, [fp, #-16] + 101bd4: e5933014 ldr r3, [r3, #20] + 101bd8: e50b3008 str r3, [fp, #-8] + 101bdc: e51b3008 ldr r3, [fp, #-8] + 101be0: e3530000 cmp r3, #0 + 101be4: 1a000005 bne 101c00 + 101be8: e3002251 movw r2, #593 ; 0x251 + 101bec: e30c1684 movw r1, #50820 ; 0xc684 + 101bf0: e3401013 movt r1, #19 + 101bf4: e30c05ac movw r0, #50604 ; 0xc5ac + 101bf8: e3400013 movt r0, #19 + 101bfc: eb00afc7 bl 12db20 + 101c00: e51b0008 ldr r0, [fp, #-8] + 101c04: eb0019f7 bl 1083e8 + 101c08: e1a03000 mov r3, r0 + 101c0c: e54b3009 strb r3, [fp, #-9] + 101c10: e55b3009 ldrb r3, [fp, #-9] + 101c14: e1a00003 mov r0, r3 + 101c18: ebfffbff bl 100c1c + 101c1c: e1a03000 mov r3, r0 + 101c20: e1a00003 mov r0, r3 + 101c24: e24bd004 sub sp, fp, #4 + 101c28: e8bd8800 pop {fp, pc} + +00101c2c : + 101c2c: e92d4800 push {fp, lr} + 101c30: e28db004 add fp, sp, #4 + 101c34: e24dd018 sub sp, sp, #24 + 101c38: e50b0018 str r0, [fp, #-24] ; 0xffffffe8 + 101c3c: e50b101c str r1, [fp, #-28] ; 0xffffffe4 + 101c40: e3a03000 mov r3, #0 + 101c44: e54b3005 strb r3, [fp, #-5] + 101c48: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 101c4c: e5933010 ldr r3, [r3, #16] + 101c50: e1d330b0 ldrh r3, [r3] + 101c54: e3530000 cmp r3, #0 + 101c58: 1a00001c bne 101cd0 + 101c5c: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 101c60: e5933014 ldr r3, [r3, #20] + 101c64: e50b3010 str r3, [fp, #-16] + 101c68: e51b3010 ldr r3, [fp, #-16] + 101c6c: e3530000 cmp r3, #0 + 101c70: 1a000005 bne 101c8c + 101c74: e3a02e26 mov r2, #608 ; 0x260 + 101c78: e30c1694 movw r1, #50836 ; 0xc694 + 101c7c: e3401013 movt r1, #19 + 101c80: e30c05ac movw r0, #50604 ; 0xc5ac + 101c84: e3400013 movt r0, #19 + 101c88: eb00afa4 bl 12db20 + 101c8c: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 + 101c90: e1a01003 mov r1, r3 + 101c94: e51b0010 ldr r0, [fp, #-16] + 101c98: eb001a68 bl 108640 + 101c9c: e1a03000 mov r3, r0 + 101ca0: e54b3005 strb r3, [fp, #-5] + 101ca4: e55b3005 ldrb r3, [fp, #-5] + 101ca8: e3530000 cmp r3, #0 + 101cac: 1a00002d bne 101d68 + 101cb0: e51b3010 ldr r3, [fp, #-16] + 101cb4: e5933014 ldr r3, [r3, #20] + 101cb8: e1a02003 mov r2, r3 + 101cbc: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 101cc0: e583200c str r2, [r3, #12] + 101cc4: e51b3010 ldr r3, [fp, #-16] + 101cc8: e5933014 ldr r3, [r3, #20] + 101ccc: ea000029 b 101d78 + 101cd0: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 101cd4: e5933010 ldr r3, [r3, #16] + 101cd8: e1d330b0 ldrh r3, [r3] + 101cdc: e3530002 cmp r3, #2 + 101ce0: 1a000020 bne 101d68 + 101ce4: e3a03000 mov r3, #0 + 101ce8: e50b300c str r3, [fp, #-12] + 101cec: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 101cf0: e5933014 ldr r3, [r3, #20] + 101cf4: e50b300c str r3, [fp, #-12] + 101cf8: e51b300c ldr r3, [fp, #-12] + 101cfc: e3530000 cmp r3, #0 + 101d00: 1a000005 bne 101d1c + 101d04: e3a02e27 mov r2, #624 ; 0x270 + 101d08: e30c1694 movw r1, #50836 ; 0xc694 + 101d0c: e3401013 movt r1, #19 + 101d10: e30c059c movw r0, #50588 ; 0xc59c + 101d14: e3400013 movt r0, #19 + 101d18: eb00af80 bl 12db20 + 101d1c: e51b201c ldr r2, [fp, #-28] ; 0xffffffe4 + 101d20: e30c30fd movw r3, #49405 ; 0xc0fd + 101d24: e34f3c0f movt r3, #64527 ; 0xfc0f + 101d28: e0832293 umull r2, r3, r3, r2 + 101d2c: e1a03423 lsr r3, r3, #8 + 101d30: e1a01003 mov r1, r3 + 101d34: e51b000c ldr r0, [fp, #-12] + 101d38: eb001d46 bl 109258 + 101d3c: e1a03000 mov r3, r0 + 101d40: e54b3005 strb r3, [fp, #-5] + 101d44: e55b3005 ldrb r3, [fp, #-5] + 101d48: e3530000 cmp r3, #0 + 101d4c: 1a000005 bne 101d68 + 101d50: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 101d54: e51b201c ldr r2, [fp, #-28] ; 0xffffffe4 + 101d58: e583200c str r2, [r3, #12] + 101d5c: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 101d60: e593300c ldr r3, [r3, #12] + 101d64: ea000003 b 101d78 + 101d68: e55b3005 ldrb r3, [fp, #-5] + 101d6c: e1a00003 mov r0, r3 + 101d70: ebfffba9 bl 100c1c + 101d74: e1a03000 mov r3, r0 + 101d78: e1a00003 mov r0, r3 + 101d7c: e24bd004 sub sp, fp, #4 + 101d80: e8bd8800 pop {fp, pc} + +00101d84 : + 101d84: e92d4800 push {fp, lr} + 101d88: e28db004 add fp, sp, #4 + 101d8c: e24ddd05 sub sp, sp, #320 ; 0x140 + 101d90: e50b0138 str r0, [fp, #-312] ; 0xfffffec8 + 101d94: e50b113c str r1, [fp, #-316] ; 0xfffffec4 + 101d98: e50b2140 str r2, [fp, #-320] ; 0xfffffec0 + 101d9c: e51b3138 ldr r3, [fp, #-312] ; 0xfffffec8 + 101da0: e5933014 ldr r3, [r3, #20] + 101da4: e50b300c str r3, [fp, #-12] + 101da8: e51b300c ldr r3, [fp, #-12] + 101dac: e3530000 cmp r3, #0 + 101db0: 1a000005 bne 101dcc + 101db4: e3002287 movw r2, #647 ; 0x287 + 101db8: e30c16a4 movw r1, #50852 ; 0xc6a4 + 101dbc: e3401013 movt r1, #19 + 101dc0: e30c059c movw r0, #50588 ; 0xc59c + 101dc4: e3400013 movt r0, #19 + 101dc8: eb00af54 bl 12db20 + 101dcc: e51b2140 ldr r2, [fp, #-320] ; 0xfffffec0 + 101dd0: e30c30fd movw r3, #49405 ; 0xc0fd + 101dd4: e34f3c0f movt r3, #64527 ; 0xfc0f + 101dd8: e0832293 umull r2, r3, r3, r2 + 101ddc: e1a02423 lsr r2, r3, #8 + 101de0: e1a03002 mov r3, r2 + 101de4: e1a03303 lsl r3, r3, #6 + 101de8: e0833002 add r3, r3, r2 + 101dec: e1a03103 lsl r3, r3, #2 + 101df0: e50b3140 str r3, [fp, #-320] ; 0xfffffec0 + 101df4: e51b3140 ldr r3, [fp, #-320] ; 0xfffffec0 + 101df8: e3530000 cmp r3, #0 + 101dfc: 1a000001 bne 101e08 + 101e00: e3e03015 mvn r3, #21 + 101e04: ea000063 b 101f98 + 101e08: e3a03000 mov r3, #0 + 101e0c: e50b3008 str r3, [fp, #-8] + 101e10: e51b2008 ldr r2, [fp, #-8] + 101e14: e1a03002 mov r3, r2 + 101e18: e1a03303 lsl r3, r3, #6 + 101e1c: e0833002 add r3, r3, r2 + 101e20: e1a03103 lsl r3, r3, #2 + 101e24: e1a02003 mov r2, r3 + 101e28: e51b313c ldr r3, [fp, #-316] ; 0xfffffec4 + 101e2c: e0833002 add r3, r3, r2 + 101e30: e50b3010 str r3, [fp, #-16] + 101e34: e24b3e13 sub r3, fp, #304 ; 0x130 + 101e38: e1a01003 mov r1, r3 + 101e3c: e51b000c ldr r0, [fp, #-12] + 101e40: eb001cb8 bl 109128 + 101e44: e1a03000 mov r3, r0 + 101e48: e54b3011 strb r3, [fp, #-17] ; 0xffffffef + 101e4c: e55b3011 ldrb r3, [fp, #-17] ; 0xffffffef + 101e50: e3530000 cmp r3, #0 + 101e54: 1a000036 bne 101f34 + 101e58: e55b311a ldrb r3, [fp, #-282] ; 0xfffffee6 + 101e5c: e3530000 cmp r3, #0 + 101e60: 0a000033 beq 101f34 + 101e64: e55b311a ldrb r3, [fp, #-282] ; 0xfffffee6 + 101e68: e3530000 cmp r3, #0 + 101e6c: 0a000002 beq 101e7c + 101e70: e24b3e13 sub r3, fp, #304 ; 0x130 + 101e74: e2833016 add r3, r3, #22 + 101e78: ea000001 b 101e84 + 101e7c: e24b3e13 sub r3, fp, #304 ; 0x130 + 101e80: e2833009 add r3, r3, #9 + 101e84: e50b3018 str r3, [fp, #-24] ; 0xffffffe8 + 101e88: e51b3010 ldr r3, [fp, #-16] + 101e8c: e3a02000 mov r2, #0 + 101e90: e5c32000 strb r2, [r3] + 101e94: e55b3128 ldrb r3, [fp, #-296] ; 0xfffffed8 + 101e98: e2033010 and r3, r3, #16 + 101e9c: e3530000 cmp r3, #0 + 101ea0: 0a000003 beq 101eb4 + 101ea4: e51b3010 ldr r3, [fp, #-16] + 101ea8: e3a02002 mov r2, #2 + 101eac: e5c32000 strb r2, [r3] + 101eb0: ea000002 b 101ec0 + 101eb4: e51b3010 ldr r3, [fp, #-16] + 101eb8: e3a02001 mov r2, #1 + 101ebc: e5c32000 strb r2, [r3] + 101ec0: e51b0018 ldr r0, [fp, #-24] ; 0xffffffe8 + 101ec4: eb00a833 bl 12bf98 + 101ec8: e1a03000 mov r3, r0 + 101ecc: e6ef2073 uxtb r2, r3 + 101ed0: e51b3010 ldr r3, [fp, #-16] + 101ed4: e5c32001 strb r2, [r3, #1] + 101ed8: e51b3010 ldr r3, [fp, #-16] + 101edc: e3a02f41 mov r2, #260 ; 0x104 + 101ee0: e1c320b2 strh r2, [r3, #2] + 101ee4: e51b3010 ldr r3, [fp, #-16] + 101ee8: e2833004 add r3, r3, #4 + 101eec: e3a02c01 mov r2, #256 ; 0x100 + 101ef0: e51b1018 ldr r1, [fp, #-24] ; 0xffffffe8 + 101ef4: e1a00003 mov r0, r3 + 101ef8: eb00a792 bl 12bd48 + 101efc: e51b3008 ldr r3, [fp, #-8] + 101f00: e2833001 add r3, r3, #1 + 101f04: e50b3008 str r3, [fp, #-8] + 101f08: e51b2008 ldr r2, [fp, #-8] + 101f0c: e1a03002 mov r3, r2 + 101f10: e1a03303 lsl r3, r3, #6 + 101f14: e0833002 add r3, r3, r2 + 101f18: e1a03103 lsl r3, r3, #2 + 101f1c: e1a02003 mov r2, r3 + 101f20: e51b3140 ldr r3, [fp, #-320] ; 0xfffffec0 + 101f24: e1530002 cmp r3, r2 + 101f28: 9a000000 bls 101f30 + 101f2c: eaffffb7 b 101e10 + 101f30: e320f000 nop {0} + 101f34: e51b3008 ldr r3, [fp, #-8] + 101f38: e3530000 cmp r3, #0 + 101f3c: 1a000004 bne 101f54 + 101f40: e55b3011 ldrb r3, [fp, #-17] ; 0xffffffef + 101f44: e1a00003 mov r0, r3 + 101f48: ebfffb33 bl 100c1c + 101f4c: e1a03000 mov r3, r0 + 101f50: ea000010 b 101f98 + 101f54: e51b3138 ldr r3, [fp, #-312] ; 0xfffffec8 + 101f58: e593300c ldr r3, [r3, #12] + 101f5c: e1a01003 mov r1, r3 + 101f60: e51b2008 ldr r2, [fp, #-8] + 101f64: e1a03002 mov r3, r2 + 101f68: e1a03303 lsl r3, r3, #6 + 101f6c: e0833002 add r3, r3, r2 + 101f70: e1a03103 lsl r3, r3, #2 + 101f74: e0813003 add r3, r1, r3 + 101f78: e1a02003 mov r2, r3 + 101f7c: e51b3138 ldr r3, [fp, #-312] ; 0xfffffec8 + 101f80: e583200c str r2, [r3, #12] + 101f84: e51b2008 ldr r2, [fp, #-8] + 101f88: e1a03002 mov r3, r2 + 101f8c: e1a03303 lsl r3, r3, #6 + 101f90: e0833002 add r3, r3, r2 + 101f94: e1a03103 lsl r3, r3, #2 + 101f98: e1a00003 mov r0, r3 + 101f9c: e24bd004 sub sp, fp, #4 + 101fa0: e8bd8800 pop {fp, pc} + +00101fa4 : + 101fa4: e92d4800 push {fp, lr} + 101fa8: e28db004 add fp, sp, #4 + 101fac: e24dd020 sub sp, sp, #32 + 101fb0: e50b0018 str r0, [fp, #-24] ; 0xffffffe8 + 101fb4: e50b101c str r1, [fp, #-28] ; 0xffffffe4 + 101fb8: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 101fbc: e593300c ldr r3, [r3, #12] + 101fc0: e1a00003 mov r0, r3 + 101fc4: eb00259b bl 10b638 + 101fc8: e50b0008 str r0, [fp, #-8] + 101fcc: e51b3008 ldr r3, [fp, #-8] + 101fd0: e3530000 cmp r3, #0 + 101fd4: aa000001 bge 101fe0 + 101fd8: e3e03001 mvn r3, #1 + 101fdc: ea000019 b 102048 + 101fe0: e3a00c01 mov r0, #256 ; 0x100 + 101fe4: eb00adba bl 12d6d4 + 101fe8: e50b000c str r0, [fp, #-12] + 101fec: e51b300c ldr r3, [fp, #-12] + 101ff0: e3530000 cmp r3, #0 + 101ff4: 1a000001 bne 102000 + 101ff8: e3e0300b mvn r3, #11 + 101ffc: ea000011 b 102048 + 102000: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 + 102004: e58d3000 str r3, [sp] + 102008: e51b3008 ldr r3, [fp, #-8] + 10200c: e30c2594 movw r2, #50580 ; 0xc594 + 102010: e3402013 movt r2, #19 + 102014: e3a01c01 mov r1, #256 ; 0x100 + 102018: e51b000c ldr r0, [fp, #-12] + 10201c: eb00ac5d bl 12d198 + 102020: e51b000c ldr r0, [fp, #-12] + 102024: eb001e3e bl 109924 + 102028: e1a03000 mov r3, r0 + 10202c: e54b300d strb r3, [fp, #-13] + 102030: e51b000c ldr r0, [fp, #-12] + 102034: eb00adf2 bl 12d804 + 102038: e55b300d ldrb r3, [fp, #-13] + 10203c: e1a00003 mov r0, r3 + 102040: ebfffaf5 bl 100c1c + 102044: e1a03000 mov r3, r0 + 102048: e1a00003 mov r0, r3 + 10204c: e24bd004 sub sp, fp, #4 + 102050: e8bd8800 pop {fp, pc} + +00102054 : + 102054: e92d4800 push {fp, lr} + 102058: e28db004 add fp, sp, #4 + 10205c: e24dd028 sub sp, sp, #40 ; 0x28 + 102060: e50b0018 str r0, [fp, #-24] ; 0xffffffe8 + 102064: e50b101c str r1, [fp, #-28] ; 0xffffffe4 + 102068: e50b2020 str r2, [fp, #-32] ; 0xffffffe0 + 10206c: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 102070: e593300c ldr r3, [r3, #12] + 102074: e1a00003 mov r0, r3 + 102078: eb00256e bl 10b638 + 10207c: e50b0008 str r0, [fp, #-8] + 102080: e51b3008 ldr r3, [fp, #-8] + 102084: e3530000 cmp r3, #0 + 102088: aa000001 bge 102094 + 10208c: e3e03001 mvn r3, #1 + 102090: ea00001c b 102108 + 102094: e3a00c01 mov r0, #256 ; 0x100 + 102098: eb00ad8d bl 12d6d4 + 10209c: e50b000c str r0, [fp, #-12] + 1020a0: e51b300c ldr r3, [fp, #-12] + 1020a4: e3530000 cmp r3, #0 + 1020a8: 1a000001 bne 1020b4 + 1020ac: e3e0300b mvn r3, #11 + 1020b0: ea000014 b 102108 + 1020b4: e51b3020 ldr r3, [fp, #-32] ; 0xffffffe0 + 1020b8: e50b3010 str r3, [fp, #-16] + 1020bc: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 + 1020c0: e58d3000 str r3, [sp] + 1020c4: e51b3008 ldr r3, [fp, #-8] + 1020c8: e30c2594 movw r2, #50580 ; 0xc594 + 1020cc: e3402013 movt r2, #19 + 1020d0: e3a01c01 mov r1, #256 ; 0x100 + 1020d4: e51b000c ldr r0, [fp, #-12] + 1020d8: eb00ac2e bl 12d198 + 1020dc: e51b1010 ldr r1, [fp, #-16] + 1020e0: e51b000c ldr r0, [fp, #-12] + 1020e4: eb001f4d bl 109e20 + 1020e8: e1a03000 mov r3, r0 + 1020ec: e54b3011 strb r3, [fp, #-17] ; 0xffffffef + 1020f0: e51b000c ldr r0, [fp, #-12] + 1020f4: eb00adc2 bl 12d804 + 1020f8: e55b3011 ldrb r3, [fp, #-17] ; 0xffffffef + 1020fc: e1a00003 mov r0, r3 + 102100: ebfffac5 bl 100c1c + 102104: e1a03000 mov r3, r0 + 102108: e1a00003 mov r0, r3 + 10210c: e24bd004 sub sp, fp, #4 + 102110: e8bd8800 pop {fp, pc} + +00102114 : + 102114: e92d4800 push {fp, lr} + 102118: e28db004 add fp, sp, #4 + 10211c: e24ddd06 sub sp, sp, #384 ; 0x180 + 102120: e50b0170 str r0, [fp, #-368] ; 0xfffffe90 + 102124: e50b1174 str r1, [fp, #-372] ; 0xfffffe8c + 102128: e50b2178 str r2, [fp, #-376] ; 0xfffffe88 + 10212c: e51b3170 ldr r3, [fp, #-368] ; 0xfffffe90 + 102130: e593300c ldr r3, [r3, #12] + 102134: e50b3008 str r3, [fp, #-8] + 102138: e51b3170 ldr r3, [fp, #-368] ; 0xfffffe90 + 10213c: e593300c ldr r3, [r3, #12] + 102140: e1a00003 mov r0, r3 + 102144: eb00253b bl 10b638 + 102148: e50b000c str r0, [fp, #-12] + 10214c: e51b300c ldr r3, [fp, #-12] + 102150: e3530000 cmp r3, #0 + 102154: aa000001 bge 102160 + 102158: e3e03001 mvn r3, #1 + 10215c: ea0000bb b 102450 + 102160: e3a00c01 mov r0, #256 ; 0x100 + 102164: eb00ad5a bl 12d6d4 + 102168: e50b0010 str r0, [fp, #-16] + 10216c: e51b3010 ldr r3, [fp, #-16] + 102170: e3530000 cmp r3, #0 + 102174: 1a000001 bne 102180 + 102178: e3e0300b mvn r3, #11 + 10217c: ea0000b3 b 102450 + 102180: e51b3174 ldr r3, [fp, #-372] ; 0xfffffe8c + 102184: e58d3000 str r3, [sp] + 102188: e51b300c ldr r3, [fp, #-12] + 10218c: e30c2594 movw r2, #50580 ; 0xc594 + 102190: e3402013 movt r2, #19 + 102194: e3a01c01 mov r1, #256 ; 0x100 + 102198: e51b0010 ldr r0, [fp, #-16] + 10219c: eb00abfd bl 12d198 + 1021a0: e24b3f51 sub r3, fp, #324 ; 0x144 + 1021a4: e1a01003 mov r1, r3 + 1021a8: e51b0010 ldr r0, [fp, #-16] + 1021ac: eb001c54 bl 109304 + 1021b0: e1a03000 mov r3, r0 + 1021b4: e54b3011 strb r3, [fp, #-17] ; 0xffffffef + 1021b8: e51b0010 ldr r0, [fp, #-16] + 1021bc: eb00ad90 bl 12d804 + 1021c0: e55b3011 ldrb r3, [fp, #-17] ; 0xffffffef + 1021c4: e3530000 cmp r3, #0 + 1021c8: 1a00009c bne 102440 + 1021cc: e51b3178 ldr r3, [fp, #-376] ; 0xfffffe88 + 1021d0: e3a02000 mov r2, #0 + 1021d4: e1c320b0 strh r2, [r3] + 1021d8: e51b3178 ldr r3, [fp, #-376] ; 0xfffffe88 + 1021dc: e30821b6 movw r2, #33206 ; 0x81b6 + 1021e0: e5832004 str r2, [r3, #4] + 1021e4: e55b313c ldrb r3, [fp, #-316] ; 0xfffffec4 + 1021e8: e2033010 and r3, r3, #16 + 1021ec: e3530000 cmp r3, #0 + 1021f0: 0a00000a beq 102220 + 1021f4: e51b3178 ldr r3, [fp, #-376] ; 0xfffffe88 + 1021f8: e5933004 ldr r3, [r3, #4] + 1021fc: e3c32902 bic r2, r3, #32768 ; 0x8000 + 102200: e51b3178 ldr r3, [fp, #-376] ; 0xfffffe88 + 102204: e5832004 str r2, [r3, #4] + 102208: e51b3178 ldr r3, [fp, #-376] ; 0xfffffe88 + 10220c: e5933004 ldr r3, [r3, #4] + 102210: e3833901 orr r3, r3, #16384 ; 0x4000 + 102214: e3833049 orr r3, r3, #73 ; 0x49 + 102218: e51b2178 ldr r2, [fp, #-376] ; 0xfffffe88 + 10221c: e5823004 str r3, [r2, #4] + 102220: e55b313c ldrb r3, [fp, #-316] ; 0xfffffec4 + 102224: e2033001 and r3, r3, #1 + 102228: e3530000 cmp r3, #0 + 10222c: 0a000004 beq 102244 + 102230: e51b3178 ldr r3, [fp, #-376] ; 0xfffffe88 + 102234: e5933004 ldr r3, [r3, #4] + 102238: e3c32092 bic r2, r3, #146 ; 0x92 + 10223c: e51b3178 ldr r3, [fp, #-376] ; 0xfffffe88 + 102240: e5832004 str r2, [r3, #4] + 102244: e51b3144 ldr r3, [fp, #-324] ; 0xfffffebc + 102248: e1a02003 mov r2, r3 + 10224c: e51b3178 ldr r3, [fp, #-376] ; 0xfffffe88 + 102250: e5832010 str r2, [r3, #16] + 102254: e51b3008 ldr r3, [fp, #-8] + 102258: e1d330ba ldrh r3, [r3, #10] + 10225c: e1a02003 mov r2, r3 + 102260: e51b3008 ldr r3, [fp, #-8] + 102264: e1d330bc ldrh r3, [r3, #12] + 102268: e0020293 mul r2, r3, r2 + 10226c: e51b3178 ldr r3, [fp, #-376] ; 0xfffffe88 + 102270: e5832048 str r2, [r3, #72] ; 0x48 + 102274: e55b313c ldrb r3, [fp, #-316] ; 0xfffffec4 + 102278: e2033020 and r3, r3, #32 + 10227c: e3530000 cmp r3, #0 + 102280: 0a000025 beq 10231c + 102284: e51b3144 ldr r3, [fp, #-324] ; 0xfffffebc + 102288: e3530000 cmp r3, #0 + 10228c: 0a000011 beq 1022d8 + 102290: e51b3144 ldr r3, [fp, #-324] ; 0xfffffebc + 102294: e2432001 sub r2, r3, #1 + 102298: e51b3008 ldr r3, [fp, #-8] + 10229c: e1d330bc ldrh r3, [r3, #12] + 1022a0: e1a01003 mov r1, r3 + 1022a4: e1a00002 mov r0, r2 + 1022a8: fa00e39a blx 13b118 <__udivsi3> + 1022ac: e1a03000 mov r3, r0 + 1022b0: e1a02003 mov r2, r3 + 1022b4: e51b3008 ldr r3, [fp, #-8] + 1022b8: e1d330ba ldrh r3, [r3, #10] + 1022bc: e1a01003 mov r1, r3 + 1022c0: e1a00002 mov r0, r2 + 1022c4: fa00e393 blx 13b118 <__udivsi3> + 1022c8: e1a03000 mov r3, r0 + 1022cc: e2833001 add r3, r3, #1 + 1022d0: e1a02003 mov r2, r3 + 1022d4: ea000000 b 1022dc + 1022d8: e3a02000 mov r2, #0 + 1022dc: e51b3178 ldr r3, [fp, #-376] ; 0xfffffe88 + 1022e0: e583204c str r2, [r3, #76] ; 0x4c + 1022e4: e51b3178 ldr r3, [fp, #-376] ; 0xfffffe88 + 1022e8: e593104c ldr r1, [r3, #76] ; 0x4c + 1022ec: e51b3178 ldr r3, [fp, #-376] ; 0xfffffe88 + 1022f0: e5933048 ldr r3, [r3, #72] ; 0x48 + 1022f4: e2832f7f add r2, r3, #508 ; 0x1fc + 1022f8: e2822003 add r2, r2, #3 + 1022fc: e3530000 cmp r3, #0 + 102300: b1a03002 movlt r3, r2 + 102304: a1a03003 movge r3, r3 + 102308: e1a034c3 asr r3, r3, #9 + 10230c: e0020193 mul r2, r3, r1 + 102310: e51b3178 ldr r3, [fp, #-376] ; 0xfffffe88 + 102314: e583204c str r2, [r3, #76] ; 0x4c + 102318: ea000004 b 102330 + 10231c: e51b3008 ldr r3, [fp, #-8] + 102320: e1d330ba ldrh r3, [r3, #10] + 102324: e1a02003 mov r2, r3 + 102328: e51b3178 ldr r3, [fp, #-376] ; 0xfffffe88 + 10232c: e583204c str r2, [r3, #76] ; 0x4c + 102330: e24b3004 sub r3, fp, #4 + 102334: e2433d05 sub r3, r3, #320 ; 0x140 + 102338: e1d330b4 ldrh r3, [r3, #4] + 10233c: e14b31b4 strh r3, [fp, #-20] ; 0xffffffec + 102340: e15b31b4 ldrh r3, [fp, #-20] ; 0xffffffec + 102344: e203301f and r3, r3, #31 + 102348: e50b3018 str r3, [fp, #-24] ; 0xffffffe8 + 10234c: e15b31b4 ldrh r3, [fp, #-20] ; 0xffffffec + 102350: e1a032a3 lsr r3, r3, #5 + 102354: e14b31b4 strh r3, [fp, #-20] ; 0xffffffec + 102358: e15b31b4 ldrh r3, [fp, #-20] ; 0xffffffec + 10235c: e203300f and r3, r3, #15 + 102360: e50b301c str r3, [fp, #-28] ; 0xffffffe4 + 102364: e15b31b4 ldrh r3, [fp, #-20] ; 0xffffffec + 102368: e1a03223 lsr r3, r3, #4 + 10236c: e14b31b4 strh r3, [fp, #-20] ; 0xffffffec + 102370: e15b31b4 ldrh r3, [fp, #-20] ; 0xffffffec + 102374: e203307f and r3, r3, #127 ; 0x7f + 102378: e2833e7b add r3, r3, #1968 ; 0x7b0 + 10237c: e283300c add r3, r3, #12 + 102380: e50b3020 str r3, [fp, #-32] ; 0xffffffe0 + 102384: e24b3004 sub r3, fp, #4 + 102388: e2433d05 sub r3, r3, #320 ; 0x140 + 10238c: e1d330b6 ldrh r3, [r3, #6] + 102390: e14b31b4 strh r3, [fp, #-20] ; 0xffffffec + 102394: e15b31b4 ldrh r3, [fp, #-20] ; 0xffffffec + 102398: e203301f and r3, r3, #31 + 10239c: e1a03083 lsl r3, r3, #1 + 1023a0: e50b3024 str r3, [fp, #-36] ; 0xffffffdc + 1023a4: e15b31b4 ldrh r3, [fp, #-20] ; 0xffffffec + 1023a8: e1a032a3 lsr r3, r3, #5 + 1023ac: e14b31b4 strh r3, [fp, #-20] ; 0xffffffec + 1023b0: e15b31b4 ldrh r3, [fp, #-20] ; 0xffffffec + 1023b4: e203303f and r3, r3, #63 ; 0x3f + 1023b8: e50b3028 str r3, [fp, #-40] ; 0xffffffd8 + 1023bc: e15b31b4 ldrh r3, [fp, #-20] ; 0xffffffec + 1023c0: e1a03323 lsr r3, r3, #6 + 1023c4: e14b31b4 strh r3, [fp, #-20] ; 0xffffffec + 1023c8: e15b31b4 ldrh r3, [fp, #-20] ; 0xffffffec + 1023cc: e203301f and r3, r3, #31 + 1023d0: e50b302c str r3, [fp, #-44] ; 0xffffffd4 + 1023d4: e24b3f5a sub r3, fp, #360 ; 0x168 + 1023d8: e3a02024 mov r2, #36 ; 0x24 + 1023dc: e3a01000 mov r1, #0 + 1023e0: e1a00003 mov r0, r3 + 1023e4: eb00a4be bl 12b6e4 + 1023e8: e51b3020 ldr r3, [fp, #-32] ; 0xffffffe0 + 1023ec: e2433e76 sub r3, r3, #1888 ; 0x760 + 1023f0: e243300c sub r3, r3, #12 + 1023f4: e50b3154 str r3, [fp, #-340] ; 0xfffffeac + 1023f8: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 + 1023fc: e2433001 sub r3, r3, #1 + 102400: e50b3158 str r3, [fp, #-344] ; 0xfffffea8 + 102404: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 + 102408: e50b315c str r3, [fp, #-348] ; 0xfffffea4 + 10240c: e51b302c ldr r3, [fp, #-44] ; 0xffffffd4 + 102410: e50b3160 str r3, [fp, #-352] ; 0xfffffea0 + 102414: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 + 102418: e50b3164 str r3, [fp, #-356] ; 0xfffffe9c + 10241c: e51b3024 ldr r3, [fp, #-36] ; 0xffffffdc + 102420: e50b3168 str r3, [fp, #-360] ; 0xfffffe98 + 102424: e24b3f5a sub r3, fp, #360 ; 0x168 + 102428: e1a00003 mov r0, r3 + 10242c: eb00717d bl 11ea28 + 102430: e1a02000 mov r2, r0 + 102434: e1a03001 mov r3, r1 + 102438: e51b1178 ldr r1, [fp, #-376] ; 0xfffffe88 + 10243c: e1c122f8 strd r2, [r1, #40] ; 0x28 + 102440: e55b3011 ldrb r3, [fp, #-17] ; 0xffffffef + 102444: e1a00003 mov r0, r3 + 102448: ebfff9f3 bl 100c1c + 10244c: e1a03000 mov r3, r0 + 102450: e1a00003 mov r0, r3 + 102454: e24bd004 sub sp, fp, #4 + 102458: e8bd8800 pop {fp, pc} + +0010245c : + 10245c: e92d4800 push {fp, lr} + 102460: e28db004 add fp, sp, #4 + 102464: e30c05e4 movw r0, #50660 ; 0xc5e4 + 102468: e3400013 movt r0, #19 + 10246c: eb0039d7 bl 110bd0 + 102470: e3a03000 mov r3, #0 + 102474: e1a00003 mov r0, r3 + 102478: e8bd8800 pop {fp, pc} + +0010247c : + 10247c: e52db004 push {fp} ; (str fp, [sp, #-4]!) + 102480: e28db000 add fp, sp, #0 + 102484: e24dd00c sub sp, sp, #12 + 102488: e1a03000 mov r3, r0 + 10248c: e54b3005 strb r3, [fp, #-5] + 102490: e3a03000 mov r3, #0 + 102494: e1a00003 mov r0, r3 + 102498: e28bd000 add sp, fp, #0 + 10249c: e49db004 pop {fp} ; (ldr fp, [sp], #4) + 1024a0: e12fff1e bx lr + +001024a4 : + 1024a4: e52db004 push {fp} ; (str fp, [sp, #-4]!) + 1024a8: e28db000 add fp, sp, #0 + 1024ac: e24dd00c sub sp, sp, #12 + 1024b0: e1a03000 mov r3, r0 + 1024b4: e54b3005 strb r3, [fp, #-5] + 1024b8: e3a03000 mov r3, #0 + 1024bc: e1a00003 mov r0, r3 + 1024c0: e28bd000 add sp, fp, #0 + 1024c4: e49db004 pop {fp} ; (ldr fp, [sp], #4) + 1024c8: e12fff1e bx lr + +001024cc : + 1024cc: e92d4800 push {fp, lr} + 1024d0: e28db004 add fp, sp, #4 + 1024d4: e24dd018 sub sp, sp, #24 + 1024d8: e50b1014 str r1, [fp, #-20] ; 0xffffffec + 1024dc: e50b2018 str r2, [fp, #-24] ; 0xffffffe8 + 1024e0: e50b301c str r3, [fp, #-28] ; 0xffffffe4 + 1024e4: e1a03000 mov r3, r0 + 1024e8: e54b300d strb r3, [fp, #-13] + 1024ec: e55b200d ldrb r2, [fp, #-13] + 1024f0: e3013f88 movw r3, #8072 ; 0x1f88 + 1024f4: e3403014 movt r3, #20 + 1024f8: e7933102 ldr r3, [r3, r2, lsl #2] + 1024fc: e50b3008 str r3, [fp, #-8] + 102500: e51b1018 ldr r1, [fp, #-24] ; 0xffffffe8 + 102504: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 + 102508: e51b2014 ldr r2, [fp, #-20] ; 0xffffffec + 10250c: e51b0008 ldr r0, [fp, #-8] + 102510: eb008d88 bl 125b38 + 102514: e1a03000 mov r3, r0 + 102518: e50b300c str r3, [fp, #-12] + 10251c: e51b200c ldr r2, [fp, #-12] + 102520: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 + 102524: e1520003 cmp r2, r3 + 102528: 1a000001 bne 102534 + 10252c: e3a03000 mov r3, #0 + 102530: ea000000 b 102538 + 102534: e3a03001 mov r3, #1 + 102538: e1a00003 mov r0, r3 + 10253c: e24bd004 sub sp, fp, #4 + 102540: e8bd8800 pop {fp, pc} + +00102544 : + 102544: e92d4800 push {fp, lr} + 102548: e28db004 add fp, sp, #4 + 10254c: e24dd018 sub sp, sp, #24 + 102550: e50b1014 str r1, [fp, #-20] ; 0xffffffec + 102554: e50b2018 str r2, [fp, #-24] ; 0xffffffe8 + 102558: e50b301c str r3, [fp, #-28] ; 0xffffffe4 + 10255c: e1a03000 mov r3, r0 + 102560: e54b300d strb r3, [fp, #-13] + 102564: e55b200d ldrb r2, [fp, #-13] + 102568: e3013f88 movw r3, #8072 ; 0x1f88 + 10256c: e3403014 movt r3, #20 + 102570: e7933102 ldr r3, [r3, r2, lsl #2] + 102574: e50b3008 str r3, [fp, #-8] + 102578: e51b1018 ldr r1, [fp, #-24] ; 0xffffffe8 + 10257c: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 + 102580: e51b2014 ldr r2, [fp, #-20] ; 0xffffffec + 102584: e51b0008 ldr r0, [fp, #-8] + 102588: eb008da3 bl 125c1c + 10258c: e1a03000 mov r3, r0 + 102590: e50b300c str r3, [fp, #-12] + 102594: e51b200c ldr r2, [fp, #-12] + 102598: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 + 10259c: e1520003 cmp r2, r3 + 1025a0: 1a000001 bne 1025ac + 1025a4: e3a03000 mov r3, #0 + 1025a8: ea000000 b 1025b0 + 1025ac: e3a03001 mov r3, #1 + 1025b0: e1a00003 mov r0, r3 + 1025b4: e24bd004 sub sp, fp, #4 + 1025b8: e8bd8800 pop {fp, pc} + +001025bc : + 1025bc: e92d4800 push {fp, lr} + 1025c0: e28db004 add fp, sp, #4 + 1025c4: e24dd040 sub sp, sp, #64 ; 0x40 + 1025c8: e1a03000 mov r3, r0 + 1025cc: e50b2044 str r2, [fp, #-68] ; 0xffffffbc + 1025d0: e54b303d strb r3, [fp, #-61] ; 0xffffffc3 + 1025d4: e1a03001 mov r3, r1 + 1025d8: e54b303e strb r3, [fp, #-62] ; 0xffffffc2 + 1025dc: e55b203d ldrb r2, [fp, #-61] ; 0xffffffc3 + 1025e0: e3013f88 movw r3, #8072 ; 0x1f88 + 1025e4: e3403014 movt r3, #20 + 1025e8: e7933102 ldr r3, [r3, r2, lsl #2] + 1025ec: e50b3008 str r3, [fp, #-8] + 1025f0: e51b3008 ldr r3, [fp, #-8] + 1025f4: e3530000 cmp r3, #0 + 1025f8: 1a000001 bne 102604 + 1025fc: e3a03001 mov r3, #1 + 102600: ea00004d b 10273c + 102604: e55b303e ldrb r3, [fp, #-62] ; 0xffffffc2 + 102608: e3530001 cmp r3, #1 + 10260c: 1a000011 bne 102658 + 102610: e24b301c sub r3, fp, #28 + 102614: e3a02010 mov r2, #16 + 102618: e3a01000 mov r1, #0 + 10261c: e1a00003 mov r0, r3 + 102620: eb00a42f bl 12b6e4 + 102624: e24b301c sub r3, fp, #28 + 102628: e1a02003 mov r2, r3 + 10262c: e3001201 movw r1, #513 ; 0x201 + 102630: e51b0008 ldr r0, [fp, #-8] + 102634: eb008db1 bl 125d00 + 102638: e14b21dc ldrd r2, [fp, #-28] ; 0xffffffe4 + 10263c: e51b3044 ldr r3, [fp, #-68] ; 0xffffffbc + 102640: e5832000 str r2, [r3] + 102644: e14b21dc ldrd r2, [fp, #-28] ; 0xffffffe4 + 102648: e1923003 orrs r3, r2, r3 + 10264c: 1a000039 bne 102738 + 102650: e3a03001 mov r3, #1 + 102654: ea000038 b 10273c + 102658: e55b303e ldrb r3, [fp, #-62] ; 0xffffffc2 + 10265c: e3530002 cmp r3, #2 + 102660: 1a00000e bne 1026a0 + 102664: e24b302c sub r3, fp, #44 ; 0x2c + 102668: e3a02010 mov r2, #16 + 10266c: e3a01000 mov r1, #0 + 102670: e1a00003 mov r0, r3 + 102674: eb00a41a bl 12b6e4 + 102678: e24b302c sub r3, fp, #44 ; 0x2c + 10267c: e1a02003 mov r2, r3 + 102680: e3001201 movw r1, #513 ; 0x201 + 102684: e51b0008 ldr r0, [fp, #-8] + 102688: eb008d9c bl 125d00 + 10268c: e51b3024 ldr r3, [fp, #-36] ; 0xffffffdc + 102690: e6ff2073 uxth r2, r3 + 102694: e51b3044 ldr r3, [fp, #-68] ; 0xffffffbc + 102698: e1c320b0 strh r2, [r3] + 10269c: ea000025 b 102738 + 1026a0: e55b303e ldrb r3, [fp, #-62] ; 0xffffffc2 + 1026a4: e3530003 cmp r3, #3 + 1026a8: 1a000013 bne 1026fc + 1026ac: e24b303c sub r3, fp, #60 ; 0x3c + 1026b0: e3a02010 mov r2, #16 + 1026b4: e3a01000 mov r1, #0 + 1026b8: e1a00003 mov r0, r3 + 1026bc: eb00a408 bl 12b6e4 + 1026c0: e24b303c sub r3, fp, #60 ; 0x3c + 1026c4: e1a02003 mov r2, r3 + 1026c8: e3001201 movw r1, #513 ; 0x201 + 1026cc: e51b0008 ldr r0, [fp, #-8] + 1026d0: eb008d8a bl 125d00 + 1026d4: e51b3030 ldr r3, [fp, #-48] ; 0xffffffd0 + 1026d8: e51b2034 ldr r2, [fp, #-52] ; 0xffffffcc + 1026dc: e1a01002 mov r1, r2 + 1026e0: e1a00003 mov r0, r3 + 1026e4: fa00e28b blx 13b118 <__udivsi3> + 1026e8: e1a03000 mov r3, r0 + 1026ec: e1a02003 mov r2, r3 + 1026f0: e51b3044 ldr r3, [fp, #-68] ; 0xffffffbc + 1026f4: e5832000 str r2, [r3] + 1026f8: ea00000e b 102738 + 1026fc: e55b303e ldrb r3, [fp, #-62] ; 0xffffffc2 + 102700: e3530000 cmp r3, #0 + 102704: 1a000004 bne 10271c + 102708: e3a02000 mov r2, #0 + 10270c: e3001202 movw r1, #514 ; 0x202 + 102710: e51b0008 ldr r0, [fp, #-8] + 102714: eb008d79 bl 125d00 + 102718: ea000006 b 102738 + 10271c: e55b303e ldrb r3, [fp, #-62] ; 0xffffffc2 + 102720: e3530004 cmp r3, #4 + 102724: 1a000003 bne 102738 + 102728: e51b2044 ldr r2, [fp, #-68] ; 0xffffffbc + 10272c: e3001203 movw r1, #515 ; 0x203 + 102730: e51b0008 ldr r0, [fp, #-8] + 102734: eb008d71 bl 125d00 + 102738: e3a03000 mov r3, #0 + 10273c: e1a00003 mov r0, r3 + 102740: e24bd004 sub sp, fp, #4 + 102744: e8bd8800 pop {fp, pc} + +00102748 : + 102748: e92d4800 push {fp, lr} + 10274c: e28db004 add fp, sp, #4 + 102750: e24dd038 sub sp, sp, #56 ; 0x38 + 102754: e3a03000 mov r3, #0 + 102758: e50b3008 str r3, [fp, #-8] + 10275c: e3a00000 mov r0, #0 + 102760: eb007072 bl 11e930