# Static Call Graph for image ..\OBJ\Template.axf

#<CALLGRAPH># ARM Linker, 5060960: Last Updated: Thu May 14 22:17:33 2026

### Maximum Stack Usage = 536 bytes + Unknown(Functions without stacksize, Cycles, Untraceable Function Pointers)

### Call chain for Maximum Stack Depth:

ethernet_input ⇒ ip_input ⇒ tcp_input ⇒ tcp_process ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf

### Functions with no stack information

- agent_log
- agent_log_hexdump
- crypto_create
- crypto_decrypt
- decode_remaining_len
- message_free
- mqtt50_ack_decode
- mqtt50_ack_encode
- mqtt50_client_handle_connack
- mqtt50_conn_encode
- mqtt50_conn_packet_encode
- mqtt50_connack_decode
- mqtt50_publish_decode
- mqtt50_publish_encode
- mqtt50_suback_decode
- mqtt50_subscribe_encode
- mqtt50_unsuback_decode
- mqtt50_version_auto_detect
- mqtt_cache_clean_timeout
- mqtt_client_connect
- mqtt_client_create
- mqtt_client_get_connect_state
- mqtt_client_loop
- mqtt_client_subscribe
- mqtt_client_subscribe50
- mqtt_packet_decode_v311
- mqtt_packet_encode
- mqtt_packet_encode_v311
- mqtt_packet_id_alloc
- mqtt_packet_id_free
- mqtt_payload_validate
- mqtt_qos1_check_retrans
- mqtt_qos1_handle_puback
- mqtt_qos2_check_retrans
- mqtt_qos2_handle_pubcomp
- mqtt_qos2_handle_pubrec
- mqtt_session_init
- mqtt_subscribe_add
- mqtt_topic_list_init
- mqtt_topic_validate
- mqtt_write_remaining_length
- net_adapter_close
- net_adapter_loop
- net_adapter_open
- net_adapter_recv
- net_adapter_send
- net_eth_stm32_init
- net_eth_stm32_loop
- net_interface_bind
- net_interface_close
- net_interface_create_tcp_socket
- net_interface_create_udp_socket
- net_interface_dequeue
- net_interface_init
- net_interface_send_to
- net_interface_set_current_type
- net_interface_tcp_connect
- net_interface_tcp_recv
- net_socket_close_stm32
- net_tcp_connect_stm32
- net_tcp_recv_stm32
- net_tcp_send_stm32
- net_tcp_socket_create_stm32
- net_udp_bind_stm32
- net_udp_socket_create_stm32
- platform_deinit
- platform_delay_ms
- platform_free
- platform_free_stm32
- platform_get_tick_ms
- platform_get_tick_ms_stm32
- platform_init
- platform_malloc
- platform_malloc_stm32
- platform_memcpy_s
- platform_memset_s
- platform_memset_s_stm32
- platform_mutex_create
- platform_mutex_lock
- platform_mutex_lock_stm32
- platform_mutex_unlock
- platform_mutex_unlock_stm32
- platform_sem_timedwait
- platform_strchr
- platform_strchr_stm32
- platform_strcmp
- platform_strcmp_stm32
- platform_strcpy_s
- platform_strlen
- platform_strstr
- utf8_validate
- xxl_mqtt_sdk_client_connect
- xxl_mqtt_sdk_client_create
- xxl_mqtt_sdk_client_loop
- xxl_mqtt_sdk_client_subscribe
- xxl_mqtt_sdk_global_init
- core_msg_cb_adapter_with_obj
- check_share_group_valid
- net_adapter_check_index_valid
- trigger_broker_resp_cb
- mqtt_client_free_pkt_id
- mqtt_client_encode_packet
- mqtt_client_handle_puback
- mqtt_client_alloc_pkt_id
- mqtt_client_handle_qos2_ack
- mqtt_client_recv_packet_proc
- tcp_recv_callback
- tcp_connect_cb
- net_interface_deinit.part.0
- mqtt_topic_client_add.part.0

### Mutually Recursive functions

- ADC_IRQHandler ⇒ ADC_IRQHandler
- BusFault_Handler ⇒ BusFault_Handler
- HardFault_Handler ⇒ HardFault_Handler
- MemManage_Handler ⇒ MemManage_Handler
- UsageFault_Handler ⇒ UsageFault_Handler
- agent_log ⇒ agent_log
- usmart_strcmp ⇒ usmart_strcmp
- usmart_strcopy ⇒ usmart_strcopy
- usmart_search_nextc ⇒ usmart_search_nextc

  ### Function Pointers

  - ADC_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - BusFault_Handler from stm32f4xx_it.o(i.BusFault_Handler) referenced from startup_stm32f407xx.o(RESET)
  - CAN1_RX0_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - CAN1_RX1_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - CAN1_SCE_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - CAN1_TX_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - CAN2_RX0_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - CAN2_RX1_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - CAN2_SCE_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - CAN2_TX_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - DCMI_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - DMA1_Stream0_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - DMA1_Stream1_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - DMA1_Stream2_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - DMA1_Stream3_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - DMA1_Stream4_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - DMA1_Stream5_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - DMA1_Stream6_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - DMA1_Stream7_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - DMA2_Stream0_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - DMA2_Stream1_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - DMA2_Stream2_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - DMA2_Stream3_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - DMA2_Stream4_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - DMA2_Stream5_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - DMA2_Stream6_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - DMA2_Stream7_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - DebugMon_Handler from stm32f4xx_it.o(i.DebugMon_Handler) referenced from startup_stm32f407xx.o(RESET)
  - ETH_IRQHandler from lan8720.o(i.ETH_IRQHandler) referenced from startup_stm32f407xx.o(RESET)
  - ETH_WKUP_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - EXTI0_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - EXTI15_10_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - EXTI1_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - EXTI2_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - EXTI3_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - EXTI4_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - EXTI9_5_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - FLASH_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - FMC_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - FPU_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - HASH_RNG_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - HardFault_Handler from stm32f4xx_it.o(i.HardFault_Handler) referenced from startup_stm32f407xx.o(RESET)
  - I2C1_ER_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - I2C1_EV_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - I2C2_ER_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - I2C2_EV_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - I2C3_ER_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - I2C3_EV_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - MemManage_Handler from stm32f4xx_it.o(i.MemManage_Handler) referenced from startup_stm32f407xx.o(RESET)
  - NMI_Handler from stm32f4xx_it.o(i.NMI_Handler) referenced from startup_stm32f407xx.o(RESET)
  - OTG_FS_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - OTG_FS_WKUP_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - OTG_HS_EP1_IN_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - OTG_HS_EP1_OUT_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - OTG_HS_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - OTG_HS_WKUP_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - PVD_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - PendSV_Handler from stm32f4xx_it.o(i.PendSV_Handler) referenced from startup_stm32f407xx.o(RESET)
  - RCC_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - RTC_Alarm_IRQHandler from rtc.o(i.RTC_Alarm_IRQHandler) referenced from startup_stm32f407xx.o(RESET)
  - RTC_WKUP_IRQHandler from rtc.o(i.RTC_WKUP_IRQHandler) referenced from startup_stm32f407xx.o(RESET)
  - Reset_Handler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - SDIO_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - SPI1_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - SPI2_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - SPI3_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - SVC_Handler from stm32f4xx_it.o(i.SVC_Handler) referenced from startup_stm32f407xx.o(RESET)
  - SysTick_Handler from stm32f4xx_it.o(i.SysTick_Handler) referenced from startup_stm32f407xx.o(RESET)
  - SystemInit from system_stm32f4xx.o(i.SystemInit) referenced from startup_stm32f407xx.o(.text)
  - TAMP_STAMP_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - TIM1_BRK_TIM9_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - TIM1_CC_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - TIM1_TRG_COM_TIM11_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - TIM1_UP_TIM10_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - TIM2_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - TIM3_IRQHandler from timer.o(i.TIM3_IRQHandler) referenced from startup_stm32f407xx.o(RESET)
  - TIM4_IRQHandler from usmart.o(i.TIM4_IRQHandler) referenced from startup_stm32f407xx.o(RESET)
  - TIM5_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - TIM6_DAC_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - TIM7_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - TIM8_BRK_TIM12_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - TIM8_CC_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - TIM8_TRG_COM_TIM14_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - TIM8_UP_TIM13_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - UART4_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - UART5_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - UART_DMAAbortOnError from stm32f4xx_hal_uart.o(i.UART_DMAAbortOnError) referenced from stm32f4xx_hal_uart.o(i.HAL_UART_IRQHandler)
  - USART1_IRQHandler from usart.o(i.USART1_IRQHandler) referenced from startup_stm32f407xx.o(RESET)
  - USART2_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - USART3_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - USART6_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - UsageFault_Handler from stm32f4xx_it.o(i.UsageFault_Handler) referenced from startup_stm32f407xx.o(RESET)
  - WWDG_IRQHandler from startup_stm32f407xx.o(.text) referenced from startup_stm32f407xx.o(RESET)
  - __main from entry.o(.ARM.Collect$$$$00000000) referenced from startup_stm32f407xx.o(.text)
  - _snputc from printfa.o(i._snputc) referenced from printfa.o(i.__0snprintf)
  - _snputc from printfa.o(i._snputc) referenced from printfa.o(i.__0vsnprintf)
  - arp_timer from timers.o(i.arp_timer) referenced from timers.o(i.arp_timer)
  - arp_timer from timers.o(i.arp_timer) referenced from timers.o(i.sys_timeouts_init)
  - core_msg_cb_adapter_with_obj from mqtt_client_sdk.o(.text.core_msg_cb_adapter_with_obj) referenced from mqtt_client_sdk.o(.text.xxl_mqtt_sdk_client_create)
  - delay_ms from delay.o(i.delay_ms) referenced 2 times from usmart_config.o(.data)
  - delay_us from delay.o(i.delay_us) referenced 2 times from usmart_config.o(.data)
  - dhcp_recv from dhcp.o(i.dhcp_recv) referenced from dhcp.o(i.dhcp_start)
  - dhcp_timer_coarse from timers.o(i.dhcp_timer_coarse) referenced from timers.o(i.dhcp_timer_coarse)
  - dhcp_timer_coarse from timers.o(i.dhcp_timer_coarse) referenced from timers.o(i.sys_timeouts_init)
  - dhcp_timer_fine from timers.o(i.dhcp_timer_fine) referenced from timers.o(i.dhcp_timer_fine)
  - dhcp_timer_fine from timers.o(i.dhcp_timer_fine) referenced from timers.o(i.sys_timeouts_init)
  - dns_recv from dns.o(i.dns_recv) referenced from dns.o(i.dns_init)
  - dns_timer from timers.o(i.dns_timer) referenced from timers.o(i.dns_timer)
  - dns_timer from timers.o(i.dns_timer) referenced from timers.o(i.sys_timeouts_init)
  - etharp_output from etharp.o(i.etharp_output) referenced from ethernetif.o(i.ethernetif_init)
  - ethernet_input from etharp.o(i.ethernet_input) referenced from lwip_comm.o(i.lwip_comm_init)
  - ethernetif_init from ethernetif.o(i.ethernetif_init) referenced from lwip_comm.o(i.lwip_comm_init)
  - fputc from usart.o(i.fputc) referenced from printfa.o(i.__0printf)
  - ip_reass_timer from timers.o(i.ip_reass_timer) referenced from timers.o(i.ip_reass_timer)
  - ip_reass_timer from timers.o(i.ip_reass_timer) referenced from timers.o(i.sys_timeouts_init)
  - ipfrag_free_pbuf_custom from ip_frag.o(i.ipfrag_free_pbuf_custom) referenced from ip_frag.o(i.ip_frag)
  - low_level_output from ethernetif.o(i.low_level_output) referenced from ethernetif.o(i.ethernetif_init)
  - main from main.o(i.main) referenced from entry9a.o(.ARM.Collect$$$$0000000B)
  - mqtt_conn_callback from main.o(i.mqtt_conn_callback) referenced from main.o(i.mqtt_init)
  - mqtt_msg_callback from main.o(i.mqtt_msg_callback) referenced from main.o(i.mqtt_init)
  - my_mem_init from malloc.o(i.my_mem_init) referenced 2 times from malloc.o(.data)
  - my_mem_perused from malloc.o(i.my_mem_perused) referenced 2 times from malloc.o(.data)
  - read_addr from usmart.o(i.read_addr) referenced 2 times from usmart_config.o(.data)
  - tcp_connect_cb from net_eth_stm32.o(.text.tcp_connect_cb) referenced from net_eth_stm32.o(.text.net_tcp_connect_stm32)
  - tcp_recv_callback from net_eth_stm32.o(.text.tcp_recv_callback) referenced from net_eth_stm32.o(.text.net_tcp_socket_create_stm32)
  - tcp_recv_null from tcp.o(i.tcp_recv_null) referenced from tcp.o(i.tcp_alloc)
  - tcpip_tcp_timer from timers.o(i.tcpip_tcp_timer) referenced from timers.o(i.tcp_timer_needed)
  - tcpip_tcp_timer from timers.o(i.tcpip_tcp_timer) referenced from timers.o(i.tcpip_tcp_timer)
  - usmart_cmd_rec from usmart.o(i.usmart_cmd_rec) referenced 2 times from usmart_config.o(.data)
  - usmart_exe from usmart.o(i.usmart_exe) referenced 2 times from usmart_config.o(.data)
  - usmart_init from usmart.o(i.usmart_init) referenced 2 times from usmart_config.o(.data)
  - usmart_scan from usmart.o(i.usmart_scan) referenced 2 times from usmart_config.o(.data)
  - write_addr from usmart.o(i.write_addr) referenced 2 times from usmart_config.o(.data)

  ### Global Symbols

  __main (Thumb, 0 bytes, Stack size unknown bytes, entry.o(.ARM.Collect$$$$00000000))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(.text)

  _main_stk (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001))

  _main_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004))
  [Calls]

  - >> __scatterload

  __main_after_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004))
  [Called By]

  - >> __scatterload

  _main_clock (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008))

  _main_cpp_init (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A))

  _main_init (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B))

  __rt_lib_shutdown_fini (Thumb, 0 bytes, Stack size unknown bytes, entry12b.o(.ARM.Collect$$$$0000000E))

  __rt_final_cpp (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000F))

  __rt_final_exit (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$00000011))

  __disable_irq (Thumb, 4 bytes, Stack size 0 bytes, platform_port.o(.emb_text))
  [Called By]

  - >> platform_mutex_lock_stm32

  __enable_irq (Thumb, 4 bytes, Stack size 0 bytes, platform_port.o(.emb_text))
  [Called By]

  - >> platform_mutex_unlock_stm32

  Reset_Handler (Thumb, 8 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  ADC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Calls]

  - >> ADC_IRQHandler
  [Called By]
  - >> ADC_IRQHandler
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  CAN1_RX0_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  CAN1_RX1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  CAN1_SCE_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  CAN1_TX_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  CAN2_RX0_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  CAN2_RX1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  CAN2_SCE_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  CAN2_TX_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  DCMI_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  DMA1_Stream0_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  DMA1_Stream1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  DMA1_Stream2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  DMA1_Stream3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  DMA1_Stream4_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  DMA1_Stream5_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  DMA1_Stream6_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  DMA1_Stream7_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  DMA2_Stream0_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  DMA2_Stream1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  DMA2_Stream2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  DMA2_Stream3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  DMA2_Stream4_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  DMA2_Stream5_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  DMA2_Stream6_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  DMA2_Stream7_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  ETH_WKUP_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  EXTI0_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  EXTI15_10_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  EXTI1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  EXTI2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  EXTI3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  EXTI4_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  EXTI9_5_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  FLASH_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  FMC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  FPU_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  HASH_RNG_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  I2C1_ER_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  I2C1_EV_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  I2C2_ER_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  I2C2_EV_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  I2C3_ER_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  I2C3_EV_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  OTG_FS_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  OTG_FS_WKUP_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  OTG_HS_EP1_IN_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  OTG_HS_EP1_OUT_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  OTG_HS_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  OTG_HS_WKUP_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  PVD_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  RCC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  SDIO_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  SPI1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  SPI2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  SPI3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  TAMP_STAMP_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  TIM1_BRK_TIM9_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  TIM1_CC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  TIM1_TRG_COM_TIM11_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  TIM1_UP_TIM10_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  TIM2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  TIM5_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  TIM6_DAC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  TIM7_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  TIM8_BRK_TIM12_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  TIM8_CC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  TIM8_TRG_COM_TIM14_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  TIM8_UP_TIM13_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  UART4_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  UART5_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  USART2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  USART3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  USART6_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  WWDG_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f407xx.o(.text))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  __aeabi_uldivmod (Thumb, 98 bytes, Stack size 40 bytes, uldiv.o(.text))
  [Stack]

  - Max Depth = 40
  - Call Chain = __aeabi_uldivmod
  [Calls]
  - >> __aeabi_llsr
  - >> __aeabi_llsl
  [Called By]
  - >> HAL_RCC_GetSysClockFreq
  - >> _printf_core
  - >> _fp_digits

  ____aeabi_memcpy8$ret$move (Thumb, 0 bytes, Stack size 8 bytes, memmove.o(.text), UNUSED)

  ___aeabi_memmove$ret (Thumb, 0 bytes, Stack size 8 bytes, memmove.o(.text), UNUSED)

  ___aeabi_memmove4$ret (Thumb, 0 bytes, Stack size 8 bytes, memmove.o(.text), UNUSED)

  ___aeabi_memmove8$ret (Thumb, 0 bytes, Stack size 8 bytes, memmove.o(.text), UNUSED)

  __aeabi_memcpy (Thumb, 66 bytes, Stack size 8 bytes, memmove.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = __aeabi_memcpy
  [Called By]
  - >> tcp_write
  - >> ip_reass_free_complete_datagram
  - >> ip_reass
  - >> ip_frag
  - >> icmp_send_response
  - >> low_level_output
  - >> low_level_input
  - >> pbuf_copy
  - >> pbuf_copy_partial

  __aeabi_memcpy4 (Thumb, 0 bytes, Stack size 8 bytes, memmove.o(.text), UNUSED)

  memcpy (Thumb, 0 bytes, Stack size 8 bytes, memmove.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = memcpy
  [Called By]
  - >> net_tcp_recv_stm32
  - >> tcp_recv_callback
  - >> crypto_decrypt
  - >> mqtt50_connack_decode
  - >> platform_strcpy_s
  - >> net_interface_dequeue

  memmove (Thumb, 0 bytes, Stack size 8 bytes, memmove.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = memmove
  [Called By]
  - >> mqtt_packet_id_alloc
  - >> platform_memcpy_s

  __aeabi_memset (Thumb, 14 bytes, Stack size 0 bytes, memseta.o(.text))
  [Called By]

  - >> memset
  - >> __aeabi_memclr

  __aeabi_memset4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)

  __aeabi_memset8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)

  __aeabi_memclr (Thumb, 4 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
  [Calls]

  - >> __aeabi_memset

  __aeabi_memclr4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text))
  [Called By]

  - >> mqtt_init
  - >> udp_new
  - >> dhcp_start
  - >> dhcp_parse_reply
  - >> ip_reass
  - >> tcp_alloc

  __aeabi_memclr8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)

  memset (Thumb, 18 bytes, Stack size 8 bytes, memseta.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = memset
  [Calls]
  - >> __aeabi_memset
  [Called By]
  - >> net_interface_deinit.part.0
  - >> net_tcp_socket_create_stm32
  - >> mqtt_qos2_check_retrans
  - >> mqtt_qos1_check_retrans
  - >> mqtt50_connack_decode
  - >> mqtt_client_recv_packet_proc
  - >> mqtt50_conn_packet_encode
  - >> mqtt50_subscribe_encode
  - >> platform_memset_s_stm32
  - >> net_adapter_open
  - >> agent_log_hexdump
  - >> mqtt_client_loop
  - >> mqtt_client_subscribe
  - >> mqtt_client_subscribe50
  - >> mqtt_client_connect
  - >> mqtt_client_create
  - >> agent_log

  strstr (Thumb, 36 bytes, Stack size 12 bytes, strstr.o(.text))
  [Stack]

  - Max Depth = 12
  - Call Chain = strstr
  [Called By]
  - >> net_adapter_open

  strchr (Thumb, 20 bytes, Stack size 0 bytes, strchr.o(.text))
  [Called By]

  - >> platform_strchr_stm32
  - >> net_adapter_open
  - >> check_share_group_valid

  strlen (Thumb, 14 bytes, Stack size 0 bytes, strlen.o(.text))
  [Called By]

  - >> platform_strlen

  strcmp (Thumb, 28 bytes, Stack size 8 bytes, strcmp.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = strcmp
  [Called By]
  - >> platform_strcmp_stm32

  memcmp (Thumb, 26 bytes, Stack size 12 bytes, memcmp.o(.text))
  [Stack]

  - Max Depth = 12
  - Call Chain = memcmp
  [Called By]
  - >> ethernet_input

  __aeabi_dadd (Thumb, 322 bytes, Stack size 48 bytes, dadd.o(.text), UNUSED)
  [Calls]

  - >> __aeabi_lasr
  - >> __aeabi_llsl
  - >> _double_round
  - >> _double_epilogue
  [Called By]
  - >> __aeabi_dsub
  - >> __aeabi_drsub
  - >> _fp_digits

  __aeabi_dsub (Thumb, 6 bytes, Stack size 0 bytes, dadd.o(.text), UNUSED)
  [Calls]

  - >> __aeabi_dadd

  __aeabi_drsub (Thumb, 6 bytes, Stack size 0 bytes, dadd.o(.text), UNUSED)
  [Calls]

  - >> __aeabi_dadd

  __aeabi_dmul (Thumb, 228 bytes, Stack size 48 bytes, dmul.o(.text))
  [Stack]

  - Max Depth = 88
  - Call Chain = __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> _double_epilogue
  [Called By]
  - >> LCD_SSD_BackLightSet
  - >> _fp_digits

  __aeabi_ddiv (Thumb, 222 bytes, Stack size 32 bytes, ddiv.o(.text), UNUSED)
  [Calls]

  - >> _double_round
  [Called By]
  - >> _fp_digits

  __aeabi_ui2d (Thumb, 26 bytes, Stack size 16 bytes, dfltui.o(.text))
  [Stack]

  - Max Depth = 56
  - Call Chain = __aeabi_ui2d ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> _double_epilogue
  [Called By]
  - >> LCD_SSD_BackLightSet

  __aeabi_d2uiz (Thumb, 50 bytes, Stack size 8 bytes, dfixui.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = __aeabi_d2uiz
  [Calls]
  - >> __aeabi_llsr
  [Called By]
  - >> LCD_SSD_BackLightSet

  __aeabi_uidiv (Thumb, 0 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED)

  __aeabi_uidivmod (Thumb, 44 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED)
  [Called By]

  - >> _printf_core

  __aeabi_llsl (Thumb, 30 bytes, Stack size 0 bytes, llshl.o(.text))
  [Called By]

  - >> __aeabi_dadd
  - >> _double_epilogue
  - >> __aeabi_d2ulz
  - >> __aeabi_uldivmod

  _ll_shift_l (Thumb, 0 bytes, Stack size 0 bytes, llshl.o(.text), UNUSED)

  __aeabi_llsr (Thumb, 32 bytes, Stack size 0 bytes, llushr.o(.text))
  [Called By]

  - >> __aeabi_d2uiz
  - >> _double_epilogue
  - >> __aeabi_d2ulz
  - >> __aeabi_uldivmod

  _ll_ushift_r (Thumb, 0 bytes, Stack size 0 bytes, llushr.o(.text), UNUSED)

  __aeabi_lasr (Thumb, 36 bytes, Stack size 0 bytes, llsshr.o(.text), UNUSED)
  [Called By]

  - >> __aeabi_dadd

  _ll_sshift_r (Thumb, 0 bytes, Stack size 0 bytes, llsshr.o(.text), UNUSED)

  __I$use$fp (Thumb, 0 bytes, Stack size 8 bytes, iusefp.o(.text), UNUSED)

  _double_round (Thumb, 30 bytes, Stack size 8 bytes, depilogue.o(.text))
  [Stack]

  - Max Depth = 8
  - Call Chain = _double_round
  [Called By]
  - >> __aeabi_ddiv
  - >> __aeabi_dadd
  - >> _double_epilogue

  _double_epilogue (Thumb, 156 bytes, Stack size 32 bytes, depilogue.o(.text))
  [Stack]

  - Max Depth = 40
  - Call Chain = _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_llsr
  - >> __aeabi_llsl
  - >> _double_round
  [Called By]
  - >> __aeabi_dadd
  - >> __aeabi_ui2d
  - >> __aeabi_dmul

  __aeabi_d2ulz (Thumb, 48 bytes, Stack size 0 bytes, dfixul.o(.text), UNUSED)
  [Calls]

  - >> __aeabi_llsr
  - >> __aeabi_llsl
  [Called By]
  - >> _fp_digits

  __aeabi_cdrcmple (Thumb, 48 bytes, Stack size 0 bytes, cdrcmple.o(.text), UNUSED)
  [Called By]

  - >> _fp_digits

  __scatterload (Thumb, 28 bytes, Stack size 0 bytes, init.o(.text))
  [Calls]

  - >> __main_after_scatterload
  [Called By]
  - >> _main_scatterload

  __scatterload_rt2 (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED)

  __decompress (Thumb, 0 bytes, Stack size unknown bytes, __dczerorl2.o(.text), UNUSED)

  __decompress1 (Thumb, 86 bytes, Stack size unknown bytes, __dczerorl2.o(.text), UNUSED)

  agent_log (Thumb, 336 bytes, Stack size unknown bytes, agent_log.o(.text.agent_log))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size + In Cycle
  - Call Chain = agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> fputs
  - >> platform_get_tick_ms
  - >> agent_log
  - >> vsnprintf
  - >> snprintf
  - >> printf
  - >> memset
  [Called By]
  - >> xxl_mqtt_sdk_global_init
  - >> xxl_mqtt_sdk_client_subscribe
  - >> xxl_mqtt_sdk_client_loop
  - >> xxl_mqtt_sdk_client_create
  - >> mqtt_topic_client_add.part.0
  - >> mqtt_payload_validate
  - >> mqtt_packet_encode_v311
  - >> mqtt_topic_validate
  - >> mqtt_topic_list_init
  - >> mqtt50_ack_encode
  - >> net_interface_deinit.part.0
  - >> net_udp_socket_create_stm32
  - >> net_socket_close_stm32
  - >> net_tcp_send_stm32
  - >> net_tcp_connect_stm32
  - >> net_tcp_socket_create_stm32
  - >> tcp_connect_cb
  - >> mqtt_cache_clean_timeout
  - >> mqtt_qos2_check_retrans
  - >> mqtt_qos1_check_retrans
  - >> mqtt_session_init
  - >> mqtt50_publish_decode
  - >> mqtt50_unsuback_decode
  - >> mqtt50_suback_decode
  - >> mqtt50_connack_decode
  - >> mqtt50_ack_decode
  - >> mqtt_qos2_handle_pubrec
  - >> mqtt_packet_encode
  - >> mqtt_client_recv_packet_proc
  - >> mqtt_client_handle_qos2_ack
  - >> mqtt_client_alloc_pkt_id
  - >> mqtt_client_handle_puback
  - >> mqtt_client_encode_packet
  - >> mqtt_client_free_pkt_id
  - >> mqtt50_conn_encode
  - >> mqtt50_conn_packet_encode
  - >> mqtt50_client_handle_connack
  - >> mqtt_subscribe_add
  - >> mqtt_packet_id_free
  - >> mqtt50_subscribe_encode
  - >> mqtt50_publish_encode
  - >> mqtt_packet_id_alloc
  - >> mqtt50_version_auto_detect
  - >> platform_strstr
  - >> net_adapter_close
  - >> net_interface_tcp_recv
  - >> net_interface_dequeue
  - >> net_adapter_recv
  - >> net_interface_send_to
  - >> net_adapter_send
  - >> net_interface_close
  - >> net_interface_bind
  - >> net_interface_create_udp_socket
  - >> net_interface_tcp_connect
  - >> net_interface_create_tcp_socket
  - >> net_interface_set_current_type
  - >> net_interface_init
  - >> net_adapter_open
  - >> net_adapter_check_index_valid
  - >> agent_log_hexdump
  - >> mqtt_client_loop
  - >> mqtt_client_subscribe
  - >> mqtt_client_subscribe50
  - >> mqtt_client_connect
  - >> mqtt_client_create
  - >> agent_log

  agent_log_hexdump (Thumb, 160 bytes, Stack size unknown bytes, agent_log.o(.text.agent_log_hexdump))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = agent_log_hexdump ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> agent_log
  - >> snprintf
  - >> memset
  [Called By]
  - >> net_adapter_send

  crypto_create (Thumb, 74 bytes, Stack size unknown bytes, mqtt_crypto.o(.text.crypto_create))
  [Called By]

  - >> mqtt_client_create

  crypto_decrypt (Thumb, 224 bytes, Stack size unknown bytes, mqtt_crypto.o(.text.crypto_decrypt))
  [Stack]

  - Max Depth = 8 + Unknown Stack Size
  - Call Chain = crypto_decrypt ⇒ memcpy
  [Calls]
  - >> memcpy
  [Called By]
  - >> mqtt_client_recv_packet_proc

  decode_remaining_len (Thumb, 88 bytes, Stack size unknown bytes, mqtt_protocol.o(.text.decode_remaining_len))
  [Called By]

  - >> mqtt50_publish_decode
  - >> mqtt50_unsuback_decode
  - >> mqtt50_suback_decode
  - >> mqtt50_connack_decode
  - >> mqtt50_ack_decode
  - >> mqtt_packet_decode_v311

  message_free (Thumb, 56 bytes, Stack size unknown bytes, mqtt_protocol.o(.text.message_free))
  [Stack]

  - Max Depth = 16 + Unknown Stack Size
  - Call Chain = message_free ⇒ platform_free ⇒ platform_free_stm32 ⇒ free ⇒ myfree ⇒ my_mem_free
  [Calls]
  - >> platform_free
  - >> platform_memcpy_s
  [Called By]
  - >> mqtt_cache_clean_timeout
  - >> mqtt_qos2_check_retrans
  - >> mqtt_qos1_check_retrans
  - >> mqtt_qos2_handle_pubcomp
  - >> mqtt_qos1_handle_puback

  mqtt50_ack_decode (Thumb, 224 bytes, Stack size unknown bytes, mqtt_protocol_50.o(.text.mqtt50_ack_decode))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = mqtt50_ack_decode ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> decode_remaining_len
  - >> platform_memset_s
  - >> agent_log
  [Called By]
  - >> mqtt_client_recv_packet_proc

  mqtt50_ack_encode (Thumb, 168 bytes, Stack size unknown bytes, mqtt_protocol_50.o(.text.mqtt50_ack_encode))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = mqtt50_ack_encode ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> mqtt_write_remaining_length
  - >> platform_memset_s
  - >> agent_log
  [Called By]
  - >> mqtt_qos2_check_retrans

  mqtt50_client_handle_connack (Thumb, 628 bytes, Stack size unknown bytes, mqtt_client50.o(.text.mqtt50_client_handle_connack))
  [Stack]

  - Max Depth = 56 + Unknown Stack Size
  - Call Chain = mqtt50_client_handle_connack ⇒ net_adapter_close ⇒ net_interface_close ⇒ net_socket_close_stm32 ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> net_adapter_close
  - >> platform_get_tick_ms
  - >> platform_memcpy_s
  - >> platform_memset_s
  - >> agent_log
  - >> platform_strlen
  [Called By]
  - >> mqtt_client_recv_packet_proc

  mqtt50_conn_encode (Thumb, 988 bytes, Stack size unknown bytes, mqtt_protocol_50.o(.text.mqtt50_conn_encode))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = mqtt50_conn_encode ⇒ platform_strstr ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> mqtt_write_remaining_length
  - >> platform_strstr
  - >> platform_memcpy_s
  - >> platform_memset_s
  - >> agent_log
  - >> platform_strlen
  [Called By]
  - >> mqtt50_conn_packet_encode

  mqtt50_conn_packet_encode (Thumb, 408 bytes, Stack size unknown bytes, mqtt_client50.o(.text.mqtt50_conn_packet_encode))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = mqtt50_conn_packet_encode ⇒ mqtt50_conn_encode ⇒ platform_strstr ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> mqtt50_conn_encode
  - >> platform_memcpy_s
  - >> agent_log
  - >> platform_strlen
  - >> memset
  [Called By]
  - >> mqtt_client_connect

  mqtt50_connack_decode (Thumb, 1320 bytes, Stack size unknown bytes, mqtt_protocol_50.o(.text.mqtt50_connack_decode))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = mqtt50_connack_decode ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> decode_remaining_len
  - >> platform_memcpy_s
  - >> platform_memset_s
  - >> agent_log
  - >> memset
  - >> memcpy
  [Called By]
  - >> mqtt_client_recv_packet_proc

  mqtt50_publish_decode (Thumb, 448 bytes, Stack size unknown bytes, mqtt_protocol_50.o(.text.mqtt50_publish_decode))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = mqtt50_publish_decode ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> decode_remaining_len
  - >> platform_memcpy_s
  - >> platform_memset_s
  - >> agent_log
  [Called By]
  - >> mqtt_client_recv_packet_proc

  mqtt50_publish_encode (Thumb, 388 bytes, Stack size unknown bytes, mqtt_protocol_50.o(.text.mqtt50_publish_encode))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = mqtt50_publish_encode ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> mqtt_write_remaining_length
  - >> platform_memcpy_s
  - >> platform_memset_s
  - >> agent_log
  - >> platform_strlen
  [Called By]
  - >> mqtt_qos2_check_retrans
  - >> mqtt_qos1_check_retrans

  mqtt50_suback_decode (Thumb, 208 bytes, Stack size unknown bytes, mqtt_protocol_50.o(.text.mqtt50_suback_decode))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = mqtt50_suback_decode ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> decode_remaining_len
  - >> platform_memset_s
  - >> agent_log
  [Called By]
  - >> mqtt_client_recv_packet_proc

  mqtt50_subscribe_encode (Thumb, 428 bytes, Stack size unknown bytes, mqtt_protocol_50.o(.text.mqtt50_subscribe_encode))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = mqtt50_subscribe_encode ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> mqtt_write_remaining_length
  - >> platform_memcpy_s
  - >> platform_memset_s
  - >> agent_log
  - >> platform_strlen
  - >> snprintf
  - >> memset
  [Called By]
  - >> mqtt_client_subscribe50

  mqtt50_unsuback_decode (Thumb, 128 bytes, Stack size unknown bytes, mqtt_protocol_50.o(.text.mqtt50_unsuback_decode))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = mqtt50_unsuback_decode ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> decode_remaining_len
  - >> platform_memset_s
  - >> agent_log
  [Called By]
  - >> mqtt_client_recv_packet_proc

  mqtt50_version_auto_detect (Thumb, 64 bytes, Stack size unknown bytes, mqtt_client50.o(.text.mqtt50_version_auto_detect))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = mqtt50_version_auto_detect ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> agent_log
  [Called By]
  - >> mqtt_client_recv_packet_proc

  mqtt_cache_clean_timeout (Thumb, 264 bytes, Stack size unknown bytes, mqtt_qos.o(.text.mqtt_cache_clean_timeout))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = mqtt_cache_clean_timeout ⇒ mqtt_packet_id_free ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> message_free
  - >> mqtt_packet_id_free
  - >> platform_get_tick_ms
  - >> platform_free
  - >> agent_log
  [Called By]
  - >> mqtt_client_loop

  mqtt_client_connect (Thumb, 1752 bytes, Stack size unknown bytes, mqtt_client.o(.text.mqtt_client_connect))
  [Stack]

  - Max Depth = 472 + Unknown Stack Size
  - Call Chain = mqtt_client_connect ⇒ net_adapter_send ⇒ net_interface_send_to ⇒ net_tcp_send_stm32 ⇒ lwip_periodic_handle ⇒ dhcp_fine_tmr ⇒ dhcp_timeout ⇒ dhcp_bind ⇒ netif_set_ipaddr ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> mqtt_client_encode_packet
  - >> mqtt50_conn_packet_encode
  - >> net_adapter_close
  - >> net_adapter_send
  - >> net_adapter_open
  - >> platform_get_tick_ms
  - >> platform_memcpy_s
  - >> platform_memset_s
  - >> agent_log
  - >> platform_strlen
  - >> memset
  [Called By]
  - >> xxl_mqtt_sdk_client_connect
  - >> mqtt_client_loop

  mqtt_client_create (Thumb, 1340 bytes, Stack size unknown bytes, mqtt_client.o(.text.mqtt_client_create))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = mqtt_client_create ⇒ mqtt_session_init ⇒ mqtt_topic_list_init ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> crypto_create
  - >> mqtt_session_init
  - >> platform_get_tick_ms
  - >> platform_free
  - >> platform_memcpy_s
  - >> platform_memset_s
  - >> platform_malloc
  - >> agent_log
  - >> platform_strlen
  - >> memset
  [Called By]
  - >> xxl_mqtt_sdk_client_create

  mqtt_client_get_connect_state (Thumb, 8 bytes, Stack size unknown bytes, mqtt_client.o(.text.mqtt_client_get_connect_state))
  [Called By]

  - >> xxl_mqtt_sdk_client_loop

  mqtt_client_loop (Thumb, 684 bytes, Stack size unknown bytes, mqtt_client.o(.text.mqtt_client_loop))
  [Stack]

  - Max Depth = 472 + Unknown Stack Size
  - Call Chain = mqtt_client_loop ⇒ mqtt_client_recv_packet_proc ⇒ mqtt_client_handle_qos2_ack ⇒ net_adapter_send ⇒ net_interface_send_to ⇒ net_tcp_send_stm32 ⇒ lwip_periodic_handle ⇒ dhcp_fine_tmr ⇒ dhcp_timeout ⇒ dhcp_bind ⇒ netif_set_ipaddr ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> mqtt_cache_clean_timeout
  - >> mqtt_qos2_check_retrans
  - >> mqtt_qos1_check_retrans
  - >> mqtt_client_recv_packet_proc
  - >> mqtt_client_encode_packet
  - >> net_adapter_loop
  - >> net_adapter_close
  - >> net_adapter_send
  - >> platform_get_tick_ms
  - >> mqtt_client_connect
  - >> platform_memset_s
  - >> agent_log
  - >> memset
  [Called By]
  - >> xxl_mqtt_sdk_client_loop

  mqtt_client_subscribe (Thumb, 1236 bytes, Stack size unknown bytes, mqtt_client.o(.text.mqtt_client_subscribe))
  [Stack]

  - Max Depth = 472 + Unknown Stack Size
  - Call Chain = mqtt_client_subscribe ⇒ net_adapter_send ⇒ net_interface_send_to ⇒ net_tcp_send_stm32 ⇒ lwip_periodic_handle ⇒ dhcp_fine_tmr ⇒ dhcp_timeout ⇒ dhcp_bind ⇒ netif_set_ipaddr ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> mqtt_client_alloc_pkt_id
  - >> mqtt_client_encode_packet
  - >> mqtt_subscribe_add
  - >> mqtt_packet_id_free
  - >> net_adapter_send
  - >> platform_get_tick_ms
  - >> agent_log
  - >> platform_strlen
  - >> memset
  [Called By]
  - >> xxl_mqtt_sdk_client_subscribe

  mqtt_client_subscribe50 (Thumb, 296 bytes, Stack size unknown bytes, mqtt_client50.o(.text.mqtt_client_subscribe50))
  [Stack]

  - Max Depth = 472 + Unknown Stack Size
  - Call Chain = mqtt_client_subscribe50 ⇒ net_adapter_send ⇒ net_interface_send_to ⇒ net_tcp_send_stm32 ⇒ lwip_periodic_handle ⇒ dhcp_fine_tmr ⇒ dhcp_timeout ⇒ dhcp_bind ⇒ netif_set_ipaddr ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> mqtt_subscribe_add
  - >> mqtt_packet_id_free
  - >> mqtt50_subscribe_encode
  - >> mqtt_packet_id_alloc
  - >> net_adapter_send
  - >> platform_memcpy_s
  - >> platform_memset_s
  - >> agent_log
  - >> platform_strlen
  - >> memset
  [Called By]
  - >> xxl_mqtt_sdk_client_subscribe

  mqtt_packet_decode_v311 (Thumb, 1258 bytes, Stack size unknown bytes, mqtt_protocol.o(.text.mqtt_packet_decode_v311))
  [Stack]

  - Max Depth = 16 + Unknown Stack Size
  - Call Chain = mqtt_packet_decode_v311 ⇒ platform_free ⇒ platform_free_stm32 ⇒ free ⇒ myfree ⇒ my_mem_free
  [Calls]
  - >> decode_remaining_len
  - >> platform_free
  - >> platform_memcpy_s
  - >> platform_malloc
  [Called By]
  - >> mqtt_client_recv_packet_proc

  mqtt_packet_encode (Thumb, 120 bytes, Stack size unknown bytes, mqtt_protocol.o(.text.mqtt_packet_encode))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = mqtt_packet_encode ⇒ mqtt_packet_encode_v311 ⇒ mqtt_topic_validate ⇒ platform_strstr ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> mqtt_packet_encode_v311
  - >> agent_log
  [Called By]
  - >> mqtt_qos2_check_retrans
  - >> mqtt_qos1_check_retrans
  - >> mqtt_qos2_handle_pubrec
  - >> mqtt_client_encode_packet

  mqtt_packet_encode_v311 (Thumb, 1696 bytes, Stack size unknown bytes, mqtt_protocol.o(.text.mqtt_packet_encode_v311))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = mqtt_packet_encode_v311 ⇒ mqtt_topic_validate ⇒ platform_strstr ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> mqtt_topic_validate
  - >> utf8_validate
  - >> platform_memcpy_s
  - >> agent_log
  - >> platform_strlen
  [Called By]
  - >> mqtt_packet_encode

  mqtt_packet_id_alloc (Thumb, 284 bytes, Stack size unknown bytes, mqtt_protocol.o(.text.mqtt_packet_id_alloc))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = mqtt_packet_id_alloc ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> agent_log
  - >> memmove
  [Called By]
  - >> mqtt_client_alloc_pkt_id
  - >> mqtt_client_subscribe50

  mqtt_packet_id_free (Thumb, 172 bytes, Stack size unknown bytes, mqtt_protocol.o(.text.mqtt_packet_id_free))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = mqtt_packet_id_free ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> agent_log
  [Called By]
  - >> mqtt_cache_clean_timeout
  - >> mqtt_qos2_check_retrans
  - >> mqtt_qos1_check_retrans
  - >> mqtt_qos2_handle_pubcomp
  - >> mqtt_qos1_handle_puback
  - >> mqtt_client_recv_packet_proc
  - >> mqtt_client_free_pkt_id
  - >> mqtt_client_subscribe
  - >> mqtt_client_subscribe50

  mqtt_payload_validate (Thumb, 68 bytes, Stack size unknown bytes, mqtt_protocol.o(.text.mqtt_payload_validate))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = mqtt_payload_validate ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> agent_log
  [Called By]
  - >> mqtt_qos1_check_retrans

  mqtt_qos1_check_retrans (Thumb, 2472 bytes, Stack size unknown bytes, mqtt_qos.o(.text.mqtt_qos1_check_retrans))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = mqtt_qos1_check_retrans ⇒ mqtt_payload_validate ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> mqtt_payload_validate
  - >> mqtt_topic_validate
  - >> message_free
  - >> mqtt_packet_encode
  - >> mqtt_packet_id_free
  - >> mqtt50_publish_encode
  - >> platform_get_tick_ms
  - >> platform_free
  - >> platform_memcpy_s
  - >> platform_memset_s
  - >> agent_log
  - >> platform_strlen
  - >> memset
  [Called By]
  - >> mqtt_client_loop

  mqtt_qos1_handle_puback (Thumb, 108 bytes, Stack size unknown bytes, mqtt_qos.o(.text.mqtt_qos1_handle_puback))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = mqtt_qos1_handle_puback ⇒ mqtt_packet_id_free ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> message_free
  - >> mqtt_packet_id_free
  - >> platform_free
  [Called By]
  - >> mqtt_client_handle_puback

  mqtt_qos2_check_retrans (Thumb, 2708 bytes, Stack size unknown bytes, mqtt_qos.o(.text.mqtt_qos2_check_retrans))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = mqtt_qos2_check_retrans ⇒ mqtt50_ack_encode ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> message_free
  - >> mqtt50_ack_encode
  - >> mqtt_packet_encode
  - >> mqtt_packet_id_free
  - >> mqtt50_publish_encode
  - >> platform_get_tick_ms
  - >> platform_free
  - >> platform_memcpy_s
  - >> platform_memset_s
  - >> agent_log
  - >> platform_strlen
  - >> memset
  [Called By]
  - >> mqtt_client_loop

  mqtt_qos2_handle_pubcomp (Thumb, 106 bytes, Stack size unknown bytes, mqtt_qos.o(.text.mqtt_qos2_handle_pubcomp))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = mqtt_qos2_handle_pubcomp ⇒ mqtt_packet_id_free ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> message_free
  - >> mqtt_packet_id_free
  - >> platform_free
  [Called By]
  - >> mqtt_client_handle_qos2_ack

  mqtt_qos2_handle_pubrec (Thumb, 788 bytes, Stack size unknown bytes, mqtt_qos.o(.text.mqtt_qos2_handle_pubrec))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = mqtt_qos2_handle_pubrec ⇒ mqtt_packet_encode ⇒ mqtt_packet_encode_v311 ⇒ mqtt_topic_validate ⇒ platform_strstr ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> mqtt_packet_encode
  - >> platform_get_tick_ms
  - >> platform_memcpy_s
  - >> agent_log
  [Called By]
  - >> mqtt_client_handle_qos2_ack

  mqtt_session_init (Thumb, 304 bytes, Stack size unknown bytes, mqtt_protocol.o(.text.mqtt_session_init))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = mqtt_session_init ⇒ mqtt_topic_list_init ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> mqtt_topic_list_init
  - >> utf8_validate
  - >> platform_memcpy_s
  - >> agent_log
  - >> platform_strlen
  [Called By]
  - >> mqtt_client_create

  mqtt_subscribe_add (Thumb, 324 bytes, Stack size unknown bytes, mqtt_topic_manager.o(.text.mqtt_subscribe_add))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = mqtt_subscribe_add ⇒ mqtt_topic_client_add.part.0 ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> mqtt_topic_client_add.part.0
  - >> mqtt_topic_validate
  - >> agent_log
  - >> platform_strlen
  [Called By]
  - >> mqtt_client_subscribe
  - >> mqtt_client_subscribe50

  mqtt_topic_list_init (Thumb, 76 bytes, Stack size unknown bytes, mqtt_topic_manager.o(.text.mqtt_topic_list_init))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = mqtt_topic_list_init ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> platform_mutex_create
  - >> platform_memset_s
  - >> agent_log
  [Called By]
  - >> mqtt_session_init

  mqtt_topic_validate (Thumb, 488 bytes, Stack size unknown bytes, mqtt_protocol.o(.text.mqtt_topic_validate))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = mqtt_topic_validate ⇒ platform_strstr ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> platform_strstr
  - >> platform_strchr
  - >> agent_log
  - >> platform_strlen
  [Called By]
  - >> mqtt_packet_encode_v311
  - >> mqtt_qos1_check_retrans
  - >> mqtt_subscribe_add

  mqtt_write_remaining_length (Thumb, 34 bytes, Stack size unknown bytes, mqtt_protocol.o(.text.mqtt_write_remaining_length))
  [Called By]

  - >> mqtt50_ack_encode
  - >> mqtt50_conn_encode
  - >> mqtt50_subscribe_encode
  - >> mqtt50_publish_encode

  net_adapter_close (Thumb, 120 bytes, Stack size unknown bytes, net_adapter.o(.text.net_adapter_close))
  [Stack]

  - Max Depth = 56 + Unknown Stack Size
  - Call Chain = net_adapter_close ⇒ net_interface_close ⇒ net_socket_close_stm32 ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> net_interface_close
  - >> platform_memset_s
  - >> agent_log
  [Called By]
  - >> mqtt_client_recv_packet_proc
  - >> mqtt50_client_handle_connack
  - >> mqtt_client_loop
  - >> mqtt_client_connect

  net_adapter_loop (Thumb, 4 bytes, Stack size unknown bytes, net_adapter.o(.text.net_adapter_loop))
  [Stack]

  - Max Depth = 472 + Unknown Stack Size
  - Call Chain = net_adapter_loop ⇒ net_eth_stm32_loop ⇒ lwip_periodic_handle ⇒ dhcp_fine_tmr ⇒ dhcp_timeout ⇒ dhcp_bind ⇒ netif_set_ipaddr ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> net_eth_stm32_loop
  [Called By]
  - >> mqtt_client_loop

  net_adapter_open (Thumb, 688 bytes, Stack size unknown bytes, net_adapter.o(.text.net_adapter_open))
  [Stack]

  - Max Depth = 416 + Unknown Stack Size
  - Call Chain = net_adapter_open ⇒ net_interface_create_tcp_socket ⇒ net_tcp_socket_create_stm32 ⇒ tcp_new ⇒ tcp_alloc ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> net_interface_close
  - >> net_interface_bind
  - >> net_interface_create_udp_socket
  - >> net_interface_tcp_connect
  - >> net_interface_create_tcp_socket
  - >> net_interface_set_current_type
  - >> net_interface_init
  - >> platform_memcpy_s
  - >> platform_memset_s
  - >> agent_log
  - >> platform_strlen
  - >> strchr
  - >> strstr
  - >> memset
  [Called By]
  - >> mqtt_client_connect

  net_adapter_recv (Thumb, 252 bytes, Stack size unknown bytes, net_adapter.o(.text.net_adapter_recv))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = net_adapter_recv ⇒ net_interface_tcp_recv ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> net_interface_tcp_recv
  - >> net_interface_dequeue
  - >> net_adapter_check_index_valid
  - >> platform_memcpy_s
  - >> agent_log
  [Called By]
  - >> mqtt_client_recv_packet_proc

  net_adapter_send (Thumb, 184 bytes, Stack size unknown bytes, net_adapter.o(.text.net_adapter_send))
  [Stack]

  - Max Depth = 472 + Unknown Stack Size
  - Call Chain = net_adapter_send ⇒ net_interface_send_to ⇒ net_tcp_send_stm32 ⇒ lwip_periodic_handle ⇒ dhcp_fine_tmr ⇒ dhcp_timeout ⇒ dhcp_bind ⇒ netif_set_ipaddr ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> net_interface_send_to
  - >> net_adapter_check_index_valid
  - >> agent_log_hexdump
  - >> agent_log
  [Called By]
  - >> mqtt_client_recv_packet_proc
  - >> mqtt_client_handle_qos2_ack
  - >> mqtt_client_loop
  - >> mqtt_client_subscribe
  - >> mqtt_client_subscribe50
  - >> mqtt_client_connect

  net_eth_stm32_init (Thumb, 4 bytes, Stack size unknown bytes, net_eth_stm32.o(.text.net_eth_stm32_init))
  [Called By]

  - >> net_interface_init

  net_eth_stm32_loop (Thumb, 4 bytes, Stack size unknown bytes, net_eth_stm32.o(.text.net_eth_stm32_loop))
  [Stack]

  - Max Depth = 472 + Unknown Stack Size
  - Call Chain = net_eth_stm32_loop ⇒ lwip_periodic_handle ⇒ dhcp_fine_tmr ⇒ dhcp_timeout ⇒ dhcp_bind ⇒ netif_set_ipaddr ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> lwip_periodic_handle
  [Called By]
  - >> net_adapter_loop

  net_interface_bind (Thumb, 148 bytes, Stack size unknown bytes, net_interface.o(.text.net_interface_bind))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = net_interface_bind ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> platform_check_port_in_use_stm32
  - >> net_udp_bind_stm32
  - >> agent_log
  [Called By]
  - >> net_adapter_open

  net_interface_close (Thumb, 92 bytes, Stack size unknown bytes, net_interface.o(.text.net_interface_close))
  [Stack]

  - Max Depth = 56 + Unknown Stack Size
  - Call Chain = net_interface_close ⇒ net_socket_close_stm32 ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> net_socket_close_stm32
  - >> agent_log
  [Called By]
  - >> net_adapter_close
  - >> net_adapter_open

  net_interface_create_tcp_socket (Thumb, 104 bytes, Stack size unknown bytes, net_interface.o(.text.net_interface_create_tcp_socket))
  [Stack]

  - Max Depth = 416 + Unknown Stack Size
  - Call Chain = net_interface_create_tcp_socket ⇒ net_tcp_socket_create_stm32 ⇒ tcp_new ⇒ tcp_alloc ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> net_tcp_socket_create_stm32
  - >> agent_log
  [Called By]
  - >> net_adapter_open

  net_interface_create_udp_socket (Thumb, 96 bytes, Stack size unknown bytes, net_interface.o(.text.net_interface_create_udp_socket))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = net_interface_create_udp_socket ⇒ net_udp_socket_create_stm32 ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> net_udp_socket_create_stm32
  - >> agent_log
  [Called By]
  - >> net_adapter_open

  net_interface_dequeue (Thumb, 160 bytes, Stack size unknown bytes, net_interface.o(.text.net_interface_dequeue))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = net_interface_dequeue ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> free
  - >> platform_strcpy_s
  - >> platform_sem_timedwait
  - >> platform_mutex_unlock
  - >> platform_mutex_lock
  - >> agent_log
  - >> memcpy
  [Called By]
  - >> net_adapter_recv

  net_interface_init (Thumb, 248 bytes, Stack size unknown bytes, net_interface.o(.text.net_interface_init))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = net_interface_init ⇒ net_interface_deinit.part.0 ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> platform_sem_create_stm32
  - >> net_interface_deinit.part.0
  - >> net_eth_stm32_init
  - >> platform_mutex_create
  - >> platform_deinit
  - >> platform_init
  - >> agent_log
  [Called By]
  - >> net_adapter_open

  net_interface_send_to (Thumb, 112 bytes, Stack size unknown bytes, net_interface.o(.text.net_interface_send_to))
  [Stack]

  - Max Depth = 472 + Unknown Stack Size
  - Call Chain = net_interface_send_to ⇒ net_tcp_send_stm32 ⇒ lwip_periodic_handle ⇒ dhcp_fine_tmr ⇒ dhcp_timeout ⇒ dhcp_bind ⇒ netif_set_ipaddr ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> net_tcp_send_stm32
  - >> agent_log
  [Called By]
  - >> net_adapter_send

  net_interface_set_current_type (Thumb, 148 bytes, Stack size unknown bytes, net_interface.o(.text.net_interface_set_current_type))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = net_interface_set_current_type ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> agent_log
  [Called By]
  - >> net_adapter_open

  net_interface_tcp_connect (Thumb, 112 bytes, Stack size unknown bytes, net_interface.o(.text.net_interface_tcp_connect))
  [Stack]

  - Max Depth = 368 + Unknown Stack Size
  - Call Chain = net_interface_tcp_connect ⇒ net_tcp_connect_stm32 ⇒ tcp_connect ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> net_tcp_connect_stm32
  - >> agent_log
  [Called By]
  - >> net_adapter_open

  net_interface_tcp_recv (Thumb, 76 bytes, Stack size unknown bytes, net_interface.o(.text.net_interface_tcp_recv))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = net_interface_tcp_recv ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> net_tcp_recv_stm32
  - >> agent_log
  [Called By]
  - >> net_adapter_recv

  net_socket_close_stm32 (Thumb, 40 bytes, Stack size unknown bytes, net_eth_stm32.o(.text.net_socket_close_stm32))
  [Stack]

  - Max Depth = 56 + Unknown Stack Size
  - Call Chain = net_socket_close_stm32 ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> agent_log
  - >> tcp_close
  - >> mem_free
  [Called By]
  - >> net_interface_close

  net_tcp_connect_stm32 (Thumb, 72 bytes, Stack size unknown bytes, net_eth_stm32.o(.text.net_tcp_connect_stm32))
  [Stack]

  - Max Depth = 368 + Unknown Stack Size
  - Call Chain = net_tcp_connect_stm32 ⇒ tcp_connect ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> ip4addr_aton
  - >> agent_log
  - >> tcp_connect
  [Called By]
  - >> net_interface_tcp_connect

  net_tcp_recv_stm32 (Thumb, 64 bytes, Stack size unknown bytes, net_eth_stm32.o(.text.net_tcp_recv_stm32))
  [Stack]

  - Max Depth = 8 + Unknown Stack Size
  - Call Chain = net_tcp_recv_stm32 ⇒ memcpy
  [Calls]
  - >> memcpy
  [Called By]
  - >> net_interface_tcp_recv

  net_tcp_send_stm32 (Thumb, 120 bytes, Stack size unknown bytes, net_eth_stm32.o(.text.net_tcp_send_stm32))
  [Stack]

  - Max Depth = 472 + Unknown Stack Size
  - Call Chain = net_tcp_send_stm32 ⇒ lwip_periodic_handle ⇒ dhcp_fine_tmr ⇒ dhcp_timeout ⇒ dhcp_bind ⇒ netif_set_ipaddr ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> lwip_periodic_handle
  - >> platform_delay_ms
  - >> agent_log
  - >> tcp_write
  - >> tcp_output
  [Called By]
  - >> net_interface_send_to

  net_tcp_socket_create_stm32 (Thumb, 96 bytes, Stack size unknown bytes, net_eth_stm32.o(.text.net_tcp_socket_create_stm32))
  [Stack]

  - Max Depth = 416 + Unknown Stack Size
  - Call Chain = net_tcp_socket_create_stm32 ⇒ tcp_new ⇒ tcp_alloc ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> agent_log
  - >> tcp_close
  - >> tcp_recv
  - >> tcp_new
  - >> tcp_arg
  - >> mem_malloc
  - >> memset
  [Called By]
  - >> net_interface_create_tcp_socket

  net_udp_bind_stm32 (Thumb, 4 bytes, Stack size unknown bytes, net_eth_stm32.o(.text.net_udp_bind_stm32))
  [Called By]

  - >> net_interface_bind

  net_udp_socket_create_stm32 (Thumb, 20 bytes, Stack size unknown bytes, net_eth_stm32.o(.text.net_udp_socket_create_stm32))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = net_udp_socket_create_stm32 ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> agent_log
  [Called By]
  - >> net_interface_create_udp_socket

  platform_deinit (Thumb, 4 bytes, Stack size unknown bytes, platform.o(.text.platform_deinit))
  [Calls]

  - >> platform_deinit_stm32
  [Called By]
  - >> net_interface_deinit.part.0
  - >> net_interface_init

  platform_delay_ms (Thumb, 4 bytes, Stack size unknown bytes, platform.o(.text.platform_delay_ms))
  [Stack]

  - Max Depth = 16 + Unknown Stack Size
  - Call Chain = platform_delay_ms ⇒ HAL_Delay
  [Calls]
  - >> HAL_Delay
  [Called By]
  - >> net_tcp_send_stm32

  platform_free (Thumb, 8 bytes, Stack size unknown bytes, platform.o(.text.platform_free))
  [Stack]

  - Max Depth = 16 + Unknown Stack Size
  - Call Chain = platform_free ⇒ platform_free_stm32 ⇒ free ⇒ myfree ⇒ my_mem_free
  [Calls]
  - >> platform_free_stm32
  [Called By]
  - >> xxl_mqtt_sdk_client_create
  - >> message_free
  - >> mqtt_cache_clean_timeout
  - >> mqtt_qos2_check_retrans
  - >> mqtt_qos1_check_retrans
  - >> mqtt_packet_decode_v311
  - >> mqtt_qos2_handle_pubcomp
  - >> mqtt_qos1_handle_puback
  - >> mqtt_client_create

  platform_free_stm32 (Thumb, 8 bytes, Stack size unknown bytes, platform_stm32.o(.text.platform_free_stm32))
  [Stack]

  - Max Depth = 16 + Unknown Stack Size
  - Call Chain = platform_free_stm32 ⇒ free ⇒ myfree ⇒ my_mem_free
  [Calls]
  - >> free
  [Called By]
  - >> platform_free

  platform_get_tick_ms (Thumb, 4 bytes, Stack size unknown bytes, platform.o(.text.platform_get_tick_ms))
  [Called By]

  - >> mqtt_cache_clean_timeout
  - >> mqtt_qos2_check_retrans
  - >> mqtt_qos1_check_retrans
  - >> mqtt_qos2_handle_pubrec
  - >> mqtt_client_recv_packet_proc
  - >> mqtt50_client_handle_connack
  - >> mqtt_client_loop
  - >> mqtt_client_subscribe
  - >> mqtt_client_connect
  - >> mqtt_client_create
  - >> agent_log

  platform_get_tick_ms_stm32 (Thumb, 4 bytes, Stack size unknown bytes, platform_stm32.o(.text.platform_get_tick_ms_stm32), UNUSED)
  [Calls]

  - >> HAL_GetTick

  platform_init (Thumb, 10 bytes, Stack size unknown bytes, platform.o(.text.platform_init))
  [Calls]

  - >> platform_init_stm32
  [Called By]
  - >> net_interface_init

  platform_malloc (Thumb, 4 bytes, Stack size unknown bytes, platform.o(.text.platform_malloc))
  [Called By]

  - >> xxl_mqtt_sdk_client_create
  - >> mqtt_packet_decode_v311
  - >> mqtt_client_create

  platform_malloc_stm32 (Thumb, 4 bytes, Stack size unknown bytes, platform_stm32.o(.text.platform_malloc_stm32), UNUSED)
  [Calls]

  - >> malloc

  platform_memcpy_s (Thumb, 44 bytes, Stack size unknown bytes, platform.o(.text.platform_memcpy_s))
  [Stack]

  - Max Depth = 8 + Unknown Stack Size
  - Call Chain = platform_memcpy_s ⇒ memmove
  [Calls]
  - >> memmove
  [Called By]
  - >> xxl_mqtt_sdk_client_create
  - >> mqtt_topic_client_add.part.0
  - >> mqtt_packet_encode_v311
  - >> message_free
  - >> mqtt_qos2_check_retrans
  - >> mqtt_qos1_check_retrans
  - >> mqtt_session_init
  - >> mqtt50_publish_decode
  - >> mqtt50_connack_decode
  - >> mqtt_packet_decode_v311
  - >> mqtt_qos2_handle_pubrec
  - >> mqtt_client_recv_packet_proc
  - >> mqtt50_conn_encode
  - >> mqtt50_conn_packet_encode
  - >> mqtt50_client_handle_connack
  - >> mqtt50_subscribe_encode
  - >> mqtt50_publish_encode
  - >> net_adapter_recv
  - >> net_adapter_open
  - >> mqtt_client_subscribe50
  - >> mqtt_client_connect
  - >> mqtt_client_create

  platform_memset_s (Thumb, 28 bytes, Stack size unknown bytes, platform.o(.text.platform_memset_s))
  [Stack]

  - Max Depth = 8 + Unknown Stack Size
  - Call Chain = platform_memset_s ⇒ platform_memset_s_stm32 ⇒ memset
  [Calls]
  - >> platform_memset_s_stm32
  [Called By]
  - >> xxl_mqtt_sdk_client_create
  - >> mqtt_topic_client_add.part.0
  - >> mqtt_topic_list_init
  - >> mqtt50_ack_encode
  - >> mqtt_qos2_check_retrans
  - >> mqtt_qos1_check_retrans
  - >> mqtt50_publish_decode
  - >> mqtt50_unsuback_decode
  - >> mqtt50_suback_decode
  - >> mqtt50_connack_decode
  - >> mqtt50_ack_decode
  - >> mqtt_client_recv_packet_proc
  - >> mqtt_client_handle_qos2_ack
  - >> mqtt50_conn_encode
  - >> mqtt50_client_handle_connack
  - >> mqtt50_subscribe_encode
  - >> mqtt50_publish_encode
  - >> net_adapter_close
  - >> net_adapter_open
  - >> mqtt_client_loop
  - >> mqtt_client_subscribe50
  - >> mqtt_client_connect
  - >> mqtt_client_create

  platform_memset_s_stm32 (Thumb, 22 bytes, Stack size unknown bytes, platform_stm32.o(.text.platform_memset_s_stm32))
  [Stack]

  - Max Depth = 8 + Unknown Stack Size
  - Call Chain = platform_memset_s_stm32 ⇒ memset
  [Calls]
  - >> memset
  [Called By]
  - >> platform_memset_s

  platform_mutex_create (Thumb, 4 bytes, Stack size unknown bytes, platform.o(.text.platform_mutex_create))
  [Calls]

  - >> platform_mutex_create_stm32
  [Called By]
  - >> mqtt_topic_list_init
  - >> net_interface_init

  platform_mutex_lock (Thumb, 8 bytes, Stack size unknown bytes, platform.o(.text.platform_mutex_lock))
  [Calls]

  - >> platform_mutex_lock_stm32
  [Called By]
  - >> mqtt_topic_client_add.part.0
  - >> net_interface_deinit.part.0
  - >> net_interface_dequeue

  platform_mutex_lock_stm32 (Thumb, 4 bytes, Stack size unknown bytes, platform_stm32.o(.text.platform_mutex_lock_stm32))
  [Calls]

  - >> __disable_irq
  [Called By]
  - >> platform_mutex_lock

  platform_mutex_unlock (Thumb, 8 bytes, Stack size unknown bytes, platform.o(.text.platform_mutex_unlock))
  [Calls]

  - >> platform_mutex_unlock_stm32
  [Called By]
  - >> mqtt_topic_client_add.part.0
  - >> net_interface_deinit.part.0
  - >> net_interface_dequeue

  platform_mutex_unlock_stm32 (Thumb, 4 bytes, Stack size unknown bytes, platform_stm32.o(.text.platform_mutex_unlock_stm32))
  [Calls]

  - >> __enable_irq
  [Called By]
  - >> platform_mutex_unlock

  platform_sem_timedwait (Thumb, 4 bytes, Stack size unknown bytes, platform.o(.text.platform_sem_timedwait))
  [Calls]

  - >> platform_sem_timedwait_stm32
  [Called By]
  - >> net_interface_dequeue

  platform_strchr (Thumb, 8 bytes, Stack size unknown bytes, platform.o(.text.platform_strchr))
  [Calls]

  - >> platform_strchr_stm32
  [Called By]
  - >> mqtt_topic_validate

  platform_strchr_stm32 (Thumb, 4 bytes, Stack size unknown bytes, platform_stm32.o(.text.platform_strchr_stm32))
  [Calls]

  - >> strchr
  [Called By]
  - >> platform_strchr

  platform_strcmp (Thumb, 22 bytes, Stack size unknown bytes, platform.o(.text.platform_strcmp))
  [Stack]

  - Max Depth = 8 + Unknown Stack Size
  - Call Chain = platform_strcmp ⇒ platform_strcmp_stm32 ⇒ strcmp
  [Calls]
  - >> platform_strcmp_stm32
  [Called By]
  - >> mqtt_topic_client_add.part.0

  platform_strcmp_stm32 (Thumb, 4 bytes, Stack size unknown bytes, platform_stm32.o(.text.platform_strcmp_stm32))
  [Stack]

  - Max Depth = 8 + Unknown Stack Size
  - Call Chain = platform_strcmp_stm32 ⇒ strcmp
  [Calls]
  - >> strcmp
  [Called By]
  - >> platform_strcmp

  platform_strcpy_s (Thumb, 84 bytes, Stack size unknown bytes, platform.o(.text.platform_strcpy_s))
  [Stack]

  - Max Depth = 8 + Unknown Stack Size
  - Call Chain = platform_strcpy_s ⇒ memcpy
  [Calls]
  - >> memcpy
  [Called By]
  - >> net_interface_dequeue

  platform_strlen (Thumb, 8 bytes, Stack size unknown bytes, platform.o(.text.platform_strlen))
  [Calls]

  - >> strlen
  [Called By]
  - >> xxl_mqtt_sdk_client_subscribe
  - >> xxl_mqtt_sdk_client_create
  - >> mqtt_topic_client_add.part.0
  - >> mqtt_packet_encode_v311
  - >> mqtt_topic_validate
  - >> utf8_validate
  - >> mqtt_qos2_check_retrans
  - >> mqtt_qos1_check_retrans
  - >> mqtt_session_init
  - >> mqtt_client_recv_packet_proc
  - >> mqtt50_conn_encode
  - >> mqtt50_conn_packet_encode
  - >> mqtt50_client_handle_connack
  - >> mqtt_subscribe_add
  - >> mqtt50_subscribe_encode
  - >> mqtt50_publish_encode
  - >> net_adapter_open
  - >> mqtt_client_subscribe
  - >> mqtt_client_subscribe50
  - >> mqtt_client_connect
  - >> mqtt_client_create
  - >> check_share_group_valid

  platform_strstr (Thumb, 80 bytes, Stack size unknown bytes, platform.o(.text.platform_strstr))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = platform_strstr ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> agent_log
  [Called By]
  - >> mqtt_topic_validate
  - >> mqtt50_conn_encode

  utf8_validate (Thumb, 148 bytes, Stack size unknown bytes, mqtt_protocol.o(.text.utf8_validate))
  [Calls]

  - >> platform_strlen
  [Called By]
  - >> mqtt_packet_encode_v311
  - >> mqtt_session_init

  xxl_mqtt_sdk_client_connect (Thumb, 258 bytes, Stack size unknown bytes, mqtt_client_sdk.o(.text.xxl_mqtt_sdk_client_connect))
  [Stack]

  - Max Depth = 472 + Unknown Stack Size
  - Call Chain = xxl_mqtt_sdk_client_connect ⇒ mqtt_client_connect ⇒ net_adapter_send ⇒ net_interface_send_to ⇒ net_tcp_send_stm32 ⇒ lwip_periodic_handle ⇒ dhcp_fine_tmr ⇒ dhcp_timeout ⇒ dhcp_bind ⇒ netif_set_ipaddr ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> mqtt_client_connect
  [Called By]
  - >> main

  xxl_mqtt_sdk_client_create (Thumb, 600 bytes, Stack size unknown bytes, mqtt_client_sdk.o(.text.xxl_mqtt_sdk_client_create))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = xxl_mqtt_sdk_client_create ⇒ mqtt_client_create ⇒ mqtt_session_init ⇒ mqtt_topic_list_init ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> platform_free
  - >> mqtt_client_create
  - >> platform_memcpy_s
  - >> platform_memset_s
  - >> platform_malloc
  - >> agent_log
  - >> platform_strlen
  [Called By]
  - >> mqtt_init

  xxl_mqtt_sdk_client_loop (Thumb, 320 bytes, Stack size unknown bytes, mqtt_client_sdk.o(.text.xxl_mqtt_sdk_client_loop))
  [Stack]

  - Max Depth = 472 + Unknown Stack Size
  - Call Chain = xxl_mqtt_sdk_client_loop ⇒ mqtt_client_loop ⇒ mqtt_client_recv_packet_proc ⇒ mqtt_client_handle_qos2_ack ⇒ net_adapter_send ⇒ net_interface_send_to ⇒ net_tcp_send_stm32 ⇒ lwip_periodic_handle ⇒ dhcp_fine_tmr ⇒ dhcp_timeout ⇒ dhcp_bind ⇒ netif_set_ipaddr ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> mqtt_client_loop
  - >> mqtt_client_get_connect_state
  - >> agent_log
  [Called By]
  - >> main

  xxl_mqtt_sdk_client_subscribe (Thumb, 508 bytes, Stack size unknown bytes, mqtt_client_sdk.o(.text.xxl_mqtt_sdk_client_subscribe))
  [Stack]

  - Max Depth = 472 + Unknown Stack Size
  - Call Chain = xxl_mqtt_sdk_client_subscribe ⇒ mqtt_client_subscribe ⇒ net_adapter_send ⇒ net_interface_send_to ⇒ net_tcp_send_stm32 ⇒ lwip_periodic_handle ⇒ dhcp_fine_tmr ⇒ dhcp_timeout ⇒ dhcp_bind ⇒ netif_set_ipaddr ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> mqtt_client_subscribe
  - >> mqtt_client_subscribe50
  - >> agent_log
  - >> platform_strlen
  - >> check_share_group_valid
  [Called By]
  - >> mqtt_conn_callback

  xxl_mqtt_sdk_global_init (Thumb, 32 bytes, Stack size unknown bytes, mqtt_client_sdk.o(.text.xxl_mqtt_sdk_global_init))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = xxl_mqtt_sdk_global_init ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> agent_log
  [Called By]
  - >> mqtt_init

  BEEP_Init (Thumb, 62 bytes, Stack size 40 bytes, beep.o(i.BEEP_Init))
  [Stack]

  - Max Depth = 80
  - Call Chain = BEEP_Init ⇒ HAL_GPIO_Init
  [Calls]
  - >> HAL_GPIO_WritePin
  - >> HAL_GPIO_Init
  [Called By]
  - >> main

  BusFault_Handler (Thumb, 2 bytes, Stack size 0 bytes, stm32f4xx_it.o(i.BusFault_Handler))
  [Calls]

  - >> BusFault_Handler
  [Called By]
  - >> BusFault_Handler
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  DebugMon_Handler (Thumb, 2 bytes, Stack size 0 bytes, stm32f4xx_it.o(i.DebugMon_Handler))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  ETH_GetRxPktSize (Thumb, 30 bytes, Stack size 0 bytes, lan8720.o(i.ETH_GetRxPktSize))
  [Called By]

  - >> ETH_IRQHandler

  ETH_IRQHandler (Thumb, 38 bytes, Stack size 8 bytes, lan8720.o(i.ETH_IRQHandler))
  [Stack]

  - Max Depth = 176
  - Call Chain = ETH_IRQHandler ⇒ lwip_pkt_handle ⇒ ethernetif_input ⇒ low_level_input ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> lwip_pkt_handle
  - >> ETH_GetRxPktSize
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  ETH_Mem_Malloc (Thumb, 54 bytes, Stack size 8 bytes, lan8720.o(i.ETH_Mem_Malloc))
  [Stack]

  - Max Depth = 40
  - Call Chain = ETH_Mem_Malloc ⇒ mymalloc ⇒ my_mem_malloc
  [Calls]
  - >> mymalloc
  [Called By]
  - >> lwip_comm_init

  FSMC_NORSRAM_Extended_Timing_Init (Thumb, 60 bytes, Stack size 16 bytes, stm32f4xx_ll_fsmc.o(i.FSMC_NORSRAM_Extended_Timing_Init))
  [Stack]

  - Max Depth = 16
  - Call Chain = FSMC_NORSRAM_Extended_Timing_Init
  [Called By]
  - >> HAL_SRAM_Init

  FSMC_NORSRAM_Init (Thumb, 80 bytes, Stack size 20 bytes, stm32f4xx_ll_fsmc.o(i.FSMC_NORSRAM_Init))
  [Stack]

  - Max Depth = 20
  - Call Chain = FSMC_NORSRAM_Init
  [Called By]
  - >> HAL_SRAM_Init

  FSMC_NORSRAM_Timing_Init (Thumb, 64 bytes, Stack size 12 bytes, stm32f4xx_ll_fsmc.o(i.FSMC_NORSRAM_Timing_Init))
  [Stack]

  - Max Depth = 12
  - Call Chain = FSMC_NORSRAM_Timing_Init
  [Called By]
  - >> HAL_SRAM_Init

  HAL_ADC_Init (Thumb, 84 bytes, Stack size 16 bytes, stm32f4xx_hal_adc.o(i.HAL_ADC_Init))
  [Stack]

  - Max Depth = 88
  - Call Chain = HAL_ADC_Init ⇒ HAL_ADC_MspInit ⇒ HAL_GPIO_Init
  [Calls]
  - >> HAL_ADC_MspInit
  - >> ADC_Init
  [Called By]
  - >> MY_ADC_Init

  HAL_ADC_MspInit (Thumb, 66 bytes, Stack size 32 bytes, adc.o(i.HAL_ADC_MspInit))
  [Stack]

  - Max Depth = 72
  - Call Chain = HAL_ADC_MspInit ⇒ HAL_GPIO_Init
  [Calls]
  - >> HAL_GPIO_Init
  [Called By]
  - >> HAL_ADC_Init

  HAL_DMA_Abort_IT (Thumb, 36 bytes, Stack size 0 bytes, stm32f4xx_hal_dma.o(i.HAL_DMA_Abort_IT))
  [Called By]

  - >> HAL_UART_IRQHandler

  HAL_Delay (Thumb, 32 bytes, Stack size 16 bytes, stm32f4xx_hal.o(i.HAL_Delay))
  [Stack]

  - Max Depth = 16
  - Call Chain = HAL_Delay
  [Calls]
  - >> HAL_GetTick
  [Called By]
  - >> HAL_ETH_Init
  - >> ETH_MACDMAConfig
  - >> platform_delay_ms

  HAL_ETH_DMARxDescListInit (Thumb, 114 bytes, Stack size 28 bytes, stm32f4xx_hal_eth.o(i.HAL_ETH_DMARxDescListInit))
  [Stack]

  - Max Depth = 28
  - Call Chain = HAL_ETH_DMARxDescListInit
  [Called By]
  - >> low_level_init

  HAL_ETH_DMATxDescListInit (Thumb, 120 bytes, Stack size 28 bytes, stm32f4xx_hal_eth.o(i.HAL_ETH_DMATxDescListInit))
  [Stack]

  - Max Depth = 28
  - Call Chain = HAL_ETH_DMATxDescListInit
  [Called By]
  - >> low_level_init

  HAL_ETH_GetReceivedFrame (Thumb, 122 bytes, Stack size 8 bytes, stm32f4xx_hal_eth.o(i.HAL_ETH_GetReceivedFrame))
  [Stack]

  - Max Depth = 8
  - Call Chain = HAL_ETH_GetReceivedFrame
  [Called By]
  - >> low_level_input

  HAL_ETH_Init (Thumb, 448 bytes, Stack size 40 bytes, stm32f4xx_hal_eth.o(i.HAL_ETH_Init))
  [Stack]

  - Max Depth = 120
  - Call Chain = HAL_ETH_Init ⇒ HAL_ETH_MspInit ⇒ HAL_GPIO_Init
  [Calls]
  - >> HAL_ETH_WritePHYRegister
  - >> HAL_ETH_ReadPHYRegister
  - >> ETH_MACDMAConfig
  - >> HAL_ETH_MspInit
  - >> HAL_GetTick
  - >> HAL_RCC_GetHCLKFreq
  - >> HAL_Delay
  [Called By]
  - >> LAN8720_Init

  HAL_ETH_MspInit (Thumb, 228 bytes, Stack size 40 bytes, lan8720.o(i.HAL_ETH_MspInit))
  [Stack]

  - Max Depth = 80
  - Call Chain = HAL_ETH_MspInit ⇒ HAL_GPIO_Init
  [Calls]
  - >> HAL_GPIO_Init
  - >> HAL_NVIC_EnableIRQ
  - >> HAL_NVIC_SetPriority
  [Called By]
  - >> HAL_ETH_Init

  HAL_ETH_ReadPHYRegister (Thumb, 130 bytes, Stack size 32 bytes, stm32f4xx_hal_eth.o(i.HAL_ETH_ReadPHYRegister))
  [Stack]

  - Max Depth = 32
  - Call Chain = HAL_ETH_ReadPHYRegister
  [Calls]
  - >> HAL_GetTick
  [Called By]
  - >> HAL_ETH_Init

  HAL_ETH_Start (Thumb, 132 bytes, Stack size 24 bytes, stm32f4xx_hal_eth.o(i.HAL_ETH_Start))
  [Stack]

  - Max Depth = 48
  - Call Chain = HAL_ETH_Start ⇒ ETH_FlushTransmitFIFO ⇒ ETH_Delay
  [Calls]
  - >> ETH_FlushTransmitFIFO
  - >> ETH_Delay
  [Called By]
  - >> low_level_init

  HAL_ETH_TransmitFrame (Thumb, 264 bytes, Stack size 20 bytes, stm32f4xx_hal_eth.o(i.HAL_ETH_TransmitFrame))
  [Stack]

  - Max Depth = 20
  - Call Chain = HAL_ETH_TransmitFrame
  [Called By]
  - >> low_level_output

  HAL_ETH_WritePHYRegister (Thumb, 118 bytes, Stack size 24 bytes, stm32f4xx_hal_eth.o(i.HAL_ETH_WritePHYRegister))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_ETH_WritePHYRegister
  [Calls]
  - >> HAL_GetTick
  [Called By]
  - >> HAL_ETH_Init

  HAL_GPIO_Init (Thumb, 402 bytes, Stack size 40 bytes, stm32f4xx_hal_gpio.o(i.HAL_GPIO_Init))
  [Stack]

  - Max Depth = 40
  - Call Chain = HAL_GPIO_Init
  [Called By]
  - >> HAL_ETH_MspInit
  - >> HAL_ADC_MspInit
  - >> HAL_SRAM_MspInit
  - >> HAL_UART_MspInit
  - >> SRAM_Init
  - >> LED_Init
  - >> LCD_Init
  - >> KEY_Init
  - >> BEEP_Init

  HAL_GPIO_WritePin (Thumb, 10 bytes, Stack size 0 bytes, stm32f4xx_hal_gpio.o(i.HAL_GPIO_WritePin))
  [Called By]

  - >> LED_Init
  - >> BEEP_Init

  HAL_GetREVID (Thumb, 8 bytes, Stack size 0 bytes, stm32f4xx_hal.o(i.HAL_GetREVID))
  [Called By]

  - >> Stm32_Clock_Init

  HAL_GetTick (Thumb, 6 bytes, Stack size 0 bytes, stm32f4xx_hal.o(i.HAL_GetTick))
  [Called By]

  - >> HAL_ETH_WritePHYRegister
  - >> HAL_ETH_ReadPHYRegister
  - >> HAL_ETH_Init
  - >> RTC_EnterInitMode
  - >> HAL_RTC_WaitForSynchro
  - >> HAL_RCC_OscConfig
  - >> HAL_RCC_ClockConfig
  - >> HAL_Delay
  - >> HAL_RCCEx_PeriphCLKConfig
  - >> platform_get_tick_ms_stm32

  HAL_IncTick (Thumb, 12 bytes, Stack size 0 bytes, stm32f4xx_hal.o(i.HAL_IncTick))
  [Called By]

  - >> SysTick_Handler

  HAL_Init (Thumb, 40 bytes, Stack size 8 bytes, stm32f4xx_hal.o(i.HAL_Init))
  [Stack]

  - Max Depth = 40
  - Call Chain = HAL_Init ⇒ HAL_InitTick ⇒ HAL_NVIC_SetPriority
  [Calls]
  - >> HAL_MspInit
  - >> HAL_InitTick
  - >> HAL_NVIC_SetPriorityGrouping
  [Called By]
  - >> main

  HAL_InitTick (Thumb, 54 bytes, Stack size 16 bytes, stm32f4xx_hal.o(i.HAL_InitTick))
  [Stack]

  - Max Depth = 32
  - Call Chain = HAL_InitTick ⇒ HAL_NVIC_SetPriority
  [Calls]
  - >> HAL_SYSTICK_Config
  - >> HAL_NVIC_SetPriority
  [Called By]
  - >> HAL_Init
  - >> HAL_RCC_ClockConfig

  HAL_MspInit (Thumb, 2 bytes, Stack size 0 bytes, stm32f4xx_hal_msp.o(i.HAL_MspInit))
  [Called By]

  - >> HAL_Init

  HAL_NVIC_EnableIRQ (Thumb, 26 bytes, Stack size 0 bytes, stm32f4xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ))
  [Called By]

  - >> Timer4_Init
  - >> HAL_TIM_Base_MspInit
  - >> HAL_ETH_MspInit
  - >> HAL_UART_MspInit

  HAL_NVIC_SetPriority (Thumb, 60 bytes, Stack size 16 bytes, stm32f4xx_hal_cortex.o(i.HAL_NVIC_SetPriority))
  [Stack]

  - Max Depth = 16
  - Call Chain = HAL_NVIC_SetPriority
  [Calls]
  - >> __NVIC_SetPriority
  [Called By]
  - >> Timer4_Init
  - >> HAL_TIM_Base_MspInit
  - >> HAL_ETH_MspInit
  - >> HAL_UART_MspInit
  - >> HAL_InitTick

  HAL_NVIC_SetPriorityGrouping (Thumb, 26 bytes, Stack size 0 bytes, stm32f4xx_hal_cortex.o(i.HAL_NVIC_SetPriorityGrouping))
  [Called By]

  - >> HAL_Init

  HAL_PWR_EnableBkUpAccess (Thumb, 8 bytes, Stack size 0 bytes, stm32f4xx_hal_pwr.o(i.HAL_PWR_EnableBkUpAccess))
  [Called By]

  - >> HAL_RTC_MspInit

  HAL_RCCEx_PeriphCLKConfig (Thumb, 294 bytes, Stack size 32 bytes, stm32f4xx_hal_rcc_ex.o(i.HAL_RCCEx_PeriphCLKConfig))
  [Stack]

  - Max Depth = 32
  - Call Chain = HAL_RCCEx_PeriphCLKConfig
  [Calls]
  - >> HAL_GetTick
  [Called By]
  - >> HAL_RTC_MspInit

  HAL_RCC_ClockConfig (Thumb, 286 bytes, Stack size 32 bytes, stm32f4xx_hal_rcc.o(i.HAL_RCC_ClockConfig))
  [Stack]

  - Max Depth = 80
  - Call Chain = HAL_RCC_ClockConfig ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uldivmod
  [Calls]
  - >> HAL_GetTick
  - >> HAL_RCC_GetSysClockFreq
  - >> HAL_InitTick
  [Called By]
  - >> Stm32_Clock_Init

  HAL_RCC_GetHCLKFreq (Thumb, 6 bytes, Stack size 0 bytes, stm32f4xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq))
  [Called By]

  - >> HAL_ETH_Init

  HAL_RCC_GetPCLK1Freq (Thumb, 20 bytes, Stack size 0 bytes, stm32f4xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq))
  [Called By]

  - >> UART_SetConfig

  HAL_RCC_GetPCLK2Freq (Thumb, 20 bytes, Stack size 0 bytes, stm32f4xx_hal_rcc.o(i.HAL_RCC_GetPCLK2Freq))
  [Called By]

  - >> UART_SetConfig

  HAL_RCC_GetSysClockFreq (Thumb, 88 bytes, Stack size 8 bytes, stm32f4xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq))
  [Stack]

  - Max Depth = 48
  - Call Chain = HAL_RCC_GetSysClockFreq ⇒ __aeabi_uldivmod
  [Calls]
  - >> __aeabi_uldivmod
  [Called By]
  - >> HAL_RCC_ClockConfig

  HAL_RCC_OscConfig (Thumb, 766 bytes, Stack size 40 bytes, stm32f4xx_hal_rcc.o(i.HAL_RCC_OscConfig))
  [Stack]

  - Max Depth = 40
  - Call Chain = HAL_RCC_OscConfig
  [Calls]
  - >> HAL_GetTick
  [Called By]
  - >> HAL_RTC_MspInit
  - >> Stm32_Clock_Init

  HAL_RTCEx_AlarmBEventCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f4xx_hal_rtc_ex.o(i.HAL_RTCEx_AlarmBEventCallback))
  [Called By]

  - >> HAL_RTC_AlarmIRQHandler

  HAL_RTCEx_BKUPRead (Thumb, 10 bytes, Stack size 0 bytes, stm32f4xx_hal_rtc_ex.o(i.HAL_RTCEx_BKUPRead))
  [Called By]

  - >> RTC_Init

  HAL_RTCEx_BKUPWrite (Thumb, 10 bytes, Stack size 0 bytes, stm32f4xx_hal_rtc_ex.o(i.HAL_RTCEx_BKUPWrite))
  [Called By]

  - >> RTC_Init

  HAL_RTCEx_WakeUpTimerEventCallback (Thumb, 20 bytes, Stack size 0 bytes, rtc.o(i.HAL_RTCEx_WakeUpTimerEventCallback))
  [Called By]

  - >> HAL_RTCEx_WakeUpTimerIRQHandler

  HAL_RTCEx_WakeUpTimerIRQHandler (Thumb, 52 bytes, Stack size 8 bytes, stm32f4xx_hal_rtc_ex.o(i.HAL_RTCEx_WakeUpTimerIRQHandler))
  [Stack]

  - Max Depth = 8
  - Call Chain = HAL_RTCEx_WakeUpTimerIRQHandler
  [Calls]
  - >> HAL_RTCEx_WakeUpTimerEventCallback
  [Called By]
  - >> RTC_WKUP_IRQHandler

  HAL_RTC_AlarmAEventCallback (Thumb, 6 bytes, Stack size 0 bytes, rtc.o(i.HAL_RTC_AlarmAEventCallback))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_RTC_AlarmAEventCallback ⇒ __2printf
  [Calls]
  - >> __2printf
  [Called By]
  - >> HAL_RTC_AlarmIRQHandler

  HAL_RTC_AlarmIRQHandler (Thumb, 86 bytes, Stack size 8 bytes, stm32f4xx_hal_rtc.o(i.HAL_RTC_AlarmIRQHandler))
  [Stack]

  - Max Depth = 32
  - Call Chain = HAL_RTC_AlarmIRQHandler ⇒ HAL_RTC_AlarmAEventCallback ⇒ __2printf
  [Calls]
  - >> HAL_RTCEx_AlarmBEventCallback
  - >> HAL_RTC_AlarmAEventCallback
  [Called By]
  - >> RTC_Alarm_IRQHandler

  HAL_RTC_Init (Thumb, 166 bytes, Stack size 16 bytes, stm32f4xx_hal_rtc.o(i.HAL_RTC_Init))
  [Stack]

  - Max Depth = 136
  - Call Chain = HAL_RTC_Init ⇒ HAL_RTC_MspInit ⇒ HAL_RCC_OscConfig
  [Calls]
  - >> RTC_EnterInitMode
  - >> HAL_RTC_WaitForSynchro
  - >> HAL_RTC_MspInit
  [Called By]
  - >> RTC_Init

  HAL_RTC_MspInit (Thumb, 66 bytes, Stack size 80 bytes, rtc.o(i.HAL_RTC_MspInit))
  [Stack]

  - Max Depth = 120
  - Call Chain = HAL_RTC_MspInit ⇒ HAL_RCC_OscConfig
  [Calls]
  - >> HAL_RCC_OscConfig
  - >> HAL_PWR_EnableBkUpAccess
  - >> HAL_RCCEx_PeriphCLKConfig
  [Called By]
  - >> HAL_RTC_Init

  HAL_RTC_SetDate (Thumb, 194 bytes, Stack size 32 bytes, stm32f4xx_hal_rtc.o(i.HAL_RTC_SetDate))
  [Stack]

  - Max Depth = 48
  - Call Chain = HAL_RTC_SetDate ⇒ RTC_EnterInitMode
  [Calls]
  - >> RTC_EnterInitMode
  - >> RTC_ByteToBcd2
  - >> HAL_RTC_WaitForSynchro
  [Called By]
  - >> RTC_Set_Date

  HAL_RTC_SetTime (Thumb, 230 bytes, Stack size 32 bytes, stm32f4xx_hal_rtc.o(i.HAL_RTC_SetTime))
  [Stack]

  - Max Depth = 48
  - Call Chain = HAL_RTC_SetTime ⇒ RTC_EnterInitMode
  [Calls]
  - >> RTC_EnterInitMode
  - >> RTC_ByteToBcd2
  - >> HAL_RTC_WaitForSynchro
  [Called By]
  - >> RTC_Set_Time

  HAL_RTC_WaitForSynchro (Thumb, 52 bytes, Stack size 16 bytes, stm32f4xx_hal_rtc.o(i.HAL_RTC_WaitForSynchro))
  [Stack]

  - Max Depth = 16
  - Call Chain = HAL_RTC_WaitForSynchro
  [Calls]
  - >> HAL_GetTick
  [Called By]
  - >> HAL_RTC_SetTime
  - >> HAL_RTC_SetDate
  - >> HAL_RTC_Init

  HAL_SRAM_Init (Thumb, 86 bytes, Stack size 16 bytes, stm32f4xx_hal_sram.o(i.HAL_SRAM_Init))
  [Stack]

  - Max Depth = 88
  - Call Chain = HAL_SRAM_Init ⇒ HAL_SRAM_MspInit ⇒ HAL_GPIO_Init
  [Calls]
  - >> HAL_SRAM_MspInit
  - >> FSMC_NORSRAM_Timing_Init
  - >> FSMC_NORSRAM_Init
  - >> FSMC_NORSRAM_Extended_Timing_Init
  [Called By]
  - >> SRAM_Init
  - >> LCD_Init

  HAL_SRAM_MspInit (Thumb, 162 bytes, Stack size 32 bytes, lcd.o(i.HAL_SRAM_MspInit))
  [Stack]

  - Max Depth = 72
  - Call Chain = HAL_SRAM_MspInit ⇒ HAL_GPIO_Init
  [Calls]
  - >> HAL_GPIO_Init
  [Called By]
  - >> HAL_SRAM_Init

  HAL_SYSTICK_CLKSourceConfig (Thumb, 24 bytes, Stack size 0 bytes, stm32f4xx_hal_cortex.o(i.HAL_SYSTICK_CLKSourceConfig))
  [Called By]

  - >> delay_init

  HAL_SYSTICK_Config (Thumb, 40 bytes, Stack size 8 bytes, stm32f4xx_hal_cortex.o(i.HAL_SYSTICK_Config))
  [Stack]

  - Max Depth = 8
  - Call Chain = HAL_SYSTICK_Config
  [Calls]
  - >> __NVIC_SetPriority
  [Called By]
  - >> HAL_InitTick

  HAL_TIMEx_BreakCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f4xx_hal_tim_ex.o(i.HAL_TIMEx_BreakCallback))
  [Called By]

  - >> HAL_TIM_IRQHandler

  HAL_TIMEx_CommutCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f4xx_hal_tim_ex.o(i.HAL_TIMEx_CommutCallback))
  [Called By]

  - >> HAL_TIM_IRQHandler

  HAL_TIM_Base_Init (Thumb, 54 bytes, Stack size 8 bytes, stm32f4xx_hal_tim.o(i.HAL_TIM_Base_Init))
  [Stack]

  - Max Depth = 32
  - Call Chain = HAL_TIM_Base_Init ⇒ HAL_TIM_Base_MspInit ⇒ HAL_NVIC_SetPriority
  [Calls]
  - >> TIM_Base_SetConfig
  - >> HAL_TIM_Base_MspInit
  [Called By]
  - >> Timer4_Init
  - >> TIM3_Init

  HAL_TIM_Base_MspInit (Thumb, 50 bytes, Stack size 8 bytes, timer.o(i.HAL_TIM_Base_MspInit))
  [Stack]

  - Max Depth = 24
  - Call Chain = HAL_TIM_Base_MspInit ⇒ HAL_NVIC_SetPriority
  [Calls]
  - >> HAL_NVIC_EnableIRQ
  - >> HAL_NVIC_SetPriority
  [Called By]
  - >> HAL_TIM_Base_Init

  HAL_TIM_Base_Start_IT (Thumb, 34 bytes, Stack size 0 bytes, stm32f4xx_hal_tim.o(i.HAL_TIM_Base_Start_IT))
  [Called By]

  - >> Timer4_Init
  - >> TIM3_Init

  HAL_TIM_IC_CaptureCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f4xx_hal_tim.o(i.HAL_TIM_IC_CaptureCallback))
  [Called By]

  - >> HAL_TIM_IRQHandler

  HAL_TIM_IRQHandler (Thumb, 358 bytes, Stack size 16 bytes, stm32f4xx_hal_tim.o(i.HAL_TIM_IRQHandler))
  [Stack]

  - Max Depth = 16
  - Call Chain = HAL_TIM_IRQHandler
  [Calls]
  - >> HAL_TIM_TriggerCallback
  - >> HAL_TIM_PWM_PulseFinishedCallback
  - >> HAL_TIM_OC_DelayElapsedCallback
  - >> HAL_TIM_IC_CaptureCallback
  - >> HAL_TIMEx_CommutCallback
  - >> HAL_TIMEx_BreakCallback
  - >> HAL_TIM_PeriodElapsedCallback
  [Called By]
  - >> TIM3_IRQHandler

  HAL_TIM_OC_DelayElapsedCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f4xx_hal_tim.o(i.HAL_TIM_OC_DelayElapsedCallback))
  [Called By]

  - >> HAL_TIM_IRQHandler

  HAL_TIM_PWM_PulseFinishedCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f4xx_hal_tim.o(i.HAL_TIM_PWM_PulseFinishedCallback))
  [Called By]

  - >> HAL_TIM_IRQHandler

  HAL_TIM_PeriodElapsedCallback (Thumb, 16 bytes, Stack size 0 bytes, timer.o(i.HAL_TIM_PeriodElapsedCallback))
  [Called By]

  - >> HAL_TIM_IRQHandler

  HAL_TIM_TriggerCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f4xx_hal_tim.o(i.HAL_TIM_TriggerCallback))
  [Called By]

  - >> HAL_TIM_IRQHandler

  HAL_UART_ErrorCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f4xx_hal_uart.o(i.HAL_UART_ErrorCallback))
  [Called By]

  - >> HAL_UART_IRQHandler
  - >> UART_DMAAbortOnError

  HAL_UART_GetState (Thumb, 10 bytes, Stack size 0 bytes, stm32f4xx_hal_uart.o(i.HAL_UART_GetState))
  [Called By]

  - >> USART1_IRQHandler

  HAL_UART_IRQHandler (Thumb, 266 bytes, Stack size 16 bytes, stm32f4xx_hal_uart.o(i.HAL_UART_IRQHandler))
  [Stack]

  - Max Depth = 36
  - Call Chain = HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback
  [Calls]
  - >> HAL_UART_TxCpltCallback
  - >> HAL_UART_ErrorCallback
  - >> HAL_DMA_Abort_IT
  - >> UART_Transmit_IT
  - >> UART_Receive_IT
  - >> UART_EndRxTransfer
  [Called By]
  - >> USART1_IRQHandler

  HAL_UART_Init (Thumb, 98 bytes, Stack size 16 bytes, stm32f4xx_hal_uart.o(i.HAL_UART_Init))
  [Stack]

  - Max Depth = 88
  - Call Chain = HAL_UART_Init ⇒ HAL_UART_MspInit ⇒ HAL_GPIO_Init
  [Calls]
  - >> HAL_UART_MspInit
  - >> UART_SetConfig
  [Called By]
  - >> uart_init

  HAL_UART_MspInit (Thumb, 112 bytes, Stack size 32 bytes, usart.o(i.HAL_UART_MspInit))
  [Stack]

  - Max Depth = 72
  - Call Chain = HAL_UART_MspInit ⇒ HAL_GPIO_Init
  [Calls]
  - >> HAL_GPIO_Init
  - >> HAL_NVIC_EnableIRQ
  - >> HAL_NVIC_SetPriority
  [Called By]
  - >> HAL_UART_Init

  HAL_UART_Receive_IT (Thumb, 82 bytes, Stack size 0 bytes, stm32f4xx_hal_uart.o(i.HAL_UART_Receive_IT))
  [Called By]

  - >> USART1_IRQHandler
  - >> uart_init

  HAL_UART_RxCpltCallback (Thumb, 76 bytes, Stack size 12 bytes, usart.o(i.HAL_UART_RxCpltCallback))
  [Stack]

  - Max Depth = 12
  - Call Chain = HAL_UART_RxCpltCallback
  [Called By]
  - >> UART_Receive_IT

  HAL_UART_TxCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f4xx_hal_uart.o(i.HAL_UART_TxCpltCallback))
  [Called By]

  - >> HAL_UART_IRQHandler

  HardFault_Handler (Thumb, 2 bytes, Stack size 0 bytes, stm32f4xx_it.o(i.HardFault_Handler))
  [Calls]

  - >> HardFault_Handler
  [Called By]
  - >> HardFault_Handler
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  KEY_Init (Thumb, 82 bytes, Stack size 40 bytes, key.o(i.KEY_Init))
  [Stack]

  - Max Depth = 80
  - Call Chain = KEY_Init ⇒ HAL_GPIO_Init
  [Calls]
  - >> HAL_GPIO_Init
  [Called By]
  - >> main

  LAN8720_Init (Thumb, 104 bytes, Stack size 24 bytes, lan8720.o(i.LAN8720_Init))
  [Stack]

  - Max Depth = 144
  - Call Chain = LAN8720_Init ⇒ HAL_ETH_Init ⇒ HAL_ETH_MspInit ⇒ HAL_GPIO_Init
  [Calls]
  - >> HAL_ETH_Init
  - >> delay_ms
  [Called By]
  - >> lwip_comm_init

  LCD_Clear (Thumb, 46 bytes, Stack size 16 bytes, lcd.o(i.LCD_Clear))
  [Stack]

  - Max Depth = 44
  - Call Chain = LCD_Clear ⇒ LCD_SetCursor ⇒ LCD_WR_REG
  [Calls]
  - >> LCD_WriteRAM_Prepare
  - >> LCD_SetCursor
  [Called By]
  - >> LCD_Init

  LCD_Display_Dir (Thumb, 180 bytes, Stack size 36 bytes, lcd.o(i.LCD_Display_Dir))
  [Stack]

  - Max Depth = 60
  - Call Chain = LCD_Display_Dir ⇒ LCD_Scan_Dir ⇒ LCD_WR_REG
  [Calls]
  - >> LCD_Scan_Dir
  [Called By]
  - >> LCD_Init

  LCD_Init (Thumb, 9672 bytes, Stack size 120 bytes, lcd.o(i.LCD_Init))
  [Stack]

  - Max Depth = 216
  - Call Chain = LCD_Init ⇒ LCD_SSD_BackLightSet ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> delay_us
  - >> LCD_WriteReg
  - >> LCD_WR_REG
  - >> LCD_WR_DATA
  - >> LCD_SSD_BackLightSet
  - >> LCD_RD_DATA
  - >> LCD_Display_Dir
  - >> LCD_Clear
  - >> delay_ms
  - >> HAL_GPIO_Init
  - >> HAL_SRAM_Init
  - >> __2printf
  [Called By]
  - >> main

  LCD_RD_DATA (Thumb, 20 bytes, Stack size 8 bytes, lcd.o(i.LCD_RD_DATA))
  [Stack]

  - Max Depth = 8
  - Call Chain = LCD_RD_DATA
  [Called By]
  - >> LCD_Init

  LCD_SSD_BackLightSet (Thumb, 72 bytes, Stack size 8 bytes, lcd.o(i.LCD_SSD_BackLightSet))
  [Stack]

  - Max Depth = 96
  - Call Chain = LCD_SSD_BackLightSet ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
  [Calls]
  - >> __aeabi_ui2d
  - >> __aeabi_dmul
  - >> __aeabi_d2uiz
  - >> LCD_WR_REG
  - >> LCD_WR_DATA
  [Called By]
  - >> LCD_Init

  LCD_Scan_Dir (Thumb, 410 bytes, Stack size 16 bytes, lcd.o(i.LCD_Scan_Dir))
  [Stack]

  - Max Depth = 24
  - Call Chain = LCD_Scan_Dir ⇒ LCD_WR_REG
  [Calls]
  - >> LCD_WriteReg
  - >> LCD_WR_REG
  - >> LCD_WR_DATA
  [Called By]
  - >> LCD_Display_Dir

  LCD_SetCursor (Thumb, 236 bytes, Stack size 20 bytes, lcd.o(i.LCD_SetCursor))
  [Stack]

  - Max Depth = 28
  - Call Chain = LCD_SetCursor ⇒ LCD_WR_REG
  [Calls]
  - >> LCD_WR_REG
  - >> LCD_WR_DATA
  [Called By]
  - >> LCD_Clear

  LCD_WR_DATA (Thumb, 24 bytes, Stack size 8 bytes, lcd.o(i.LCD_WR_DATA))
  [Stack]

  - Max Depth = 8
  - Call Chain = LCD_WR_DATA
  [Called By]
  - >> LCD_SetCursor
  - >> LCD_Scan_Dir
  - >> LCD_SSD_BackLightSet
  - >> LCD_Init

  LCD_WR_REG (Thumb, 24 bytes, Stack size 8 bytes, lcd.o(i.LCD_WR_REG))
  [Stack]

  - Max Depth = 8
  - Call Chain = LCD_WR_REG
  [Called By]
  - >> LCD_SetCursor
  - >> LCD_Scan_Dir
  - >> LCD_SSD_BackLightSet
  - >> LCD_Init

  LCD_WriteRAM_Prepare (Thumb, 14 bytes, Stack size 0 bytes, lcd.o(i.LCD_WriteRAM_Prepare))
  [Called By]

  - >> LCD_Clear

  LCD_WriteReg (Thumb, 12 bytes, Stack size 0 bytes, lcd.o(i.LCD_WriteReg))
  [Called By]

  - >> LCD_Scan_Dir
  - >> LCD_Init

  LED_Init (Thumb, 72 bytes, Stack size 32 bytes, led.o(i.LED_Init))
  [Stack]

  - Max Depth = 72
  - Call Chain = LED_Init ⇒ HAL_GPIO_Init
  [Calls]
  - >> HAL_GPIO_WritePin
  - >> HAL_GPIO_Init
  [Called By]
  - >> main

  MY_ADC_Init (Thumb, 48 bytes, Stack size 0 bytes, adc.o(i.MY_ADC_Init))
  [Stack]

  - Max Depth = 88
  - Call Chain = MY_ADC_Init ⇒ HAL_ADC_Init ⇒ HAL_ADC_MspInit ⇒ HAL_GPIO_Init
  [Calls]
  - >> HAL_ADC_Init
  [Called By]
  - >> main

  MemManage_Handler (Thumb, 2 bytes, Stack size 0 bytes, stm32f4xx_it.o(i.MemManage_Handler))
  [Calls]

  - >> MemManage_Handler
  [Called By]
  - >> MemManage_Handler
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  NMI_Handler (Thumb, 2 bytes, Stack size 0 bytes, stm32f4xx_it.o(i.NMI_Handler))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  PendSV_Handler (Thumb, 2 bytes, Stack size 0 bytes, stm32f4xx_it.o(i.PendSV_Handler))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  RTC_Alarm_IRQHandler (Thumb, 6 bytes, Stack size 0 bytes, rtc.o(i.RTC_Alarm_IRQHandler))
  [Stack]

  - Max Depth = 32
  - Call Chain = RTC_Alarm_IRQHandler ⇒ HAL_RTC_AlarmIRQHandler ⇒ HAL_RTC_AlarmAEventCallback ⇒ __2printf
  [Calls]
  - >> HAL_RTC_AlarmIRQHandler
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  RTC_ByteToBcd2 (Thumb, 22 bytes, Stack size 0 bytes, stm32f4xx_hal_rtc.o(i.RTC_ByteToBcd2))
  [Called By]

  - >> HAL_RTC_SetTime
  - >> HAL_RTC_SetDate

  RTC_EnterInitMode (Thumb, 56 bytes, Stack size 16 bytes, stm32f4xx_hal_rtc.o(i.RTC_EnterInitMode))
  [Stack]

  - Max Depth = 16
  - Call Chain = RTC_EnterInitMode
  [Calls]
  - >> HAL_GetTick
  [Called By]
  - >> HAL_RTC_SetTime
  - >> HAL_RTC_SetDate
  - >> HAL_RTC_Init

  RTC_Init (Thumb, 90 bytes, Stack size 8 bytes, rtc.o(i.RTC_Init))
  [Stack]

  - Max Depth = 144
  - Call Chain = RTC_Init ⇒ HAL_RTC_Init ⇒ HAL_RTC_MspInit ⇒ HAL_RCC_OscConfig
  [Calls]
  - >> HAL_RTCEx_BKUPWrite
  - >> HAL_RTCEx_BKUPRead
  - >> HAL_RTC_Init
  - >> RTC_Set_Time
  - >> RTC_Set_Date
  [Called By]
  - >> main

  RTC_Set_Date (Thumb, 30 bytes, Stack size 8 bytes, rtc.o(i.RTC_Set_Date))
  [Stack]

  - Max Depth = 56
  - Call Chain = RTC_Set_Date ⇒ HAL_RTC_SetDate ⇒ RTC_EnterInitMode
  [Calls]
  - >> HAL_RTC_SetDate
  [Called By]
  - >> RTC_Init

  RTC_Set_Time (Thumb, 40 bytes, Stack size 24 bytes, rtc.o(i.RTC_Set_Time))
  [Stack]

  - Max Depth = 72
  - Call Chain = RTC_Set_Time ⇒ HAL_RTC_SetTime ⇒ RTC_EnterInitMode
  [Calls]
  - >> HAL_RTC_SetTime
  [Called By]
  - >> RTC_Init

  RTC_WKUP_IRQHandler (Thumb, 6 bytes, Stack size 0 bytes, rtc.o(i.RTC_WKUP_IRQHandler))
  [Stack]

  - Max Depth = 8
  - Call Chain = RTC_WKUP_IRQHandler ⇒ HAL_RTCEx_WakeUpTimerIRQHandler
  [Calls]
  - >> HAL_RTCEx_WakeUpTimerIRQHandler
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  SRAM_Init (Thumb, 246 bytes, Stack size 64 bytes, sram.o(i.SRAM_Init))
  [Stack]

  - Max Depth = 160
  - Call Chain = SRAM_Init ⇒ XmRamInit ⇒ sram_reg_read ⇒ sram_init ⇒ SRAM_GPIO_Set
  [Calls]
  - >> delay_us
  - >> XmRamInit
  - >> HAL_GPIO_Init
  - >> HAL_SRAM_Init
  [Called By]
  - >> main

  SVC_Handler (Thumb, 2 bytes, Stack size 0 bytes, stm32f4xx_it.o(i.SVC_Handler))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(RESET)

  Stm32_Clock_Init (Thumb, 136 bytes, Stack size 88 bytes, sys.o(i.Stm32_Clock_Init))
  [Stack]

  - Max Depth = 168
  - Call Chain = Stm32_Clock_Init ⇒ HAL_RCC_ClockConfig ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uldivmod
  [Calls]
  - >> HAL_RCC_OscConfig
  - >> HAL_RCC_ClockConfig
  - >> HAL_GetREVID
  [Called By]
  - >> main

  SysTick_Handler (Thumb, 4 bytes, Stack size 0 bytes, stm32f4xx_it.o(i.SysTick_Handler))
  [Calls]

  - >> HAL_IncTick
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  SystemInit (Thumb, 66 bytes, Stack size 0 bytes, system_stm32f4xx.o(i.SystemInit))
  [Address Reference Count : 1]

  - startup_stm32f407xx.o(.text)

  TIM3_IRQHandler (Thumb, 6 bytes, Stack size 0 bytes, timer.o(i.TIM3_IRQHandler))
  [Stack]

  - Max Depth = 16
  - Call Chain = TIM3_IRQHandler ⇒ HAL_TIM_IRQHandler
  [Calls]
  - >> HAL_TIM_IRQHandler
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  TIM3_Init (Thumb, 34 bytes, Stack size 8 bytes, timer.o(i.TIM3_Init))
  [Stack]

  - Max Depth = 40
  - Call Chain = TIM3_Init ⇒ HAL_TIM_Base_Init ⇒ HAL_TIM_Base_MspInit ⇒ HAL_NVIC_SetPriority
  [Calls]
  - >> HAL_TIM_Base_Start_IT
  - >> HAL_TIM_Base_Init
  [Called By]
  - >> main

  TIM4_IRQHandler (Thumb, 44 bytes, Stack size 8 bytes, usmart.o(i.TIM4_IRQHandler))
  [Stack]

  - Max Depth = 8
  - Call Chain = TIM4_IRQHandler
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  TIM_Base_SetConfig (Thumb, 156 bytes, Stack size 20 bytes, stm32f4xx_hal_tim.o(i.TIM_Base_SetConfig))
  [Stack]

  - Max Depth = 20
  - Call Chain = TIM_Base_SetConfig
  [Called By]
  - >> HAL_TIM_Base_Init

  Timer4_Init (Thumb, 72 bytes, Stack size 24 bytes, usmart.o(i.Timer4_Init))
  [Stack]

  - Max Depth = 56
  - Call Chain = Timer4_Init ⇒ HAL_TIM_Base_Init ⇒ HAL_TIM_Base_MspInit ⇒ HAL_NVIC_SetPriority
  [Calls]
  - >> HAL_TIM_Base_Start_IT
  - >> HAL_TIM_Base_Init
  - >> HAL_NVIC_EnableIRQ
  - >> HAL_NVIC_SetPriority
  [Called By]
  - >> usmart_init

  USART1_IRQHandler (Thumb, 34 bytes, Stack size 8 bytes, usart.o(i.USART1_IRQHandler))
  [Stack]

  - Max Depth = 44
  - Call Chain = USART1_IRQHandler ⇒ HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback
  [Calls]
  - >> HAL_UART_Receive_IT
  - >> HAL_UART_IRQHandler
  - >> HAL_UART_GetState
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  UsageFault_Handler (Thumb, 2 bytes, Stack size 0 bytes, stm32f4xx_it.o(i.UsageFault_Handler))
  [Calls]

  - >> UsageFault_Handler
  [Called By]
  - >> UsageFault_Handler
  [Address Reference Count : 1]
  - startup_stm32f407xx.o(RESET)

  XmRamInit (Thumb, 48 bytes, Stack size 16 bytes, xmram.o(i.XmRamInit))
  [Stack]

  - Max Depth = 96
  - Call Chain = XmRamInit ⇒ sram_reg_read ⇒ sram_init ⇒ SRAM_GPIO_Set
  [Calls]
  - >> xram_delay
  - >> sram_reg_write
  - >> sram_reg_read
  [Called By]
  - >> SRAM_Init

  __0printf (Thumb, 22 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED)
  [Calls]

  - >> _printf_core

  __1printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED)

  __2printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf))
  [Stack]

  - Max Depth = 24
  - Call Chain = __2printf
  [Called By]
  - >> usmart_sys_cmd_exe
  - >> usmart_scan
  - >> usmart_exe
  - >> HAL_RTC_AlarmAEventCallback
  - >> LCD_Init
  - >> main
  - >> mqtt_msg_callback
  - >> mqtt_init
  - >> mqtt_conn_callback
  - >> udp_bind
  - >> memp_free
  - >> tcp_write
  - >> tcp_recved
  - >> tcp_recv
  - >> tcp_output
  - >> tcp_connect
  - >> pbuf_free
  - >> pbuf_alloc
  - >> mem_malloc
  - >> mem_free
  - >> netif_add
  - >> ethernetif_init
  - >> ethernet_input
  - >> dhcp_start
  - >> lwip_dhcp_process_handle
  - >> udp_sendto_if
  - >> dhcp_stop
  - >> dhcp_recv
  - >> dhcp_parse_reply
  - >> dhcp_option_trailer
  - >> dhcp_option_short
  - >> dhcp_option_long
  - >> dhcp_option_byte
  - >> dhcp_option
  - >> dhcp_delete_msg
  - >> dhcp_create_msg
  - >> dhcp_bind
  - >> pbuf_alloced_custom
  - >> memp_malloc
  - >> ipfrag_free_pbuf_custom
  - >> ip_reass_free_complete_datagram
  - >> ip_reass_dequeue_datagram
  - >> ip_reass_chain_frag_into_datagram_and_validate
  - >> ip_frag_free_pbuf_custom_ref
  - >> ipaddr_aton
  - >> udp_input
  - >> tcp_input
  - >> pbuf_realloc
  - >> ip_frag
  - >> ip_output_if
  - >> ip_output
  - >> icmp_input
  - >> icmp_send_response
  - >> pbuf_header
  - >> pbuf_copy
  - >> dhcp_arp_reply
  - >> etharp_query
  - >> etharp_output
  - >> etharp_update_arp_entry
  - >> etharp_send_ip
  - >> etharp_raw
  - >> etharp_output_to_arp_index
  - >> etharp_find_entry
  - >> etharp_arp_input
  - >> pbuf_copy_partial
  - >> pbuf_cat
  - >> sys_timeout
  - >> tcp_write_checks
  - >> tcp_pbuf_prealloc
  - >> tcp_output_alloc_header
  - >> tcp_receive
  - >> tcp_process
  - >> tcp_rst
  - >> tcp_enqueue_flags
  - >> tcp_update_rcv_ann_wnd
  - >> tcp_slowtmr
  - >> tcp_pcb_remove
  - >> tcp_abandon
  - >> tcp_close_shutdown
  - >> mem_trim
  - >> plug_holes
  - >> dns_send
  - >> dns_check_entry

  __c89printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED)

  printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf))
  [Stack]

  - Max Depth = 24
  - Call Chain = printf
  [Called By]
  - >> agent_log

  __0snprintf (Thumb, 48 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf), UNUSED)
  [Calls]

  - >> _printf_core

  __1snprintf (Thumb, 0 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf), UNUSED)

  __2snprintf (Thumb, 0 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf), UNUSED)

  __c89snprintf (Thumb, 0 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf), UNUSED)

  snprintf (Thumb, 0 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf))
  [Stack]

  - Max Depth = 40
  - Call Chain = snprintf
  [Called By]
  - >> mqtt50_subscribe_encode
  - >> agent_log_hexdump
  - >> agent_log

  __0vsnprintf (Thumb, 46 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf), UNUSED)
  [Calls]

  - >> _printf_core

  __1vsnprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf), UNUSED)

  __2vsnprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf), UNUSED)

  __c89vsnprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf), UNUSED)

  vsnprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf))
  [Stack]

  - Max Depth = 24
  - Call Chain = vsnprintf
  [Called By]
  - >> agent_log

  __scatterload_copy (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED)

  __scatterload_null (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED)

  __scatterload_zeroinit (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED)

  delay_init (Thumb, 16 bytes, Stack size 8 bytes, delay.o(i.delay_init))
  [Stack]

  - Max Depth = 8
  - Call Chain = delay_init
  [Calls]
  - >> HAL_SYSTICK_CLKSourceConfig
  [Called By]
  - >> main

  delay_ms (Thumb, 26 bytes, Stack size 16 bytes, delay.o(i.delay_ms))
  [Stack]

  - Max Depth = 32
  - Call Chain = delay_ms ⇒ delay_us
  [Calls]
  - >> delay_us
  [Called By]
  - >> LAN8720_Init
  - >> LCD_Init
  - >> main
  [Address Reference Count : 1]
  - usmart_config.o(.data)

  delay_us (Thumb, 48 bytes, Stack size 16 bytes, delay.o(i.delay_us))
  [Stack]

  - Max Depth = 16
  - Call Chain = delay_us
  [Called By]
  - >> delay_ms
  - >> SRAM_Init
  - >> LCD_Init
  [Address Reference Count : 1]
  - usmart_config.o(.data)

  dhcp_arp_reply (Thumb, 42 bytes, Stack size 0 bytes, dhcp.o(i.dhcp_arp_reply))
  [Stack]

  - Max Depth = 312
  - Call Chain = dhcp_arp_reply ⇒ dhcp_decline ⇒ udp_sendto_if ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> dhcp_decline
  - >> __2printf
  [Called By]
  - >> etharp_arp_input

  dhcp_coarse_tmr (Thumb, 90 bytes, Stack size 8 bytes, dhcp.o(i.dhcp_coarse_tmr))
  [Stack]

  - Max Depth = 320
  - Call Chain = dhcp_coarse_tmr ⇒ dhcp_renew ⇒ udp_sendto_if ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> dhcp_renew
  - >> dhcp_rebind
  [Called By]
  - >> lwip_periodic_handle
  - >> dhcp_timer_coarse

  dhcp_fine_tmr (Thumb, 46 bytes, Stack size 16 bytes, dhcp.o(i.dhcp_fine_tmr))
  [Stack]

  - Max Depth = 464
  - Call Chain = dhcp_fine_tmr ⇒ dhcp_timeout ⇒ dhcp_bind ⇒ netif_set_ipaddr ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> dhcp_timeout
  [Called By]
  - >> lwip_periodic_handle
  - >> dhcp_timer_fine

  dhcp_release (Thumb, 160 bytes, Stack size 24 bytes, dhcp.o(i.dhcp_release))
  [Stack]

  - Max Depth = 432
  - Call Chain = dhcp_release ⇒ netif_set_ipaddr ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> udp_sendto_if
  - >> netif_set_netmask
  - >> netif_set_ipaddr
  - >> netif_set_gw
  - >> netif_set_down
  - >> dhcp_set_state
  - >> dhcp_option_trailer
  - >> dhcp_delete_msg
  - >> dhcp_create_msg
  - >> pbuf_realloc
  [Called By]
  - >> dhcp_timeout

  dhcp_renew (Thumb, 132 bytes, Stack size 24 bytes, dhcp.o(i.dhcp_renew))
  [Stack]

  - Max Depth = 312
  - Call Chain = dhcp_renew ⇒ udp_sendto_if ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> udp_sendto_if
  - >> dhcp_set_state
  - >> dhcp_option_trailer
  - >> dhcp_option_short
  - >> dhcp_option
  - >> dhcp_delete_msg
  - >> dhcp_create_msg
  - >> pbuf_realloc
  [Called By]
  - >> dhcp_coarse_tmr
  - >> dhcp_timeout

  dhcp_start (Thumb, 204 bytes, Stack size 16 bytes, dhcp.o(i.dhcp_start))
  [Stack]

  - Max Depth = 328
  - Call Chain = dhcp_start ⇒ dhcp_discover ⇒ udp_sendto_if ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> udp_remove
  - >> udp_recv
  - >> udp_new
  - >> udp_connect
  - >> udp_bind
  - >> mem_malloc
  - >> dhcp_stop
  - >> dhcp_discover
  - >> __2printf
  - >> __aeabi_memclr4
  [Called By]
  - >> lwip_comm_init
  - >> lwip_dhcp_process_handle

  dhcp_stop (Thumb, 84 bytes, Stack size 8 bytes, dhcp.o(i.dhcp_stop))
  [Stack]

  - Max Depth = 48
  - Call Chain = dhcp_stop ⇒ udp_remove ⇒ memp_free ⇒ __2printf
  [Calls]
  - >> udp_remove
  - >> dhcp_set_state
  - >> __2printf
  [Called By]
  - >> dhcp_start

  dns_init (Thumb, 64 bytes, Stack size 16 bytes, dns.o(i.dns_init))
  [Stack]

  - Max Depth = 88
  - Call Chain = dns_init ⇒ ipaddr_addr ⇒ ipaddr_aton ⇒ __2printf
  [Calls]
  - >> dns_setserver
  - >> udp_recv
  - >> udp_new
  - >> udp_bind
  - >> ipaddr_addr
  [Called By]
  - >> lwip_init

  dns_setserver (Thumb, 32 bytes, Stack size 0 bytes, dns.o(i.dns_setserver))
  [Called By]

  - >> main
  - >> dhcp_handle_ack
  - >> dns_init

  dns_tmr (Thumb, 28 bytes, Stack size 8 bytes, dns.o(i.dns_tmr))
  [Stack]

  - Max Depth = 368
  - Call Chain = dns_tmr ⇒ dns_check_entry ⇒ dns_send ⇒ udp_sendto ⇒ udp_sendto_if ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> dns_check_entry
  [Called By]
  - >> dns_timer

  etharp_cleanup_netif (Thumb, 42 bytes, Stack size 16 bytes, etharp.o(i.etharp_cleanup_netif))
  [Stack]

  - Max Depth = 104
  - Call Chain = etharp_cleanup_netif ⇒ etharp_free_entry ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> etharp_free_entry
  [Called By]
  - >> netif_set_down

  etharp_output (Thumb, 290 bytes, Stack size 32 bytes, etharp.o(i.etharp_output))
  [Stack]

  - Max Depth = 264
  - Call Chain = etharp_output ⇒ etharp_query ⇒ etharp_request ⇒ etharp_raw ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> pbuf_header
  - >> ip4_addr_isbroadcast
  - >> etharp_query
  - >> etharp_send_ip
  - >> etharp_output_to_arp_index
  - >> __2printf
  [Address Reference Count : 1]
  - ethernetif.o(i.ethernetif_init)

  etharp_query (Thumb, 292 bytes, Stack size 56 bytes, etharp.o(i.etharp_query))
  [Stack]

  - Max Depth = 232
  - Call Chain = etharp_query ⇒ etharp_request ⇒ etharp_raw ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> pbuf_ref
  - >> pbuf_free
  - >> pbuf_alloc
  - >> pbuf_copy
  - >> ip4_addr_isbroadcast
  - >> etharp_request
  - >> etharp_send_ip
  - >> etharp_find_entry
  - >> __2printf
  [Called By]
  - >> dhcp_check
  - >> etharp_output

  etharp_request (Thumb, 32 bytes, Stack size 24 bytes, etharp.o(i.etharp_request))
  [Stack]

  - Max Depth = 176
  - Call Chain = etharp_request ⇒ etharp_raw ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> etharp_raw
  [Called By]
  - >> netif_set_up
  - >> etharp_query
  - >> etharp_output_to_arp_index

  etharp_tmr (Thumb, 66 bytes, Stack size 16 bytes, etharp.o(i.etharp_tmr))
  [Stack]

  - Max Depth = 104
  - Call Chain = etharp_tmr ⇒ etharp_free_entry ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> etharp_free_entry
  [Called By]
  - >> arp_timer

  ethernet_input (Thumb, 154 bytes, Stack size 16 bytes, etharp.o(i.ethernet_input))
  [Stack]

  - Max Depth = 536
  - Call Chain = ethernet_input ⇒ ip_input ⇒ tcp_input ⇒ tcp_process ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> pbuf_free
  - >> pbuf_header
  - >> ip_input
  - >> etharp_arp_input
  - >> __2printf
  - >> memcmp
  [Address Reference Count : 1]
  - lwip_comm.o(i.lwip_comm_init)

  ethernetif_init (Thumb, 48 bytes, Stack size 8 bytes, ethernetif.o(i.ethernetif_init))
  [Stack]

  - Max Depth = 64
  - Call Chain = ethernetif_init ⇒ low_level_init ⇒ HAL_ETH_Start ⇒ ETH_FlushTransmitFIFO ⇒ ETH_Delay
  [Calls]
  - >> low_level_init
  - >> __2printf
  [Address Reference Count : 1]
  - lwip_comm.o(i.lwip_comm_init)

  ethernetif_input (Thumb, 38 bytes, Stack size 16 bytes, ethernetif.o(i.ethernetif_input))
  [Stack]

  - Max Depth = 168
  - Call Chain = ethernetif_input ⇒ low_level_input ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> pbuf_free
  - >> low_level_input
  [Called By]
  - >> lwip_pkt_handle

  fputc (Thumb, 14 bytes, Stack size 0 bytes, usart.o(i.fputc))
  [Called By]

  - >> fputs
  [Address Reference Count : 1]
  - printfa.o(i.__0printf)

  fputs (Thumb, 24 bytes, Stack size 16 bytes, fputs.o(i.fputs))
  [Stack]

  - Max Depth = 16
  - Call Chain = fputs
  [Calls]
  - >> fputc
  [Called By]
  - >> agent_log

  free (Thumb, 8 bytes, Stack size 0 bytes, main.o(i.free))
  [Stack]

  - Max Depth = 16
  - Call Chain = free ⇒ myfree ⇒ my_mem_free
  [Calls]
  - >> myfree
  [Called By]
  - >> net_interface_deinit.part.0
  - >> platform_free_stm32
  - >> net_interface_dequeue

  get_lwip_real_gw (Thumb, 42 bytes, Stack size 0 bytes, main.o(i.get_lwip_real_gw))
  [Called By]

  - >> main

  get_lwip_real_ip (Thumb, 42 bytes, Stack size 0 bytes, main.o(i.get_lwip_real_ip))
  [Called By]

  - >> main

  icmp_dest_unreach (Thumb, 8 bytes, Stack size 0 bytes, icmp.o(i.icmp_dest_unreach))
  [Stack]

  - Max Depth = 320
  - Call Chain = icmp_dest_unreach ⇒ icmp_send_response ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> icmp_send_response
  [Called By]
  - >> udp_input
  - >> ip_input

  icmp_input (Thumb, 310 bytes, Stack size 48 bytes, icmp.o(i.icmp_input))
  [Stack]

  - Max Depth = 288
  - Call Chain = icmp_input ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> pbuf_free
  - >> pbuf_alloc
  - >> ip_output_if
  - >> inet_chksum_pbuf
  - >> pbuf_header
  - >> pbuf_copy
  - >> ip4_addr_isbroadcast
  - >> __2printf
  [Called By]
  - >> ip_input

  icmp_time_exceeded (Thumb, 8 bytes, Stack size 0 bytes, icmp.o(i.icmp_time_exceeded))
  [Stack]

  - Max Depth = 320
  - Call Chain = icmp_time_exceeded ⇒ icmp_send_response ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> icmp_send_response
  [Called By]
  - >> ip_reass_free_complete_datagram

  inet_chksum (Thumb, 12 bytes, Stack size 8 bytes, inet_chksum.o(i.inet_chksum))
  [Stack]

  - Max Depth = 20
  - Call Chain = inet_chksum ⇒ lwip_standard_chksum
  [Calls]
  - >> lwip_standard_chksum
  [Called By]
  - >> ip_reass
  - >> ip_frag
  - >> icmp_send_response

  inet_chksum_pbuf (Thumb, 72 bytes, Stack size 16 bytes, inet_chksum.o(i.inet_chksum_pbuf))
  [Stack]

  - Max Depth = 28
  - Call Chain = inet_chksum_pbuf ⇒ lwip_standard_chksum
  [Calls]
  - >> lwip_standard_chksum
  [Called By]
  - >> icmp_input

  ip4_addr_isbroadcast (Thumb, 46 bytes, Stack size 0 bytes, ip_addr.o(i.ip4_addr_isbroadcast))
  [Called By]

  - >> udp_input
  - >> tcp_input
  - >> icmp_input
  - >> ip_input
  - >> etharp_query
  - >> etharp_output
  - >> etharp_update_arp_entry

  ip4addr_aton (Thumb, 106 bytes, Stack size 24 bytes, net_port.o(i.ip4addr_aton))
  [Stack]

  - Max Depth = 24
  - Call Chain = ip4addr_aton
  [Calls]
  - >> lwip_htonl
  [Called By]
  - >> net_tcp_connect_stm32

  ip_frag (Thumb, 378 bytes, Stack size 88 bytes, ip_frag.o(i.ip_frag))
  [Stack]

  - Max Depth = 200
  - Call Chain = ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> pbuf_ref
  - >> pbuf_free
  - >> pbuf_alloc
  - >> pbuf_alloced_custom
  - >> memp_malloc
  - >> ip_frag_free_pbuf_custom_ref
  - >> lwip_ntohs
  - >> inet_chksum
  - >> lwip_htons
  - >> pbuf_cat
  - >> __2printf
  - >> __aeabi_memcpy
  [Called By]
  - >> ip_output_if

  ip_input (Thumb, 366 bytes, Stack size 40 bytes, ip.o(i.ip_input))
  [Stack]

  - Max Depth = 520
  - Call Chain = ip_input ⇒ tcp_input ⇒ tcp_process ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> pbuf_free
  - >> udp_input
  - >> tcp_input
  - >> raw_input
  - >> pbuf_realloc
  - >> lwip_ntohs
  - >> ip_reass
  - >> icmp_input
  - >> icmp_dest_unreach
  - >> ip4_addr_isbroadcast
  [Called By]
  - >> ethernet_input

  ip_output (Thumb, 72 bytes, Stack size 40 bytes, ip.o(i.ip_output))
  [Stack]

  - Max Depth = 280
  - Call Chain = ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> ip_route
  - >> ip_output_if
  - >> __2printf
  [Called By]
  - >> icmp_send_response
  - >> tcp_output_segment
  - >> tcp_send_empty_ack
  - >> tcp_zero_window_probe
  - >> tcp_rst
  - >> tcp_keepalive

  ip_output_if (Thumb, 208 bytes, Stack size 40 bytes, ip.o(i.ip_output_if))
  [Stack]

  - Max Depth = 240
  - Call Chain = ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> ip_frag
  - >> pbuf_header
  - >> lwip_htons
  - >> __2printf
  [Called By]
  - >> udp_sendto_if
  - >> ip_output
  - >> icmp_input

  ip_reass (Thumb, 414 bytes, Stack size 40 bytes, ip_frag.o(i.ip_reass))
  [Stack]

  - Max Depth = 416
  - Call Chain = ip_reass ⇒ ip_reass_remove_oldest_datagram ⇒ ip_reass_free_complete_datagram ⇒ icmp_time_exceeded ⇒ icmp_send_response ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> pbuf_free
  - >> memp_malloc
  - >> ip_reass_remove_oldest_datagram
  - >> ip_reass_dequeue_datagram
  - >> ip_reass_chain_frag_into_datagram_and_validate
  - >> lwip_ntohs
  - >> inet_chksum
  - >> pbuf_header
  - >> lwip_htons
  - >> pbuf_clen
  - >> pbuf_cat
  - >> __aeabi_memclr4
  - >> __aeabi_memcpy
  [Called By]
  - >> ip_input

  ip_reass_tmr (Thumb, 40 bytes, Stack size 16 bytes, ip_frag.o(i.ip_reass_tmr))
  [Stack]

  - Max Depth = 368
  - Call Chain = ip_reass_tmr ⇒ ip_reass_free_complete_datagram ⇒ icmp_time_exceeded ⇒ icmp_send_response ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> ip_reass_free_complete_datagram
  [Called By]
  - >> ip_reass_timer

  ip_route (Thumb, 54 bytes, Stack size 8 bytes, ip.o(i.ip_route))
  [Stack]

  - Max Depth = 8
  - Call Chain = ip_route
  [Called By]
  - >> tcp_connect
  - >> ip_output
  - >> tcp_output_segment
  - >> tcp_eff_send_mss
  - >> udp_sendto

  ipaddr_addr (Thumb, 20 bytes, Stack size 8 bytes, ip_addr.o(i.ipaddr_addr))
  [Stack]

  - Max Depth = 72
  - Call Chain = ipaddr_addr ⇒ ipaddr_aton ⇒ __2printf
  [Calls]
  - >> ipaddr_aton
  [Called By]
  - >> dns_init

  ipaddr_aton (Thumb, 262 bytes, Stack size 40 bytes, ip_addr.o(i.ipaddr_aton))
  [Stack]

  - Max Depth = 64
  - Call Chain = ipaddr_aton ⇒ __2printf
  [Calls]
  - >> lwip_htonl
  - >> __2printf
  [Called By]
  - >> ipaddr_addr

  lwip_comm_default_ip_set (Thumb, 48 bytes, Stack size 8 bytes, lwip_comm.o(i.lwip_comm_default_ip_set))
  [Stack]

  - Max Depth = 8
  - Call Chain = lwip_comm_default_ip_set
  [Called By]
  - >> lwip_comm_init

  lwip_comm_init (Thumb, 130 bytes, Stack size 40 bytes, lwip_comm.o(i.lwip_comm_init))
  [Stack]

  - Max Depth = 496
  - Call Chain = lwip_comm_init ⇒ netif_add ⇒ netif_set_addr ⇒ netif_set_ipaddr ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> LAN8720_Init
  - >> ETH_Mem_Malloc
  - >> netif_set_up
  - >> netif_set_default
  - >> netif_add
  - >> lwip_init
  - >> dhcp_start
  - >> lwip_comm_mem_malloc
  - >> lwip_comm_default_ip_set
  [Called By]
  - >> main

  lwip_comm_mem_malloc (Thumb, 36 bytes, Stack size 8 bytes, lwip_comm.o(i.lwip_comm_mem_malloc))
  [Stack]

  - Max Depth = 40
  - Call Chain = lwip_comm_mem_malloc ⇒ mymalloc ⇒ my_mem_malloc
  [Calls]
  - >> mymalloc
  - >> memp_get_memorysize
  [Called By]
  - >> lwip_comm_init

  lwip_dhcp_process_handle (Thumb, 318 bytes, Stack size 32 bytes, lwip_comm.o(i.lwip_dhcp_process_handle))
  [Stack]

  - Max Depth = 360
  - Call Chain = lwip_dhcp_process_handle ⇒ dhcp_start ⇒ dhcp_discover ⇒ udp_sendto_if ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> dhcp_start
  - >> __2printf
  [Called By]
  - >> lwip_periodic_handle

  lwip_htonl (Thumb, 4 bytes, Stack size 0 bytes, def.o(i.lwip_htonl))
  [Called By]

  - >> ip4addr_aton
  - >> dhcp_recv
  - >> dhcp_parse_reply
  - >> dhcp_handle_ack
  - >> dhcp_create_msg
  - >> ipaddr_aton
  - >> tcp_output_segment
  - >> tcp_output_alloc_header
  - >> tcp_create_segment
  - >> tcp_send_empty_ack
  - >> tcp_rst
  - >> tcp_keepalive

  lwip_htons (Thumb, 4 bytes, Stack size 0 bytes, def.o(i.lwip_htons))
  [Called By]

  - >> tcp_write
  - >> tcp_output
  - >> udp_sendto_if
  - >> ip_reass
  - >> ip_frag
  - >> ip_output_if
  - >> etharp_raw
  - >> etharp_arp_input
  - >> tcp_output_segment
  - >> tcp_output_alloc_header
  - >> tcp_create_segment
  - >> tcp_receive
  - >> tcp_zero_window_probe
  - >> tcp_send_fin
  - >> tcp_rst
  - >> dns_send
  - >> dns_recv

  lwip_init (Thumb, 34 bytes, Stack size 8 bytes, init.o(i.lwip_init))
  [Stack]

  - Max Depth = 96
  - Call Chain = lwip_init ⇒ dns_init ⇒ ipaddr_addr ⇒ ipaddr_aton ⇒ __2printf
  [Calls]
  - >> udp_init
  - >> tcp_init
  - >> sys_timeouts_init
  - >> netif_init
  - >> memp_init
  - >> mem_init
  - >> dns_init
  [Called By]
  - >> lwip_comm_init

  lwip_net_is_ready (Thumb, 30 bytes, Stack size 0 bytes, main.o(i.lwip_net_is_ready))
  [Called By]

  - >> main

  lwip_ntohl (Thumb, 4 bytes, Stack size 0 bytes, def.o(i.lwip_ntohl))
  [Called By]

  - >> tcp_output
  - >> dhcp_select
  - >> dhcp_recv
  - >> dhcp_reboot
  - >> dhcp_parse_reply
  - >> dhcp_decline
  - >> tcp_input
  - >> tcp_output_segment
  - >> tcp_rexmit
  - >> tcp_receive
  - >> tcp_process
  - >> dns_recv

  lwip_ntohs (Thumb, 4 bytes, Stack size 0 bytes, def.o(i.lwip_ntohs))
  [Called By]

  - >> tcp_output
  - >> ip_reass_chain_frag_into_datagram_and_validate
  - >> udp_input
  - >> tcp_input
  - >> ip_reass
  - >> ip_frag
  - >> ip_input
  - >> tcp_receive
  - >> tcp_parseopt
  - >> tcp_zero_window_probe
  - >> tcp_send_fin

  lwip_periodic_handle (Thumb, 70 bytes, Stack size 8 bytes, lwip_comm.o(i.lwip_periodic_handle))
  [Stack]

  - Max Depth = 472
  - Call Chain = lwip_periodic_handle ⇒ dhcp_fine_tmr ⇒ dhcp_timeout ⇒ dhcp_bind ⇒ netif_set_ipaddr ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> sys_check_timeouts
  - >> dhcp_fine_tmr
  - >> dhcp_coarse_tmr
  - >> lwip_dhcp_process_handle
  [Called By]
  - >> main
  - >> net_tcp_send_stm32
  - >> net_eth_stm32_loop

  lwip_pkt_handle (Thumb, 6 bytes, Stack size 0 bytes, lwip_comm.o(i.lwip_pkt_handle))
  [Stack]

  - Max Depth = 168
  - Call Chain = lwip_pkt_handle ⇒ ethernetif_input ⇒ low_level_input ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> ethernetif_input
  [Called By]
  - >> ETH_IRQHandler

  main (Thumb, 420 bytes, Stack size 16 bytes, main.o(i.main))
  [Stack]

  - Max Depth = 512 + Unknown Stack Size
  - Call Chain = main ⇒ lwip_comm_init ⇒ netif_add ⇒ netif_set_addr ⇒ netif_set_ipaddr ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> xxl_mqtt_sdk_client_loop
  - >> xxl_mqtt_sdk_client_connect
  - >> uart_init
  - >> my_mem_init
  - >> lwip_periodic_handle
  - >> lwip_comm_init
  - >> dns_setserver
  - >> delay_ms
  - >> delay_init
  - >> TIM3_Init
  - >> Stm32_Clock_Init
  - >> SRAM_Init
  - >> RTC_Init
  - >> MY_ADC_Init
  - >> LED_Init
  - >> LCD_Init
  - >> KEY_Init
  - >> HAL_Init
  - >> BEEP_Init
  - >> lwip_net_is_ready
  - >> get_lwip_real_ip
  - >> get_lwip_real_gw
  - >> mqtt_init
  - >> __2printf
  [Address Reference Count : 1]
  - entry9a.o(.ARM.Collect$$$$0000000B)

  malloc (Thumb, 8 bytes, Stack size 0 bytes, main.o(i.malloc), UNUSED)
  [Calls]

  - >> mymalloc
  [Called By]
  - >> platform_malloc_stm32

  mem_free (Thumb, 110 bytes, Stack size 16 bytes, mem.o(i.mem_free))
  [Stack]

  - Max Depth = 56
  - Call Chain = mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> plug_holes
  - >> __2printf
  [Called By]
  - >> net_socket_close_stm32
  - >> pbuf_free

  mem_init (Thumb, 44 bytes, Stack size 8 bytes, mem.o(i.mem_init))
  [Stack]

  - Max Depth = 8
  - Call Chain = mem_init
  [Called By]
  - >> lwip_init

  mem_malloc (Thumb, 258 bytes, Stack size 32 bytes, mem.o(i.mem_malloc))
  [Stack]

  - Max Depth = 56
  - Call Chain = mem_malloc ⇒ __2printf
  [Calls]
  - >> __2printf
  [Called By]
  - >> net_tcp_socket_create_stm32
  - >> pbuf_alloc
  - >> dhcp_start

  mem_trim (Thumb, 240 bytes, Stack size 32 bytes, mem.o(i.mem_trim))
  [Stack]

  - Max Depth = 56
  - Call Chain = mem_trim ⇒ __2printf
  [Calls]
  - >> __2printf
  [Called By]
  - >> pbuf_realloc

  memp_free (Thumb, 40 bytes, Stack size 16 bytes, memp.o(i.memp_free))
  [Stack]

  - Max Depth = 40
  - Call Chain = memp_free ⇒ __2printf
  [Calls]
  - >> __2printf
  [Called By]
  - >> udp_remove
  - >> pbuf_free
  - >> sys_check_timeouts
  - >> ip_reass_dequeue_datagram
  - >> ip_frag_free_pbuf_custom_ref
  - >> tcp_input
  - >> tcp_slowtmr
  - >> tcp_seg_free
  - >> tcp_abandon
  - >> tcp_close_shutdown

  memp_get_memorysize (Thumb, 6 bytes, Stack size 0 bytes, memp.o(i.memp_get_memorysize))
  [Called By]

  - >> lwip_comm_mem_malloc

  memp_init (Thumb, 80 bytes, Stack size 20 bytes, memp.o(i.memp_init))
  [Stack]

  - Max Depth = 20
  - Call Chain = memp_init
  [Called By]
  - >> lwip_init

  memp_malloc (Thumb, 62 bytes, Stack size 8 bytes, memp.o(i.memp_malloc))
  [Stack]

  - Max Depth = 32
  - Call Chain = memp_malloc ⇒ __2printf
  [Calls]
  - >> __2printf
  [Called By]
  - >> udp_new
  - >> pbuf_alloc
  - >> ip_reass
  - >> ip_frag
  - >> sys_timeout
  - >> tcp_create_segment
  - >> tcp_alloc

  my_mem_free (Thumb, 80 bytes, Stack size 16 bytes, malloc.o(i.my_mem_free))
  [Stack]

  - Max Depth = 16
  - Call Chain = my_mem_free
  [Called By]
  - >> myfree

  my_mem_init (Thumb, 52 bytes, Stack size 16 bytes, malloc.o(i.my_mem_init))
  [Stack]

  - Max Depth = 16
  - Call Chain = my_mem_init
  [Calls]
  - >> mymemset
  [Called By]
  - >> main
  [Address Reference Count : 1]
  - malloc.o(.data)

  my_mem_malloc (Thumb, 132 bytes, Stack size 24 bytes, malloc.o(i.my_mem_malloc))
  [Stack]

  - Max Depth = 24
  - Call Chain = my_mem_malloc
  [Called By]
  - >> mymalloc

  my_mem_perused (Thumb, 48 bytes, Stack size 8 bytes, malloc.o(i.my_mem_perused))
  [Stack]

  - Max Depth = 8
  - Call Chain = my_mem_perused
  [Address Reference Count : 1]
  - malloc.o(.data)

  myfree (Thumb, 20 bytes, Stack size 0 bytes, malloc.o(i.myfree))
  [Stack]

  - Max Depth = 16
  - Call Chain = myfree ⇒ my_mem_free
  [Calls]
  - >> my_mem_free
  [Called By]
  - >> free

  mymalloc (Thumb, 28 bytes, Stack size 8 bytes, malloc.o(i.mymalloc))
  [Stack]

  - Max Depth = 32
  - Call Chain = mymalloc ⇒ my_mem_malloc
  [Calls]
  - >> my_mem_malloc
  [Called By]
  - >> ETH_Mem_Malloc
  - >> malloc
  - >> lwip_comm_mem_malloc

  mymemset (Thumb, 12 bytes, Stack size 0 bytes, malloc.o(i.mymemset))
  [Called By]

  - >> my_mem_init

  netif_add (Thumb, 96 bytes, Stack size 32 bytes, netif.o(i.netif_add))
  [Stack]

  - Max Depth = 456
  - Call Chain = netif_add ⇒ netif_set_addr ⇒ netif_set_ipaddr ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> netif_set_addr
  - >> __2printf
  [Called By]
  - >> lwip_comm_init

  netif_init (Thumb, 2 bytes, Stack size 0 bytes, netif.o(i.netif_init))
  [Called By]

  - >> lwip_init

  netif_set_addr (Thumb, 32 bytes, Stack size 16 bytes, netif.o(i.netif_set_addr))
  [Stack]

  - Max Depth = 424
  - Call Chain = netif_set_addr ⇒ netif_set_ipaddr ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> netif_set_netmask
  - >> netif_set_ipaddr
  - >> netif_set_gw
  [Called By]
  - >> netif_add

  netif_set_default (Thumb, 6 bytes, Stack size 0 bytes, netif.o(i.netif_set_default))
  [Called By]

  - >> lwip_comm_init

  netif_set_down (Thumb, 26 bytes, Stack size 0 bytes, netif.o(i.netif_set_down))
  [Stack]

  - Max Depth = 104
  - Call Chain = netif_set_down ⇒ etharp_cleanup_netif ⇒ etharp_free_entry ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> etharp_cleanup_netif
  [Called By]
  - >> dhcp_release
  - >> dhcp_recv

  netif_set_gw (Thumb, 8 bytes, Stack size 0 bytes, netif.o(i.netif_set_gw))
  [Called By]

  - >> dhcp_release
  - >> dhcp_recv
  - >> dhcp_bind
  - >> netif_set_addr

  netif_set_ipaddr (Thumb, 96 bytes, Stack size 16 bytes, netif.o(i.netif_set_ipaddr))
  [Stack]

  - Max Depth = 408
  - Call Chain = netif_set_ipaddr ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> tcp_abort
  [Called By]
  - >> dhcp_release
  - >> dhcp_recv
  - >> dhcp_bind
  - >> netif_set_addr

  netif_set_netmask (Thumb, 8 bytes, Stack size 0 bytes, netif.o(i.netif_set_netmask))
  [Called By]

  - >> dhcp_release
  - >> dhcp_recv
  - >> dhcp_bind
  - >> netif_set_addr

  netif_set_up (Thumb, 32 bytes, Stack size 0 bytes, netif.o(i.netif_set_up))
  [Stack]

  - Max Depth = 176
  - Call Chain = netif_set_up ⇒ etharp_request ⇒ etharp_raw ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> etharp_request
  [Called By]
  - >> lwip_comm_init
  - >> dhcp_bind

  pbuf_alloc (Thumb, 460 bytes, Stack size 40 bytes, pbuf.o(i.pbuf_alloc))
  [Stack]

  - Max Depth = 112
  - Call Chain = pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> pbuf_free
  - >> mem_malloc
  - >> memp_malloc
  - >> __2printf
  [Called By]
  - >> tcp_write
  - >> udp_sendto_if
  - >> dhcp_create_msg
  - >> ip_frag
  - >> icmp_input
  - >> icmp_send_response
  - >> low_level_input
  - >> etharp_query
  - >> etharp_raw
  - >> tcp_pbuf_prealloc
  - >> tcp_output_alloc_header
  - >> tcp_rst
  - >> tcp_enqueue_flags
  - >> dns_send

  pbuf_alloced_custom (Thumb, 100 bytes, Stack size 16 bytes, pbuf.o(i.pbuf_alloced_custom))
  [Stack]

  - Max Depth = 40
  - Call Chain = pbuf_alloced_custom ⇒ __2printf
  [Calls]
  - >> __2printf
  [Called By]
  - >> ip_frag

  pbuf_cat (Thumb, 96 bytes, Stack size 16 bytes, pbuf.o(i.pbuf_cat))
  [Stack]

  - Max Depth = 40
  - Call Chain = pbuf_cat ⇒ __2printf
  [Calls]
  - >> __2printf
  [Called By]
  - >> tcp_write
  - >> ip_reass
  - >> ip_frag
  - >> pbuf_chain

  pbuf_chain (Thumb, 18 bytes, Stack size 8 bytes, pbuf.o(i.pbuf_chain))
  [Stack]

  - Max Depth = 48
  - Call Chain = pbuf_chain ⇒ pbuf_cat ⇒ __2printf
  [Calls]
  - >> pbuf_ref
  - >> pbuf_cat
  [Called By]
  - >> udp_sendto_if

  pbuf_clen (Thumb, 18 bytes, Stack size 0 bytes, pbuf.o(i.pbuf_clen))
  [Called By]

  - >> tcp_write
  - >> ip_reass_free_complete_datagram
  - >> ip_reass_chain_frag_into_datagram_and_validate
  - >> ip_reass
  - >> tcp_receive
  - >> tcp_enqueue_flags

  pbuf_copy (Thumb, 240 bytes, Stack size 32 bytes, pbuf.o(i.pbuf_copy))
  [Stack]

  - Max Depth = 56
  - Call Chain = pbuf_copy ⇒ __2printf
  [Calls]
  - >> __2printf
  - >> __aeabi_memcpy
  [Called By]
  - >> icmp_input
  - >> etharp_query

  pbuf_copy_partial (Thumb, 126 bytes, Stack size 32 bytes, pbuf.o(i.pbuf_copy_partial))
  [Stack]

  - Max Depth = 56
  - Call Chain = pbuf_copy_partial ⇒ __2printf
  [Calls]
  - >> __2printf
  - >> __aeabi_memcpy
  [Called By]
  - >> dhcp_parse_reply
  - >> tcp_zero_window_probe
  - >> dns_recv

  pbuf_free (Thumb, 170 bytes, Stack size 16 bytes, pbuf.o(i.pbuf_free))
  [Stack]

  - Max Depth = 72
  - Call Chain = pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> memp_free
  - >> mem_free
  - >> __2printf
  [Called By]
  - >> ethernetif_input
  - >> tcp_recv_callback
  - >> tcp_pcb_purge
  - >> tcp_write
  - >> pbuf_alloc
  - >> ethernet_input
  - >> udp_sendto_if
  - >> dhcp_recv
  - >> dhcp_delete_msg
  - >> ipfrag_free_pbuf_custom
  - >> ip_reass_free_complete_datagram
  - >> ip_reass_chain_frag_into_datagram_and_validate
  - >> udp_input
  - >> tcp_input
  - >> pbuf_realloc
  - >> ip_reass
  - >> ip_frag
  - >> icmp_input
  - >> icmp_send_response
  - >> ip_input
  - >> etharp_query
  - >> etharp_update_arp_entry
  - >> etharp_raw
  - >> etharp_free_entry
  - >> etharp_arp_input
  - >> tcp_create_segment
  - >> tcp_send_empty_ack
  - >> tcp_zero_window_probe
  - >> tcp_rst
  - >> tcp_keepalive
  - >> tcp_seg_free
  - >> tcp_recv_null
  - >> dns_send
  - >> dns_recv

  pbuf_header (Thumb, 138 bytes, Stack size 16 bytes, pbuf.o(i.pbuf_header))
  [Stack]

  - Max Depth = 40
  - Call Chain = pbuf_header ⇒ __2printf
  [Calls]
  - >> __2printf
  [Called By]
  - >> ethernet_input
  - >> udp_sendto_if
  - >> udp_input
  - >> tcp_input
  - >> ip_reass
  - >> ip_output_if
  - >> icmp_input
  - >> etharp_output
  - >> tcp_create_segment
  - >> tcp_receive

  pbuf_realloc (Thumb, 186 bytes, Stack size 32 bytes, pbuf.o(i.pbuf_realloc))
  [Stack]

  - Max Depth = 104
  - Call Chain = pbuf_realloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> pbuf_free
  - >> mem_trim
  - >> __2printf
  [Called By]
  - >> dhcp_renew
  - >> dhcp_release
  - >> dhcp_select
  - >> dhcp_reboot
  - >> dhcp_rebind
  - >> dhcp_discover
  - >> dhcp_decline
  - >> ip_input
  - >> tcp_receive
  - >> dns_send

  pbuf_ref (Thumb, 12 bytes, Stack size 0 bytes, pbuf.o(i.pbuf_ref))
  [Called By]

  - >> ip_frag
  - >> etharp_query
  - >> pbuf_chain

  platform_check_port_in_use_stm32 (Thumb, 4 bytes, Stack size 0 bytes, platform_port.o(i.platform_check_port_in_use_stm32))
  [Called By]

  - >> net_interface_bind

  platform_deinit_stm32 (Thumb, 2 bytes, Stack size 0 bytes, platform_port.o(i.platform_deinit_stm32))
  [Called By]

  - >> platform_deinit

  platform_init_stm32 (Thumb, 4 bytes, Stack size 0 bytes, platform_port.o(i.platform_init_stm32))
  [Called By]

  - >> platform_init

  platform_mutex_create_stm32 (Thumb, 6 bytes, Stack size 0 bytes, platform_port.o(i.platform_mutex_create_stm32))
  [Called By]

  - >> platform_mutex_create

  platform_sem_create_stm32 (Thumb, 6 bytes, Stack size 0 bytes, platform_port.o(i.platform_sem_create_stm32))
  [Called By]

  - >> net_interface_init

  platform_sem_destroy_stm32 (Thumb, 2 bytes, Stack size 0 bytes, platform_port.o(i.platform_sem_destroy_stm32))
  [Called By]

  - >> net_interface_deinit.part.0

  platform_sem_timedwait_stm32 (Thumb, 4 bytes, Stack size 0 bytes, platform_port.o(i.platform_sem_timedwait_stm32))
  [Called By]

  - >> platform_sem_timedwait

  raw_input (Thumb, 104 bytes, Stack size 32 bytes, raw.o(i.raw_input))
  [Stack]

  - Max Depth = 32
  - Call Chain = raw_input
  [Called By]
  - >> ip_input

  read_addr (Thumb, 4 bytes, Stack size 0 bytes, usmart.o(i.read_addr))
  [Address Reference Count : 1]

  - usmart_config.o(.data)

  sys_check_timeouts (Thumb, 74 bytes, Stack size 24 bytes, timers.o(i.sys_check_timeouts))
  [Stack]

  - Max Depth = 64
  - Call Chain = sys_check_timeouts ⇒ memp_free ⇒ __2printf
  [Calls]
  - >> memp_free
  - >> sys_now
  [Called By]
  - >> lwip_periodic_handle

  sys_now (Thumb, 6 bytes, Stack size 0 bytes, sys_arch.o(i.sys_now))
  [Called By]

  - >> sys_check_timeouts
  - >> sys_timeouts_init

  sys_timeout (Thumb, 104 bytes, Stack size 16 bytes, timers.o(i.sys_timeout))
  [Stack]

  - Max Depth = 48
  - Call Chain = sys_timeout ⇒ memp_malloc ⇒ __2printf
  [Calls]
  - >> memp_malloc
  - >> __2printf
  [Called By]
  - >> tcpip_tcp_timer
  - >> ip_reass_timer
  - >> dns_timer
  - >> dhcp_timer_fine
  - >> dhcp_timer_coarse
  - >> arp_timer
  - >> tcp_timer_needed
  - >> sys_timeouts_init

  sys_timeouts_init (Thumb, 70 bytes, Stack size 8 bytes, timers.o(i.sys_timeouts_init))
  [Stack]

  - Max Depth = 56
  - Call Chain = sys_timeouts_init ⇒ sys_timeout ⇒ memp_malloc ⇒ __2printf
  [Calls]
  - >> sys_now
  - >> sys_timeout
  [Called By]
  - >> lwip_init

  tcp_abandon (Thumb, 158 bytes, Stack size 40 bytes, tcp.o(i.tcp_abandon))
  [Stack]

  - Max Depth = 392
  - Call Chain = tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> memp_free
  - >> tcp_rst
  - >> tcp_segs_free
  - >> tcp_pcb_remove
  - >> __2printf
  [Called By]
  - >> tcp_abort
  - >> tcp_listen_input

  tcp_abort (Thumb, 6 bytes, Stack size 0 bytes, tcp.o(i.tcp_abort))
  [Stack]

  - Max Depth = 392
  - Call Chain = tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> tcp_abandon
  [Called By]
  - >> netif_set_ipaddr
  - >> tcp_input
  - >> tcp_process
  - >> tcp_alloc

  tcp_alloc (Thumb, 236 bytes, Stack size 24 bytes, tcp.o(i.tcp_alloc))
  [Stack]

  - Max Depth = 416
  - Call Chain = tcp_alloc ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> tcp_abort
  - >> memp_malloc
  - >> tcp_next_iss
  - >> __aeabi_memclr4
  [Called By]
  - >> tcp_new
  - >> tcp_listen_input

  tcp_arg (Thumb, 4 bytes, Stack size 0 bytes, tcp.o(i.tcp_arg))
  [Called By]

  - >> net_tcp_socket_create_stm32

  tcp_close (Thumb, 20 bytes, Stack size 0 bytes, tcp.o(i.tcp_close))
  [Called By]

  - >> net_socket_close_stm32
  - >> net_tcp_socket_create_stm32
  - >> tcp_recv_callback
  - >> tcp_recv_null

  tcp_connect (Thumb, 262 bytes, Stack size 32 bytes, tcp.o(i.tcp_connect))
  [Stack]

  - Max Depth = 368
  - Call Chain = tcp_connect ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> tcp_output
  - >> ip_route
  - >> tcp_timer_needed
  - >> tcp_enqueue_flags
  - >> tcp_next_iss
  - >> tcp_eff_send_mss
  - >> tcp_new_port
  - >> __2printf
  [Called By]
  - >> net_tcp_connect_stm32

  tcp_eff_send_mss (Thumb, 32 bytes, Stack size 8 bytes, tcp.o(i.tcp_eff_send_mss))
  [Stack]

  - Max Depth = 16
  - Call Chain = tcp_eff_send_mss ⇒ ip_route
  [Calls]
  - >> ip_route
  [Called By]
  - >> tcp_connect
  - >> tcp_output_segment
  - >> tcp_process
  - >> tcp_listen_input

  tcp_enqueue_flags (Thumb, 286 bytes, Stack size 32 bytes, tcp_out.o(i.tcp_enqueue_flags))
  [Stack]

  - Max Depth = 144
  - Call Chain = tcp_enqueue_flags ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> pbuf_alloc
  - >> pbuf_clen
  - >> tcp_create_segment
  - >> __2printf
  [Called By]
  - >> tcp_connect
  - >> tcp_listen_input
  - >> tcp_send_fin

  tcp_fasttmr (Thumb, 88 bytes, Stack size 24 bytes, tcp.o(i.tcp_fasttmr))
  [Stack]

  - Max Depth = 408
  - Call Chain = tcp_fasttmr ⇒ tcp_process_refused_data ⇒ tcp_recv_null ⇒ tcp_recved ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> tcp_output
  - >> tcp_process_refused_data
  [Called By]
  - >> tcp_tmr

  tcp_init (Thumb, 2 bytes, Stack size 0 bytes, tcp.o(i.tcp_init))
  [Called By]

  - >> lwip_init

  tcp_input (Thumb, 890 bytes, Stack size 40 bytes, tcp_in.o(i.tcp_input))
  [Stack]

  - Max Depth = 480
  - Call Chain = tcp_input ⇒ tcp_process ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> memp_free
  - >> tcp_output
  - >> tcp_abort
  - >> pbuf_free
  - >> lwip_ntohl
  - >> lwip_ntohs
  - >> pbuf_header
  - >> ip4_addr_isbroadcast
  - >> tcp_timewait_input
  - >> tcp_process
  - >> tcp_listen_input
  - >> tcp_rst
  - >> tcp_recv_null
  - >> tcp_process_refused_data
  - >> tcp_pcb_remove
  - >> __2printf
  [Called By]
  - >> ip_input

  tcp_keepalive (Thumb, 60 bytes, Stack size 24 bytes, tcp_out.o(i.tcp_keepalive))
  [Stack]

  - Max Depth = 304
  - Call Chain = tcp_keepalive ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> lwip_htonl
  - >> pbuf_free
  - >> ip_output
  - >> tcp_output_alloc_header
  [Called By]
  - >> tcp_slowtmr

  tcp_new (Thumb, 6 bytes, Stack size 0 bytes, tcp.o(i.tcp_new))
  [Stack]

  - Max Depth = 416
  - Call Chain = tcp_new ⇒ tcp_alloc ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> tcp_alloc
  [Called By]
  - >> net_tcp_socket_create_stm32

  tcp_next_iss (Thumb, 12 bytes, Stack size 0 bytes, tcp.o(i.tcp_next_iss))
  [Called By]

  - >> tcp_connect
  - >> tcp_alloc

  tcp_output (Thumb, 434 bytes, Stack size 32 bytes, tcp_out.o(i.tcp_output))
  [Stack]

  - Max Depth = 336
  - Call Chain = tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> lwip_ntohl
  - >> lwip_ntohs
  - >> lwip_htons
  - >> tcp_output_segment
  - >> tcp_send_empty_ack
  - >> tcp_seg_free
  - >> __2printf
  [Called By]
  - >> net_tcp_send_stm32
  - >> tcp_recved
  - >> tcp_connect
  - >> tcp_input
  - >> tcp_timewait_input
  - >> tcp_listen_input
  - >> tcp_rexmit_rto
  - >> tcp_slowtmr
  - >> tcp_pcb_remove
  - >> tcp_fasttmr
  - >> tcp_close_shutdown

  tcp_pcb_purge (Thumb, 58 bytes, Stack size 16 bytes, tcp.o(i.tcp_pcb_purge))
  [Stack]

  - Max Depth = 104
  - Call Chain = tcp_pcb_purge ⇒ tcp_segs_free ⇒ tcp_seg_free ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> pbuf_free
  - >> tcp_segs_free
  [Called By]
  - >> tcp_process
  - >> tcp_slowtmr
  - >> tcp_pcb_remove
  - >> tcp_close_shutdown

  tcp_pcb_remove (Thumb, 126 bytes, Stack size 16 bytes, tcp.o(i.tcp_pcb_remove))
  [Stack]

  - Max Depth = 352
  - Call Chain = tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> tcp_pcb_purge
  - >> tcp_output
  - >> __2printf
  [Called By]
  - >> tcp_input
  - >> tcp_abandon
  - >> tcp_close_shutdown

  tcp_process_refused_data (Thumb, 100 bytes, Stack size 24 bytes, tcp.o(i.tcp_process_refused_data))
  [Stack]

  - Max Depth = 384
  - Call Chain = tcp_process_refused_data ⇒ tcp_recv_null ⇒ tcp_recved ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> tcp_recv_null
  [Called By]
  - >> tcp_input
  - >> tcp_fasttmr

  tcp_recv (Thumb, 30 bytes, Stack size 16 bytes, tcp.o(i.tcp_recv))
  [Stack]

  - Max Depth = 40
  - Call Chain = tcp_recv ⇒ __2printf
  [Calls]
  - >> __2printf
  [Called By]
  - >> net_tcp_socket_create_stm32

  tcp_recv_null (Thumb, 36 bytes, Stack size 8 bytes, tcp.o(i.tcp_recv_null))
  [Stack]

  - Max Depth = 360
  - Call Chain = tcp_recv_null ⇒ tcp_recved ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> tcp_close
  - >> tcp_recved
  - >> pbuf_free
  [Called By]
  - >> tcp_input
  - >> tcp_process_refused_data
  [Address Reference Count : 1]
  - tcp.o(i.tcp_alloc)

  tcp_recved (Thumb, 104 bytes, Stack size 16 bytes, tcp.o(i.tcp_recved))
  [Stack]

  - Max Depth = 352
  - Call Chain = tcp_recved ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> tcp_output
  - >> tcp_update_rcv_ann_wnd
  - >> __2printf
  [Called By]
  - >> tcp_recv_callback
  - >> tcp_recv_null

  tcp_rexmit (Thumb, 82 bytes, Stack size 24 bytes, tcp_out.o(i.tcp_rexmit))
  [Stack]

  - Max Depth = 24
  - Call Chain = tcp_rexmit
  [Calls]
  - >> lwip_ntohl
  [Called By]
  - >> tcp_rexmit_fast
  - >> tcp_process

  tcp_rexmit_fast (Thumb, 88 bytes, Stack size 8 bytes, tcp_out.o(i.tcp_rexmit_fast))
  [Stack]

  - Max Depth = 32
  - Call Chain = tcp_rexmit_fast ⇒ tcp_rexmit
  [Calls]
  - >> tcp_rexmit
  [Called By]
  - >> tcp_receive

  tcp_rexmit_rto (Thumb, 46 bytes, Stack size 0 bytes, tcp_out.o(i.tcp_rexmit_rto))
  [Stack]

  - Max Depth = 336
  - Call Chain = tcp_rexmit_rto ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> tcp_output
  [Called By]
  - >> tcp_slowtmr

  tcp_rst (Thumb, 138 bytes, Stack size 48 bytes, tcp_out.o(i.tcp_rst))
  [Stack]

  - Max Depth = 328
  - Call Chain = tcp_rst ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> lwip_htonl
  - >> pbuf_free
  - >> pbuf_alloc
  - >> ip_output
  - >> lwip_htons
  - >> __2printf
  [Called By]
  - >> tcp_input
  - >> tcp_timewait_input
  - >> tcp_process
  - >> tcp_listen_input
  - >> tcp_slowtmr
  - >> tcp_abandon
  - >> tcp_close_shutdown

  tcp_seg_free (Thumb, 28 bytes, Stack size 8 bytes, tcp.o(i.tcp_seg_free))
  [Stack]

  - Max Depth = 80
  - Call Chain = tcp_seg_free ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> memp_free
  - >> pbuf_free
  [Called By]
  - >> tcp_output
  - >> tcp_create_segment
  - >> tcp_receive
  - >> tcp_process
  - >> tcp_segs_free

  tcp_segs_free (Thumb, 18 bytes, Stack size 8 bytes, tcp.o(i.tcp_segs_free))
  [Stack]

  - Max Depth = 88
  - Call Chain = tcp_segs_free ⇒ tcp_seg_free ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> tcp_seg_free
  [Called By]
  - >> tcp_pcb_purge
  - >> tcp_write
  - >> tcp_abandon

  tcp_send_empty_ack (Thumb, 72 bytes, Stack size 24 bytes, tcp_out.o(i.tcp_send_empty_ack))
  [Stack]

  - Max Depth = 304
  - Call Chain = tcp_send_empty_ack ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> lwip_htonl
  - >> pbuf_free
  - >> ip_output
  - >> tcp_output_alloc_header
  [Called By]
  - >> tcp_output
  - >> tcp_receive

  tcp_send_fin (Thumb, 70 bytes, Stack size 16 bytes, tcp_out.o(i.tcp_send_fin), UNUSED)
  [Calls]

  - >> lwip_ntohs
  - >> lwip_htons
  - >> tcp_enqueue_flags
  [Called By]
  - >> tcp_close_shutdown

  tcp_slowtmr (Thumb, 754 bytes, Stack size 40 bytes, tcp.o(i.tcp_slowtmr))
  [Stack]

  - Max Depth = 376
  - Call Chain = tcp_slowtmr ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> tcp_pcb_purge
  - >> memp_free
  - >> tcp_output
  - >> tcp_zero_window_probe
  - >> tcp_rst
  - >> tcp_rexmit_rto
  - >> tcp_keepalive
  - >> __2printf
  [Called By]
  - >> tcp_tmr

  tcp_timer_needed (Thumb, 36 bytes, Stack size 0 bytes, timers.o(i.tcp_timer_needed))
  [Stack]

  - Max Depth = 48
  - Call Chain = tcp_timer_needed ⇒ sys_timeout ⇒ memp_malloc ⇒ __2printf
  [Calls]
  - >> sys_timeout
  [Called By]
  - >> tcp_connect
  - >> tcp_process
  - >> tcp_listen_input
  - >> tcp_close_shutdown

  tcp_tmr (Thumb, 28 bytes, Stack size 8 bytes, tcp.o(i.tcp_tmr))
  [Stack]

  - Max Depth = 416
  - Call Chain = tcp_tmr ⇒ tcp_fasttmr ⇒ tcp_process_refused_data ⇒ tcp_recv_null ⇒ tcp_recved ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> tcp_slowtmr
  - >> tcp_fasttmr
  [Called By]
  - >> tcpip_tcp_timer

  tcp_update_rcv_ann_wnd (Thumb, 76 bytes, Stack size 16 bytes, tcp.o(i.tcp_update_rcv_ann_wnd))
  [Stack]

  - Max Depth = 40
  - Call Chain = tcp_update_rcv_ann_wnd ⇒ __2printf
  [Calls]
  - >> __2printf
  [Called By]
  - >> tcp_recved
  - >> tcp_receive

  tcp_write (Thumb, 928 bytes, Stack size 96 bytes, tcp_out.o(i.tcp_write))
  [Stack]

  - Max Depth = 232
  - Call Chain = tcp_write ⇒ tcp_pbuf_prealloc ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> pbuf_free
  - >> pbuf_alloc
  - >> lwip_htons
  - >> pbuf_clen
  - >> pbuf_cat
  - >> tcp_write_checks
  - >> tcp_pbuf_prealloc
  - >> tcp_create_segment
  - >> tcp_segs_free
  - >> __2printf
  - >> __aeabi_memcpy
  [Called By]
  - >> net_tcp_send_stm32

  tcp_zero_window_probe (Thumb, 146 bytes, Stack size 32 bytes, tcp_out.o(i.tcp_zero_window_probe))
  [Stack]

  - Max Depth = 312
  - Call Chain = tcp_zero_window_probe ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> pbuf_free
  - >> lwip_ntohs
  - >> ip_output
  - >> lwip_htons
  - >> pbuf_copy_partial
  - >> tcp_output_alloc_header
  [Called By]
  - >> tcp_slowtmr

  uart_init (Thumb, 44 bytes, Stack size 8 bytes, usart.o(i.uart_init))
  [Stack]

  - Max Depth = 96
  - Call Chain = uart_init ⇒ HAL_UART_Init ⇒ HAL_UART_MspInit ⇒ HAL_GPIO_Init
  [Calls]
  - >> HAL_UART_Receive_IT
  - >> HAL_UART_Init
  [Called By]
  - >> main

  udp_bind (Thumb, 192 bytes, Stack size 40 bytes, udp.o(i.udp_bind))
  [Stack]

  - Max Depth = 64
  - Call Chain = udp_bind ⇒ __2printf
  [Calls]
  - >> __2printf
  [Called By]
  - >> udp_connect
  - >> dhcp_start
  - >> udp_sendto_if
  - >> dns_init

  udp_connect (Thumb, 70 bytes, Stack size 16 bytes, udp.o(i.udp_connect))
  [Stack]

  - Max Depth = 80
  - Call Chain = udp_connect ⇒ udp_bind ⇒ __2printf
  [Calls]
  - >> udp_bind
  [Called By]
  - >> dhcp_start
  - >> dns_send

  udp_init (Thumb, 2 bytes, Stack size 0 bytes, udp.o(i.udp_init))
  [Called By]

  - >> lwip_init

  udp_input (Thumb, 390 bytes, Stack size 40 bytes, udp.o(i.udp_input))
  [Stack]

  - Max Depth = 360
  - Call Chain = udp_input ⇒ icmp_dest_unreach ⇒ icmp_send_response ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> pbuf_free
  - >> lwip_ntohs
  - >> icmp_dest_unreach
  - >> pbuf_header
  - >> ip4_addr_isbroadcast
  - >> __2printf
  [Called By]
  - >> ip_input

  udp_new (Thumb, 26 bytes, Stack size 8 bytes, udp.o(i.udp_new))
  [Stack]

  - Max Depth = 40
  - Call Chain = udp_new ⇒ memp_malloc ⇒ __2printf
  [Calls]
  - >> memp_malloc
  - >> __aeabi_memclr4
  [Called By]
  - >> dhcp_start
  - >> dns_init

  udp_recv (Thumb, 6 bytes, Stack size 0 bytes, udp.o(i.udp_recv))
  [Called By]

  - >> dhcp_start
  - >> dns_init

  udp_remove (Thumb, 40 bytes, Stack size 0 bytes, udp.o(i.udp_remove))
  [Stack]

  - Max Depth = 40
  - Call Chain = udp_remove ⇒ memp_free ⇒ __2printf
  [Calls]
  - >> memp_free
  [Called By]
  - >> dhcp_start
  - >> dhcp_stop

  udp_sendto (Thumb, 40 bytes, Stack size 24 bytes, udp.o(i.udp_sendto))
  [Stack]

  - Max Depth = 312
  - Call Chain = udp_sendto ⇒ udp_sendto_if ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> udp_sendto_if
  - >> ip_route
  [Called By]
  - >> dns_send

  udp_sendto_if (Thumb, 202 bytes, Stack size 48 bytes, udp.o(i.udp_sendto_if))
  [Stack]

  - Max Depth = 288
  - Call Chain = udp_sendto_if ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> udp_bind
  - >> pbuf_free
  - >> pbuf_alloc
  - >> ip_output_if
  - >> pbuf_header
  - >> lwip_htons
  - >> pbuf_chain
  - >> __2printf
  [Called By]
  - >> dhcp_renew
  - >> dhcp_release
  - >> dhcp_select
  - >> dhcp_reboot
  - >> dhcp_rebind
  - >> dhcp_discover
  - >> dhcp_decline
  - >> udp_sendto

  usmart_cmd_rec (Thumb, 144 bytes, Stack size 96 bytes, usmart.o(i.usmart_cmd_rec))
  [Stack]

  - Max Depth = 364
  - Call Chain = usmart_cmd_rec ⇒ usmart_get_fparam ⇒ usmart_str2num
  [Calls]
  - >> usmart_strcmp
  - >> usmart_get_fparam
  - >> usmart_get_fname
  [Address Reference Count : 1]
  - usmart_config.o(.data)

  usmart_exe (Thumb, 510 bytes, Stack size 128 bytes, usmart.o(i.usmart_exe))
  [Stack]

  - Max Depth = 188
  - Call Chain = usmart_exe ⇒ usmart_get_fname
  [Calls]
  - >> usmart_get_parmpos
  - >> usmart_get_fname
  - >> usmart_reset_runtime
  - >> usmart_get_runtime
  - >> __2printf
  [Address Reference Count : 1]
  - usmart_config.o(.data)

  usmart_get_aparm (Thumb, 164 bytes, Stack size 20 bytes, usmart_str.o(i.usmart_get_aparm))
  [Stack]

  - Max Depth = 20
  - Call Chain = usmart_get_aparm
  [Called By]
  - >> usmart_get_fparam
  - >> usmart_sys_cmd_exe

  usmart_get_cmdname (Thumb, 46 bytes, Stack size 12 bytes, usmart_str.o(i.usmart_get_cmdname))
  [Stack]

  - Max Depth = 12
  - Call Chain = usmart_get_cmdname
  [Called By]
  - >> usmart_sys_cmd_exe

  usmart_get_fname (Thumb, 352 bytes, Stack size 60 bytes, usmart_str.o(i.usmart_get_fname))
  [Stack]

  - Max Depth = 60
  - Call Chain = usmart_get_fname
  [Calls]
  - >> usmart_strcmp
  - >> usmart_search_nextc
  [Called By]
  - >> usmart_sys_cmd_exe
  - >> usmart_exe
  - >> usmart_cmd_rec

  usmart_get_fparam (Thumb, 202 bytes, Stack size 240 bytes, usmart_str.o(i.usmart_get_fparam))
  [Stack]

  - Max Depth = 268
  - Call Chain = usmart_get_fparam ⇒ usmart_str2num
  [Calls]
  - >> usmart_str2num
  - >> usmart_get_parmpos
  - >> usmart_get_aparm
  - >> usmart_strlen
  - >> usmart_strcopy
  [Called By]
  - >> usmart_cmd_rec

  usmart_get_parmpos (Thumb, 30 bytes, Stack size 8 bytes, usmart_str.o(i.usmart_get_parmpos))
  [Stack]

  - Max Depth = 8
  - Call Chain = usmart_get_parmpos
  [Called By]
  - >> usmart_get_fparam
  - >> usmart_exe

  usmart_get_runtime (Thumb, 38 bytes, Stack size 0 bytes, usmart.o(i.usmart_get_runtime))
  [Called By]

  - >> usmart_exe

  usmart_init (Thumb, 36 bytes, Stack size 8 bytes, usmart.o(i.usmart_init))
  [Stack]

  - Max Depth = 64
  - Call Chain = usmart_init ⇒ Timer4_Init ⇒ HAL_TIM_Base_Init ⇒ HAL_TIM_Base_MspInit ⇒ HAL_NVIC_SetPriority
  [Calls]
  - >> Timer4_Init
  [Address Reference Count : 1]
  - usmart_config.o(.data)

  usmart_pow (Thumb, 16 bytes, Stack size 0 bytes, usmart_str.o(i.usmart_pow))
  [Called By]

  - >> usmart_str2num

  usmart_reset_runtime (Thumb, 32 bytes, Stack size 0 bytes, usmart.o(i.usmart_reset_runtime))
  [Called By]

  - >> usmart_exe

  usmart_scan (Thumb, 94 bytes, Stack size 24 bytes, usmart.o(i.usmart_scan))
  [Stack]

  - Max Depth = 156
  - Call Chain = usmart_scan ⇒ usmart_sys_cmd_exe ⇒ usmart_get_fname
  [Calls]
  - >> usmart_sys_cmd_exe
  - >> __2printf
  [Address Reference Count : 1]
  - usmart_config.o(.data)

  usmart_search_nextc (Thumb, 16 bytes, Stack size 0 bytes, usmart_str.o(i.usmart_search_nextc))
  [Calls]

  - >> usmart_search_nextc
  [Called By]
  - >> usmart_get_fname
  - >> usmart_search_nextc

  usmart_str2num (Thumb, 214 bytes, Stack size 28 bytes, usmart_str.o(i.usmart_str2num))
  [Stack]

  - Max Depth = 28
  - Call Chain = usmart_str2num
  [Calls]
  - >> usmart_pow
  [Called By]
  - >> usmart_get_fparam
  - >> usmart_sys_cmd_exe

  usmart_strcmp (Thumb, 24 bytes, Stack size 0 bytes, usmart_str.o(i.usmart_strcmp))
  [Calls]

  - >> usmart_strcmp
  [Called By]
  - >> usmart_strcmp
  - >> usmart_get_fname
  - >> usmart_sys_cmd_exe
  - >> usmart_cmd_rec

  usmart_strcopy (Thumb, 18 bytes, Stack size 0 bytes, usmart_str.o(i.usmart_strcopy))
  [Calls]

  - >> usmart_strcopy
  [Called By]
  - >> usmart_get_fparam
  - >> usmart_strcopy

  usmart_strlen (Thumb, 18 bytes, Stack size 0 bytes, usmart_str.o(i.usmart_strlen))
  [Called By]

  - >> usmart_get_fparam

  usmart_sys_cmd_exe (Thumb, 1458 bytes, Stack size 72 bytes, usmart.o(i.usmart_sys_cmd_exe))
  [Stack]

  - Max Depth = 132
  - Call Chain = usmart_sys_cmd_exe ⇒ usmart_get_fname
  [Calls]
  - >> usmart_strcmp
  - >> usmart_str2num
  - >> usmart_get_fname
  - >> usmart_get_cmdname
  - >> usmart_get_aparm
  - >> __2printf
  [Called By]
  - >> usmart_scan

  write_addr (Thumb, 4 bytes, Stack size 0 bytes, usmart.o(i.write_addr))
  [Address Reference Count : 1]

  - usmart_config.o(.data)

  ### Local Symbols

  mqtt_conn_callback (Thumb, 52 bytes, Stack size 8 bytes, main.o(i.mqtt_conn_callback))
  [Stack]

  - Max Depth = 480 + Unknown Stack Size
  - Call Chain = mqtt_conn_callback ⇒ xxl_mqtt_sdk_client_subscribe ⇒ mqtt_client_subscribe ⇒ net_adapter_send ⇒ net_interface_send_to ⇒ net_tcp_send_stm32 ⇒ lwip_periodic_handle ⇒ dhcp_fine_tmr ⇒ dhcp_timeout ⇒ dhcp_bind ⇒ netif_set_ipaddr ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> xxl_mqtt_sdk_client_subscribe
  - >> __2printf
  [Address Reference Count : 1]
  - main.o(i.mqtt_init)

  mqtt_init (Thumb, 74 bytes, Stack size 96 bytes, main.o(i.mqtt_init))
  [Stack]

  - Max Depth = 136 + Unknown Stack Size
  - Call Chain = mqtt_init ⇒ xxl_mqtt_sdk_global_init ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> xxl_mqtt_sdk_global_init
  - >> xxl_mqtt_sdk_client_create
  - >> __2printf
  - >> __aeabi_memclr4
  [Called By]
  - >> main

  mqtt_msg_callback (Thumb, 26 bytes, Stack size 0 bytes, main.o(i.mqtt_msg_callback))
  [Stack]

  - Max Depth = 24
  - Call Chain = mqtt_msg_callback ⇒ __2printf
  [Calls]
  - >> __2printf
  [Address Reference Count : 1]
  - main.o(i.mqtt_init)

  __NVIC_SetPriority (Thumb, 32 bytes, Stack size 0 bytes, stm32f4xx_hal_cortex.o(i.__NVIC_SetPriority))
  [Called By]

  - >> HAL_SYSTICK_Config
  - >> HAL_NVIC_SetPriority

  UART_DMAAbortOnError (Thumb, 16 bytes, Stack size 8 bytes, stm32f4xx_hal_uart.o(i.UART_DMAAbortOnError))
  [Stack]

  - Max Depth = 8
  - Call Chain = UART_DMAAbortOnError
  [Calls]
  - >> HAL_UART_ErrorCallback
  [Address Reference Count : 1]
  - stm32f4xx_hal_uart.o(i.HAL_UART_IRQHandler)

  UART_EndRxTransfer (Thumb, 28 bytes, Stack size 0 bytes, stm32f4xx_hal_uart.o(i.UART_EndRxTransfer))
  [Called By]

  - >> HAL_UART_IRQHandler

  UART_Receive_IT (Thumb, 150 bytes, Stack size 8 bytes, stm32f4xx_hal_uart.o(i.UART_Receive_IT))
  [Stack]

  - Max Depth = 20
  - Call Chain = UART_Receive_IT ⇒ HAL_UART_RxCpltCallback
  [Calls]
  - >> HAL_UART_RxCpltCallback
  [Called By]
  - >> HAL_UART_IRQHandler

  UART_SetConfig (Thumb, 676 bytes, Stack size 24 bytes, stm32f4xx_hal_uart.o(i.UART_SetConfig))
  [Stack]

  - Max Depth = 24
  - Call Chain = UART_SetConfig
  [Calls]
  - >> HAL_RCC_GetPCLK2Freq
  - >> HAL_RCC_GetPCLK1Freq
  [Called By]
  - >> HAL_UART_Init

  UART_Transmit_IT (Thumb, 98 bytes, Stack size 0 bytes, stm32f4xx_hal_uart.o(i.UART_Transmit_IT))
  [Called By]

  - >> HAL_UART_IRQHandler

  ADC_Init (Thumb, 284 bytes, Stack size 8 bytes, stm32f4xx_hal_adc.o(i.ADC_Init))
  [Stack]

  - Max Depth = 8
  - Call Chain = ADC_Init
  [Called By]
  - >> HAL_ADC_Init

  ETH_Delay (Thumb, 28 bytes, Stack size 8 bytes, stm32f4xx_hal_eth.o(i.ETH_Delay))
  [Stack]

  - Max Depth = 8
  - Call Chain = ETH_Delay
  [Called By]
  - >> HAL_ETH_Start
  - >> ETH_FlushTransmitFIFO

  ETH_FlushTransmitFIFO (Thumb, 46 bytes, Stack size 16 bytes, stm32f4xx_hal_eth.o(i.ETH_FlushTransmitFIFO))
  [Stack]

  - Max Depth = 24
  - Call Chain = ETH_FlushTransmitFIFO ⇒ ETH_Delay
  [Calls]
  - >> ETH_Delay
  [Called By]
  - >> HAL_ETH_Start

  ETH_MACDMAConfig (Thumb, 276 bytes, Stack size 24 bytes, stm32f4xx_hal_eth.o(i.ETH_MACDMAConfig))
  [Stack]

  - Max Depth = 40
  - Call Chain = ETH_MACDMAConfig ⇒ HAL_Delay
  [Calls]
  - >> HAL_Delay
  [Called By]
  - >> HAL_ETH_Init

  etharp_arp_input (Thumb, 252 bytes, Stack size 40 bytes, etharp.o(i.etharp_arp_input))
  [Stack]

  - Max Depth = 352
  - Call Chain = etharp_arp_input ⇒ dhcp_arp_reply ⇒ dhcp_decline ⇒ udp_sendto_if ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> pbuf_free
  - >> lwip_htons
  - >> dhcp_arp_reply
  - >> etharp_update_arp_entry
  - >> __2printf
  [Called By]
  - >> ethernet_input

  etharp_find_entry (Thumb, 332 bytes, Stack size 64 bytes, etharp.o(i.etharp_find_entry))
  [Stack]

  - Max Depth = 152
  - Call Chain = etharp_find_entry ⇒ etharp_free_entry ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> etharp_free_entry
  - >> __2printf
  [Called By]
  - >> etharp_query
  - >> etharp_update_arp_entry

  etharp_free_entry (Thumb, 32 bytes, Stack size 16 bytes, etharp.o(i.etharp_free_entry))
  [Stack]

  - Max Depth = 88
  - Call Chain = etharp_free_entry ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> pbuf_free
  [Called By]
  - >> etharp_tmr
  - >> etharp_cleanup_netif
  - >> etharp_find_entry

  etharp_output_to_arp_index (Thumb, 82 bytes, Stack size 16 bytes, etharp.o(i.etharp_output_to_arp_index))
  [Stack]

  - Max Depth = 192
  - Call Chain = etharp_output_to_arp_index ⇒ etharp_request ⇒ etharp_raw ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> etharp_request
  - >> etharp_send_ip
  - >> __2printf
  [Called By]
  - >> etharp_output

  etharp_raw (Thumb, 220 bytes, Stack size 40 bytes, etharp.o(i.etharp_raw))
  [Stack]

  - Max Depth = 152
  - Call Chain = etharp_raw ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> pbuf_free
  - >> pbuf_alloc
  - >> lwip_htons
  - >> __2printf
  [Called By]
  - >> etharp_request

  etharp_send_ip (Thumb, 70 bytes, Stack size 24 bytes, etharp.o(i.etharp_send_ip))
  [Stack]

  - Max Depth = 48
  - Call Chain = etharp_send_ip ⇒ __2printf
  [Calls]
  - >> __2printf
  [Called By]
  - >> etharp_query
  - >> etharp_output
  - >> etharp_update_arp_entry
  - >> etharp_output_to_arp_index

  etharp_update_arp_entry (Thumb, 142 bytes, Stack size 24 bytes, etharp.o(i.etharp_update_arp_entry))
  [Stack]

  - Max Depth = 176
  - Call Chain = etharp_update_arp_entry ⇒ etharp_find_entry ⇒ etharp_free_entry ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> pbuf_free
  - >> ip4_addr_isbroadcast
  - >> etharp_send_ip
  - >> etharp_find_entry
  - >> __2printf
  [Called By]
  - >> etharp_arp_input

  low_level_init (Thumb, 100 bytes, Stack size 8 bytes, ethernetif.o(i.low_level_init))
  [Stack]

  - Max Depth = 56
  - Call Chain = low_level_init ⇒ HAL_ETH_Start ⇒ ETH_FlushTransmitFIFO ⇒ ETH_Delay
  [Calls]
  - >> HAL_ETH_Start
  - >> HAL_ETH_DMATxDescListInit
  - >> HAL_ETH_DMARxDescListInit
  [Called By]
  - >> ethernetif_init

  low_level_input (Thumb, 182 bytes, Stack size 40 bytes, ethernetif.o(i.low_level_input))
  [Stack]

  - Max Depth = 152
  - Call Chain = low_level_input ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> HAL_ETH_GetReceivedFrame
  - >> pbuf_alloc
  - >> __aeabi_memcpy
  [Called By]
  - >> ethernetif_input

  low_level_output (Thumb, 162 bytes, Stack size 40 bytes, ethernetif.o(i.low_level_output))
  [Stack]

  - Max Depth = 60
  - Call Chain = low_level_output ⇒ HAL_ETH_TransmitFrame
  [Calls]
  - >> HAL_ETH_TransmitFrame
  - >> __aeabi_memcpy
  [Address Reference Count : 1]
  - ethernetif.o(i.ethernetif_init)

  icmp_send_response (Thumb, 120 bytes, Stack size 40 bytes, icmp.o(i.icmp_send_response))
  [Stack]

  - Max Depth = 320
  - Call Chain = icmp_send_response ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> pbuf_free
  - >> pbuf_alloc
  - >> ip_output
  - >> inet_chksum
  - >> __2printf
  - >> __aeabi_memcpy
  [Called By]
  - >> icmp_time_exceeded
  - >> icmp_dest_unreach

  lwip_standard_chksum (Thumb, 86 bytes, Stack size 12 bytes, inet_chksum.o(i.lwip_standard_chksum))
  [Stack]

  - Max Depth = 12
  - Call Chain = lwip_standard_chksum
  [Called By]
  - >> inet_chksum_pbuf
  - >> inet_chksum

  ip_frag_free_pbuf_custom_ref (Thumb, 32 bytes, Stack size 8 bytes, ip_frag.o(i.ip_frag_free_pbuf_custom_ref))
  [Stack]

  - Max Depth = 48
  - Call Chain = ip_frag_free_pbuf_custom_ref ⇒ memp_free ⇒ __2printf
  [Calls]
  - >> memp_free
  - >> __2printf
  [Called By]
  - >> ipfrag_free_pbuf_custom
  - >> ip_frag

  ip_reass_chain_frag_into_datagram_and_validate (Thumb, 346 bytes, Stack size 32 bytes, ip_frag.o(i.ip_reass_chain_frag_into_datagram_and_validate))
  [Stack]

  - Max Depth = 104
  - Call Chain = ip_reass_chain_frag_into_datagram_and_validate ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> pbuf_free
  - >> lwip_ntohs
  - >> pbuf_clen
  - >> __2printf
  [Called By]
  - >> ip_reass

  ip_reass_dequeue_datagram (Thumb, 52 bytes, Stack size 16 bytes, ip_frag.o(i.ip_reass_dequeue_datagram))
  [Stack]

  - Max Depth = 56
  - Call Chain = ip_reass_dequeue_datagram ⇒ memp_free ⇒ __2printf
  [Calls]
  - >> memp_free
  - >> __2printf
  [Called By]
  - >> ip_reass_free_complete_datagram
  - >> ip_reass

  ip_reass_free_complete_datagram (Thumb, 202 bytes, Stack size 32 bytes, ip_frag.o(i.ip_reass_free_complete_datagram))
  [Stack]

  - Max Depth = 352
  - Call Chain = ip_reass_free_complete_datagram ⇒ icmp_time_exceeded ⇒ icmp_send_response ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> pbuf_free
  - >> ip_reass_dequeue_datagram
  - >> icmp_time_exceeded
  - >> pbuf_clen
  - >> __2printf
  - >> __aeabi_memcpy
  [Called By]
  - >> ip_reass_tmr
  - >> ip_reass_remove_oldest_datagram

  ip_reass_remove_oldest_datagram (Thumb, 110 bytes, Stack size 24 bytes, ip_frag.o(i.ip_reass_remove_oldest_datagram))
  [Stack]

  - Max Depth = 376
  - Call Chain = ip_reass_remove_oldest_datagram ⇒ ip_reass_free_complete_datagram ⇒ icmp_time_exceeded ⇒ icmp_send_response ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> ip_reass_free_complete_datagram
  [Called By]
  - >> ip_reass

  ipfrag_free_pbuf_custom (Thumb, 38 bytes, Stack size 8 bytes, ip_frag.o(i.ipfrag_free_pbuf_custom))
  [Stack]

  - Max Depth = 80
  - Call Chain = ipfrag_free_pbuf_custom ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> pbuf_free
  - >> ip_frag_free_pbuf_custom_ref
  - >> __2printf
  [Address Reference Count : 1]
  - ip_frag.o(i.ip_frag)

  dhcp_bind (Thumb, 222 bytes, Stack size 32 bytes, dhcp.o(i.dhcp_bind))
  [Stack]

  - Max Depth = 440
  - Call Chain = dhcp_bind ⇒ netif_set_ipaddr ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> netif_set_up
  - >> netif_set_netmask
  - >> netif_set_ipaddr
  - >> netif_set_gw
  - >> dhcp_set_state
  - >> __2printf
  [Called By]
  - >> dhcp_timeout
  - >> dhcp_recv

  dhcp_check (Thumb, 48 bytes, Stack size 16 bytes, dhcp.o(i.dhcp_check))
  [Stack]

  - Max Depth = 248
  - Call Chain = dhcp_check ⇒ etharp_query ⇒ etharp_request ⇒ etharp_raw ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> dhcp_set_state
  - >> etharp_query
  [Called By]
  - >> dhcp_timeout
  - >> dhcp_recv

  dhcp_create_msg (Thumb, 372 bytes, Stack size 24 bytes, dhcp.o(i.dhcp_create_msg))
  [Stack]

  - Max Depth = 136
  - Call Chain = dhcp_create_msg ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> lwip_htonl
  - >> pbuf_alloc
  - >> dhcp_option_byte
  - >> dhcp_option
  - >> __2printf
  [Called By]
  - >> dhcp_renew
  - >> dhcp_release
  - >> dhcp_select
  - >> dhcp_reboot
  - >> dhcp_rebind
  - >> dhcp_discover
  - >> dhcp_decline

  dhcp_decline (Thumb, 114 bytes, Stack size 24 bytes, dhcp.o(i.dhcp_decline))
  [Stack]

  - Max Depth = 312
  - Call Chain = dhcp_decline ⇒ udp_sendto_if ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> udp_sendto_if
  - >> dhcp_set_state
  - >> dhcp_option_trailer
  - >> dhcp_option_long
  - >> dhcp_option
  - >> dhcp_delete_msg
  - >> dhcp_create_msg
  - >> lwip_ntohl
  - >> pbuf_realloc
  [Called By]
  - >> dhcp_arp_reply

  dhcp_delete_msg (Thumb, 78 bytes, Stack size 8 bytes, dhcp.o(i.dhcp_delete_msg))
  [Stack]

  - Max Depth = 80
  - Call Chain = dhcp_delete_msg ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> pbuf_free
  - >> __2printf
  [Called By]
  - >> dhcp_renew
  - >> dhcp_release
  - >> dhcp_select
  - >> dhcp_reboot
  - >> dhcp_rebind
  - >> dhcp_discover
  - >> dhcp_decline

  dhcp_discover (Thumb, 184 bytes, Stack size 24 bytes, dhcp.o(i.dhcp_discover))
  [Stack]

  - Max Depth = 312
  - Call Chain = dhcp_discover ⇒ udp_sendto_if ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> udp_sendto_if
  - >> dhcp_set_state
  - >> dhcp_option_trailer
  - >> dhcp_option_short
  - >> dhcp_option_byte
  - >> dhcp_option
  - >> dhcp_delete_msg
  - >> dhcp_create_msg
  - >> pbuf_realloc
  [Called By]
  - >> dhcp_start
  - >> dhcp_timeout
  - >> dhcp_recv

  dhcp_handle_ack (Thumb, 126 bytes, Stack size 24 bytes, dhcp.o(i.dhcp_handle_ack))
  [Stack]

  - Max Depth = 24
  - Call Chain = dhcp_handle_ack
  [Calls]
  - >> dns_setserver
  - >> lwip_htonl
  [Called By]
  - >> dhcp_recv

  dhcp_option (Thumb, 62 bytes, Stack size 16 bytes, dhcp.o(i.dhcp_option))
  [Stack]

  - Max Depth = 40
  - Call Chain = dhcp_option ⇒ __2printf
  [Calls]
  - >> __2printf
  [Called By]
  - >> dhcp_renew
  - >> dhcp_select
  - >> dhcp_reboot
  - >> dhcp_rebind
  - >> dhcp_discover
  - >> dhcp_decline
  - >> dhcp_create_msg

  dhcp_option_byte (Thumb, 42 bytes, Stack size 16 bytes, dhcp.o(i.dhcp_option_byte))
  [Stack]

  - Max Depth = 40
  - Call Chain = dhcp_option_byte ⇒ __2printf
  [Calls]
  - >> __2printf
  [Called By]
  - >> dhcp_select
  - >> dhcp_discover
  - >> dhcp_create_msg

  dhcp_option_long (Thumb, 92 bytes, Stack size 16 bytes, dhcp.o(i.dhcp_option_long))
  [Stack]

  - Max Depth = 40
  - Call Chain = dhcp_option_long ⇒ __2printf
  [Calls]
  - >> __2printf
  [Called By]
  - >> dhcp_select
  - >> dhcp_reboot
  - >> dhcp_decline

  dhcp_option_short (Thumb, 60 bytes, Stack size 16 bytes, dhcp.o(i.dhcp_option_short))
  [Stack]

  - Max Depth = 40
  - Call Chain = dhcp_option_short ⇒ __2printf
  [Calls]
  - >> __2printf
  [Called By]
  - >> dhcp_renew
  - >> dhcp_select
  - >> dhcp_reboot
  - >> dhcp_rebind
  - >> dhcp_discover

  dhcp_option_trailer (Thumb, 104 bytes, Stack size 8 bytes, dhcp.o(i.dhcp_option_trailer))
  [Stack]

  - Max Depth = 32
  - Call Chain = dhcp_option_trailer ⇒ __2printf
  [Calls]
  - >> __2printf
  [Called By]
  - >> dhcp_renew
  - >> dhcp_release
  - >> dhcp_select
  - >> dhcp_reboot
  - >> dhcp_rebind
  - >> dhcp_discover
  - >> dhcp_decline

  dhcp_parse_reply (Thumb, 660 bytes, Stack size 56 bytes, dhcp.o(i.dhcp_parse_reply))
  [Stack]

  - Max Depth = 112
  - Call Chain = dhcp_parse_reply ⇒ pbuf_copy_partial ⇒ __2printf
  [Calls]
  - >> lwip_htonl
  - >> lwip_ntohl
  - >> pbuf_copy_partial
  - >> __2printf
  - >> __aeabi_memclr4
  [Called By]
  - >> dhcp_recv

  dhcp_rebind (Thumb, 130 bytes, Stack size 24 bytes, dhcp.o(i.dhcp_rebind))
  [Stack]

  - Max Depth = 312
  - Call Chain = dhcp_rebind ⇒ udp_sendto_if ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> udp_sendto_if
  - >> dhcp_set_state
  - >> dhcp_option_trailer
  - >> dhcp_option_short
  - >> dhcp_option
  - >> dhcp_delete_msg
  - >> dhcp_create_msg
  - >> pbuf_realloc
  [Called By]
  - >> dhcp_coarse_tmr
  - >> dhcp_timeout

  dhcp_reboot (Thumb, 156 bytes, Stack size 24 bytes, dhcp.o(i.dhcp_reboot))
  [Stack]

  - Max Depth = 312
  - Call Chain = dhcp_reboot ⇒ udp_sendto_if ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> udp_sendto_if
  - >> dhcp_set_state
  - >> dhcp_option_trailer
  - >> dhcp_option_short
  - >> dhcp_option_long
  - >> dhcp_option
  - >> dhcp_delete_msg
  - >> dhcp_create_msg
  - >> lwip_ntohl
  - >> pbuf_realloc
  [Called By]
  - >> dhcp_timeout

  dhcp_recv (Thumb, 284 bytes, Stack size 24 bytes, dhcp.o(i.dhcp_recv))
  [Stack]

  - Max Depth = 464
  - Call Chain = dhcp_recv ⇒ dhcp_bind ⇒ netif_set_ipaddr ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> lwip_htonl
  - >> pbuf_free
  - >> netif_set_netmask
  - >> netif_set_ipaddr
  - >> netif_set_gw
  - >> netif_set_down
  - >> dhcp_set_state
  - >> dhcp_select
  - >> dhcp_parse_reply
  - >> dhcp_handle_ack
  - >> dhcp_discover
  - >> dhcp_check
  - >> dhcp_bind
  - >> lwip_ntohl
  - >> __2printf
  [Address Reference Count : 1]
  - dhcp.o(i.dhcp_start)

  dhcp_select (Thumb, 228 bytes, Stack size 24 bytes, dhcp.o(i.dhcp_select))
  [Stack]

  - Max Depth = 312
  - Call Chain = dhcp_select ⇒ udp_sendto_if ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> udp_sendto_if
  - >> dhcp_set_state
  - >> dhcp_option_trailer
  - >> dhcp_option_short
  - >> dhcp_option_long
  - >> dhcp_option_byte
  - >> dhcp_option
  - >> dhcp_delete_msg
  - >> dhcp_create_msg
  - >> lwip_ntohl
  - >> pbuf_realloc
  [Called By]
  - >> dhcp_timeout
  - >> dhcp_recv

  dhcp_set_state (Thumb, 16 bytes, Stack size 0 bytes, dhcp.o(i.dhcp_set_state))
  [Called By]

  - >> dhcp_stop
  - >> dhcp_renew
  - >> dhcp_release
  - >> dhcp_select
  - >> dhcp_recv
  - >> dhcp_reboot
  - >> dhcp_rebind
  - >> dhcp_discover
  - >> dhcp_decline
  - >> dhcp_check
  - >> dhcp_bind

  dhcp_timeout (Thumb, 136 bytes, Stack size 8 bytes, dhcp.o(i.dhcp_timeout))
  [Stack]

  - Max Depth = 448
  - Call Chain = dhcp_timeout ⇒ dhcp_bind ⇒ netif_set_ipaddr ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> dhcp_renew
  - >> dhcp_release
  - >> dhcp_select
  - >> dhcp_reboot
  - >> dhcp_rebind
  - >> dhcp_discover
  - >> dhcp_check
  - >> dhcp_bind
  [Called By]
  - >> dhcp_fine_tmr

  dns_check_entry (Thumb, 212 bytes, Stack size 16 bytes, dns.o(i.dns_check_entry))
  [Stack]

  - Max Depth = 360
  - Call Chain = dns_check_entry ⇒ dns_send ⇒ udp_sendto ⇒ udp_sendto_if ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> dns_send
  - >> __2printf
  [Called By]
  - >> dns_tmr

  dns_parse_name (Thumb, 34 bytes, Stack size 0 bytes, dns.o(i.dns_parse_name))
  [Called By]

  - >> dns_recv

  dns_recv (Thumb, 350 bytes, Stack size 48 bytes, dns.o(i.dns_recv))
  [Stack]

  - Max Depth = 120
  - Call Chain = dns_recv ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> pbuf_free
  - >> lwip_ntohl
  - >> lwip_htons
  - >> pbuf_copy_partial
  - >> dns_parse_name
  [Address Reference Count : 1]
  - dns.o(i.dns_init)

  dns_send (Thumb, 246 bytes, Stack size 32 bytes, dns.o(i.dns_send))
  [Stack]

  - Max Depth = 344
  - Call Chain = dns_send ⇒ udp_sendto ⇒ udp_sendto_if ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> udp_connect
  - >> pbuf_free
  - >> pbuf_alloc
  - >> pbuf_realloc
  - >> lwip_htons
  - >> udp_sendto
  - >> __2printf
  [Called By]
  - >> dns_check_entry

  plug_holes (Thumb, 154 bytes, Stack size 16 bytes, mem.o(i.plug_holes))
  [Stack]

  - Max Depth = 40
  - Call Chain = plug_holes ⇒ __2printf
  [Calls]
  - >> __2printf
  [Called By]
  - >> mem_free

  tcp_close_shutdown (Thumb, 308 bytes, Stack size 40 bytes, tcp.o(i.tcp_close_shutdown), UNUSED)
  [Calls]

  - >> tcp_pcb_purge
  - >> memp_free
  - >> tcp_output
  - >> tcp_timer_needed
  - >> tcp_send_fin
  - >> tcp_rst
  - >> tcp_pcb_remove
  - >> __2printf

  tcp_new_port (Thumb, 82 bytes, Stack size 20 bytes, tcp.o(i.tcp_new_port))
  [Stack]

  - Max Depth = 20
  - Call Chain = tcp_new_port
  [Called By]
  - >> tcp_connect

  tcp_listen_input (Thumb, 208 bytes, Stack size 24 bytes, tcp_in.o(i.tcp_listen_input))
  [Stack]

  - Max Depth = 440
  - Call Chain = tcp_listen_input ⇒ tcp_alloc ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> tcp_output
  - >> tcp_parseopt
  - >> tcp_timer_needed
  - >> tcp_rst
  - >> tcp_enqueue_flags
  - >> tcp_eff_send_mss
  - >> tcp_alloc
  - >> tcp_abandon
  [Called By]
  - >> tcp_input

  tcp_parseopt (Thumb, 124 bytes, Stack size 16 bytes, tcp_in.o(i.tcp_parseopt))
  [Stack]

  - Max Depth = 16
  - Call Chain = tcp_parseopt
  [Calls]
  - >> lwip_ntohs
  [Called By]
  - >> tcp_process
  - >> tcp_listen_input

  tcp_process (Thumb, 864 bytes, Stack size 48 bytes, tcp_in.o(i.tcp_process))
  [Stack]

  - Max Depth = 440
  - Call Chain = tcp_process ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> tcp_pcb_purge
  - >> tcp_abort
  - >> lwip_ntohl
  - >> tcp_rexmit
  - >> tcp_receive
  - >> tcp_parseopt
  - >> tcp_timer_needed
  - >> tcp_rst
  - >> tcp_seg_free
  - >> tcp_eff_send_mss
  - >> __2printf
  [Called By]
  - >> tcp_input

  tcp_receive (Thumb, 1584 bytes, Stack size 32 bytes, tcp_in.o(i.tcp_receive))
  [Stack]

  - Max Depth = 336
  - Call Chain = tcp_receive ⇒ tcp_send_empty_ack ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> lwip_ntohl
  - >> pbuf_realloc
  - >> lwip_ntohs
  - >> pbuf_header
  - >> lwip_htons
  - >> pbuf_clen
  - >> tcp_send_empty_ack
  - >> tcp_rexmit_fast
  - >> tcp_update_rcv_ann_wnd
  - >> tcp_seg_free
  - >> __2printf
  [Called By]
  - >> tcp_process

  tcp_timewait_input (Thumb, 92 bytes, Stack size 16 bytes, tcp_in.o(i.tcp_timewait_input))
  [Stack]

  - Max Depth = 352
  - Call Chain = tcp_timewait_input ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> tcp_output
  - >> tcp_rst
  [Called By]
  - >> tcp_input

  tcp_create_segment (Thumb, 154 bytes, Stack size 32 bytes, tcp_out.o(i.tcp_create_segment))
  [Stack]

  - Max Depth = 112
  - Call Chain = tcp_create_segment ⇒ tcp_seg_free ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> lwip_htonl
  - >> pbuf_free
  - >> memp_malloc
  - >> pbuf_header
  - >> lwip_htons
  - >> tcp_seg_free
  [Called By]
  - >> tcp_write
  - >> tcp_enqueue_flags

  tcp_output_alloc_header (Thumb, 128 bytes, Stack size 24 bytes, tcp_out.o(i.tcp_output_alloc_header))
  [Stack]

  - Max Depth = 136
  - Call Chain = tcp_output_alloc_header ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> lwip_htonl
  - >> pbuf_alloc
  - >> lwip_htons
  - >> __2printf
  [Called By]
  - >> tcp_send_empty_ack
  - >> tcp_zero_window_probe
  - >> tcp_keepalive

  tcp_output_segment (Thumb, 170 bytes, Stack size 24 bytes, tcp_out.o(i.tcp_output_segment))
  [Stack]

  - Max Depth = 304
  - Call Chain = tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> lwip_htonl
  - >> lwip_ntohl
  - >> ip_route
  - >> ip_output
  - >> lwip_htons
  - >> tcp_eff_send_mss
  [Called By]
  - >> tcp_output

  tcp_pbuf_prealloc (Thumb, 102 bytes, Stack size 24 bytes, tcp_out.o(i.tcp_pbuf_prealloc))
  [Stack]

  - Max Depth = 136
  - Call Chain = tcp_pbuf_prealloc ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> pbuf_alloc
  - >> __2printf
  [Called By]
  - >> tcp_write

  tcp_write_checks (Thumb, 112 bytes, Stack size 8 bytes, tcp_out.o(i.tcp_write_checks))
  [Stack]

  - Max Depth = 32
  - Call Chain = tcp_write_checks ⇒ __2printf
  [Calls]
  - >> __2printf
  [Called By]
  - >> tcp_write

  arp_timer (Thumb, 22 bytes, Stack size 8 bytes, timers.o(i.arp_timer))
  [Stack]

  - Max Depth = 112
  - Call Chain = arp_timer ⇒ etharp_tmr ⇒ etharp_free_entry ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> etharp_tmr
  - >> sys_timeout
  [Address Reference Count : 2]
  - timers.o(i.arp_timer)
  - timers.o(i.sys_timeouts_init)

  dhcp_timer_coarse (Thumb, 22 bytes, Stack size 8 bytes, timers.o(i.dhcp_timer_coarse))
  [Stack]

  - Max Depth = 328
  - Call Chain = dhcp_timer_coarse ⇒ dhcp_coarse_tmr ⇒ dhcp_renew ⇒ udp_sendto_if ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> dhcp_coarse_tmr
  - >> sys_timeout
  [Address Reference Count : 2]
  - timers.o(i.dhcp_timer_coarse)
  - timers.o(i.sys_timeouts_init)

  dhcp_timer_fine (Thumb, 22 bytes, Stack size 8 bytes, timers.o(i.dhcp_timer_fine))
  [Stack]

  - Max Depth = 472
  - Call Chain = dhcp_timer_fine ⇒ dhcp_fine_tmr ⇒ dhcp_timeout ⇒ dhcp_bind ⇒ netif_set_ipaddr ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> dhcp_fine_tmr
  - >> sys_timeout
  [Address Reference Count : 2]
  - timers.o(i.dhcp_timer_fine)
  - timers.o(i.sys_timeouts_init)

  dns_timer (Thumb, 22 bytes, Stack size 8 bytes, timers.o(i.dns_timer))
  [Stack]

  - Max Depth = 376
  - Call Chain = dns_timer ⇒ dns_tmr ⇒ dns_check_entry ⇒ dns_send ⇒ udp_sendto ⇒ udp_sendto_if ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> sys_timeout
  - >> dns_tmr
  [Address Reference Count : 2]
  - timers.o(i.dns_timer)
  - timers.o(i.sys_timeouts_init)

  ip_reass_timer (Thumb, 22 bytes, Stack size 8 bytes, timers.o(i.ip_reass_timer))
  [Stack]

  - Max Depth = 376
  - Call Chain = ip_reass_timer ⇒ ip_reass_tmr ⇒ ip_reass_free_complete_datagram ⇒ icmp_time_exceeded ⇒ icmp_send_response ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> ip_reass_tmr
  - >> sys_timeout
  [Address Reference Count : 2]
  - timers.o(i.ip_reass_timer)
  - timers.o(i.sys_timeouts_init)

  tcpip_tcp_timer (Thumb, 40 bytes, Stack size 8 bytes, timers.o(i.tcpip_tcp_timer))
  [Stack]

  - Max Depth = 424
  - Call Chain = tcpip_tcp_timer ⇒ tcp_tmr ⇒ tcp_fasttmr ⇒ tcp_process_refused_data ⇒ tcp_recv_null ⇒ tcp_recved ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> sys_timeout
  - >> tcp_tmr
  [Address Reference Count : 2]
  - timers.o(i.tcpip_tcp_timer)
  - timers.o(i.tcp_timer_needed)

  core_msg_cb_adapter_with_obj (Thumb, 66 bytes, Stack size unknown bytes, mqtt_client_sdk.o(.text.core_msg_cb_adapter_with_obj))
  [Address Reference Count : 1]

  - mqtt_client_sdk.o(.text.xxl_mqtt_sdk_client_create)

  check_share_group_valid (Thumb, 74 bytes, Stack size unknown bytes, mqtt_client_sdk.o(.text.check_share_group_valid))
  [Calls]

  - >> platform_strlen
  - >> strchr
  [Called By]
  - >> xxl_mqtt_sdk_client_subscribe

  SRAM_GPIO_Set (Thumb, 222 bytes, Stack size 32 bytes, xmram.o(i.SRAM_GPIO_Set))
  [Stack]

  - Max Depth = 32
  - Call Chain = SRAM_GPIO_Set
  [Called By]
  - >> sram_reg_read
  - >> sram_init

  addr_out (Thumb, 106 bytes, Stack size 0 bytes, xmram.o(i.addr_out))
  [Called By]

  - >> sram_reg_write
  - >> sram_reg_read

  dataout (Thumb, 70 bytes, Stack size 0 bytes, xmram.o(i.dataout))
  [Called By]

  - >> sram_reg_write
  - >> sram_reg_read

  sram_init (Thumb, 130 bytes, Stack size 16 bytes, xmram.o(i.sram_init))
  [Stack]

  - Max Depth = 48
  - Call Chain = sram_init ⇒ SRAM_GPIO_Set
  [Calls]
  - >> SRAM_GPIO_Set
  [Called By]
  - >> sram_reg_write
  - >> sram_reg_read

  sram_reg_read (Thumb, 446 bytes, Stack size 32 bytes, xmram.o(i.sram_reg_read))
  [Stack]

  - Max Depth = 80
  - Call Chain = sram_reg_read ⇒ sram_init ⇒ SRAM_GPIO_Set
  [Calls]
  - >> xram_delay
  - >> sram_init
  - >> dataout
  - >> addr_out
  - >> SRAM_GPIO_Set
  [Called By]
  - >> XmRamInit

  sram_reg_write (Thumb, 212 bytes, Stack size 16 bytes, xmram.o(i.sram_reg_write))
  [Stack]

  - Max Depth = 64
  - Call Chain = sram_reg_write ⇒ sram_init ⇒ SRAM_GPIO_Set
  [Calls]
  - >> xram_delay
  - >> sram_init
  - >> dataout
  - >> addr_out
  [Called By]
  - >> XmRamInit

  xram_delay (Thumb, 16 bytes, Stack size 0 bytes, xmram.o(i.xram_delay))
  [Called By]

  - >> XmRamInit
  - >> sram_reg_write
  - >> sram_reg_read

  net_adapter_check_index_valid (Thumb, 84 bytes, Stack size unknown bytes, net_adapter.o(.text.net_adapter_check_index_valid))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = net_adapter_check_index_valid ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> agent_log
  [Called By]
  - >> net_adapter_recv
  - >> net_adapter_send

  trigger_broker_resp_cb (Thumb, 46 bytes, Stack size unknown bytes, mqtt_client.o(.text.trigger_broker_resp_cb))
  [Called By]

  - >> mqtt_client_recv_packet_proc

  mqtt_client_free_pkt_id (Thumb, 32 bytes, Stack size unknown bytes, mqtt_client.o(.text.mqtt_client_free_pkt_id))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = mqtt_client_free_pkt_id ⇒ mqtt_packet_id_free ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> mqtt_packet_id_free
  - >> agent_log
  [Called By]
  - >> mqtt_client_recv_packet_proc

  mqtt_client_encode_packet (Thumb, 80 bytes, Stack size unknown bytes, mqtt_client.o(.text.mqtt_client_encode_packet))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = mqtt_client_encode_packet ⇒ mqtt_packet_encode ⇒ mqtt_packet_encode_v311 ⇒ mqtt_topic_validate ⇒ platform_strstr ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> mqtt_packet_encode
  - >> agent_log
  [Called By]
  - >> mqtt_client_recv_packet_proc
  - >> mqtt_client_loop
  - >> mqtt_client_subscribe
  - >> mqtt_client_connect

  mqtt_client_handle_puback (Thumb, 628 bytes, Stack size unknown bytes, mqtt_client.o(.text.mqtt_client_handle_puback))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = mqtt_client_handle_puback ⇒ mqtt_qos1_handle_puback ⇒ mqtt_packet_id_free ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> mqtt_qos1_handle_puback
  - >> agent_log
  [Called By]
  - >> mqtt_client_recv_packet_proc

  mqtt_client_alloc_pkt_id (Thumb, 608 bytes, Stack size unknown bytes, mqtt_client.o(.text.mqtt_client_alloc_pkt_id))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = mqtt_client_alloc_pkt_id ⇒ mqtt_packet_id_alloc ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> mqtt_packet_id_alloc
  - >> agent_log
  [Called By]
  - >> mqtt_client_subscribe

  mqtt_client_handle_qos2_ack (Thumb, 968 bytes, Stack size unknown bytes, mqtt_client.o(.text.mqtt_client_handle_qos2_ack))
  [Stack]

  - Max Depth = 472 + Unknown Stack Size
  - Call Chain = mqtt_client_handle_qos2_ack ⇒ net_adapter_send ⇒ net_interface_send_to ⇒ net_tcp_send_stm32 ⇒ lwip_periodic_handle ⇒ dhcp_fine_tmr ⇒ dhcp_timeout ⇒ dhcp_bind ⇒ netif_set_ipaddr ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> mqtt_qos2_handle_pubcomp
  - >> mqtt_qos2_handle_pubrec
  - >> net_adapter_send
  - >> platform_memset_s
  - >> agent_log
  [Called By]
  - >> mqtt_client_recv_packet_proc

  mqtt_client_recv_packet_proc (Thumb, 2640 bytes, Stack size unknown bytes, mqtt_client.o(.text.mqtt_client_recv_packet_proc))
  [Stack]

  - Max Depth = 472 + Unknown Stack Size
  - Call Chain = mqtt_client_recv_packet_proc ⇒ mqtt_client_handle_qos2_ack ⇒ net_adapter_send ⇒ net_interface_send_to ⇒ net_tcp_send_stm32 ⇒ lwip_periodic_handle ⇒ dhcp_fine_tmr ⇒ dhcp_timeout ⇒ dhcp_bind ⇒ netif_set_ipaddr ⇒ tcp_abort ⇒ tcp_abandon ⇒ tcp_pcb_remove ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> crypto_decrypt
  - >> mqtt50_publish_decode
  - >> mqtt50_unsuback_decode
  - >> mqtt50_suback_decode
  - >> mqtt50_connack_decode
  - >> mqtt50_ack_decode
  - >> mqtt_packet_decode_v311
  - >> mqtt_client_handle_qos2_ack
  - >> mqtt_client_handle_puback
  - >> mqtt_client_encode_packet
  - >> mqtt_client_free_pkt_id
  - >> trigger_broker_resp_cb
  - >> mqtt50_client_handle_connack
  - >> mqtt_packet_id_free
  - >> mqtt50_version_auto_detect
  - >> net_adapter_close
  - >> net_adapter_recv
  - >> net_adapter_send
  - >> platform_get_tick_ms
  - >> platform_memcpy_s
  - >> platform_memset_s
  - >> agent_log
  - >> platform_strlen
  - >> memset
  [Called By]
  - >> mqtt_client_loop

  tcp_recv_callback (Thumb, 66 bytes, Stack size unknown bytes, net_eth_stm32.o(.text.tcp_recv_callback))
  [Stack]

  - Max Depth = 352 + Unknown Stack Size
  - Call Chain = tcp_recv_callback ⇒ tcp_recved ⇒ tcp_output ⇒ tcp_output_segment ⇒ ip_output ⇒ ip_output_if ⇒ ip_frag ⇒ pbuf_alloc ⇒ pbuf_free ⇒ mem_free ⇒ plug_holes ⇒ __2printf
  [Calls]
  - >> tcp_close
  - >> tcp_recved
  - >> pbuf_free
  - >> memcpy
  [Address Reference Count : 1]
  - net_eth_stm32.o(.text.net_tcp_socket_create_stm32)

  tcp_connect_cb (Thumb, 32 bytes, Stack size unknown bytes, net_eth_stm32.o(.text.tcp_connect_cb))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = tcp_connect_cb ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> agent_log
  [Address Reference Count : 1]
  - net_eth_stm32.o(.text.net_tcp_connect_stm32)

  net_interface_deinit.part.0 (Thumb, 132 bytes, Stack size unknown bytes, net_interface.o(.text.net_interface_deinit.part.0))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = net_interface_deinit.part.0 ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> free
  - >> platform_sem_destroy_stm32
  - >> platform_mutex_unlock
  - >> platform_mutex_lock
  - >> platform_deinit
  - >> agent_log
  - >> memset
  [Called By]
  - >> net_interface_init

  mqtt_topic_client_add.part.0 (Thumb, 412 bytes, Stack size unknown bytes, mqtt_topic_manager.o(.text.mqtt_topic_client_add.part.0))
  [Stack]

  - Max Depth = 40 + Unknown Stack Size
  - Call Chain = mqtt_topic_client_add.part.0 ⇒ agent_log ⇒ agent_log (Cycle)
  [Calls]
  - >> platform_mutex_unlock
  - >> platform_mutex_lock
  - >> platform_strcmp
  - >> platform_memcpy_s
  - >> platform_memset_s
  - >> agent_log
  - >> platform_strlen
  [Called By]
  - >> mqtt_subscribe_add

  _fp_digits (Thumb, 366 bytes, Stack size 64 bytes, printfa.o(i._fp_digits), UNUSED)
  [Calls]

  - >> __aeabi_ddiv
  - >> __aeabi_dadd
  - >> __aeabi_dmul
  - >> __aeabi_d2ulz
  - >> __aeabi_cdrcmple
  - >> __aeabi_uldivmod
  [Called By]
  - >> _printf_core

  _printf_core (Thumb, 1704 bytes, Stack size 136 bytes, printfa.o(i._printf_core), UNUSED)
  [Calls]

  - >> __aeabi_uidivmod
  - >> _printf_pre_padding
  - >> _printf_post_padding
  - >> _fp_digits
  - >> __aeabi_uldivmod
  [Called By]
  - >> __0vsnprintf
  - >> __0snprintf
  - >> __0printf

  _printf_post_padding (Thumb, 36 bytes, Stack size 24 bytes, printfa.o(i._printf_post_padding), UNUSED)
  [Called By]

  - >> _printf_core

  _printf_pre_padding (Thumb, 46 bytes, Stack size 24 bytes, printfa.o(i._printf_pre_padding), UNUSED)
  [Called By]

  - >> _printf_core

  _snputc (Thumb, 22 bytes, Stack size 0 bytes, printfa.o(i._snputc))
  [Address Reference Count : 2]

  - printfa.o(i.__0snprintf)
  - printfa.o(i.__0vsnprintf)

  ### Undefined Global Symbols